|
Программирование >> Дополнительные возможности наследования
базовый класс для пешеходов class Pedestrian : Entity class Cir : public Vehicle...; class Truck : public Vehicle...; class Motorcycle ; public Vehicle...; class Bicycle ; public Vehicle...; class Emergency Vehicle : public Vehicle...; класс списка автомобилей и людей, ожидающих движения class Intersection; 2. Усложним ситуацию из упражнения 1. Предположим, что есть три вида водителей: таксисты, переезжающие переход на красный свет; иногородние, которые едут медленно и осторожно; и частники, которые ведут мащины по-разному, в зависимости от представлений о своей крутизне . Также есть два вида пешеходов: местные, которые переходят улицу, где им заблагорассудится, и туристы, которые переходят улицу только на зеленый свет. А кроме того, есть еще велосипедисты, которые ведут себя то как пешеходы, то как водители. Как эти соображения изменят модель? Вероятно, целесообразно начать с создания производных объектов, которые моделируют разновидности рассмотренных выше объектов: class Local Car ; public Car...; class Tourist Car ; public Car...; class Taxi ; public Car...; class Local Pedestrian ; public Pedestrian...; class Tourist Pedestrian ; public Pedestrian...; class Local Bicycle : public Bicycle...; Используя виртуальные методы, для объектов разных классов можно модифицировать общее поведение в соответствии с особенностями этих объектов. Например, местный водитель может реагировать на красный сигнал светофора не так, как турист, но в остальном наследовать общее поведение своего класса. 3. Вам заказали профамму планирования времени конференций и всфеч, а также бронирования мест в гостинице для визитеров компании и для участников конференций. Определите главные подсистемы. Для этого проекта нужно написать две отдельные профаммы: профамму-клиент, которую будут запускать пользователи, и профамму-сервер, которая будет работать на отдельном компьютере. Кроме того, компьютер клиента должен иметь административный компонент, позволяющий системному администратору добавлять новых людей и новые помещения. Если вы решили реализовать этот проект в виде модели типа клиент/сервер, то программа-клиент должна принимать данные, вводимые пользователем, и генерировать запрос к программе-серверу. Сервер должен обслужить запрос и отправить результаты назад клиенту. С помошью этой модели многие участники конференции смогут одновременно планировать свои встречи. На стороне клиента (помимо административного модуля) сушествует две основные подсистемы: интерфейс пользователя и система связей. На стороне сервера - три основные подсистемы: связей, планирования и почтового интерфейса, который объявляет пользователю об изменениях в расписании. 4. Спроектируйте интерфейсы к классам той части программы, обсуждаемой в упражнении 3, которая относится к резервированию гостиничных номеров. Для организации конференции или деловой встречи необходимо зарезервировать помешение на определенное время. Этим занимается организационный комитет, который должен знать конкретное время проведения встречи и список участников. В качестве объектов, вероятно, следует определить всех возможных пользователей системы, а также все имеющиеся залы заседаний и номера гостиниц. Не забудьте также включить для календаря и класс Meeting, который инкапсулирует все, что известно о конкретной встрече или конференции. Приведем прототиг:ы перечисленных выше классов. class Calendar Class; ссылка на класс class Meeting; ссылка на класс class Configuration { public: ConfigurationO; Configuration(); Meeting Schedule( ListOfPerson&, Delta Time duration ); Meeting Schedule( ListOfPerson&, Delta Time duration, Time ); Meeting Schedule( ListOfPerson&, Delta Time duration, Room ); ListOfPerson& PeopleO; открытые методы доступа ListOfRoom& Rooms(); открытые методы доступа protected: ListOfRoom rooms; ListOfPerson people; typedef long Room ID; class Room { public: Room( String name, Room ID id, int capacity. String directions = , String description = ); RoomO; Calendar Class Calendar(); protected: Calendar Class calendar; int capacity; Room ID id; String name; String directions; где этот гостиничный номер? String description; typedef long Person ID; class Person { public: Person ( String name, Person ID id ); PersonO; Calendar Class CalendarO; место доступа для добавления встреч protected: Calendar Class calendar; Person ID id; String name; class Calendar Class { public: Calendar Class(); Calendar Class(); void Add( const Meetings ); добавляем встречу в календарь void Delete( const Meetingi ); Meeting* Lookup( Time ); проверяем, не назначена ли уже встреча на это число В1оск( Time, Duration, String reason = ); резервируем время , protected: OrderedListOfMeeting meetings; >; class Meeting { public: Meeting( ListOfPersoni, Room room. Time when, Duration duration, String purpose = MeetingO; protected; ListOfPerson people;
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |