Роздрукувати сторінку
Главная \ Методичні вказівки \ Методичні вказівки \ 1983 Методичні вказівки до курсової роботи з предмету Програмування на тему Розробка програмного забезпечення зі створенням ієрархії класів

Методичні вказівки до курсової роботи з предмету Програмування на тему Розробка програмного забезпечення зі створенням ієрархії класів

« Назад

Курсова робота з предмету «Програмування (Об'єктні технології та мови)»

Загальна тема «Розробка програмного забезпечення зі створенням ієрархії класів»

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

Теми:

  1. Створення ієрархії класів на тему «Геометричні фігури: планіметрія»

  2. Створення ієрархії класів на тему «Геометричні фігури: багатогранники»

  3. Створення ієрархії класів на тему «Функції однієї змінної. Поліноми»

  4. Створення ієрархії класів на тему «Телефонний довідник»

  5. Створення ієрархії класів на тему «Залізничний вокзал»

  6. Створення ієрархії класів на тему «Стрільба по мішенях»

  7. Створення ієрархії класів на тему «Гра у боулінг»

  8. Створення ієрархії класів на тему «Музей» (а,б)

  9. Створення ієрархії класів на тему «Порт»

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

  11. Створення ієрархії класів на тему «Зоопарк»

  12. Створення ієрархії класів на тему «Школа»

  13. Створення ієрархії класів на тему «ВНЗ» (а,б)

  14. Створення ієрархії класів на тему «Футбол»

  15. Створення ієрархії класів на тему «Шашки»

  16. Створення ієрархії класів на тему «Транспортні засоби»

  17. Створення ієрархії класів на тему «Покер»

  18. Створення ієрархії класів на тему «Турклуб»

  19. Створення ієрархії класів на тему «Функції однієї змінної. Диференціювання»

  20. Створення ієрархії класів на тему «Продуктовий магазин»

  21. Створення ієрархії класів на тему «Гіпермаркет»

  22. Створення ієрархії класів на тему «Будзагін» 

 

Варіант 1. Створення ієрархії класів на тему «Геометричні фігури: планіметрія»

Створити класи: абстрактний клас «Геометрична фігура» та його підкласи: «Коло», «Трикутник», абстрактний «Чотирикутник» та «Ромб», «Прямокутник», «Трапеція». Реалізувати периметр та площу геометричних фігур та перевірку перетину фігур. Реалізувати зсув фігур. Реалізувати клас «Складна фігура», що поєднує в собі деяку кількість фігур, що не перетинаються. Реалізувати виведення інформації о фігурах в текстовому вигляді.

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

 

Варіант 2. Створення ієрархії класів на тему «Геометричні фігури: багатогранники»

Создать классы: «Многогранник» (абстрактный) и его подклассы: «Пирамида» (характеризуется многоугольником в основании и высотой), «Призма» (характеризуется многоугольником в основании и высотой), «Додекаэдр» (характеризуется стороной). Создать абстрактный класс «Многоугольник» с наследниками: «Треугольник», «Прямоугольник», «Правильный многоугольник» (характеризуется количеством сторон и стороной). Объявить методы площадь, периметр, количество вершин для многоугольника и реализовать их в наследниках. Объявить методы площадь поверхности, объем, количество вершин, количество ребер и количество граней для многогранника и реализовать их в конкретном многограннике.

В проекте предусмотреть возможность создания новых многогранников произвольных типов и выдачи полных характеристик многогранников (в табличной форме и подробно для каждого многогранника). Для этого определить методы выдачи характеристик многогранника кратко (в одну строку) и подробно.

 

Варіант 3. Створення ієрархії класів на тему «Функції однієї змінної. Поліноми»

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

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

 

Варіант 4. Створення ієрархії класів на тему «Телефонний довідник»

Створити класи: «Запис у довіднику» (абстрактний, має список телефонів, серед яких перший головний, список e-mail’ів), нащадки: «Людина» (ПІБ, стать, вказівник на організацію, нульовий вказівник, якщо немає організації), «Організація» (назва, вид діяльності, вказівник на керівника організації, нульовий вказівник, якщо немає даних про керівника). Також створити класи: «Телефон» (категорія – домашній, мобільний, робочій; повна форма, середня форма, коротка форма), «Довідник» – Список записів.

Створити методи пошуку людини/організації за номером телефона, за e-mail, пошуку людини за ПІБ, за частиною ПІБ. Створити методи додавання в довідник нової інформації о людинах чи організаціях, а також методи вилучення інформації.

 

Варіант 5. Створення ієрархії класів на тему «Залізничний вокзал»

Створити класи: «Вокзал» (містить інформацію щодо кількості перонів, а також інформацію щодо поїздів), «Поїзд» (початковий пункт та кінцевий пункт, час прибуття, час відправлення та кількість вагонів, перон: 0 – якщо не на вокзалі), «Вагон» (тип вагону, кількість місць взагалі, кількість вільних місць), «Пасажир» (ФІО, стать, вік, номер паспорта). Зробити метод покупки пасажиром білету, при цьому кількість вільних місць зменшується на один. Також зробити метод прибуття поїзду, при якому поїзд розміщується на вільному пероні.

 

Варіант 6. Створення ієрархії класів на тему «Стрільба по мішенях»

Створити класи: «Абстрактна мішень» (методи «чи можна ще стріляти», «постріл», «координати цілі»), підкласи «Біатлонна мішень», «Мішень для стрільби з гвинтівки». Метод постріл задає координати на мішені, а його результатом буде кількість балів, отримана стрілком. Метод координати цілі задає куди стріляти. Створити клас «Стрілок», який може викликати метод постріл для мішені.

 

Варіант 7. Створення ієрархії класів на тему «Гра у боулінг»

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

Реалізувати обчислення загальної суми партії, також показ текстової детальної інформації о партії – у стандартному для боулінгу вигляді.

 

Варіант 8а. Створення ієрархії класів на тему «Музей»

Создать класс комната, задающий размеры комнаты: ширина, длина, высота, полезная площадь стен (проверить, чтобы полезная площадь стен была не больше общей площади). Создать класс «Экспонат» (автор, страна, год, учесть, что автор может быть неизвестен), с наследниками «Картина» (размеры: ширина, высота), «Объемный экспонат» (ширина, длина, высота, необходимая для размещения экспоната), у объемного экспоната наследники «Скульптура», «Техника», «Предмет быта».

Реализовать расстановку экспонатов по комнатам (проверяя, помещается ли экспонат в комнату).

 

Варіант 8б. Створення ієрархії класів на тему «Музей»

Создать класс комната, задающий размеры комнаты: ширина, длина, высота, полезная площадь стен (проверить, чтобы полезная площадь стен была не больше общей площади). Создать класс «Экспонат» (автор, страна, год, учесть, что автор может быть неизвестен), с наследниками «Картина» (размеры: ширина, высота), «Объемный экспонат» (ширина, длина, высота, необходимая для размещения экспоната), у объемного экспоната наследники «Скульптура», «Археологический экспонат», «Научный прибор».

Реализовать проверку, можно ли поместить экспонат в комнату.

 

Варіант 9. Створення ієрархії класів на тему «Порт»

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

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

 

Варіант 10. Створення ієрархії класів на тему «Обробка тексту з використанням списку слів»

Реализовать класс «Слово», хранящее одно слово текста и указатели на следующее слово текста и предыдущее слово текста..

Реализовать класс «Абстрактный список» (текущий указатель, перемещение по списку на следующий элемент, добавление элемента после текущего), «Однонаправленный список слов» (все указатели на предыдущее слово пустые), «Двунаправленный список слов» (дополнительный метод – перемещение по списку назад). Реализовать построение по тексту списка, и перестановку выбранного слова в конец списка.

Варіант 11. Створення ієрархії класів на тему «Зоопарк»

Створити класи: «Тварина» (поля: вид, вага, вік, відсоток нагодованності (від 0 до 100%), метод Годування – з параметром Їжа: тип та вага) , підкласи «Птиця» (довжина крил, хижа чи ні), «Звір» (період годування молоком), «Змія» (довжина, окрас). Метод годування повертає логічне значення (з’їв чи ні), а також якщо з’їв, то підвищує відсоток нагодованності. Реалізувати ці методи на вибір студента (умови, хто що їсть), врахувати, що звір, поки вік менше періоду годування, може вживати тільки молоко.

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

 

Варіант 12. Створення ієрархії класів на тему «Школа»

Создать классы: «Человек» (ФИО, возраст, рост), «Ученик» (класс, список оценок), «Учитель» (дополнительное поле: предмет, который преподает), «Оценка» (вид: домашняя, контрольная, самостоятельная, экзамен, итоговая; предмет).

Определить метод – вывести итоговую оценку ученика (учитывать текущие оценки и оценку за экзамен, но только по этому предмету). Для каждого учителя определить среднюю оценку из тех, что он выставлял.

 

Варіант 13а. Створення ієрархії класів на тему «ВНЗ»

Создать классы: «Человек» (ФИО, возраст, рост), наследники «Студент» (группа, факультет, список оценок за текущий курс), «Преподаватель» (дополнительное поле: степень, предмет, который преподает), «Оценка» (предмет, зачет, диф. зачет или экзамен, число, методы: оценка по шкале ECTS, оценка словами: «отлично», «хорошо», и т.д.).

Определить метод – определить стипендию студента за семестр (вернуть повышенную, если все отлично, и обычную, если нет неудовлетворительно или незачет и средняя оценка не ниже «хорошо»).

 

Варіант 13б. Створення ієрархії класів на тему «ВНЗ»

Создать классы: «Человек» (ФИО, возраст, рост), наследники «Студент» (группа, факультет, курс, количество оценок отлично, хорошо, удовлетворительно, неудовлетворительно). Также реализовать классы «Куратор» (группа, курс, факультет), «Декан» (факультет).

Определить метод – определить стипендию студента за семестр (вернуть повышенную, если все отлично, и обычную, если нет неудовлетворительно или незачет и средняя оценка не ниже «хорошо»).

Реализовать совещание кураторов (по заданному декану найти и напечатать всех кураторов этого факультета) и кураторский час (по заданному куратору найти всех студентов его группы).

  

Варіант 15. Створення ієрархії класів на тему «Шашки»

Створити класи: «Дошка» (поле: розмір, двовимірний масив вказівників на фігури), «Гра», «Фігура» (позиція, метод: хід), «Шашка», «Дамка». Реалізувати метод хід для дошки з вектором координатами – початкова та подальші позиції.

Реалізувати гру між двома людьми з перевіркою правил гри. 

 

Варіант 16. Створення ієрархії класів на тему «Транспортні засоби»

Создать классы: «Транспортное средство» (вес, максимальная скорость, расход топлива в литрах на 100 км), «Легковой Автомобиль» (максимально возможный перевозимый багаж в кг, класс/сегмент – см. http://ru.wikipedia.org/wiki/Системы_классификации_легкового_автотранспорта), тип кузова: седан, универсал, кабриолет, количество пассажиров, тип обивки сидений), «Мотоцикл» (с коляской или без), «Грузовой автомобиль» (грузоподъёмность), «Автобус» (количество пассажиров, наличие кондиционера, откидывающихся сидений, удобство видений, максимальный возможный багаж для каждого пассажира). Реализовать метод вычисления комфорта перевозки пассажиров в данном транспортном средстве (для мотоцикла, легкового автомобиля, автобуса).

Реализовать добавление новых транспортных средств, и подбор автомобилей для перевозки пассажиров и их грузов (принцип подбора – ручное распределение, оптимизация комфорта и/или стоимости – на выбор студента).

 

Варіант 18. Створення ієрархії класів на тему «Турклуб»

Создать классы: «Турист» (ФИО, возраст, пол, список интересов, время в которое человек может поехать – начальная возможная дата и конечная) и наследник «Руководитель группы» (с дополнительной информацией – какими экспедициями может руководить). Создать класс, описывающий общую турпоездку или поход, а также классы наследники с конкретными видами туризма – пеший поход, велосипедный, альпинизм и т.д. (на выбор студента). Для каждой турпоездки, хранить продолжительность (в днях) и место. Также хранить специфическую информацию для отдельных поездок – например, высота горы для альпинизма.

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

 

Варіант 19. Створення ієрархії класів на тему «Функції однієї змінної. Диференціювання»

Створити класи: абстрактний клас «Функція» та його підкласи: «Лінійна функція», «синус», «косинус», «квадрат», «сума функцій», «добуток функцій». Реалізувати операції сума функцій, різниця функцій, множення функцій. Реалізувати функцію «диференціювання», яка обчислює похідну. Реалізувати виведення інформації о функціях в текстовому вигляді.

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

 

Варіант 20. Створення ієрархії класів на тему «Продуктовий магазин»

Создать классы: «Товар» (наименование, вес, дата выпуска), «Продукт питания» (с полем – срок годности, количество калорий), «Йогурт» (жирность, начинка), «Молоко» (вид упаковки, жирность) и еще один вид товаров на выбор студента. Также реализовать класс «Полка» (вместимость: количество товаров).

В основном проекте предусмотреть возможность поставки товаров (задается товар и его количество), расстановки товаров по полкам, списания просроченных товаров.

 

Варіант 21. Створення ієрархії класів на тему «Гіпермаркет»

Создать классы: «Товар» (фирма, наименование, цена, максимальный процент скидки), «Мобильный телефон» (с полем – с контрактом или без, максимальное поддерживаемое количество SIM-карт), «Смартфон» (наследник Мобильного телефона с дополнительными полями: ОС, список установленных программ), «Ноутбук» (размер диагонали, вес, количество ядер процессора, память). Также реализовать класс «Покупатель» (поле: количество денег), и его наследника «Постоянный покупатель» (поле: ФИО, общая стоимость купленных товаров). Реализовать виртуальный метод «индивидуальная скидка покупателя» – для обычного покупателя возвращает 0%, для постоянного = ФИО, общая стоимость купленных товаров делить на 1000, но не более 15%. Также реализовать метод купить товар, который вычисляет цену товара, учитывая скидку покупателя (если скидка покупателя больше максимальной скидки для этого товара, то применяется максимальный процент скидки товара). При этом проверяется, хватит ли покупателю денег, и если да, то от его денег вычитается стоимость товара (учитывая скидку). Для постоянного покупателя после покупки также соответственно увеличивается общая стоимость купленных товаров.

В основном проекте предусмотреть возможность вводить информацию о товарах и покупателях. Также предусмотреть возможность осуществлять покупки товаров покупателями.

 

Варіант 22. Створення ієрархії класів на тему «Стройотряд»

Создать классы: «Человек» (ФИО, возраст, рост), «Строитель» (список строк – работы, которые умеет выполнять), «Бригадир» (дополнительное поле: стаж работы). Также реализовать класс «Сооружение» (с полем: срок строительства, название, список видов работ, чисто виртуальный метод – минимальное количество строителей), «Дорога» (дополнительные поля: ширина (в метрах), длина (в км), ), «Строение» (поля: количество этажей, комнат).

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

З повагою ІЦ "KURSOVIKS"!