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