Національний університет “Львівська політехніка”
Спеціальність 0804 “Комп'ютерні науки”
курс III, семестр 6
Освітньо-кваліфікаційний рівень – бакалавр
Навчальний предмет “Об’єктно-орієнтоване програмування”
ГРАФІКО-РОЗРАХУНКОВА РОБОТА
на тему
“Створення проекту із застосуванням наслідування та поліморфізму”
ЗАВДАННЯ:
Створити проект Delphi для дослідження основних властивостей ООП – наслідування та поліморфізму:
1. Розробити компоненту на основі класу із полями у відповідності до варіанту. Передбачити конструктори (з параметрами та без), деструктор, селектори і модифікатори. Врахувати необхідність приховання даних.
2. Описати дочірні класи. Визначити та реалізувати необхідні поля та методи.
3. У дочірніх класах перевантажити або перевизначити операції (у відповідності до варіанту), які вводяться у батьківському класі як абстрактні методи (для кожного класу – з різною реалізацією).
4. Передбачити застосування поліморфного присвоєння та динамічного зв’язування.
5. Самостійно продумати і реалізувати спосіб демонстрації отриманих результатів.
Примітка. Опис компонент, класів та реалізацію методів виконати в окремих програмних модулях.
Термін виконання графіко-розрахункової роботи: до 5 грудня 2011 року.
ВАРІАНТИ:
Варіант1.
Клас “учасник”: прізвище, адреса, телефон.
Дочірні класи:
“учасник черги на отримання житла” (дата постановки на облік, номер в черзі, наявність пільг);
“учасник виїзної конференції” (чи потребує поселення, дата і час початку виступу, тривалість доповіді).
Перевантажити операції: порівняння – за датою постановки на облік і тривалістю доповіді; операцію заперечення – для зміни пункту про наявність пільги і про потребу в поселенні на протилежне значення. Перевизначити метод “видача інформації” (для друку значень назви класу та полів об’єкта).
Варіант 2.
Клас “давач”: тип (температури, тиску, вологості), поточне значення, максимально і мінімально допустимі, сигнал тривоги.
Дочірні класи:
“круглий дисплей”(координати центру, радіус);
“прямокутний дисплей” (координати протилежних кутів).
Перевантажити операції: порівняння – за поточними значеннями, якщо давачі одного типу та інкременту – як збільшення на 1 для радіусу або координат нижнього правого кута. Перевизначити методи “видача інформації” (для друку значень назви класу та полів об’єкта) – поточне і максимальне значення за добу і “змінити поточне значення”, який змінює поточне значення і, в разі необхідності, максимальне за добу.
Варіант 3.
Клас “вікно”: координати, розміри, одиниці виміру для координат, одиниці виміру для розмірів.
Дочірні класи:
“вікно у будинку” (матеріал, товщина, спосіб відкривання, стан – відкрите, закрите);
“ вікно у програмі” (стиль, наявність дочірніх вікон, стан – видиме, невидиме).
Перевантажити операції: порівняння – за координатами, розмірами та матеріалом або стилем, інкременту – як зміну матеріалу або стилю, зміни знаку – як зміну стану. Перевизначити метод “малювання”.
Варіант 4.
Клас “товар”: назва, обліковий номер, постачальник, ціна, кількість одиниць.
Дочірні класи:
“промисловий товар” (умови транспортування, місце знаходження: на складі, в торговому залі, на вітрині);
“харчовий продукт” (дата виготовлення, термін зберігання).
Перевантажити операції: інкременту – як збільшення кількості одиниць для харчового і зміна місця знаходження для промислового; порівняння – за терміном зберігання для харчового і за ціною для промислового. Перевизначити метод “попередження” – для промислового товару з повідомленням про умови транспортування (“не кантувати”, “обережно!” і т.ін.), або “товар непридатний для споживання” – для харчового, для батьківського – назва товару.
Варіант 5.
Клас “точка на площині”: координати. Метод “рух” – для переміщення на деяку відстань по горизонталі та вертикалі.
Дочірні класи:
“коло” (радіус);
“прямокутник” (координати протилежного кута).
Перевантажити операції: інкременту – як збільшення розміру об’єкта на 1, порівняння – за розміром і додавання “С=А+В” – об’єкт С “концентричний” відносно А і більший на відповідні розміри об’єкта В. Перевизначити метод “рух”.
Варіант 6.
Клас “книга”: назва, автор, рік видання, кількість сторінок, код УДК.
Дочірні класи:
“книга в бібліотеці” (інвентарний номер, ознака наявності, кому видана, вартість);
“книга в магазині” (відпускна ціна, кількість екземплярів).
Перевантажити операції: порівняння – за кодом УДК, за вартістю, відпускною ціною або кількістю екземплярів і інкременту – збільшити кількість екземплярів, а для бібліотечної – якщо книга не видана, то змінити ознаку наявності і в інтерактивному режимі заповнити поле “кому видана”. Перевизначити метод “видача інформації” (для друку значень назви класу та полів об’єкта).
Варіант 7.
Клас “станція”: назва, координати.
Дочірні класи:
“радіостанція” (досяжність, діапазон частот, вартість ефірного часу);
“залізнична станція” (категорія, кількість запасних шляхів, тривалість зупинки швидкісних потягів).
Перевантажити операції: додавання – результуючий об’єкт для радіостанцій має сумарну досяжність, мінімальну вартість ефірного часу і об’єднаний діапазон частот, для залізничних – сумарну кількість запасних шляхів, максимальну категорію і максимальну тривалість зупинки; операцію інкременту – збільшення вартості ефірного часу і кількості запасних шляхів відповідно. Перевизначити метод “видача інформації” (для друку значень назви класу та полів об’єкта).
Варіант 8.
Клас “іграшка”: назва, ціна, кількість на складі.
Дочірні класи:
“машина” (марка, наявність дистанційного керування);
“м’яка іграшка” (матеріал, наявність звуку).
Перевантажити операції: інкременту – як збільшення кількості на складі; порівняння – як порівняння цін. Перевизначити метод “видача інформації” (для друку значень назви класу та полів об’єкта).
Варіант 9.
Клас “товар на складі”: назва, кількість, місце розташування.
Дочірні класи:
“продукт з малим терміном зберігання” (оптимальна температура, дата поставки, термін зберігання);
“хімічний елемент” (оптимальна температура, оптимальна вологість, допуски по температурі і вологості).
Перевантажити операції: порівняння – за датою поставки і за амплітудою критичних температур та інкременту – збільшення кількості товарів відповідного класу. Перевизначити метод “попередження”.
Варіант 10.
Клас “фраза”: кількість слів, кількість символів, кількість різних символів.
Дочірні класи:
“число” (система числення, довжина дробової частини, форма запису (з фіксованою, з плаваючою крапкою);
“речення” (кількість символів в алфавіті, чи ігнорувати регістр).
Перевантажити операції: порівняння – відповідно до семантики, логічне множення – порозрядне для двійкового запису чисел або як посимвольний перетин для речень з врахуванням місця розташування символів. Перевизначити метод “видача інформації” (для друку значень назви класу та полів об’єкта).
Варіант 11.
Клас “нота”: назва, октава, тривалість звучання, порядковий номер.
Дочірні класи:
“звук” (частота);
“зображення” (координати на екрані лівого верхнього кута фрагменту нотного стану).
Перевантажити операції: інкременту – для отримання наступної ноти, множення – для збільшення тривалості звучання ноти. Перевизначити метод “виведення”.
Варіант 12.
Клас “коло”: координати центра, радіус, колір, ознака візуалізації (чи показувати на екрані).
Дочірні класи:
“вписаний многокутник” (кількість сторін);
“описаний многокутник” (кількість сторін).
Перевантажити операції: інкременту – збільшення кількості сторін, зміна знаку – зміна ознаки візуалізації, перетворення типу: вписаний – описаний многокутник. Перевизначити метод “малювання”.
Варіант 13.
Клас “прямокутник”: координати верхнього лівого і нижнього правого кутів.
Дочірні класи:
“ромб” (довжина другої діагоналі);
“коло” (центр – центр прямокутника, діаметр – діагональ прямокутника).
Перевантажити операції: декременту – як зменшення на 1 розміру фігури, додавання “С=А+В” – як копіювання в С об’єкта А зі збільшенням діагоналі на розмір діагоналі В. Перевизначити метод “малювання”.
Варіант 14.
Клас “підключення”: назва мережі, наявність пільги.
Дочірні класи:
“за контрактом” (номер рахунку, дата відкриття, тариф, залишок);
“за карткою” (дата закінчення, тариф, залишок).
Перевантажити операції: порівняння – за залишками, і декременту – як розмову, тривалість якої вводиться інтерактивно (дата – поточна), в результаті об’єкт “за карткою” може бути знищений. Перевизначити метод “видача інформації” (для друку значень назви класу та полів об’єкта).
Варіант 15.
Клас “фігура”: координати на шахівниці, колір.
Дочірні класи:
- “шашка”;
- “дамка”.
Перевантажити операцію ділення (“А/В“) як “А б’є В” і метод перетворення типу (із “шашки” в “дамки”). Перевизначити метод “хід”.
Варіант 16.
Клас “учасник змагань”: вид спорту, назва учасника.
Дочірні класи:
“футбольна команда” (кількість забитих голів, кількість пропущених голів, результат);
“легкоатлет” (час, час лідера, відставання від лідера, місце у таблиці результатів).
Перевантажити операції: інкременту – як збільшення на 1 кількості забитих голів або зменшення на 1 місця у таблиці результатів; віднімання як результат конкретної гри: “перемога”, “нічия” або “поразка” в полі “результат”. Для об’єктів класу “легкоатлет” операція віднімання “А–В” щось виконує тільки для ситуації, коли А стає новим лідером, тобто його час менший, ніж час лідера, тоді необхідно змінити відповідні значення полів для обох об’єктів. Перевизначити метод “видача інформації” (для друку значень назви класу та полів об’єкта).
Варіант 17.
Клас “документ”: назва, автор, час створення, термін зберігання.
Дочірні класи:
“паперовий документ” (номер шафи, номер папки, номер 1-ї сторінки, кількість сторінок);
“електронний документ” (назва файлу, формат, шлях до каталогу на диску, розмір).
Перевантажити операції: порівняння – за номерами шафи, папки та 1-ї сторінки, або за назвою файлу та шляхом до каталогу на диску, і декременту – як зміну поточної дати на 1, в результаті, в результаті об’єкт може бути знищений. Перевизначити метод “видача інформації” (для друку значень назви класу та полів об’єкта).
Варіант 18.
Клас “фігура”: координати на шахівниці, колір.
Дочірні класи:
”кінь”;
“пішак”;
“ферзь”.
Перевантажити операцію віднімання (“А–В“) як “А б’є В”. Перевизначити метод “хід”.
Варіант 19.
Клас “банківський рахунок”: номер рахунку, назва банку, МФО.
Дочірні класи:
“депозитний” (дата відкриття, період, ставка, сума);
“розрахунковий” (дата останньої операції, ставка, залишок).
Перевантажити операції: додавання – як переведення коштів з двох рахунків на третій, при цьому перші два рахунки не закриваються, суми на них зводяться до 5, і декременту – як зняття відсотків для депозитного і як зняття 5 гривень для розрахункового (дата – поточна). Перевизначити метод “видача інформації” (для друку значень назви класу та полів об’єкта).
Варіант 20.
Клас “товар”: назва, виробник.
Дочірній клас:
- “виготовлений товар” (дата виготовлення, кількість).
Дочірній клас від “виготовленого товару”:
- “проданий товар” (шифр партії – складається з дати виготовлення і порядкового номера; дата продажу, кількість в партії).
Перевантажити операції: додавання – за кількістю або кількістю в партії, якщо дати виготовлення збігаються, та інкременту – за датою виготовлення або датою продажу. Перевизначити метод “видача інформації” (для друку значень назви класу та полів об’єкта).
Варіант 21.
Утворити ієрархію класів:
- “форма існування” – абстрактний клас з методом “рух”.
Дочірні класи від нього:
“істота” (координати, назва, вік, максимальний вік; метод “рух” – збільшення координат на певну величину);
“рослина” (координати, назва);
“нерухомий об’єкт” (координати, назва).
Дочірні класи від істоти:
“хижак”;
“здобич”.
Операція віднімання “А–В ” допустима тільки для об’єктів, які знаходяться поруч (у 8 напрямках) і тільки якщо А – хижак, а В – здобич, або А – здобич, а В – рослина, тоді об’єкт В знищується, а об’єкт А пересувається на його місце, вік збільшується на 1. Якщо вік більше за максимальний то даний об’єкт знищується. Перевизначити метод “рух”.
Варіант 22.
Клас “обладнання”: назва, вартість, дата виготовлення, група амортизації (5%, 15%, 25%) і клас “модернізація обладнання” (дата ремонту, вартість ремонту).
Дочірні класи:
“працююче обладнання” (дата введення в експлуатацію, залишкова вартість);
“модернізоване обладнання” (додаткова вартість).
Перевантажити операції: інкременту – як збільшення дати на рік і з перерахуванням вартості, враховуючи амортизацію, порівняння – по вартості (або по залишковій вартості). Перевизначити метод “видача інформації” (для друку значень назви класу та полів об’єкта).
Варіант 23.
Клас “освітлювальний прилад”: яскравість, тривалість роботи.
Дочірні класи:
“свічка” (довжина, час згорання);
“лампа” (потужність, тип – звичайна, чи люмінесцентна, максимальна тривалість роботи).
Перевантажити операції: порівняння – за часом, що залишився до згорання свічки, або до перегорання лампи, декременту – збільшення на 1 місяць тривалості роботи лампи, або зменшення на 1 сантиметр довжини свічки. Перевизначити метод “попередження” –про згорання свічки, або перегорання лампи, для батьківського – друк значень назви класу та полів об’єкта.
Варіант 24.
Клас “довге число”: кількість знаків, основа системи числення.
Дочірній клас: “дріб” (кількість знаків у дробовій частині).
Перевантажити операції додавання, віднімання, порівняння та зміни знаку – у відповідності до їх семантики і незалежно від різниці у системах числення об’єктів. Перевизначити метод “видача інформації” (для друку значень назви класу та полів об’єкта) і метод для переведення в десяткову систему числення.
Варіант 25.
Клас “годинник”: стиль відображення (“12” чи “24”), години, хвилини, секунди. Метод “робота” – збільшити поточне значення часу на 1 секунду.
Дочірні класи:
“з прямокутним табло”(координати двох протилежних кутів);
“з круглим циферблатом”(координати центру, радіус).
Перевантажити операції: інкременту – для зсуву зображення на 1 позицію; додавання – для збільшення зображення на деяку величину. Перевизначити метод “малювання”.
Варіант 26.
Клас “кліматичні умови”: температура, освітленість, вологість, кислотність ґрунту.
Дочірні класи:
“кліматичні умови в теплиці” (оптимальні кліматичні умови, допуски);
“кліматичні умови на городі” (критичний рівень вологості, критичні рівні кислотності).
Перевантажити операції: порівняння (два об’єкти є рівні, якщо всі їхні параметри знаходяться у допустимих межах) та інкременту – для збільшення рівня вологості на 1. Перевизначити метод “видача інформації” (для друку значень назви класу та полів об’єкта), для батьківського – поточний стан, для дочірніх – виводити тільки ті значення, які перевищують критичні, і величину цього перевищення.
Варіант 27.
Клас “число”: кількість цифр, основа системи числення .
Дочірні класи:
“ціле” (наявність знакового розряду);
“дійсне” (наявність знакового розряду, довжина дробової частини, форма представлення).
Перевантажити операції: ділення – у відповідності до семантики і зміна знаку – зміна факту наявності знакового розряду. Реалізувати операцію перетворення типу – у ціле (з відкиданням дробової частини) і у дійсне (з врахуванням поточної форми представлення дійсних чисел). Перевизначити метод “видача інформації” (для друку значень назви класу та полів об’єкта).
Варіант 28.
Клас “точка на площині”: координати.
Дочірні класи: “комплексне число” і “раціональний дріб”.
Перевантажити операції порівняння, додавання та зміни знаку – у відповідності до їх семантики. Перевизначити метод “видача інформації” (для друку значень назви класу та полів об’єкта).
Порядок оформлення звіту з графіко-розрахункової роботи:
Назва роботи.
Індивідуальне завдання.
Порівняльний аналіз можливих методів та алгоритмів виконання завдання та вибір оптимального методу та алгоритму.
Опис компонент, класів та об’єктів. Діаграма класів.
Тексти головного файлу проекту, файлів модулів та форм.
Інструкція користувачу програми.
Аналіз отриманих результатів та висновки.
Список рекомендованої літератури:
Архангельский А.Я. Программирование в Delphi 6. М.: Бином, 2001.
Архангельский А.Я. Delphi 6. Справочник. – М.: Бином, 2001.
Бадд Т. Объектно-ориентированное программирование в действии. – СПб.: Питер, 1997.
Буч Г. Обьектно-ориентированный анализ и проектирование. – М.: Бином, 1997.
Кенту М. Delphi 7 для профессионалов. – С.-Петербург, Питер – 2004.
Тейксейра С., Пачеко К. Borland Delphi 6. Руководство разработчика. – М. Изд. дом Вильямс, 2002.
Meyer B. Object-Oriented Software Construction. – London: Prentice Hall International, 1997.