Программирование >>  Дополнительные возможности наследования 

1 ... 253 254 255 [ 256 ] 257 258 259 ... 265


базовый класс для пешеходов 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;



1 ... 253 254 255 [ 256 ] 257 258 259 ... 265

© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки.
Яндекс.Метрика