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

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

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

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

Деструктор.

Функції:

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

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

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

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

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


 

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

14863. Киiз туырлықты, ағаш уықты 36 KB
  Киiз туырлықты ағаш уықты Қазақы бала бала емес өзбекi мал мал емес деген мақал қазақтар мен өзбек сарттардың араласқұралас отырған аймағында пайда болған деп түсiндiредi ғалым Ә.Қайдар. Ташкенттiң базарына базарлауға барған қазақтардың астыүстiне түсiп қызмет iсте
14864. «КӨК БӨРІ» СӨЗІНІҢ ТҮРІК МИФОЛОГИЯСЫНАН АЛАТЫН ОРНЫ 72 KB
  КӨК БӨРІ СӨЗІНІҢ ТҮРІК МИФОЛОГИЯСЫНАН АЛАТЫН ОРНЫ Түбі бір түркі тілдес халықтардың ауызекі әдебиетінде түбірі мағынасы бір сөздер көптеп кездеседі. Біреуі өзінің мәнін жоғалтып пайдаланудан шықса енді бірі уақыт өте бейімделіп тұрмыстірлікте қолданып кел
14865. КӨНЕ ДӘСТҮРДIҢ ОЗЫҒЫН ҚАЙТА ЖАҢҒЫРТСАҚ 67 KB
  ТАРИХ ТАҒЫЛЫМЫ КӨне дәстүрдiң озығын қайта жаңғыртсақ Жұмағұл ШӨженов Балқаш қаласының мамандандырылған әкiмшiлiк сотының төрағасы Шешендiк өнер Ұлы даланың тiршiлiгiнен өмiрге келген табиғи туындысы сол ортаның мұрасы ұлттық рухымыздың биiгi д...
14866. Ежелгі түркілердің наным-сенімдері 82 KB
  Ежелгі түркілердің нанымсенімдері Халықтың діні нанымсенімдері мен көзқарастары оның тарихына руханимәдени саяси өміріне үлкен әсер ететін фактор болып табылады. Дін руханияттың өзекті саласы. Дін тарихын білмейінше белгілі бір аймақты мекендеген халық
14867. КӨРКЕМСӨЗ ӨКІЛДЕРІНІҢ ШЫҒАРМАЛАРЫНДАҒЫ ИМАНДЫЛЫҚ ИДЕЯСЫ 54 KB
  КӨРКЕМСӨЗ ӨКІЛДЕРІНІҢ ШЫҒАРМАЛАРЫНДАҒЫ ИМАНДЫЛЫҚ ИДЕЯСЫ Л.Ж. Ахметқалиева Төле би атындағы №8 гимназия Тараз қ. Еліміз тәуелсіздігін алып егеменді ел болғалы тәлім тәрбие адамгершілік және өнеге мәселесіне назар аударылғанмен ол кешенді жүргізілмей отырға...
14868. ҚАЗАҚ ҒАШЫҚТЫҚ ЖЫРЛАРЫНЫҢ ОРЫНДАЛУ ЕРЕКШЕЛІКТЕРІ 170 KB
  Бұлтбаева Айзада Зейкеновна ҚАЗАҚ ҒАШЫҚТЫҚ ЖЫРЛАРЫНЫҢ ОРЫНДАЛУ ЕРЕКШЕЛІКТЕРІ Зерттеу жұмысының жалпы сипаттамасы Диссертациялық зерттеудің өзектілігі. Халық эпосы қазақ баласының рухын көтеріп санасын түзейтін ғасырлар үні еліміздің рухани байлығының көне...
14869. Қазақ өнері 57 KB
  Қазақ өнері Өнерi. Қазақстан жерiнде кезiгетiн бейнелеу өнерiнiң алғашқы нұсқалары палеолит дәуiрiне жатады. Олар Қаратау мен Хантау тауларында тасқа қашалған жанжануарлар тұрпаты түрiнде кездеседi. Неолит және қола дәуiрiнде тасқа бедерленген Баянауыл үңгiрiндегi Павло
14870. ҚАЗАҚ ТАРИХЫ – ТҮРКІЛЕРДІҢ ДАЛАЛЫҚ ӨРКЕНИЕТІНІҢ ҚҰРАМДАС БӨЛІГІ 44 KB
  ҚАЗАҚ ТАРИХЫ ТҮРКІЛЕРДІҢ ДАЛАЛЫҚ ӨРКЕНИЕТІНІҢ ҚҰРАМДАС БӨЛІГІ Ж. Исахметұлы А.Е. Жұрынбай Тараз мемлекеттік педагогикалық институты Жамбыл облыстық педагог кадрлардың білімін жетілдіру және қайта даярлау институты Тараз қ. Осы күнге дейін тарихшылардың ...
14871. Қазақ халқының салт-дәстүрлері 108 KB
  Қазақ халқының салтдәстүрлері Той малы Той малы дәстүр. Жүз жылқы той малына кетіпті М.Ж.Көпеев. Келін алуға келген қадірлі құдалар ел дәстүр салты бойынша сән салтанатымен жөн жосығымен келіп түседі. Бұл жолдың кәде жоралары да көп болады. Соның ішінде ең ба