МегаПредмет

ПОЗНАВАТЕЛЬНОЕ

Оси и плоскости тела человека Оси и плоскости тела человека - Тело человека состоит из определенных топографических частей и участков, в которых расположены органы, мышцы, сосуды, нервы и т.д.


Отёска стен и прирубка косяков Отёска стен и прирубка косяков - Когда на доме не достаёт окон и дверей, красивое высокое крыльцо ещё только в воображении, приходится подниматься с улицы в дом по трапу.


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

Конструктори по замовчуванню і конструктори копіювання





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

class T

{

public:

//конструктор по замовчуванню

T();

//конструктор з одним параметром;

//може бути використаний як конструктор по замовчуванню

T(int I=0);

};

int main()

{

T ob1(10);//Використовує Т::Т(int)

T ob2;., //Не правильно; неоднозначність

//виклику Т::Т() або Т::Т (int =0)

return 0;

}

У даному випадку, щоб усунути неоднозначність, достатньо видалити із оголошення класу конструктор по замовчуванню.

Конструктор копіювання (чи конструктор копії) створює об'єкт класу, копіюючи при цьому дані вже існуючого об'єкту класу. У зв'язку з цим він має в якості єдиного параметра константу посилання на об’єкт класу (const T&) чи просто посилання на об'єкт класу (Т&). Використання першого переважає, оскільки останній не дозволяє копіювати константні об'єкти. Наведемо приклад використання конструктора копіювання:

Class Coord

{

int x, y;

public:

//Конструктор копіювання

Coord(const Coord& src);

};

Coord::Coord(const Coord& src)

{

x = src.x;

y = src.y;

}

int main()

{

Coord ob1(2,9);

Coord ob2 = ob1;

Coord ob3(ob1);

return 0;

}


Завдання до лабораторної роботи

Варіант 1

Описати клас, який реалізує стек.

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

Варіант 2

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

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

Варіант 3

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

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

Варіант 4

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

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

Варіант 5

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

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

Варіант 6

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

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

 

 

Варіант 7

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

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

Варіант 8

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

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

Варіант 9

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

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

Варіант 10

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

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

Варіант 11

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

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

Варіант 12

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

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

Варіант 13

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

• перевантажені операції привласнення і конкатенації;

• операції порівняння та приведення типів;

• перетворення в число будь-якого типу;

• форматний вивід рядка.

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

Варіант 14

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

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

Варіант 15

Описати клас «записна книжка». Передбачити можливість роботи з довільним числом записів, пошуку запису за якою-небудь ознакою (наприклад, за прізвищем, датою народження або номером телефону), додавання і видалення записів, сортування за різними полями.

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

Варіант 16

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

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

Варіант 17

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

· додавання, віднімання, множення, ділення (+, -, *, /) (множення і ділення, як на іншу матрицю, так і на число);

· комбіновані операції присвоювання (+ =, -=, *=, / =);

· операції порівняння на рівність / нерівність;

· операції обчислення оберненої та транспонованої матриці, операцію піднесення до степеня;

· методи обчислення детермінанта і норми;

· методи, що реалізують перевірку виду матриці (квадратна, діагональна, нульова, одинична, симетрична, верхня трикутна, нижня трикутна);

· операції введення / виведення в стандартні потоки.

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

Варіант 18

Описати клас «множина», що дозволяє виконувати основні операції – додавання і видалення елементу, перетин, об'єднання і різницю множин. Написати програму, що демонструє роботу з цим класом.

Програма повинна містити меню, що дозволяє здійснити перевірку всіх методів класу.

Варіант 19

Описати клас, який реалізує стек.

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

Варіант 20

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

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

 


Вимоги до виконання лабораторної роботи

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

 

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

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

2. Формулювання завдання відповідного варіанту

3. Опис розробки (опис класів відповідно до завдання, пояснення розроблених конструкторів, деструкторів, інших методів, відношень між класами, способів перевантаження операцій, тощо).

4. Текст програми (з обов’язковими коментарями, що пояснюють хід виконання завдання).

5. Протокол виконання програми

6. Висновки

 

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


 

Література

1. Т.А.Павловская. С/С++. Программирование на языке высокого уровня. – СПб., 2008.

2. В.В.Лаптев. С++. Объектно-ориентированное программирование. ­ – СПб., 2008.

3. А. Пол. Объектно-ориентированное программирование на С++. - М., 2001.

4. У.Савитч. Язык С++. Курс объектно-ориентированного программирования. Пер. С англ. – М., 2001.

5. Б. Страуструп. Язык программирования С++. - СПб., 1999.

6. С.В.Глушаков, А.В.Коваль, С.В.Смирнов. Язык программирования С++. - Харьков, 2002.

7. Г. Шилдт. Теория и практика С++. – М., 2001.

8. С. Прата. Язык программирования С++. – М.-СПб.- К., 2003.

9. У. Топп. Структуры данных в С++. – М., 2000.

10. Г.Буч. Объектно-ориентированный анализ и проектирование с примерами приложений на С++. - М., 1999.

11. Т. Бадд. Объектно-ориентированное программирование в действии. - СПб., 2001.

12. Р. Лафоре. Объектно-ориентированное программирование в С++. ­ - СПб., 2003.

13. Д. Лукас. С++ под рукой. – М., 1999.

14. Х. Дейтел. Как программировать на С++. – М., 2001.

15. В.Войтенко, А.Морозов. С/С++: Теорія та практика. Навч.-метод. посібник. – Житомир, 2004.

16. Т.А.Павловская, Ю.А.Щупак. С++. Объектно-ориентированное программирование: Практикум. – СПб., 2004.

17. В.В.Лаптев, А.В.Морозов, А.В.Бокова. С++. Объектно-ориентированное программирование. Задачи и упражнения. ­ – СПб., 2007.


 

ЗРАЗОК ТИТУЛЬНОЇ СТОРІНКИ

    МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ   НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” Інститут екології, природоохоронної діяльності та туризму ім. В. Чорновола   Кафедра загальної екології та екоінформаційних систем   Лабораторна робота з дисципліни “Об’єктно-орієнтоване програмування” на тему: “Класи” Варіант 1   Виконав: студент групи КН-28 Петренко А.А.   Перевірив: ас. Кузь О.Н.   Львів – 2012

 

НАВЧАЛЬНЕ ВИДАННЯ

 





©2015 www.megapredmet.ru Все права принадлежат авторам размещенных материалов.