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

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

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

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

Деструктор.

Функції:

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

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

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

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

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


 

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

22985. Мікропроцесори 80386 і 80486 4.79 MB
  Це дозволяє йому здійснювати обмін з памяттю зі швидкістю до 32 Мбайт сек і виконувати до 5 мільйонів операцій у секунду MIPS. Отже під час виконання одної команди відбувається декодування другої а третя видобувається з памяті. Усі можливості МП386 мультипрограмність віртуальна память захист пріоритети зповна відкриваються лише в захищеному режимі. У порівнянні з МП286 у МП386 існують істотні відміни в організації віртуальної памяті.
22986. Поняття про RISC-процесори. Процесори п’ятого та шостого поколінь 6.22 MB
  Процесори пятого та шостого поколінь Поняття про RISCпроцесори Якісний стрибок у розвитку мікропроцесорних систем відбувся з появою мікропроцесора 8086. Такі процесори і компютери дістали назву RISC процесорів та RISC компютерів на відміну від процесорів та компютерів зі складною системою команд Complex Instruction Set Computer CISC компютер. Перший справжній RISC компютер було створено наприкінці 70х років в університеті Берклі.
22987. Діагностика несправностей у мікропроцесорних системах 739 KB
  Тут можна навести таку наочну аналогію: візьміть на сторінці друкованого тексту вертикальний рядок літер що розташовані одна над одною і спробуйте встановити зміст тексту. Тому третя трудність полягає у тому щоб будьякимсь чином представити інформацію що міститься у вихідному тестсигналі у компактній та зрозумілій формі по якій можна було б судити про справність або несправність пристрою що перевіряється. Тестпрограма повинна бути періодичною щоб можна було проконтролювати відтворюваність її результатів від кількох актів тестування....
22988. Декотріі принципи роботи сучасних мікропроцесорів та ЕОМ 1.54 MB
  Вони показують яка команда виконується до якої комірки памяті або зовнішнього пристрою звертається процесор і містять іншу важливу і вичерпну інформацію. Після того як у програмі дається сигнал вивільнити мікросхему вміст усіх регістрів переписується в область памяті що має назву сегмента стану задачі TSS Taske State Segment. При роботі у мультипрограмному режимі можуть виникати певні труднощі з використанням оперативної памяті котра стає тепер вже загальною для кількох задач. Можливі непередбачені ситуації коли одна програма...
22989. Віртуальна пам’ять. Мікропроцесор 80286 4.24 MB
  Мікропроцесор 80286 Як добре відомо процесор може безпосередньо працювати лише з тією інформацією яка записана в його оперативній памяті. Однак обєм оперативної памяті у сучасних ЕОМ порівняно невеликий і часто виявляється недостатнім для розвязання більшменш складних задач. Віртуальна організація памяті дає користувачеві практично необмежений обєм памяті.
22990. Артикуляційна база мови 33 KB
  Робота органів мовлення тобто сукупність їх порухів при вимові певного звука називається артикуляцією від лат. excursio вибігання вилазка або приступ початковий рух органів мовлення підготовка органів мовлення до вимови звука. culmen вершина або витримка поло' ження органів мовлення в момент вимовляння звуків. recursio повернення або відступ повернення органів мовлення у вихідне положення.
22991. Будова мовного апарату і функції його найважливіших частин 36 KB
  Мовленнєвий апарат І порожнина рота; II глотка фаринкс; III порожнина носа; IV гортань; 1 трахея; 2 голосова зв'язка; 3 неправдива голосова зв'язка; 4 щитовидний хрящ; 5 персневидний хрящ; 6 під'язикова кістка; 7 надгортанник; 8 язик; 9 тверде піднебіння; 10 м'яке піднебіння. Верхній поверх надставна порожнина її ще називають надставною трубою до якої належать порожнини глотки фаринкс рота і носа. Коли м'яке піднебіння опущене порожнина рота змикається з порожниною носа і частина повітря проходить...
22992. Акустичний аспект вивчення звукової будови мови 30.5 KB
  Акустичний аспект вивчення звукової будови мови Акустика розрізняє в звуках силу висоту довготу і тембр. Сила звука залежить від амплітуди розмаху коливання: чим більша амплітуда тим звук сильніший. Так скажімо що сильніше ударити по струні то більшою буде й амплітуда коливання і відповідно сила звука. Висота звука залежить від частоти коливань за одиницю часу: чим більша частота коливань тим вищий звук.
22993. Типологія наголосу в мовознавстві 38 KB
  Типологія наголосу в мовознавстві Наголос виділення в мовленні певної одиниці в ряду однорідних одиниць за допомогою фонетичних засобів. Залежно від того з якою сегментною одиницею функціонально співвідноситься наголос розрізняють словесний тактовий фразовий логічний і емфатичний наголос. Словесний наголос буває динамічним музикальним і кількісним. Динамічний силовий експіраторний наголос виділення вимова одного із складів слова такту більшою силою тобто сильнішим видихом струменя повітря.