Основы объектно-ориентированного программирования на языке C# book | Page 154

7 Класи // ....... } } } } Так само як i методами. Можно користуватись й абстрактними властивостями. Створення абстрактних властивостей майже не вiд- рiзняється вiд абстрактних методiв: модифiкатор [ доступу] abstract тип[] iмя[’ властивостi] { get; set; } Для реалiзацiı̈ в класi-спадкоємцi необхiдно записати: модифiкатор [ доступу] override тип[] iмя[’ властивостi] { get { тiлоаксессора get } set { тiлоаксессора set } } 7.10 Iнтерфейси Нехай необхiдно написати програму, яка буде рисувати рiзнi фiгури (квадрат - Square , елiпс - Ellipse , коло - Diamond ) на екранi, обчислю- вати ı̈хню площю й периметр. Можна для рисування фiгур з кожного класiв Square , Ellipse , Diamond написати такi фрагменти: for (Square s: squares) { s.draw(); } for (Ellipse e: ellipses) { e.draw(); } for (Diamond d: diamonds) { d.draw(); } У цих фрагментах squares, ellipses, diamonds списки екземплярiв вiдповiдних класiв: Square, Ellipse, Diamond . Якщо в нас потiм зна- добиться додати ще фiгури, то прийдеться дописувати програму. У такiй ситуацiı̈ краще буде оголосити щось спяльне для фiгур з одна- ковим за функцiоналом методом draw() . Створимо спискок figures екземпляров рiзних класiв iз загальним методом draw() . Однак, кожна фiгура має свiй особистий метод рису- вання, тому цей метод треба реалiзовувати в кожному класi iндивiду- 154