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

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

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

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

Деструктор.

Функції:

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

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

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

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

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


 

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

29824. Звук, его восприятие и характеристики 18 KB
  К физическим параметрам звука относятся: частота его колебаний амплитуда тембр; к энергетическим параметрам интенсивность звука; к психофизическим громкость и динамический диапазон. Высота звука Важнейшей характеристикой колебаний звука является частота число показывающее сколько полных колебаний в секунду совершает например маятник часов струна и т. Частота колебаний звучащего тела определяет тон или высоту звука. Чем больше эта частота тем выше тон звука.
29825. Акустика помещений 26.45 KB
  Отражения звука от стен помещения: И источник звука; С слушатель; 1 прямой звук; 2 звук претерпевший одно отражение; 3 после двух отражений; 4 после трех отражений Именно звуковые отражения когда источник звука выключен поддерживают поле и звук не пропадает мгновенно а замирает в течение какогото определенного для данного помещения времени. Такое постепенное замирание звука в помещении иначе послезвучание называется реверберацией. От скорости замирания звука зависит время существования отзвука в помещении так...
29826. Математическое описание дискретных СУ (ДСУ) 373 KB
  Передаточные функции и динамические характеристики ДСУ Импульсная характеристика ДСУ Рекурсивный и нерекурсивный алгоритмы обработки. Будем рассматривать полностью дискретную СУ рис. Xkk=0m yk k=0n рис.2 q=0 i=1 Данный алгоритм принято изображать в виде структурной схемы рис.
29827. Правила преобразования структурных схем 183 KB
  Передаточные функции замкнутой системы управления. Исходная схема системы управления может быть очень сложной. При этом должны сохраняться динамические свойства системы относительно входных и выходных сигналов. Пусть дана структурная схема системы управления: x b y _ Определим передаточную функцию системы по...
29828. Алгебраические критерии устойчивости 115.5 KB
  Алгебраические критерии устойчивости. Частотные критерии устойчивости. Запасы устойчивости СУ. Понятие об областях устойчивости.
29829. Анализ импульсных систем управления 282 KB
  Эквивалентная схема импульсной системы управления. Динамические характеристики разомкнутой системы управления. Эквивалентная схема замкнутой импульсной системы управления. Динамические характеристики замкнутой импульсной системы управления.
29830. Метод корневого годографа 145 KB
  Метод Dразбиения плоскости двух параметров В некоторых случаях критерии устойчивости позволяют проследить влияние параметров на устойчивость системы. Существуют специальные методы построения областей устойчивости. Пусть при некотором  = крит корень характеристического уравнения попадает на мнимую ось тогда при значении крит система находится на границе устойчивости. Если  это коэффициент передачи то при  крит система устойчива  = крит система находится на границе устойчивости  крит система неустойчива.
29831. Селективная инвариантность к степенным воздействиям 193.5 KB
  Условие селективной абсолютной инвариантности: Wf pk = 0 pk k = 1n 4 для всех корней воздействия Если возмущение имеет изображение с полюсами pk а передаточная функция системы на этих полюсах равна 0 то система будет абсолютно инвариантна к этому возмущению. В этом случае И система обладает селективной абсолютной инвариантностью абсолютной т. Говорят что система является астатической относительно ступенчатого возмущения. когда ОПФ имеет двукратный нулевой нуль и система селективно абсолютно...
29832. Условия инвариантности одноконтурных СУ к степенным возмущениям 176.5 KB
  Ошибка системы на гармоническое воздействие иногда называется динамической ошибкой Анализ результата: Если возмущение на объект ступенчатое то тогда можно рассчитать Для ковариантной системы когда выходной сигнал совпадает с заданием Wзамкн0=1. Стандартные типовые законы управления 1 Пзакон 2 Изакон 3 ПИзакон Для селективной абсолютной инвариантности системы по отношению к ступенчатому возмущению на входе объекта необходимо чтоб в законе управления...