русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

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

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Лекция 21. События


Дата добавления: 2013-12-23; просмотров: 792; Нарушение авторских прав


ЛИТЕРАТУРА

Абстрактные классы и полиморфизм

Типичные ситуации проявления полиморфизма

Метод ToString

Характерным примером полиморфного метода является метод ToString. Он определен в классе Object как virtual. Поэтому в производных классах такой же метод удобно переопределять как override. Это обеспечит однотипное (полиморфное) управление Вашими объектами. Например, в классе Student его реализация может быть следующей:

public override string ToString()

{return String.Format("Student {0} has mark {1}",name,mark);}

Благодаря этому упростится реализация метода Report:

static void Report()

{ foreach (Student st in students) Console.WriteLine(st); }

Дело в том, что метод WriteLine неявно вызывает для каждого выводимого им объекта его метод ToString.

Сначала определим примитивные классы:

class A

{ public virtual void Do() { Console.Write("A works "); } }

class B:A

{ public override void Do() { Console.Write("B works "); } }

Присваивание

A w1 = new B(); w1.Do();

Параметры метода

static void HardWork(A worker)

{ worker.Do(); worker.Do();

Console.WriteLine("Help!");

worker.Do(); worker.Do();

}

Затем в Main:

HardWork(new B());

Результат:

B works B works Help! B works B works

Таким образом, метод HardWork успешно сочетает два вида действий:

- действия, независимые от типа передаваемого параметра (“Help!”);

- действия, полиморфно зависимые от типа передаваемого параметра.

Нередко бывают ситуации, когда следует гарантировать невозможность создания объектов класса. В частности, это бывает для базовых классов, соответствующих абстрактным понятиям. В таком случае базовый класс следует сделать абстрактным, указав в его заголовке ключевое слово abstract. Теперь попытка создания объектом будет распознаваться компилятором как ошибка.



Другая особенность абстрактных классов – наличие в них абстрактных методов. Такие методы имеют две синтаксические особенности:

1. В заголовке абстрактного метода указывается ключевое слово abstract.

2. Абстрактный метод не имеет реализации.

Теперь можно определить базовый класс Student следующим образом:

public abstract class Student

{ private string name;

private int mark;

public Student(string n){name=n;}

public abstract void PassExam();

public string Name { get { return name; } }

public int Mark

{ get { return mark; } set { mark = value; } }

}

Наличие абстрактного метода позволяет реализовать принудительный полиморфизм. Дело в том, что производный класс обязан реализовать абстрактный метод (иначе этот класс остается абстрактным и должен быть описан как abstract). Абстрактные методы по умолчанию считаются описанными как virtual (указывать virtual даже нельзя).

Хотя непосредственно нельзя создавать объекты абстрактных классов, конструктор в абстрактном классе может быть определен для создания объектов производных классов, где он будет вызываться в соответствующем конструкторе с помощью конструкции base().


  1. Троелсен Э. Язык программирования C# 2005 и платформа .NET 2.0 3-е издание.: Пер. с англ. – М.: ООО «И.Д. Вильямс», 2007. – 1168 с.: ил.
  2. Лабор В.В. Си Шарп: Создание приложений для Windows – Мн.: Харвест, 2003.-384с.
  3. Микелсен К. Язык программирования C#. Лекции и упражнения. Учебник: Пер. с англ./ - СПб.: ООО «ДиаСофтЮП», 2002. – 656 с.

 

До этого хорошо бы «Пользовательские элементы управлении» и пример с их иерархией. Шаблон Observer.

 



<== предыдущая лекция | следующая лекция ==>
Полиморфизм | Делегаты и события


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.005 сек.