МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
Лаболаторна робота №3
з дисципліни
«Алгоритмічне та програмне забезпечення комп’ютеризованих систем керування»
Варіант №9
Лабораторна 3. Поліморфізм
/* Перевизначення для похідних класів (нащадків). Якщо в базовому класі є відкритий метод, то в похідному
класі цей метод (не назву, а тіло методу) можна перевизначити.
Таким чином працює поліморфізм. Він перевизначає методи. В цьому прикладі це метод 'public virtual void Площа()'
базового класу 'class Фігура' перевизначений 'public override void Площа()' в похідних (нащадках) класах: 'Трикутник' i 'Коло'
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
class Program
{
static void Main()
{
Квадрат квадрат = new Квадрат(20,40,"квадрат");
квадрат.Площа();
Трикутник трикутник = new Трикутник(50, 20, "трикутник");
трикутник.Площа();
Коло диск = new Коло(15, "диск");
диск.Площа();
}
}
class Фігура
{
public int висота, ширина;//відкриті поля (висота, ширина) типу int
public string назва;//відкрите поле(назва) типу string
public Фігура(int висота, int ширина, string назва) //перезавантажений конструктор, що дозволяє всі значення цих полів встановити при означенні фігури
{
this.висота=висота;
this.ширина=ширина;
this.назва=назва;
}
public virtual void Площа() // метод Площа (буде повертати числове значення площі фігури типу int)
// якщо в методі стоїть ключове слово virtual то це означає, що цей
// метод (його тіло) може бути перевизначено
{
Console.WriteLine("Площа {0}а складає {1}", назва, висота * ширина);
Console.ReadLine();
}
}
class Квадрат:Фігура
{
public Квадрат(int висота, int ширина, string назва) : base(висота, ширина, назва) { }
}
class Трикутник:Фігура
{
public Трикутник(int висота, int ширина, string назва) : base(висота, ширина, назва) { }
public override void Площа()
{
Console.WriteLine("Площа {0}а складає {1}", назва, висота * ширина/2);
Console.ReadLine();
}
}
class Коло : Фігура
{
float p = 3.141596f;
public Коло(int радіус, string назва) : this(радіус, 0, назва) { } //обєкту () класу Коло передаються значення радіус і назва. Цей конструктор переадресовує їх закритому конструктору (передає три параметри: радіус, 0, назва)
Коло(int висота, int ширина, string назва) : base(висота, ширина, назва) { } // закритий конструктор отримує три параметри (радіус, 0, назва) і переадресовує їх конструктору 'public Фігура(int висота, int ширина, string назва)'
//в базовому класі Фігура
public override void Площа()
{
Console.WriteLine("Площа {0}а складає {1}", назва, p * висота * висота);
Console.ReadLine();
}
}