Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курсачь - курсач.docx
Скачиваний:
35
Добавлен:
24.02.2016
Размер:
488.95 Кб
Скачать
  1. Аналіз та проектування

Відповідно до постановки задачі для побудування об’єктно- орієнтованої моделі було створено такі класи:

  • TPoint - точка у двовимірній системи координат;

  • ТРaral - паралелограм;

  • ТРrism - трикутна призма;

  • ТРуramid - піраміда;

  • ТFigure - елемент списку;

  • ТLIFO - стек.

UML-діаграму с зображенням взаємодії класів ілюстровано на рис. 2.1.

Рис.2.1 -UML-діаграма ієрархії класів

Клас ТРоіnt має два поля у приватному розділі (ргіvate), а саме tх і tу, що визначають координати X та У відповідно, і методи GetХ та GetУ для доступу до цих полів через властивості (х та у).

Клас ТРaral включає в себе чотири точки - А, В, С, D, метод для розрахунку площі - Агеа та метод Реrimeter для розрахунку периметру утвореного паралелограма. Конструктор Create перевіряє точки на відповідність вершинам паралелограма. Усі поля та методи знаходяться в публічному розділі (public).

Клас ТFigure є дочірнім класу ТРaral і має одне додаткове поле у розділі public – next - елемент списку. Цей клас є батьківським для класів ТPrism і ТРyramid, тому деякі його методи є абстрактними, а саме метод Volume для розрахунку об’єму та метод Drawing для виводу зображення фігури. Методи GetH та SetH призначені для зчитування та редагування значення висоти. Поле ph типу word саме й зберігає значення висоти фігури, але прямого доступу до нього немає (це поле у розділі private).

Класи ТPrism і ТРyramid успадковуються від класу ТFigure. В обох класах перевизначаються такі «батьківські» методи:

  • метод Area для розрахунку площі;

  • метод Volume для розрахунку об’єму;

  • метод Drawing для виводу зображення фігури.

Клас TLIFO має одне поле left (відповідно до означення стеку[2]) - перший (або лівий) елемент списку і такі методи:

  • метод AddLeft для додавання фігури у початок списку;

  • метод DeleteLeft для видалення першого елементу (останнього доданого) списку;

  • метод ShowInfo для виводу інформації про увесь список;

  • метод TotalArea для розрахунку сумарної площі усіх фігур у списку;

  • метод DrawingLeft для виводу зображення першої фігури у списку;

  • метод EditHeight для зміни значення висоти останньої доданої фігури.

В деструкторі Destroy видаляються всі елементи списку.

З ОПИС ПРОГРАМИ

Програма даної курсової роботи була написана мовою програмування Оеірііі, яка дає змогу з легкістю реалізувати усі принципи об’єктно- орієнтованого підходу у своєму програмному забезпеченні.

Програма складається із семи модулів:

  • PolyUnit.pas - модуль з описом та реалізацією класів;

  • GeoForm.pas - модуль основної форми;

  • Calculate.pas- модуль форми для вводу вихідних даних;

  • AddH.pas - модуль з формою для зміни значення висоти;

  • PictUnit.pas - модуль форми для виводу зображення фігури;

  • reference.pas - модуль з формою для виводу довідки;

  • PresUnit.pas - модуль форми для виводу заставки.

3.1 Модуль PolyUnit.Pas

У модулі PolyUnit.pas реалізовані класи, що описані у другому розділі.

Для реалізації точки був створений клас TPoint з полями tх та tу типу Integer у розділі private. Також були створені методи GetX та GetY - функції для зчитування координат, які повертають дані типу Integer. Ці методи теж знаходяться в розділі private, тому для взаємодії з ними були створені властивості property х та property у типу Integer.

Для реалізації паралелограма був створений клас TParal з чотирма полями a,b,c,d типу ТРoint. Також були створені методи Area - віртуальна функція, яка повертає значення типу double - площу, розраховану за формулою (1.3), та Perimeter - функція, яка повертає значення типу double –

Периметр, розрахований за формулою (1.4). Конструктор Create приймає в аргументі координаті точок a,b,c,d, типу Integer(X1,Y1,X2,Y2,X3,Y3,X4,Y4) та перевіряє ці точки на відповідність вершинам паралелограма за формулами (1.2); якщо точки відповідають вершинам , для a,b,c,d, викликаються конструктори та вони ініціалізуються, якщо ні – викликається виняток , який викликає деструктор. У деструкторі Destroy звільняється пам'ять, виділена для точок a,b,c,d, а за допомогою ключового слова inherited, що викликає батьківський деструктор для очищення виділеної під координати пам’яті.

Для реалізації елементу списку був створений клас TFigure, успадкований від класу TParl з полем next типу TFigure y роздiлi create public , полем ph типу word i такими віртуальними абстрактними методами:

- Volume — функція для розрахунку об'ему у дочірніх класах,

повертае значення типу double;

- Drawing — процедура для виводу зображення проекції фігури у

дочірніх класах, яка приймае в артументі посилання pict на об ект типу TCanvas i два значення типу Word - width i height — ширина та висота

зображення; — функція GetH для зчитування висоти у дочірніх класах, яка повертае значення типу Word, та процедура SetH, яка приймае в арryменті число NewH типу Word — нове значення висоти. Для реалізацій призми та піраміди були створені класи TPrism та TPyramid, батьківським класом для яких c TFigure. B цих класах перевизначаються за допомогою ключового слова override такі успадковані

віртуальні методи Create:

- функція Area розраховуе плоцry за формулами (1.5) і(1.8) та повертае ії в значенні типу double;

— функція Volume розраховуе об'ем за формулами (1.7) і (1.9) та повертае його в значені типу double;

— процедура Drawing, яка малює зображення проекції фігури за формулами(1.10), приймає в аргументі посилання pict на об'єкт TCanvas та значення width і height типу Word - ширина та висота зображення.

Для реалізації списку був створений клас TLIFO з полем left типу TFigure. Він включає в себе методи для роботи зі списком типу стек.

Метод AddLeft – процедура , яка приймає в аргументі посилання f типу

TFigure і додає об’єкт, який знаходиться за цим посиланням, у початок списку. Алгоритм роботі Create приведено на рисунку 3.1.

Рис. 3.1 - Блок-схема метода AddLeft

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

Рис. 3.3 - Блок-схема метода DeleteLeft

Метод DrawingLeft - процедура, яка зображує проекцію першої фігури списку. Вона приймає в аргументі посилання pict на об'єкт TCanvas та два значення width і height типу Word - ширина та висота зображення. Його робота полягає у виклику метода Drawing для першого елемента списку.

Метод Showlnfo - процедура, що приймає в аргументі посилання info на об'єкт типу TStringGrid. Його робота полягає у виводі до таблиці геометричних характеристик усіх фігур списку. Алгоритм його роботи ілюстрований на рисунку 3.4.

Метод Total Area - функція, яка повертає значення типу Double - сумарна площа усіх фігур списку. Алгоритм його роботи наведений на рисунку 3.5.

Деструктор Destroy викликає метод DeleteLeft, доки список не стане порожнім, і тільки потім звільняє пам'ять об'єкта списку (inherited).

Метод EditHeight - процедура, що приймає за аргумент значення NewH типу Word для зміни значення висоти останньої доданої фігури списку у процесі роботи зі списком.

3.4 - Блок-схема метода Showinfo

Рис. 3.5 - Блок-схема метода Total Area

3.2 Модуль GeoForm.pas

У модулі GeoForm.pas знаходиться клас основної форми TGeoForm, який успадкований від класа TForm.

Метод FormCreate - обробник подій, який виконується після створення форми. У ньому викликається конструктор для списку типу TLIFO, посилання на який заноситься до змінної FigureStack, та метод цього списку Showlnfo для виводу характеристик фігури у таблицю.

Метод FormClose організовує видалення всіх елементів списку фігур і звільнення пам'яті.

Методи N8Click, N9Click - обробники подій, які виконуються після натискання на кнопку додавання призми або піраміди відповідно. Вони змінюють властивість Caption надпису FigureLabel форми Calculate на відповідне значення та виводять цю форму на екран методом ShowModal.

Метод NIOClick - обробник подій, який виконується після натискання на кнопку видалення останньої доданої фігури, тобто елементу списку зліва. За допомогою функції MessageDlg виводиться запит на підтвердження видалення; якщо отримано позитивний результат, викликається метод списку DeleteLeft.

Метод N11 Click - обробник подій, що викликається для видалення всіх елементів списку. Знову за допомогою функції MessageDlg виводиться запит на підтвердження видалення; якщо отримано позитивний результат, викликається деструктор та оновлення таблиці.

Метод N13Click - обробник події, яка викликається після натискання на кнопку редагування висоти. У ньому викликається метод ShowModal цієї форми для редагування значення висоти останньої доданої фігури у списку.

Метод N12Click дозволяє викликати функцію Total Area для підрахунку сумарної площі усіх фігур у списку та вивести цю інформацію на екран за допомогою процедури showmessage.

Метод N7Click- обробник подій, який викликається після натискання на кнопку малювання фігури. Він викликає метод Axis для малювання вісей та метод списку DrawingLeft, в аргументи якому передаються pict.Canvas, pict.Width, pict.Height, де pict - поле типу TImage об'єкта PictForm.

Метод N3Click - обробник подій, який викликається при натисканні на кнопку довідки. Він викликає метод ShowModal форми Forml модуля reference.

Метод N4Click дозволяє вивести інформацію про дане програмне забезпечення за допомогою процедури showmessage.

Метод N6Click - обробник подій, який викликається для закриття основної форми.