Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Методичка_курсовой_ООП

.pdf
Скачиваний:
11
Добавлен:
24.02.2016
Размер:
708.27 Кб
Скачать

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

ХАРКІВСЬКИЙ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ БУДІВНИЦТВА ТА АРХІТЕКТУРИ

Напрям підготовки 6.050101

МЕТОДИЧНІ ВКАЗІВКИ

до виконання курсової роботи з дисципліни «Об’єктно-орієнтоване програмування»

Харків 2014

ВСТУП

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

Згідно з навчальним планом для студентів другого курсу за напрямом підготовки 050101 "Комп’ютерні науки" передбачено виконання курсової роботи з дисципліни „Об’єктно-орієнтоване програмування”.

Кожна курсова робота є проблемно-орієнтованою, а тому містить певну наукову новизну.

Курсова робота складається з двох взаємопов'язаних частин. Для виконання першої частини курсової роботи потрібно побудувати детальну об'єктну модель запропонованої предметної області. Друга частина курсової роботи передбачає безпосередню розробку об'єктно-орієнтованого програмного забезпечення, реалізує розроблену об'єктну модель. Результати виконання етапів обов’язково заносяться в пояснювальну записку до курсової роботи.

В прoцeci виконання курсової роботи студент повинен узгоджувати з керівником роботи вci відхилення від поставленого завдання.

Відповідальним за правильність прийнятих рішень, зроблених висновків, отриманих результатів, а також оформлення є студент – автор курсової роботи.

1 МЕТА ТА ЗАВДАННЯ КУРСОВОЇ РОБОТИ

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

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

концепції об'єктно-орієнтованого програмування;

спеціалізовані засоби розробки програмного забезпечення мовою програмування;

основи уніфікованої мови моделювання UML.

В результаті виконання курсової роботи студенти повинні:

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

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

Під час виконання курсової роботи студент повинен продемонструвати:

-вміння збирати і аналізувати відповідні матеріали про об’єкт дослідження, використовуючи сучасні джерела інформації, включаючи Інтернет-ресурси;

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

-здатність доводити розв'язання поставленої задачі до логічного кінця;

– вміння аналізувати отримані результати і робити з них висновки.

2.ЗАГАЛЬНІ ВИМОГИ ДО КУРСОВОЇ РОБОТИ

2.1Аналіз та проектування

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

У першій частині курсової роботи необхідно:

-зробити опис запропонованої в завданні предметної області;

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

-виділити з опису предметної області можливі об’єкти і класи;

-визначити залежності (зв’язки) між об’єктами (класами);

-визначити атрибути об’єктів;

-виконати групування і запропонувати ієрархію спадкування класів;

-провести подальше дослідження та удосконалення отриманої моделі;

-написання «скелета» всіх отриманих класів.

2.2 Вимоги до розробки програмного забезпечення

Друга частина курсової роботи – безпосередня розробка програмного забезпечення базується на результатах проектування виконаного в першій частині.

При виконанні курсового проекту рекомендується спиратися на бібліографічні джерела та іншу літературу з об'єктно-орієнтованого програмування.

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

-коректність програми;

-стійкість програми;

-функціональна повнота;

-засоби допомоги та документація.

Коректність програми

Програма правильно працює з коректними тестовими даними.

Стійкість програми

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

Функціональна повнота

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

Засоби допомоги та документація

Програма повинна бути забезпечена внутрішньою документацією у вигляді

коментарів. При запуску програми повинна з’являтися заставка, що відображає суть і можливості програмного засобу, а також відомості про автора. Бажано передбачити можливість існування контекстно-залежної допомоги.

2.3 Вимоги до оформлення результатів курсової роботи

Результати курсової роботи повинні бути представлені в наступному виді:

a)роздрукована пояснювальна записка на паперовому носії;

b)електронний варіант пояснювальної записки, який створюється в середовищі Microsoft Word, вихідні тексти і виконувані файли розроблених програм (у папці: ШифрГрупи_ПІБстудента) на електронному носії в обсязі достатньому для робочої демонстрації розробки.

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

Виклад має бути ясним і чітким, без повторень. Слід уникати необґрунтованого використання в тексті пояснювальної записки великої кількості теоретичного матеріалу. Курсова робота повинна бути написана грамотно. Текст, таблиці, ілюстрації (схеми, креслення) оформлюються у відповідності до вимог ДСТУ.

Зброшурована робота не повинна містити ушкоджень листів, плям, тріщин і загинів на аркушах. Оформлення тексту роботи має проводиться без помарок, олівцевих виправлень. Курсові роботи, які недбало оформлені і містять помилки, до захисту не допускаються.

2.4 Професійна етика

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

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

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

Під помилковим цитуванням розуміється наявність посилань на джерело, коли дане джерело такої інформації не містить.

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

3 ТЕМАТИКА КУРСОВОЇ РОБОТИ

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

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

Тема кожної курсової роботи визначається керівником роботи. Студент може запропонувати власну тему, обґрунтувавши актуальність тематики та доцільність розробки.

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

Формулювання теми курсової роботи можуть мати вигляд:

1.Проектування і програмна реалізація системи, яка моделює роботу з об’єктом «Призма».

2.Проектування і програмна реалізація системи, яка моделює роботу з об’єктом «Прямокутник».

3.Проектування і програмна реалізація системи, яка моделює роботу з об’єктом «Куля».

4.Проектування і програмна реалізація гри «Хрестики-нулики».

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

4 КОРОТКІ ТЕОРЕТИЧНІ ВІДОМОСТІ

4.1 Основні поняття

Нагадаємо про основні поняття об’єктно-орієнтованого програмування.

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

Тип class (клас) описує множину однотипних об’єктів з одними й тими ж даними і функціями, тобто мають загальний стан і поведінку. За допомогою class програміст описує спільно дані і дії (функції) над цими даними. При цьому дані, що належать об’єкту деякого класу, обумовлюють стан (state) цього об’єкта, а набір функцій – його поведінку (behavior).

Використовуючи мітки private, public і protected можна по-різному інкапсулювати (приховувати) дані і функції в класі, забороняючи або дозволяючи доступ до них ззовні об’єкта.

Мітка private (закритий) об’являє дані і функції, які описані з нею, закритими. Ці дані і функції можуть бути використані тільки функціями даного класу.

Мітка public (відкритий) об’являє дані і функції класу, які описані з нею, доступними (відкритими) ззовні об’єкта всередині блоку, в якому об’явлений або створений об’єкт цього класу. Ці дані і функції можуть бути використані стосовно до об’єкта ззовні об’єкта, а також функціями даного класу.

Мітка protected (захищений) об’являє дані і функції класу, які описані з нею, захищеними. Ці дані не доступні ззовні об’єкта та передаються при спадкуванні з класу в похідний клас.

Конструктор (constructor) – це функція класу, основне призначення якої є в ініціалізації значень даних новостворюваного об’єкту. Ім’я конструктора завжди співпадає з іменем класу. Конструктор викликається кожного разу при створенні об’єкту. Клас може мати декілька перевантажених конструкторів. При створенні об’єкту застосовується той конструктор, параметри якого забезпечують встановлення потрібних навчальних значень даних цього об’єкту. Конструктор не має значення, яке повертається.

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

Спадкування (inheritance) класів – це засоби отримання нових класів на базі існуючих. При цьому новий клас спадкує дані і функції з одного базового (base) класу.

Поліморфізм (polymorphism) – це підхід, який реалізує ідею: один інтерфейс – багато методів. Тобто, різні об’єкти можуть мати методи з однаковим інтерфейсом, проте різним функціонуванням.

4.2 Об’єкти, класи і мова UML

Починаючи побудову будь-якої програмної системи, розробникам бажано скористуватися мовою більш високого рівня, ніж мови програмування, для того, щоб обговорити структуру як усієї системи в цілому, так і її частин та взаємозв’язків цих частин в просторі (статично) та в часі (динамічно) безвідносно до мови

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

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

Для графічного представлення об’єктно-орієнтованих систем в даний час використовується мова UML.

Уніфікована мова моделювання UML (Unified Modeling Language) призначена для опису об’єктно-орієнтованих систем у вигляді сукупності діаграм, розкриваючи статичну та динамічну сутність системи як моделі, яка складається з взаємодіючих об’єктів.

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

На рис. 1 зображений клас на мові UML. Клас представляється у вигляді прямокутника, який поділений на три частини, в яких розміщується ім’я класу, перелік атрибутів та перелік функцій класу. Перед іменами даних і функцій ставляться символи «-» та «+», які вказують на доступ private та public відповідно.

Рисунок 1 – Класс CBall

З рис. 1 видно, що на мові UML представлений клас, який має ім’я CBall, закриті дані х і у та відкриті функції Set, Move та Show. Важливо, що дане представлення класу не залежить від мов програмування.

Рисунок 2 – Об’єкти класу CBall

На рис. 2 зображені об’єкти класу CBall на мові UML. В прямокутнику ім’я об’єкта, відокремлене від класу даного об’єкта двокрапкою. Якщо об’єкт немає ім’я, тоді ставиться двокрапка перед іменем класу. Ім’я об’єкта та класу підкреслюються.

Рисунок 3 – Клас MyClass спадкує клас BaseClass, містить об’єкт классу

OtherClass та використовує клас UsedClass

Нотація на рисунку 3 показує спадкування одного класу з другого класу, володіння об’єктом другого класу та використання в одному класі другого класу.

Мова UML досить-таки багата, та за необхідності можна ознайомитися з нею за багаточисленною виданою літературою.

Для опису розроблювальної системи на мові UML можна використовувати різні типи діаграм:

-діаграма взаємодії (interaction diagram);

-діаграма діяльності (activity diagram);

-діаграма використання (use case diagram);

-діаграма класів (class diagram);

-діаграма компонентів (component diagram);

-діаграма кооперації (component diagram);

-діаграма об’єктів (object diagram);

-діаграма послідовності (sequence diagram);

-діаграма розгортання (deployment diagram);

-діаграма станів (statechart diagram).

4.3Побудова об’єктної моделі

Для побудови об’єктної моделі даної системи необхідно виконати наступні етапи:

-визначення об’єктів і класів;

-визначення залежностей між об’єктами;

-визначення атрибутів об’єктів і зв’язків;

-організація та спрощення класів при використанні спадкування;

-подальше дослідження і вдосконалення моделі.

4.4 Визначення об’єктів і класів

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

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

Надалі цей набір класів може бути доповнений або змінений. При використанні візуального середовища проектування необхідно в ній додати всі запропоновані класи.

4.5 Визначення залежностей (зв’язків) між класами

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

Потім необхідно видалити непотрібні або неправильні залежності:

-видаляємо залежності між виключеними класами;

-видаляємо нерелевантні залежності і залежності, пов'язані з реалізацією;

-розбиваємо складні залежності на прості залежності;

-видаляємо похідні залежності.

Таким чином, видаливши надлишкові залежності, отримаємо список залежностей.