Автор: Пользователь скрыл имя, 03 Декабря 2011 в 15:35, лабораторная работа
Цель:
Изучение основных приемов модульной и эволюционной разработки программ с применением процедурной и объектно-ориентированной парадигм программирования. Анализ взаимосвязи между артефактами (программными объектами, разработанными программистом). Описание зависимостей между артефактами.
ФГАОУ ВПО
ИКИТ
СФУ
Лабораторная работа №1.
Красноярск 2010
Пояснительная
записка
Цель:
Изучение основных приемов модульной и эволюционной разработки программ с применением процедурной и объектно-ориентированной парадигм программирования. Анализ взаимосвязи между артефактами (программными объектами, разработанными программистом). Описание зависимостей между артефактами.
Вариант
| 4. Транспорт |
|
Скорость –
целое;
Расстояние между пунктами отправления и назначения – целое |
Организация контейнера
Контейнер на основе
двунаправленного линейного списка
Организация модульной структуры программы
Разбиение
на модули осуществляется по объектному
принципу. То есть описание абстракций
и функций их обработки группируются
по виду абстракций. При этом проводится
разделение описания типов, сигнатур и
классов от их реализации. Клиентский
модуль связан с основной частью программы
только минимально необходимым интерфейсом.
Организация обобщений в процедурной программе
Обобщение, построенное на основе непосредственного включения специализаций.
Использование непосредственного включения обеспечивается использованием следующей структуры обобщения:
struct обобщение1 {
ключ;
union {специализация1; специализация2; …};
}
Специализации
являются абстрактными типами, непосредственно
включенными в указанную
Зависимости
между артефактами
в процедурной
программе
| Артефакт | Непосредственно связан с | Косвенно связан с | |
| airplane | |||
| train | |||
| transport | Airplane, train | ||
| container | transport | ||
| Airplane(In(airplane&…), Out(airplane&…)) | сигнатура | airplane | |
| тело | airplane | ||
| Train(In(train&…), Out(train&…)) | сигнатура | train | |
| тело | train | ||
| Transport (transport* In(…),Out(transport&…)) | тело | Transport [airplane, train], In (airplane&…), In (train&…), Out (airplane&…), Out (train&…) | rectangle, triangle |
| сигнатура | transport | ||
| Container(…) | сигнатура | Container, transport | |
| тело | Container, Out(transport&…), transport* In(…),transport[airplane, train] | ||
| main(…) | тело | container | |
| сигнатура | |||
Модульная
структура процедурной
программы
| Название модуля | Непосредственно
подключенные модули и артефакты |
Косвенно подключенные модули и артефакты |
Содержимое модуля |
| airplane.h | airplane | ||
| train.h | train | ||
| transport.h | airplane.h
train.h |
transport | |
| container.h | container, transport | ||
| Airplane.cpp | airplane.h
airplane.h |
In(airplane&…)
Out(airplane&…) | |
| Train.cpp | train.h
train.h |
In(train&…)
Out (train&…) | |
| Transport.cpp | transport.h
In(airplane&…) In(train&…) Out(airplane&…) Out (train&…) |
airplane.h
train.h |
transport *In(…)
Out(transport&…) |
| Container.cpp | container.h
transport.h transport *In(…) Out(transport&…) |
Airplane.h
train.h transport* |
Init(container&)
Clear(container&) In(container&…) Out(container&…) |
| main.cpp | container.h
Init(container&) Clear(container&) In(container&…) Out(container&…) |
transport* | main(…) |
Зависимости
между артефактами
в ОО программе
| Артефакт | Непосредственно связан с | Косвенно связан с | |
| transport::In(…) | сигнатура | ||
| transport::Out(…) | сигнатура | ||
| transport::InData(…) | сигнатура | ||
| transport:: transport () {} | |||
| transport | transport ::In(…), transport
::Out(…), transport::InData(…), |
||
| train::Out(…),
train::InData(…) |
сигнатура | transport | |
| train::train() {} | transport | ||
| train | Transport, train::Out(…),
train::InData(…),
train::train() {} |
||
| train::Out(…),
train::InData(…) |
тело | train[transport[…]] | |
| airplane::Out(…),
airplane::InData(…) |
сигнатура | transport | |
| airplane::airplane() {} | transport | ||
| airplane | transport, airplane::Out(…),
airplane::InData(…), airplane::airplane() {} |
||
| airplane::Out(…),
airplane::InData(…) |
тело | airplane [transport[…]] | |
| transport ::In(…) | тело | transport, airplane, train | |
| container::In(…),
container::Out(…), container::Clear(…) |
сигнатура | ||
| container::container() | сигнатура | ||
| container::~container(){…} | Clear(…) | ||
| container | container::In(…), container::Out(…),
container::container() |
transport | |
| container::In(…),
container::Out(…)=0, container::Clear(…) |
тело | container, transport | |
| container::container() | тело | container | |
| main(…) | сигнатура | ||
| тело | container | ||
Модульная
структура ОО программы
| Название модуля | Непосредственно
подключенные модули и артефакты |
Косвенно подключенные модули и артефакты |
Содержимое |
| Transport.h | Transport | ||
| Airlane.h | Transport.h | Transport, airplane | |
| Train.h | Transport.h | Transport, train | |
| Container.h | Transport.h | Transport, Container | |
| Transport.cpp | Transport.h
airlane.h Train.h |
Transport, airplane, train | |
| airplane.cpp | Airlane.h | Transport.h | Transport, airplane |
| Train.cpp | Train.h | Transport.h | Transport, train |
| Container.cpp | Container.h | Transport.h | Transport, Container |
| main.cpp | Container.h | Transport.h | Container, main(…) |
| Критерий сравнения | Процедурная реализация | ОО реализация |
| Общее количество модулей | 9 | 9 |
| Число интерфейсных модулей | 4 | 4 |
| Число модулей реализации | 5 | 5 |
| Количество артефактов | 11 | 20 |
| Общий размер исходных текстов | 8.46 KB | 7.87 KB |
Вывод:
В ходе выполнения данной лабораторной работы, мной были изучены основные приемы модульной и эволюционной разработки программ с применением процедурной и объектно-ориентированной парадигм программирования.
А так же проведен анализ взаимосвязи между артефактами (программными объектами, разработанными программистом).
В
завершение работы, мной были описаны
зависимостей между артефактами.
Разбиение на модули осуществляется по объектному принципу. То есть описание абстракций и функций их обработки группируются по виду абстракций (При этом проводится разделение описания типов, сигнатур и классов от их реализации). В связи с этим общее количество модулей, число интерфейсных модулей и модулей реализации в процедурной и объектно-ориентированной программах не различается.
Количество артефактов в программах отличается за счет внесения в объектно ориентированный код виртуальной, статической функций, конструктора и диструктора.
Информация о работе Использование процедурной и объекто ориентированной парадигм праграммирования