Тема 5 Реалізація зв’язків між класами. Діаграма класів
oop_lec5_relations_bettwen_classes.ppt
- Количество слайдов: 15
Тема 5 Реалізація зв'язків між класами
Діаграма класів з атрибутами
Діаграма класів з атрибутами
Реалізація зв’язків між классами #include "elevator.h" #include "floor.h" #include "clock.h" #include "scheduler.h" class Building { public: Building(); // constructor ~Building(); // destructor void runSimulation( int ); // run simulation for specified time private: Floor floor1; // floor1 object Floor floor2; // floor2 object Elevator elevator; // elevator object Clock clock; // clock object Scheduler scheduler; // scheduler object };
Реалізація зв’язків між классами Використовування Посилання на об’єкти одного класу є елементами даних іншого класу
class Elevator; // forward declaration class Person; // forward declaration class Floor { public: static const int FLOOR1; //common attributes for all objects of class "floor" static const int FLOOR2; FloorButton floorButton; // floorButton object private: const int floorNumber; // the floor's number, don't change the attribute Elevator &elevatorRef; // pointer to elevator Person *occupantPtr; // pointer to person on floor Light light; // light object class Floor
public: Floor( int, Elevator & ); // constructor ~Floor(); // destructor ///////////////////////////////////////////////////////// bool isOccupied(); // return true if floor occupied int getNumber() ; // return floor's number // pass a handle to new person coming on floor void personArrives( Person * ); // notify floor that elevator has arrived Person *elevatorArrived(); // notify floor that elevator is leaving void elevatorLeaving(); // notify floor that person is leaving floor void personBoardingElevator(); }; class Floor
class Floor; // forward declaration class Person; // forward declaration class Elevator { public: Elevator( Floor &, Floor & ); // constructor ~Elevator(); // destructor void summonElevator( int ); // request to service a floor void prepareToLeave( bool ); // prepare to leave void processTime( int ); // give time to elevator void passengerEnters( Person * const ); // board a passenger void passengerExits(); // exit a passenger ElevatorButton elevatorButton; // note public object private: void processPossibleArrival(); void processPossibleDeparture(); void arriveAtFloor( Floor & ); void move(); class Elevator
// time to move between floors int currentBuildingClockTime; // current time bool moving; // elevator state int direction; // current direction int currentFloor; // current location int arrivalTime; // time to arrive at a floor bool floor1NeedsService; // floor1 service flag bool floor2NeedsService; // floor2 service flag Floor &floor1Ref; // reference to floor1 Floor &floor2Ref; // reference to floor2 Person *passengerPtr; // pointer to current passenger Door door; // door object Bell bell; // bell object }; class Elevator
Реалізація зв’язків між классами Використовування Покажчики на об’єкти одного класу є елементами даних іншого класу
class Floor; // forward declaration class Elevator; // forward declaration class Person { public: Person(int ); // constructor ~Person(); // destructor void stepOntoFloor( Floor & ); void enterElevator( Elevator &, Floor & ); ///////////////////////////////////////////////////////////////// int getID(); // returns person's ID void exitElevator(Floor &, Elevator & ); //////////////////////////////////////////////////////////////// private: static int personCount; // total number of persons const int ID; // person's unique ID # const int destinationFloor; // destination floor # }; class Person
Реалізація зв’язків між классами Доступ до методів і атрибутів об’єктів – через параметри методів
Building::runSimulation() Clock::getTime() Scheduler::processTime( ) Scheduler::handleArrivals( ) Floor::getNumber() Floor::isOccupied() Scheduler::createNewPerson() Floor::getNumber() Person::Person() Person::getID() Scheduler::scheduleTime() Clock::tick() Scheduler::delayTime() Person::stepOntoFloor( hipo diagram
to be continue