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

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

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

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

Деструктор.

Функції:

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

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

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

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

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


 

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

78955. Технология и ее связь с техникой 47 KB
  Впервые термин «технология» появился в 70-х годах 18 века в Западной Европе. Если техники – «это», то технология – «как это сделано». Если техника – способ, то технология – способ способа. Если техника – есть ставшее, то технология – способ становления, если техника- способ преобразования мира, то технология – организация использование чел. этих средств. Если техника – артефакт, то технология – метод создания артефактов и учения о нем.
78956. Природа и техника, законы их функционирования и развития 59 KB
  Природа и техника законы их функционирования и развития. Закон – необходимое существенное устойчивое повторяющееся отношение связь между явлениями в природе и обществе. Это понятие закона родственно понятию сущности при данных условиях. Закономерность – объективно существующая повторяющая существенная связь явлений проявляющаяся в виде тенденций.
78957. Инновации в традиционном и техногенном обществах 29.5 KB
  Инновации в традиционном и техногенном обществах Традиционные общества является исторически первыми. Данный тип общества возник в глубокой древности распространен он и сейчас. Некоторые традиционные общества были поглощены техногенными другие приобрели гибридные черты балансируя между техногенными и традиционными ориентациями. При характеристике традиционных типов общества очевиден тот факт что они обладая замедленным темпом развития придерживаются устойчивых стереотипов своего функционирования.
78958. Ценности классической, неклассической, постнеклассической науки 39.5 KB
  Существуют социальные и внутренние ценности. Социальные ценности делятся на материальные и духовные. удовлетворение своих материальных потребностей научные ценности – истина добро зло итд Социальные ценности: частная собственность рыночная экономика деньги итд социальнополитические: свобода слова собраний критики различные права эстетические и философские ценности Внутри научные 1. Социальные и внутринаучные ценности диалектически связаны между собой.
78959. Социальная оценка техники 29 KB
  Социальная оценка техники Введение Узкий смысл понятия техники: под техникой понимается техническое устройство артефакт созданное человеком из элементов природы для решения конкретных культурных задач. Широкий смысл понятия техники: искусственный или организованный прием усиливающий улучшающий или облегчающий действие техника письма техника плавания техника вопросов и т. При изучении вопроса о последствия техники и технологии следует иметь в виду двойственный характер техники. Общая часть Проблемы негативных социальных и других...
78960. Техника и этика. Этика и профессиональная ответственность инженера 41 KB
  Это относится не только к использованию техники для целенаправленного уничтожения людей но также к повседневной эксплуатации инженернотехнических устройств. Проблемы негативных социальных и других последствий техники проблемы этического самоопределения инженера возникли с самого момента появления инженерной профессии. Однако сегодня человечество находится в принципиально новой ситуации когда невнимание к проблемам последствий внедрения новой техники и технологии может привести к необратимым негативным результатам для всей цивилизации и...
78961. Сущность и перспективы современной техногенной цивилизации 36.5 KB
  Сущность и перспективы современной техногенной цивилизации Мировая общечеловеческая цивилизация в нашем представлении – не унифицированное о безличное сообщество людей сформировавшееся на базе западной экономической системы а многообразная общность сохраняющая самобытность и уникальность в составляющих ее рядах. Человечество обремененное духовным кризисом в конце второго тысячелетия оказалось перед лицом труднейшего выбора социокультурных ценностей которые должны составить ядро новой цивилизации. Чтобы ответить на эти вопросы...
78962. Особенности современного научно-технического прогресса 29.5 KB
  Возникновение машинного производства в конце 18 в. было подготовлено результатами предшествующего научно-технического творчества большой армии математиков, механиков, физиков, изобретателей, умельцев. Паровая машина Дж. Уатта явилась «плодом науки», а не только конструкторско-технической деятельности. Машинное производство, в свою очередь, открыло новые, практически неограниченные возможности для технологического применения науки
78963. Анализ форм правления и их роли в современном государстве 181 KB
  Узнать какой способ лежит в основе организации высших органов государственной власти; каким субъектом права осуществляется верховная власть; какова структура высших органов государственной власти; каким образом разграничена компетенция между высшими органами государственной власти...