Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Определение операций классов



 

       Результаты описания поведения системы должны быть использованы для определения операций классов.

       Корректное выполнение операций требует специального протокола, который описывает следующие компоненты операций:

 

1. Предусловия, т.е. условия, которые должны быть выполнены перед тем, как операция будет активизирована;

2. Список передаваемых параметров, их типов, а также тип возвращаемого результата;

3. Постусловия, которые должны быть выполнены, когда операция завершится;

4. Правила взаимодействия потоков - синхронизация.

 

Существует ряд рекомендаций, которым можно следовать при формировании набора операций класса.

 

1. Создать ряд ортогональных примитивных интерфейсных операций;

2. Скрыть внутреннюю структуру класса за интерфейсными операциями;

3. Обеспечить ряд непримитивных операций для часто используемых комбинаций операций;

4. Операции внутри класса и иерархии класса должны использовать согласованный ряд типов параметров, где возможно;

5. Родительский класс должен обеспечивать операции, разделяемые классами-наследниками;

6. Операцией должна быть представлена каждая функциональность, выполняемая классом;

7. Все сообщения, направленные объекту, должны быть приняты и обработаны определенным действием;

8. Если необходимо, следует использовать операции Get() и Set() для доступа к атрибутам объекта;

8. Действия, определенные на диаграммах состояний и активности, должны приводить к операциям, определенным на классе, обеспечивающим эти действия;

9. Операции должны проверять свои предусловия.

 

Определим примерный набор операций классов Лифт, Дверь и Контроллер проектируемой системы.

Количество операций, также как и атрибутов, определяется степенью проработанности класса.

Например. Если различать подсостояния (Пассажиры отсутствуют; Пассажиры присутствуют), то необходимо ввести атрибут, имеющий смысл «Загружен» (“Loaded”). Если количество людей, находящихся в лифте, не различать, то атрибут Loaded может иметь тип Boolean, а если различать (например, чтобы формировать сигнал тревоги при перегрузке), то атрибут Loaded должен иметь тип Integer.

       То же самое относится к включению в класс Лифт объектов Дверь, Кнопки.

 

TDirection = (up, down);

TLiftState = (moving, stop);

TPosition = (1..10);

 

TLift = object

State : TLiftState;

Direction : TDirection;

Position : TPosition;

       Constructor Create;

       Destructor Done;

       Procedure Start(D : TDirection);

       Procedure Stop;

       Procedure Move;

       Function GetPosition : TPosition;

       Function GetState : TLiftState;

       Function GetDirection : TDirection;

End;

 

       Операции Start и Stop носят характер команд, которые контроллер посылает лифту.

       Оперции GetPosition, GetState, GetDirection носят характер команд, которые контроллер посылает лифту для чтения его положения, состояния, направления движения.

       Операция Move – базовая операция лифта в данной модели.

 

TDoorState = (opened, closed, opening, closing);

 

TDoor = object

       State : TDoorState;

       Constructor Create;

       Destructor Done;

       Procedure Open;

       Procedure Close;

       Procedure Move;

       Function GetState : TDoorState;

End;

 

       Операции Open и Close носят характер команд, которые контроллер посылает двери.

       Операция GetState носит характер команды, которую контроллер посылает двери для чтения ее состояния.

       Операция Move реализует «процесс» открытия или закрытия двери.

 

 

TEventType = (Alarm, ButtonPressed);

TButtonType = (LiftButton, FloorButton);

 

TEvent = record

       EventType : TEventType;

       ButtonType : TButtonType;

       Message : Integer;

End;

 

TController = object

       Constructor Create;

       Destructor Done;

       Function GetEvent : TEvent;

       Procedure Dispatcher;

End;

 

       Операция Dispatcher носит характер «бесконечного цикла», состоящего из операции GetEvent в начале итерации цикла и, в зависимости от события, посылки соответствующих команд соответствующим объектам.

 

Выводы

 

       В данном подразделе мы выполнили этап проектирования, заключающийся в исследовании поведения системы. Этот этап мы выполняли путем анализа состояний объектов и анализа действий объектов. Результатом этого анализа является набор операций, выполняемых объектами.

       Выполнив анализ требований к системе, описав структуру объектов и их поведение, можно приступать к проектированию архитектуры системы.

 

Проектирование системы

 


Поделиться:



Последнее изменение этой страницы: 2019-04-21; Просмотров: 315; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.016 с.)
Главная | Случайная страница | Обратная связь