Автор: Пользователь скрыл имя, 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 |
Вывод:
В ходе выполнения данной лабораторной работы, мной были изучены основные приемы модульной и эволюционной разработки программ с применением процедурной и объектно-ориентированной парадигм программирования.
А так же проведен анализ взаимосвязи между артефактами (программными объектами, разработанными программистом).
В
завершение работы, мной были описаны
зависимостей между артефактами.
Разбиение на модули осуществляется по объектному принципу. То есть описание абстракций и функций их обработки группируются по виду абстракций (При этом проводится разделение описания типов, сигнатур и классов от их реализации). В связи с этим общее количество модулей, число интерфейсных модулей и модулей реализации в процедурной и объектно-ориентированной программах не различается.
Количество артефактов в программах отличается за счет внесения в объектно ориентированный код виртуальной, статической функций, конструктора и диструктора.
Информация о работе Использование процедурной и объекто ориентированной парадигм праграммирования