Тема - Спадкоємство класів

Ціль: Створення додатку за допомогою механізму спадкоємства

Методичні вказівки:

Спадкоємство

Клас може наслідувати від іншого класу. Це означає, що він успадковний клас включає усі члени - відкриті і закриті - початкового класу. Крім того успадковний клас може визначати додаткові члени. Початковий клас називається базовим класом (чи класом-предком), а новий клас - похідним класом (чи класом-спадкоємцем). Похідний клас створюється для спеціалізації можливостей базового класу. Наприклад, можна визначити клас Cat, який наслідує від Animal. Cat може виконувати все те ж, що і Animal, але і додатково мати свої можливості. Код C# класу Cat, що наслідує від класу Animal, виглядає таким чином:

public class Cat: Animal

{

public void Urr ()

{

}

}

Нотація Cat: Animal означає, що Cat наслідує від Animal і що він міститиме усі члени Animal, а також свої можливості.

В наступному прикладі визначаються класи Circle і Rectangle, які обоє наслідують від класу Shape, і клас Square, успадковний від класу Rectangle:

public class Shape

{

// Визначення методів, полів, і подій.

}

public class Circle: Shape

{

// Визначення методів, полів, і подій для Circle.

}

public class Rectangle: Shape

{

// Визначення методів, полів, і подій для Rectangle.

}

public class Square: Rectangle

{

// Визначення методів, полів, і подій для Square.

}

Поліморфізм

Поліморфізмом називають можливість похідного класу змінювати або перевизначати методи, які він наслідує від базового класу. Ця можливість використовується, якщо треба виконати якісь особливі дії в методі, який відрізняється від базового, або не визначений у базовому класі. Таким чином, базові класи можуть визначати і реалізовувати віртуальні методы, а похідні класи можуть перевизначати їх.

Ключове слово virtual використовується для дозволу перевизначення методів в похідному класі, тобто, цей метод може бути перевизначений будь-яким похідним класом. Якщо в описі методу в похідному класі вказано ключове слово override, це означає, що метод був перевизначений в поточному класі. Тому, об'єкти похідного класу викликатимуть цей метод замість методу базового класу.

Базовий метод можна викликати з похідного класу за допомогою ключового слова base. Приклад перевизначення методів:

1 public class Shape

2 {

3 public int X;

4 public int Y;

5 public int Height;

6 public int Width;

7 // віртуальний метод

8 public virtual void Draw()

9 {

10 Console.WriteLine("виконання завдання методу

базового класу ");

11 }

12 }

13 class Circle: Shape

14 {

15 public override void Draw()

16 {

17 Сonsole.WriteLine("Drawing a circle");

18 base.Draw();

19 }

20 }

21 class Rectangle: Shape

22 {

23 public override void Draw()

24 {

25 Console.WriteLine("Drawing a rectangle");

26 base.Draw();

27 }

28 }

29 class Triangle: Shape

30 {

31 public override void Draw()

32 {

33 Console.WriteLine("Drawing a triangle");

34 base.Draw();

35 }

36 }

Створений базовий клас Shape (рядки 1-12), і похідні класи Rectangle (рядки 21-28), Circle (строки 13-20) і Triangle (рядки 29-36). У класі Shape визначається віртуальний метод, званий Draw (рядки 7-11), і потім, перевизначимо його в кожному похідному класі для малювання конкретної форми, яку представляє клас (рядки 15-19, 23-27, 31-35). У кожному перевизначеному методі викликається метод базового класу з використанням ключового слова base (рядки 18, 26, 34).

Ключове слово base також використовується для виклика конструктора базового класу.

& Завдання до лабораторної роботи 5:

На базі класу "двовимірна точка", за допомогою спадкоємства, створити клас "тривимірна точка". Продемонструвати роботу поліморфізму: перевизначити \ перегрузити методи:

· Відстань між двома точками.

· Відстань від даної точкі до іншої точкі.

· Відстань від даної точкі до початку координат.

· Зсув точкі по осі Х на задану величину.

· Такий же зсув по осям У та Z.

· Методи для отримання Х, У та Z-коордінати точкі.

· Перевірити роботу цих методів.

Контрольні питання:

1. Що в програмі виступає об'єктом?

2. Як створюється об'єкт?

3. Які атрибути цього об'єкту?

4. Як в додатку використовується механізм спадкоємства?

5. Для чого використовується ключове слово base?

6. Де в програмі використовується поліморфізм?

7. У чому відмінність перших двох методів додатка?

8. До яких категорій вони відносяться?

9. Призначення оператора base?

Зміст звіту:

звіт містить постановку задачі, надруковану програму, результат виконання та висновки. Для захисту роботи необхідно знати відповіді на контрольні питання до лабораторної роботи 5.

H Домашнє завдання

Пропрацювати тему призначену для самостійного вивчення по поточній темі (дивися конспект лекцій)


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: