Ціль: Створення додатку за допомогою механізму спадкоємства
Методичні вказівки:
Спадкоємство
Клас може наслідувати від іншого класу. Це означає, що він успадковний клас включає усі члени - відкриті і закриті - початкового класу. Крім того успадковний клас може визначати додаткові члени. Початковий клас називається базовим класом (чи класом-предком), а новий клас - похідним класом (чи класом-спадкоємцем). Похідний клас створюється для спеціалізації можливостей базового класу. Наприклад, можна визначити клас 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 Домашнє завдання
Пропрацювати тему призначену для самостійного вивчення по поточній темі (дивися конспект лекцій)