Использование процедурной и объекто ориентированной парадигм праграммирования

Автор: Пользователь скрыл имя, 03 Декабря 2011 в 15:35, лабораторная работа

Описание работы

Цель:
Изучение основных приемов модульной и эволюционной разработки программ с применением процедурной и объектно-ориентированной парадигм программирования. Анализ взаимосвязи между артефактами (программными объектами, разработанными программистом). Описание зависимостей между артефактами.

Работа содержит 1 файл

отчет.doc

— 94.50 Кб (Скачать)

ФГАОУ ВПО

ИКИТ

СФУ

 
 
 
 
 
 
 
 
 
 

Лабораторная  работа №1.

Использование процедурной и  объекто ориентированной  парадигм праграммирования.

 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Красноярск 2010

 

Пояснительная записка 

Цель:

Изучение  основных приемов модульной и  эволюционной разработки программ с применением процедурной и объектно-ориентированной парадигм программирования. Анализ взаимосвязи между артефактами (программными объектами, разработанными программистом). Описание зависимостей между артефактами.

Вариант 

4. Транспорт
  1. Самолеты (дальность полета – целое, грузоподъемность – целое)
  2. Поезда (количество вагонов – целое)
Скорость –  целое;

Расстояние между пунктами отправления и назначения – целое

Организация контейнера

Контейнер на основе двунаправленного линейного списка 

Организация модульной структуры программы

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

Организация обобщений в процедурной  программе

Обобщение, построенное на основе непосредственного  включения специализаций.

     Использование непосредственного включения обеспечивается использованием следующей структуры обобщения:

     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(…),transport:: transport() {}  
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
 

Вывод: 

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

     А так же проведен анализ взаимосвязи  между артефактами (программными объектами, разработанными программистом).

     В завершение работы, мной были описаны  зависимостей между артефактами. 

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

     Количество  артефактов в программах отличается за счет внесения в объектно ориентированный  код виртуальной, статической функций, конструктора и диструктора.

Информация о работе Использование процедурной и объекто ориентированной парадигм праграммирования