Розробка програми на базі об'єктно-орієнтованого підходу і користувальницьких класів

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Украинский
    ,
    Формат файла:
    MS Word
    54,85 Кб
  • Опубликовано:
    2014-11-28
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Розробка програми на базі об'єктно-орієнтованого підходу і користувальницьких класів

ВВЕДЕННЯ

об'єктний орієнтований програмування

Актуальність роботи полягає в застосуванні сучасних технологій об'єктно-орієнтованого підходу в програмуванні. Даний курсовий проект показує на прикладі роботу ООП. Проект моделює роботу з геометричними фігурами за участю реальних об'єктів як статичну модель реалізовану в програмному коді.

Об'єктно-орієнтоване програмування або ООП - методологія програмування, заснована на уявленні програми у вигляді сукупності об'єктів, кожен з яких, є реалізацією певного типу, що використовує механізм пересилання повідомлень і класи, організовані в ієрархію спадкування. Застосування об'єктно-орієнтованого підходу включає в себе об'єктно-орієнтований аналіз, об'єктно-орієнтоване проектування та об'єктно-орієнтоване програмування .

Об'єктно-орієнтоване програмування дозволяє розкласти проблему на складові частини. Кожна складова частина стає самостійним об'єктом, який містить свої власні коди і дані, які відносяться до цього об'єкта.

Мета роботи полягає в розробці програмного продукту - розробка програмного комплексу з використанням об'єктно-орієнтованого підходу і користувальницьких класів. Для досягнення мети необхідно провести об'єктно-орієнтований аналіз, об'єктно-орієнтоване проектування, об'єктно-орієнтоване програмування і зібрати статистичні результати.

Робота включає вступ, три розділи, перелік посилань та додатків. У вступі розкриваються цілі і завдання розробки, визначається його предмет, аргументується актуальність здійснених у проекті розробок. Перший розділ містить постановку задачі, опис предметної області, цілі і завдання роботи. У другому розділі проводиться вибір методу рішення, опис ООП підходу і вибір інструментальних засобів для реалізації проекту, а також опис вхідних та вихідних даних. У третьому розділі міститися результати об'єктно-орієнтованого аналізу, об'єктно-орієнтованого проектування, об'єктно-орієнтованого програмування.

1. ПОСТАНОВКА ЗАВДАННЯ

Клас «квадрат»

Вхідні данні:

поле a - дійсне число (float), довжина сторони квадрата.

Результати:

конструктор без параметрів, конструктор з параметрами; метод - обчислення площі, периметру та діагоналей, метод вив оводу відомостей про фігуру.

Клас «піраміда»

Вхідні дані:

поле f - дійсне число(float) апофема піраміди;

Результати:

Метод обчислення об’єму фігури, метод обчислення площі поверхні фігури, конструктор з параметрами, метод виводу відомостей про фігуру.

 

2. ОБ'ЄКТНО-ОРІЄНТОВАНИЙ АНАЛІЗ ТА ПРОЕКТУВАННЯ


В основі об'єктно-орієнтованого підходу (ООП) лежить об'єктна декомпозиція, при цьому статична структура ПО описується в термінах об'єктів і зв'язків між ними, а динамічний аспект ПО описується в термінах обміну повідомленнями між об'єктами. Кожен об'єкт системи має свій власний поведінкою, моделюючим поведінку об'єкта реального світу.

2.1 Об'єктно-орієнтований аналіз


Об'єктна модель є природним способом представлення реального світу.

Основними принципами її побудови є:

-       Абстрагування - це виділення найбільш важливих, істотних характеристик деякого об'єкта, які відрізняють його від всіх інших видів об'єктів, і ігнорування менш важливих або незначних деталей;

-       Інкапсуляція - передбачає, що внутрішні ресурси об'єкта, приховані від зовнішнього середовища;

-       Модульність - це декомпозиція системи, знижує складність системи, дозволяючи виконувати незалежну розробку окремих модулів;

-       Ієрархія - це впорядкована система абстракцій, що задає їх розташування за рівнями.

-       До основних понять об'єктно-орієнтованого підходу (елементів об'єктної моделі) відносяться: об'єкт, класс, атрибут, операція, поліморфізм, спадкування, компонент, зв'язок.

Абстракція клас kvadrat

Ім’я: kvadrat.

Відповідальність: підтримка інформації про характеристику геометричної фігури.

Операції:

1.  ініціалізація;

2.      обчислення площі;

.        обчислення периметру;

.        вивід даних;

Абстракція клас piram

Ім’я: piram.

Відповідальність: підтримка інформації про характеристику геометричної фігури.

Операції:

1.  ініціалізація;

2.      обчислення площі поверхні геометричної фігури;

.        обчислення об’єму геометричної фігури;

.        вивід даних;

2.2 Об'єктно-орієнтоване проектування


Необхідно розробити клас kvadrat.

Примітка:

Не враховувати необхідність перерозподілу пам’яти.

Данні:

а - дійсне додатне число, довжина сторони квадрату.

Операції:Geta() - метод який повертає значення довжини сторони квадрата;

kvadrat() - конструктор без параметрів , виконує початкову ініціалізацію об’єкта;

kvadrat(int t) - конструктор с параметрами,виконує ініціалізацію об’єкта.ploshat() - обчислення площі квадрата; perim() - обчислення периметру квадрата;diag() - обчислення діагоналей квадрата;show() - вивід даних про квадрат.

Необхідно розробити клас piram.

Примітка:

Не враховувати необхідність перерозподілу пам’яти.

Данні: - дійсне число(float) апофема піраміди;

Операції:(float f1,float a):kvadrat(a) - с параметрами,виконує ініціалізацію об’єктаpl() - обчислення площі піраміди;v() - обчислення об’єму піраміди.

 

.2.1 Структура класів

class kvadrat

x(xx)

 float a ;


+float Geta()  +kvadrat()  +kvadrat(int t) +float ploshat() +float perim() +float diag( +void show()



Модифікатори доступу:

+

public

#

protected

-

private

class piram


d(12,5)

 float f



+piram(float f1,float a):kvadrat(a)  +float pl()  +float v()




Модифікатори доступу:

public

#

protected

-

private

 

2.2.2 Відносини між класами

class kvadrat

 float a ;

+float Geta()  +kvadrat()  +kvadrat(int t) +float ploshat() +float perim() +float diag( +void show()



class piram

 float f

+piram(float f1,float a):kvadrat(a)  +float pl()  +float v()


2.2.3 Структура об'єктів

Об'єкти системи:.

Діаграма об'єктів - показує структуру системи в конкретний момент часу, об'єкти, їх атрибути.

Діаграми об'єктів дозволяють моделювати екземпляри сутностей, які містяться в діаграмах класів. На діаграмі об'єктів показано безліч об'єктів і відносин між ними в певний момент часу.

Застосовують при моделюванні статичних видів системи з точки зору проектування і процесів. При цьому моделюється "знімок" системи в даний момент часу і зображується безліч об'єктів, їх станів і відносин між ними.

Вони важливі не тільки для візуалізації, визначення специфікацій та документування структурних моделей, але і для конструювання статичних аспектів системи за допомогою прямого і зворотного проектування.

class: kvadrat


x(xx): kvadrat

a=5

 

class: piram

 


h=7


3. РОБОЧЕ ПРОЕКТУВАННЯ


Для реалізації класу згідно технічного завдання обрано мову програмування С++. Мова програмування С++ підтримує об’єктно-орієнтироване програмування.

Клас - складовий тип данних, елементами якого є функції ізмінні. В основу поняття клас покладений той факт, що «над об'єктами можна здійснювати різні операції ». Властивості об'єктів описуються за допомогою полів класів, а дії над об'єктами описуються за допомогою функцій, які називаються методами класу. Клас має ім'я, складається з полів, званих членами класу і функцій - методів класу.

Опис класу має наступний формат:<ім'я класу>

{

// Опис відкритих членів і методів класу public:

// Опис закритих членів і методів класу private:

// Опис захищених членів і методів класу protected:

}

Відкриті та закриті члени класу:

На відміну від полів структури доступних завжди, в класах можуть бути члени і методи різного рівня доступу:

Відкриті public (публічні), виклик відкритих членів і методів класу здійснюється за допомогою оператора. ("точка");

Закриті private (приватні), доступ до яких можливий тільки з допомогою відкритих методів.

Захищені методи (protected).

Об'єктом називається математичне уявлення сутності реального світу (або предметної області), яке використовується для моделювання.

Об'єкти зберігаються в купі (для класів і посилальних типів)

-        Об'єкти необхідно ініціалізувати оператором;

-       Класи можуть успадковувати властивості інших класів (одиничне спадкування коду);

-       Класи можуть реалізовувати множинні інтерфейси (множинне успадкування типів).

Реалізація інкапсуляції

Інкапсуляція - це властивість об'єктів приховувати деякі свої дані і способи їх обробки (методи) від навколишнього цифрового середовища і, зокрема , від малодосвідчених програмістів, залишаючи «зовні» тільки необхідні та/або необхідні властивості і функціональні можливості .

З точки зору стороннього програміста об'єкт виглядає таким собі «чорним ящиком» , у якого є входи і виходи. Подаючи на входи дані і застосовуючи функціональні методи можна отримати результат на виході.

На сьогоднішній день існує три рівні інкапсуляції public, protected і private.

Дані модифікатори покликані регулювати видимість властивостей і методів всередині і зовні класу і об'єктів класу.

В базовому класі закритими є поле float a. Доступ до закритих полів класу реалізовано за допомогою відкритих функцій членів класу kvadrat(int t)конструктор з параметрами, виконує ініціалізацію об’єкта х(хх), kvadrat() конструктор без параметрів,який виконує початкову ініціалізацію об’єкта, float ploshat() функція обчислення площі квадрата,float perim() функція обчислення периметра квадрату, функція обчислення діагоналей квадрату float diag(),void show() функція виводу даних про об’єкт, float Geta() функція яка повертає значення об’єкту.

В похідному класі закритими є поле float f. Доступ до закритих полів класу реалізовано за допомогою відкритих функцій членів класу: piram(float f1,float a):kvadrat(a) ) конструктор з параметрами, виконує ініціалізацію об’єкта похідного класу, float pl() функція обчислення площі піраміди, float v() функція обчислення об’єму піраміди.

Реалізація успадкування

У програмуванні існує поняття програмного інтерфейсу, що означає перелік можливих обчислень, які може виконати та чи інша частина програми, включаючи опис того, які аргументи і в якому порядку потрібно передавати на вхід алгоритмам з цього переліку, а також що і в якому вигляді вони будуть повертати . Абстрактний тип даних інтерфейс придуманий для формалізованого опису такого переліку. Самі алгоритми, тобто дійсний програмний код, який буде виконувати всі ці обчислення, інтерфейсом не задається, програмується окремо і називається реалізацією інтерфейсу.

Програмні інтерфейси, а також класи, можуть розширюватися шляхом успадкування, яке є одним з важливих засобів повторного використання готового коду в ООП. Успадкованих клас або інтерфейс буде містити в собі все, що зазначено для всіх його батьківських класів. Клас дозволяє задати не тільки програмний інтерфейс до самого себе і до своїх екземплярів, а й в явному вигляді написати код, відповідальний за обчислення. Якщо при створенні свого нового типу даних успадковувати інтерфейс, то ми отримаємо можливість передавати примірник свого типу даних в будь-який алгоритм, який вміє працювати з цим інтерфейсом. Однак нам доведеться самим написати реалізацію інтерфейсу, тобто ті алгоритми, якими буде користуватися цікавить нас алгоритм для проведення обчислень з використанням нашого екземпляра. У той же час, наслідуючи клас, ми автоматично успадковуємо готовий код під інтерфейс. У цій можливості успадковувати готовий код і проявляється те, що в об'єктно-орієнтованої програми тип даних клас визначає одночасно і інтерфейс, і реалізацію для всіх своїх екземплярів.

В даній курсовій роботі при розробці класів реалізовано просте відкрите успадкування.

Базовий клас - kvadrat та похідний від нього клас - piram. Успадкування - це не просто створення точної копії класу, а розширення вже існуючого класу, щоб нащадок міг виконувати нові, характерні лише йому функції. Принцип успадкування вирішує проблему модифікації властивостей об'єкта. Послідовне проведення в життя принципу «успадковуй і змінюй» добре узгодиться з поетапним підходом до розробки великих програмних проектів і вбагатому стимулює такий підхід.

Реалізація поліморфізму

Поліморфізм - це властивість, яка дозволяє одне і те ж ім'я використовувати для вирішення двох або більше схожих, але технічно різних завдань. Метою поліморфізму, стосовно об'єктно-орієнтованого програмування, є використання одного імені для завдання загальних для класу дій. Виконання кожного конкретного дії буде визначатися типом даних. Наприклад, для мови Сі, в якому поліморфізм підтримується недостатньо, знаходження абсолютної величини числа вимагає трьох різних функцій: abs (), labs () і fabs (). Ці функції підраховують і повертають абсолютну величину цілих, довгих цілих і чисел з плаваючою точкою відповідно. В С + + кожна з цих функцій може бути названа abs (). Тип даних, який використовується при виконанні функції, визначає, яка конкретна версія функції дійсно виконується. В С + + можна використовувати одне ім'я функції для безлічі різних дій. Це називається перевантаженням функцій.

У більш загальному сенсі, концепцією поліморфізму є ідея "один інтерфейс, безліч методів". Це означає, що можна створити загальний інтерфейс для групи близьких за змістом дій. Перевагою поліморфізму є те, що він допомагає знизить складність програм, дозволяючи використання того ж інтерфейсу для завдання єдиного класу дій. Вибір же конкретного дії, залежно від ситуації, покладається на компілятор.

В курсовому проекті поліморфізм реалізовано в розділені класу на інтерфейс, реалізацію.

3.3 Тестування працездатності системи класів


Для тестування працездатності базового класу kvadrat задамо наступне значення для об’єкту х(8), де параметр це довжина сторони квадрату.

Отримаємо результат

Рисунок 1. Результати роботи базового класу.

Розрахунки проведені в ручну підтверджують правильність роботи класу.

Для тестування працездатності похідного класу perim задамо наступне значення для об’єкту dl(12,5), де перший параметр це довжина апофеми піраміди а другий параметр довжина сторони квадрату.

Отримаємо результат

Рисунок 2. Результати роботи похідного класу.

Розрахунки проведені в ручну підтверджують правильність роботи класу.

3.4 Обґрунтування вибору структур даних


В програмі, яка демонструє роботу розробленого класу, оглушуються об’єкти даного класу, ініціюються за допомогою функцій членів класу.

Функції виводу: void show();

Функції ініціалізації: kvadrat(), kvadrat(int t), piram(float f1,float a):kvadrat(a);

Функція обчислення: float ploshat(), float perim(), float diag(), float pl(), float v().

 

3.5 Обґрунтування вибору алгоритмів


Рисунок 3. Блок - схема головної програми.

Висновки


В даній курсовій роботі розроблений програмний комплекс з використанням об'єктно-орієнтованого підходу і користувальницьких класів». Поглиблені знання з об’єктно-орієнтованого проектування та аналізу. ООП дозволяє ефективно розробляти програмне забезпечення та має ряд важливих переваг перед модульно-структурним програмуванням.

Основні ідеї об'єктно-орієнтованого підходу спираються на наступні положення:

модель реального світу або її частини може бути описана як сукупність взаємодіючих між собою об'єктів.

об'єкт описується набором параметрів, значення яких визначають стан об'єкта, і набором операцій (дій), які може виконувати об'єкт.

Практично всі об'єктно-орієнтовані мови програмування є розвиваються мовами, їхні стандарти регулярно уточнюються і розширюються. Найбільш поширеною об'єктно-орієнтованою мовою програмування безумовно є C + +. Вільно поширювані комерційні системи програмування C++ існують практично на будь-якій платформі.

Під час виконання курсового проекту вирішувалися такі основні завдання:

вивчити сутність об'єктно-орієнтованого підходу до програмування;

розглянути об'єктно-орієнтований аналіз;

вивчити процес об'єктно-орієнтованого проектування.

розробити програмний комплекс з використанням об’єктно-орієнтованого програмування.

Поставлені завдання виконані.

 

СПИСОК ЛІТЕРАТУРИ


1. Г. Шилдт. Самоучитель С++:Пер. с англ. - 3-е изд.: - СПб.:БХВ-Петербург,2001. - 688 с.

2. В.П. Румянцев. Азбука программирования в Win 32 API. - 3-е изд.: - Москва, «Горячая линия - телеком», 2001.

3. Мешков А., Тихомиров Ю. Visual C++ и MFC.:В трех томах. Том 1 - СПб.:BHV -- Санкт - Петербург, 1997. - 451 с.,ил.

4. Мешков А., Тихомиров Ю. Visual C++ и MFC.:В трех томах. Том 2 - СПб.:BHV -- Санкт - Петербург, 1997. - 464 с.,ил.

5. Глинский Я.М., Анохін В.Є., Ряжська В.А. С++ Bulder Навчальний посібник Львів 2004р.-192с.

6. Давыдов В.Г. Технология программирования С++ СПб: БХВ-Петербург, 2005-672с.

7. Савитч, Уолтер Язык С++. Курс объектно-ориентированного программирования. 3-е изд. М.: Издательский дом «Вильямс», 2001-704с.

8. Подбельский В.В., Фомин С.С. Программирование на языке Си: Учеб. пособие. - М.: Финансы и статистика, 1998. - 600 с.: ил.

 

ДОДАТКИ

 

Додаток А

 

Керівництво програміста

Призначення програми - демонстрація роботи розробленого класу. Мінімальні системні вимоги: операційна система Windows XP або DOS, монітор з мінімальним розширенням екрану 640 на 480 пікселів, відеокарта, клавіатура.

Програма працює в текстовому режимі. Управління передається через методи об’єктів. Інформація, що отримується від користувача - введення даних з клавіатури. Вихідні дані - обчислення .

Додаток Б

 

Керівництво оператора

Розроблена програма призначена для учбових цілей, демонструє роботу розробленого класу.

Мінімальні системні вимоги: операційна система Windows XP або DOS, монітор з мінімальним розширенням екрану 640 на 480 пікселів, відеокарта, клавіатура.

Додаток В

 

Текст прогарами

Файл інтерфейсу kirtr.hkvadrat { //создание класса kvadrat

float a ;//

public://модификатор доступа

float Geta();//прототип метода ...(что он делает)

kvadrat();//прототип конструктора без параметров

kvadrat(int t);//прототип конструктора с параметрами

float ploshat();//еще один метод

float perim();//

float diag();//

void show();//

};piram: public kvadrat{//создание класса piram

float f;//apofema

public://модификатор доступа

piram(float f1,float a):kvadrat(a)//конструктор с параметрами piram с наследованием из класса kvadrat

{=f1;//

}

float pl();//прототип метода

float v();//прототип метода

};

Файл реалізації kirtr.cpp

#include "kirtr.h"

#include <iostream.h>

#include <conio.h>

#include <math.h>

#include <locale.h>

#include <dirent.h>kvadrat::Geta(){ return a;}//сам метод Geta()

kvadrat::kvadrat(){a=0;}//сам конструктор без параметров::kvadrat(int t){a=t;}//сам конструктор с параметрами

float kvadrat::ploshat()//сам метод ploshat()

{ return a*a;}//возращает значениеkvadrat::perim()//сам метод perim()

{return 4*a;}//возращает значениеkvadrat::diag()//сам метод diag()

{return (a*a+a*a);}//возращает значениеkvadrat::show()//сам метод show()

{cout<<a<<endl;}//выводит ответ на экранpiram::pl()//сам метоад

{

float SB;//обявление переменной SB

SB=0.5*perim()*Geta();//присваивание переменной SB такогото значения

return SB+ ploshat();//возврат переменной SB + результат функции ploshat()

}piram::v()//

{

float h,t;//

h=sqrt(f*f-((Geta()/(2*tan(45))*(2*tan(45)))));//

t=(float)1/3;//

return t*ploshat()*h;//

}

Файл основного програмного додатку kirman.cpp

#include "kirtr.cpp"

#include <iostream.h>

#include <conio.h>

#include <math.h>

#include <locale.h>

int k;

while (1)

 {();<<"Bb|bepute nynkt menu"<<endl;

cout<<"1.Pabotu c klaccom bzoBb|m"<<endl; <<"2.Pabotu c klaccom proizvodnim"<<endl;

cout<<"5.Vixod"<<endl;

cin>>k;

switch(k)

 {1:{

int xx;

cout<<"Vvedite dliny ctoroni kvadrata\n";

cin>>xx;

kvadrat x(xx);

 cout<<"perim "<<x.perim()<<endl;

cout<<"plochad "<<x.ploshat()<<endl; cout<<"diagonal "<<x.diag()<<endl; getch();

 break;//

}2:{ piram d(12,5);//

cout<<"Plochad "<<d.pl()<<endl; cout<<"Obem "<<d.v()<<endl;

getch();

 break;

}

}(k==5) break;

}

}

Додаток Д

 

Экранні форми


Рисунок 1.

Рисунок 2.

Похожие работы на - Розробка програми на базі об'єктно-орієнтованого підходу і користувальницьких класів

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!