русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Безплідні класи


Дата додавання: 2015-01-08; переглядів: 917.


 

У С# є ключове слово sealed, що дозволяє описати клас, від якого, в протилежність абстрактному, успадковувати забороняється:

 

sealed class Spirit

{

.

}

// class Monster : Spirit { ... }помилка!

 

Більшість вбудованих типів даних описана як sealed. Якщо необхідно використовувати функціональність безплідного класу, застосовується не спадкоємство, а вкладення (включення): у класі описується поле відповідного типу.

Вкладення класів це коли один клас включає поля, що є класами. Наприклад, якщо є об'єкт "двигун", а потрібно описати об'єкт "літак", логічно зробити двигун полем цього об'єкту, а не його предком.

Оскільки поля класу зазвичай закриті, виникає питання, як же користуватися методами включеного об'єкту. Загальноприйнятий спосіб полягає в тому, щоб описати метод охоплюючого класу, з якого викликати метод включеного класу. Такий спосіб взаємин класів відомий як модель включення-делегування. Приклад приведений в лістингу 8.4.

 

Лістинг 8.4. Модель включення

using System;

 

namespace examp51

{

class Двигатель

{

public void Запуск()

{

Console.WriteLine("вжжжж!!");

}

}

 

class Самолет

{

public Самолет()

{

левый = new Двигатель();

правый = new Двигатель();

}

public void Запустить_двигатели()

{

левый.Запуск();

правый.Запуск();

}

Двигатель левый, правый;

}

 

class Class1

{

static void Main()

{

Самолет AH24_1 = new Самолет();

AH24_1.Запустить_двигатели();

}

}

}

 

Результат роботи програми:

вжжжж!!

вжжжж!!

 

У методі “Запустити двигуни” запит на запуск двигунів передається, або, як прийнято говорити, делегується вкладеному класу.

 


<== попередня лекція | наступна лекція ==>
Абстрактні класи | Клас object


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн