- •Міністерство освіти і науки україни
- •Посібник до виконання лабораторних робіт
- •Опис середовища програмування
- •Лабораторна робота №1
- •Лабораторна робота №2
- •Лабораторна робота №3
- •Лабораторна робота №4
- •Лабораторна робота №5
- •Лабораторна робота №6
- •Лабораторна робота №7
- •Лабораторная работа №8
- •Додаток 1. Таблиця операторів в c#
- •Додаток 2. Типи даних
- •Литература
- •Кальмус н.В. Шестопалов с.В. Об’єктно-орієнтоване програмування
- •65039, Одеса, вул. Канатна, 112
Лабораторна робота №5
Тема - Спадкоємство класів
Ціль: Створення додатку за допомогою механізму спадкоємства
Методичні вказівки:
Спадкоємство
Клас може наслідувати від іншого класу. Це означає, що він успадковний клас включає усі члени - відкриті і закриті - початкового класу. Крім того успадковний клас може визначати додаткові члени. Початковий клас називається базовим класом (чи класом-предком), а новий клас - похідним класом (чи класом-спадкоємцем). Похідний клас створюється для спеціалізації можливостей базового класу. Наприклад, можна визначити клас 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-коордінати точкі.
Перевірити роботу цих методів.
Контрольні питання:
Що в програмі виступає об'єктом?
Як створюється об'єкт?
Які атрибути цього об'єкту?
Як в додатку використовується механізм спадкоємства?
Для чого використовується ключове слово base?
Де в програмі використовується поліморфізм?
У чому відмінність перших двох методів додатка?
До яких категорій вони відносяться?
Призначення оператора base?
Зміст звіту:
звіт містить постановку задачі, надруковану програму, результат виконання та висновки. Для захисту роботи необхідно знати відповіді на контрольні питання до лабораторної роботи 5.
Домашнє завдання
Пропрацювати тему призначену для самостійного вивчення по поточній темі (дивися конспект лекцій)
