9094

Проектування класів та їх методів

Лабораторная работа

Информатика, кибернетика и программирование

Проектування класів та їх методів 1. Мета работи Засвоїти поняття конструктора, деструктора та функцій-членів класів. 2. Теми для попереднього вивчення Введення у класи Структура класу и функції 3. Варіанти індивідуальних завдань...

Украинкский

2013-02-22

86 KB

4 чел.

Проектування класів та їх методів

1. Мета работи

Засвоїти поняття конструктора, деструктора та функцій-членів  класів.

2. Теми для попереднього вивчення

  •  Введення у класи
  •  Структура класу и функції

3. Варіанти індивідуальних завдань

 1      

 2      

 3      

 4      

 5      

 6      

 7      

 8      

 9      

10      

11      

12      

13      

14      

15      

16      

17      

18      

19      

20      

21      

22      

23      

24      

25      

26      

27      

28      

29      

    

4. Завдання до виконання

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

5. Теоретичні відомості

Конструктори. Одне з основних завдань об’єктно-орієнтованого програмування полягає у тому, щоб об’єкти описаного раз і назавжди класу працювали «правильно» — тобто так, як це визначає модель. Кожний об’єкт перед тим як почати роботу, потрібно створити, тобто перевести в якийсь початковий стан. Отже, треба якимось чином описати можливі механізми створення об’єктів даного класу. Для цього в мові C++ існують конструктори. Це особливі методи класу, які й повинні перевести об’єкт у той самий початковий стан. Конструктор описується як метод, ім’я якого збігається з іменем класу, а тип поверненого значення опущений.

Приклад:

class Point

{

 public:

   Point(int x0, int y0);

 private:

   int x, y;

};

Point::Point(int x0, int y0)

{

 x=x0;

 y=y0;

}

Тепер для створення об’єкта класу Point потрібно після імені змінної вказати параметри, як для виклику функції:

Point A(1, 1), B(2, 0);

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

Конструктор за замовчуванням. Це конструктор, що викликається без параметрів:

Point();

Point(int a=5);

Його використовують для створення масиву об’єктів, оскільки не зрозуміло, які конструктори і з якими параметрами треба викликати для кожного елемента масиву. Наприклад:

Point A[10];

Point* B=new Point[10];

Конструктор за замовчуванням викликається також тоді, якщо не вказано параметри для ініціалізації об’єкта, як у цьому випадку:

Point p;

Конструктор копіювання. Цей конструктор викликається тоді, коли потрібно створити копію об’єкта. Аргументом цього конструктора має бути посилання на об’єкт цього самого класу:

Point(Point& p);

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

Приклад:

class String

{

public:

 String();                         // конструктор за замовчуванням

 String(const String& s); // конструктор копіювання

 String(const char* s);     // конструктор з параметром

                                                   // const char*, який являє собою

                                                   // стандартний рядок  s

 ~String();             // деструктор

private:

 char* array;                 // масив символів

 int size;                        // розмір масиву

};

Приклад виклику конструкторів:

int main()

{ String a, b;  // конструктор за замовчуванням

 String c(a);  // конструктор копіювання

 print(a);     // конструктор копіювання, оскільки

                                    // аргумент передається у функцію за значенням

 String d(“One”);   // конструктор з параметром

//...

}

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

Приклад:

class Name

{

    const char* s;

    // ...

};

       

class Table

{

   Name* p;

   size_t sz;

 public:   

   Table(size_t s=15) {p=new Name[sz=s];}

//конструктор

  ~Table() {delete[] p;}   //деструктор

// ...

};

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

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

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

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

Наприклад, за таким визначенням

class S: X, Y, Z  {...};

клас S породжений класами X, Y, Z, звідки він успадковує компоненти.

.

Варіанти індивідуальних завдань

Варіант №1

Клас точок

Базовий клас (точки у двовимірній площині з цілочисельними координатами):

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

Деструктор.

Функції:

обчислення відстані між точками;

додавання координат двох точок;

введення - виведення на екран;

перевірка збіжності двох точок.

Похідний клас: пікселів на екрані (точки, які мають колір).

Варіант №2

Клас комплексних чисел

Базовий клас (уявних чисел):

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

Деструктор.

Функції:

додавання;

віднімання;

множення на дійсне число;

виведення інформації на екран.

Похідний клас: комплексних чисел.

Варіант №3

Відомість успішності студентів

Базовий клас (студент):

Змінні: ім’я, вік, вищий навчальний заклад.

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

Деструктор.

Функції:

задання вищого навчального закладу;

змінювання імені;

введення-виведення інформації про вік;

виведення всіх даних.

Похідний клас: студент з відомістю успішності — до базового класу додається масив оцінок.

Варіант №4

Динамічний одновимірний масив цілих чисел

Базовий клас:

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

Деструктор.

Функції:

запис / одержання елемента масиву;

виведення масиву на екран;

пошук елемента масиву;

очищення масиву.

Похідний клас: динамічний одновимірний масив цілих чисел з довільними (включаючи й від’ємні) межами.

Варіант №5

Динамічний одновимірний масив цілих чисел

Базовий клас:

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

Деструктор.

Функції:

запис / одержання елемента масиву;

виведення масиву на екран;

інформація про максимальний та поточний розміри масиву;

пошук максимального та мінімального елемента масиву;

Похідний клас: динамічний одновимірний масив цілих чисел з довільними (включаючи й від’ємні) межами.

Варіант №6

Динамічний двовимірний масив цілих чисел (матриця)

Базовий клас:

Конструктори: за замовчуванням, копіювання, з різною кількістю параметрів.

Деструктор.

Функції (дві-три на вибір):

запис / одержання елемента масиву;

виведення масиву на екран;

пошук елемента масиву;

очищення масиву.

Похідний клас: динамічний двовимірний масив цілих чисел з довільними (включаючи й від’ємні) межами.

Варіант №7

Динамічний двовимірний масив цілих чисел (матриця)

Базовий клас:

Конструктори: за замовчуванням, копіювання, з різною кількістю параметрів.

Деструктор.

Функції (дві-три на вибір):

запис / одержання елемента масиву;

виведення масиву на екран;

інформація про максимальний та поточний розміри масиву;

пошук максимального та мінімального елемента масиву;

Похідний клас: динамічний двовимірний масив цілих чисел з довільними (включаючи й від’ємні) межами.

Варіант №8

Послідовні кільцеві структури даних (стеки, черги)

Базовий клас (кільцева структура даних):

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

Деструктор.

Функції:

виведення всіх елементів на екран;

інформація про максимальну та поточну кількість елементів.

Похідний клас: стек.

Функції:

запис / одержання елемента;

знищення заданої кількості або всіх елементів.

Варіант №9

Послідовні кільцеві структури даних (стеки, черги)

Базовий клас (кільцева структура даних):

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

Деструктор.

Функції:

виведення всіх елементів на екран;

інформація про максимальну та поточну кількість елементів.

Похідний клас: черга.

Функції:

запис / одержання елемента;

знищення заданої кількості або всіх елементів.

Варіант №10

Динамічний список (2 класи: елемент списку, список перебувають у відношенні агрегації)

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

Деструктор.

Функції:

вставлення елемента з голови (хвоста) у заданому місці;

виведення списку на екран;

пошук елемента списку;

очищення списку;

Вариант №11

Динамічний список (2 класи: елемент списку, список перебувають у відношенні агрегації)

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

Деструктор.

Функції:

видалення елемента з голови (хвоста) із заданого місця;

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

очищення списку;

одержання наступного (попереднього) елемента.

Вариант №12

Динамічний список (2 класи: елемент списку, список перебувають у відношенні агрегації)

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

Деструктор.

Функції:

вставлення елемента з голови (хвоста) у заданому місці;

виведення списку на екран;

пошук елемента списку;

одержання голови (хвоста) списку;

Вариант №13

Реалізація бінарного дерева (2 класи: вузол дерева, дерево перебувають у відношенні агрегації)

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

Деструктор.

Функції:

включення вузла дерева у заданому місці;

виведення дерева на екран;

інформація про структуру дерева;

очищення дерева;

Вариант №14

Реалізація бінарного дерева (2 класи: вузол дерева, дерево перебувають у відношенні агрегації)

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

Деструктор.

Функції:

знищення частини дерева із заданого місця;

виведення дерева на екран;

пошук елемента по дереву;

обхід дерева (перебирання всіх елементів).

Вариант №15

Реалізація бінарного дерева (2 класи: вузол дерева, дерево перебувають у відношенні агрегації)

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

Деструктор.

Функції:

включення вузла дерева у заданому місці;

знищення частини дерева із заданого місця;

очищення дерева;

пошук елемента по дереву;

Вариант №16

Граф (2 класи: вузол графу, граф перебувають у відношенні агрегації)

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

Деструктор.

Функції:

включення до графу елемента зі своїми зв’язками;

виведення графу на екран;

пошук елемента графу;

Вариант №17

Граф (2 класи: вузол графу, граф перебувають у відношенні агрегації)

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

Деструктор.

Функції:

видалення із графу елемента зі своїми зв’язками;

інформація про структуру графу;

обхід графу (перебирання всіх елементів);

отримання шляхів між двома заданими вузлами.

Вариант №18

Граф (2 класи: вузол графу, граф перебувають у відношенні агрегації)

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

Деструктор.

Функції:

видалення із графу елемента зі своїми зв’язками;

включення до графу елемента зі своїми зв’язками;

очищення графу;

обхід графу (перебирання всіх елементів);

Вариант №19

Множина (2 класи: елемент множини, множина перебувають у відношенні агрегації)

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

Деструктор.

Функції:

додавання елемента до множини;

виведення всіх елементів множини на екран;

перевірка входження елемента до множини;

очищення множини;

Вариант №20

Множина (2 класи: елемент множини, множина перебувають у відношенні агрегації)

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

Деструктор.

Функції:

видалення елемента із множини;

виведення всіх елементів множини на екран;

очищення множини;

перебирання всіх елементів множини.

Вариант №21

Множина (2 класи: елемент множини, множина перебувають у відношенні агрегації)

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

Деструктор.

Функції:

додавання елемента до множини;

видалення елемента із множини;

перевірка входження елемента до множини;

очищення множини;

Вариант №22

Текст (2 класи: рядок, текст перебувають у відношенні агрегації)

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

Деструктор.

Функції:

вставляння символу у даному рядку, у даному місці;

видалення заданого рядка;

вставляння рядка у задане місце;

очищення тексту.

Вариант №23

Текст (2 класи: рядок, текст перебувають у відношенні агрегації)

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

Деструктор.

Функції:

видалення символу у даному рядку, у даному місці;

очищення заданого рядка;

пошук рядка у тексті;

очищення тексту.

Вариант №24

Текст (2 класи: рядок, текст перебувають у відношенні агрегації)

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

Деструктор.

Функції:

вставляння символу у даному рядку, у даному місці;

видалення символу у даному рядку, у даному місці;

очищення заданого рядка;

видалення заданого рядка;

Вариант №25

Відомість обліку кадрів (2 класи: базовий — робітник; похідний — робітник з відомістю про заробітну плату)

Базовий клас (робітник):

Змінні: ім’я, вік, відділ, де він працює.

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

Деструктор.

Функції:

задання імені віку та відділу, де працює робітник;

змінювання імені;

введення-виведення інформації про заробітну плату;

виведення всіх даних.

Похідний клас: робітник з відомістю про заробітну плату — до базового класу додається масив заробітних плат за кожний місяць.

Вариант №26

Клас точок

Базовий клас (точки у двовимірній площині з цілочисельними координатами):

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

Деструктор.

Функції:

обчислення відстані між точками;

додавання координат двох точок;

введення - виведення на екран;

перевірка збіжності двох точок.

Похідний клас: пікселів на екрані (точки, які мають колір).

Вариант №27

Послідовні кільцеві структури даних (стеки, черги)

Базовий клас (кільцева структура даних):

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

Деструктор.

Функції:

виведення всіх елементів на екран;

інформація про максимальну та поточну кількість елементів.

Похідний клас: черга.

Функції:

запис / одержання елемента;

знищення заданої кількості або всіх елементів.

Вариант №28

Динамічний двовимірний масив цілих чисел (матриця)

Базовий клас:

Конструктори: за замовчуванням, копіювання, з різною кількістю параметрів.

Деструктор.

Функції (дві-три на вибір):

запис / одержання елемента масиву;

виведення масиву на екран;

пошук елемента масиву;

інформація про максимальний та поточний розміри масиву.

Похідний клас: динамічний двовимірний масив натуральних чисел з довільними межами.

Вариант №29

Динамічний одновимірний масив цілих чисел

Базовий клас:

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

Деструктор.

Функції:

запис / одержання елемента масиву;

виведення масиву на екран;

пошук максимального та мінімального елемента масиву;

очищення масиву.

Похідний клас: динамічний одновимірний масив натуральних чисел з довільними межами


 

А также другие работы, которые могут Вас заинтересовать

79988. ИНФОРМАЦИОННАЯ СИСТЕМА ТРАССИРОВАНИЯ ТРАНСПОРТНЫХ КОММУНИКАЦИЙ 3.47 MB
  Поэтому для того, что бы построить дорогу следует провести один из пространственных анализов. Пространственный анализ по населению, который может показать какие населенные и какое количество населения проживает в них на определенном расстояние от проектируемой дороги. Полученные данные можно использовать для выбора вариантов трасс
79989. Портирование пользовательского интерфейса на мобильные платформы на примере приложения для электронной валютной торговли 2.02 MB
  Проведено портирование элементов пользовательского интерфейса приложения для платформы Adobe Flash в приложения для платформ iOS и Android. Проведен анализ предоставляемых создателями платформ SDK, выявлены соответствия компонентов пользовательского интерфейса. Проведен анализ платформ и сформулированы перечень особенностей каждой платформы и рекомендации для начинающих разработчиков.
79990. ОПТИМИЗАЦИЯ ТОПОЛОГИИ НЕЙРОННОЙ СЕТИ, ИСПОЛЬЗУЕМОЙ ДЛЯ ПРЕДСКАЗАНИЯ ОЦЕНКИ ФИЛЬМА ПОЛЬЗОВАТЕЛЕМ, С ПРИМЕНЕНИЕМ ГЕНЕТИЧЕСКОГО ПРОГРАММИРОВАНИЯ 1.11 MB
  Перед использованием нейронных сетей необходимо сначала проанализировать задачу и выбрать подходящую топологию, а затем обучить на обучающей выборке данных. Создатель нейронной сети подбирает представительные данные, а затем запускает алгоритм обучения, который автоматически воспринимает структуру данных.
79991. Интеграция DivX Plus Streaming с платформой Windows Phone 8 1.08 MB
  На основании информации которую предоставляют контакты из фильтров строится граф фильтров filter grph или медиаконвейер multimedi pipeline который производит все необходимые действия от открытия медиаконтейнера до визуализации его содержимого. Управлением графами фильтров занимается менеджер графа фильтров filter grph mnger. В других мультимедийных фреймворках с которыми знаком автор работы менеджер графа фильтров часто именуется сессией session или медиасессией medi session. Любой граф фильтров обладает следующими свойствами:...
79992. ВИЗУАЛИЗАЦИЯ ДАННЫХ РЫНКА НЕДВИЖИМОСТИ С ПОМОЩЬЮ ГЕОИНФОРМАЦИОННЫХ СИСТЕМ 2.09 MB
  Важным инвестиционным направлением является коммерческая недвижимость. В основном аналитические агентства делают акцент на анализе рынка жилой недвижимости, оставляя «за кадром» весомый полигон экономических отношений – сектор коммерческой недвижимости. Это - торговые центры и магазины, офисы, склады, технические помещения, рекреационная недвижимость, земельные участки, платные автомобильные дороги и многие другие объекты.
79993. Разработка экстремальной экспедиции и её экономическая обоснованность 293.05 KB
  Научно теоретические основы выживания в экстремальных условиях Содержание и основные понятия стратегии выживания в экстремальных экспедициях. Факторы выживания. Основные критерии эффективности стратегии выживания в экстремальных экспедициях. Рассчитать необходимый объём продуктов и вещей необходимых для выживания в экстремальных условиях.
79994. ПРОБЛЕМЫ РАЗВИТИЯ СИСТЕМЫ СОЦИАЛЬНОГО ОБСЛУЖИВАНИЯ ПОЖИЛЫХ ЛЮДЕЙ В СОВРЕМЕННОЙ РОССИИ 268.5 KB
  Объективные предпосылки и пути развития социальной защиты пожилых людей. Социальные проблемы лиц пожилого возраста и их отражение в государственной социальной политике. Совершенствование управления деятельности Комитета социальной защиты населения Москвы и ОУСЗН по социальной защите.
79995. Шляхи вдосконалення фінансового планування на підприємстві 1.72 MB
  Підвищення ефективності фінансового планування ПрАТ «Моршинський завод мінеральних вод «Оскар» з використанням методів економіко-математичного моделювання. Визначення тенденцій розвитку фінансового стану підприємства на основі планових показників та оптимізація планових рішень
79996. Разработка кроссплатформенного программного инструментария для работы с платами сбора данных с интерфейсами PCI и USB для ЗАО «Руднев-Шиляев» 1 MB
  В данной дипломной работе был спроектирован и разработан кроссплатформенный программный инструментарий для работы с аппаратной продукцией ЗАО «Руднев-Шиляев». Под этот инструментарий была адаптирована пользовательская программа с графическим интерфейсом, реализующая функции осциллографа и спектроанализатора.