305 第12章 UML模型的C++实现
class Project {
private: char *Name;
char *Descr; Date StartDate;
static int NumberOfProjects; public: Project(char *Name);
Project(void); ~Project(void);
char *getName(void);
void setName(char *theName); void setDescr(char *Descr); char *getDescr(void);
void setStartDate(Date theStartDate);
Date getStartDate(void);
void addActivity(const Activity &theActivity); CollectionByRef getAllAcitivities(void); static int getNumberOfProjects(void); void save(void);
void load(char *Name);
protected: bool hasActivities(void); };
int Project::NumberOfProjects = 0; class Activity { ... };
306 U ML与软件建模
12.9.2 对象图的映射
图12-39 项目管理系统的对象图
class Project;
class Activity;
class Task;
class WorkProduct;
class Resource;
class Project { public: void addActivity(const Activity &theActivity); };
class Activity { public: void setProject(const Project &theProject); void addTask(const Task &theTask); void addWorkProduct(const WorkProduct &theWorkProduct); };
class Task { public:
307 第12章 UML模型的C++实现
void assignTo(const Resource &theResource); };
class WorkProduct { ... };
class Resource { public: void addTask(const Task &theTask); };
void main(void) { Project RMS; WorkProduct ReqDoc, ArchDoc; Activity Scope, AnalysisDesign; Task GatherReq, Review, Analyze, Design; Resource Phillip, Nora, Si; RMS.addActivity(Scope); RMS.addActivity(AnalysisDesign); Scope.setProject(RMS); Scope.addWorkProduct(ReqDoc); AnalysisDesign.setProject(RMS); AnalysisDesign.addWorkProduct(ReqDoc); AnalysisDesign.addWorkProduct(ArchDoc); Scope.addTask(GatherReq); Scope.addTask(Review); AnalysisDesign.addTask(Analyze); AnalysisDesign.addTask(Design); GatherReq.assignTo(Phillip); Review.assignTo(Nora); Analyze.assignTo(Nora); Design.assignTo(Si); Phillip.addTask(GatherReq); Nora.addTask(Review); Nora.addTask(Analyze); Si.addTask(Design); }
308 U ML与软件建模
12.9.3 序列图的映射
:Project Manger Project Manger :User Interface 提 供 项 目 的 名 称 、 描 述 及 开 工 日 期 Project() setName(Name) setDescr(descr) setStartDate (StartDate) Save() ~Project() :Project
图12-40 项目管理系统的序列图
class Date;
class Project;
class Date { };
class Project { public:
Project(void);
~Project(void);
void setName(char *theName); void setDescr(char *Descr); ...
309 第12章 UML模型的C++实现
};
void main(void) { }
char *Name; char *Descr; Date StartDate;
//提供项目的名、描述及开工日期 Project aProject; aProject.setName(Name); aProject.setDescr(Descr);
aProject.setStartDate(StartDate); aProject.save();
void setStartDate(Date theStartDate); void save(void);
12.9.4 协作图的映射
图12-41 项目管理系统的协作图