310 U ML与软件建模
12.9.5 状态图的映射
HiredUnassigned[NumberOfAssignedTasks = 1]Un-assign Taskfrom Resource /DecrementNumberOfAssignedTasksTerminatedAssign Task to Resource /IncrementNumberOfAssignedTasksAssigned[NumberOfAssignedTasks > 1]Un-assign Tasks from Resource /DecrementNumberOfAssignedTasksAssign Task to Resource /IncrementNumberOfAssignedTasks
图12-42 项目管理系统的状态图
class Task;
class Resource;
class Task {
// Details omitted };
class Resource {
private:
int NumberOfAssignedTasks; bool Assigned;
public: };
void addTask(const Task &theTask); // Assign Task to Resource void removeTask(const Task &theTask); // Un-assign Task from Resource
311 第12章 UML模型的C++实现
void Resource::addTask(const Task &theTask) { }
void Resource::removeTask(const Task &theTask) { }
// Details omitted
if (NumberOfAssignedTasks == 1) Assigned = false;
NumberOfAssignedTasks--; // Details omitted // Details omitted if (!Assigned) Assigned = true;
NumberOfAssignedTasks++; // Details omitted
312 U ML与软件建模
12.9.6 活动图的映射
图12-43 项目管理系统的活动图
313 第12章 UML模型的C++实现
12.10 小结 习题12
EmployeeDepartmentEloyeemployeeEmployeeDepartmentDepartmentDepartmentSchedScheduleScheduleule0..*0..*0..*0..*0..*0..*0..*1111111anagerManagerManagerManagerSectionSectionSectionSectionStudStudententStudent (a) (b) (c) (d) (a) (b) (c) (d) (a) (b) (c) (d) 图12-44 四个类图
class Vehicle
{
public:
Vehicle(int weight = 0); void SetWeight(int weight); virtual void ShowMe() = 0; protected:
int weight; };
class Car: virtual public Vehicle {
public:
Car(int weight=0,int aird=0); void ShowMe(); protected: int aird; };
class Boat: virtual public Vehicle {
uleGroundVehicleGroundVehicleGroundVehicleGroundVehicle-licenseNum-licenseNumber : Integer0..*-licenseNum-licenseNumber : Integerber : Integer+register()ber : Integer+register()+register()+register()1entCarCarCarCar-noOfPassenger : Integer-noOfPassenger : Integer-noOfPassenger : Integer-noOfPassenger : Integer+getpassengerCapacity()+getpassengerCapacity()+getpassengerCapacity()+getpassengerCapacity()
SchedEmpMStud (a) (b) (c) (d) 314 U ML与软件建模
public:
Boat(int weight=0,float tonnage=0); void ShowMe(); protected:
float tonnage; };
class AmphibianCar: public Car,public Boat {
public:
AmphibianCar(int weight,int aird,float tonnage); void ShowMe();
void ShowMembers(); };
Person+assign(d : Department)+setCompensation(s: Salary)1..10employee1employerCompany
图12-45 雇员和雇主的关系
class Shape : public Object { protected:
double area;
double perimeter; public:
double compArea() { area = 0.0; return 0.0; }
virtual String getName() = 0; }
class Rectangle:Shape{ private:
double length; double width; public:
Rectangle(double l, double w) { length = l; width = w; }
double compArea(){
315 第12章 UML模型的C++实现
area = length * width; return area; }
string getName() { return \ }
}
class Triangle : Shape{ private:
double length; double height; public:
Triangle(double l, double h){ length = l; width = w; }
double compArea() {
area = 0.5 * length * height; return area; }
string getName() {
return \ } }
class Student{ public:
Schedule* theSchedule;
Student(){
theSchedule = new Schedule[5]; } }
class Schedule{ public:
Student theStudent; Schedule(){} }