Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Obektno-orientirovannoe_programmirovanie.doc
Скачиваний:
14
Добавлен:
19.08.2019
Размер:
271.36 Кб
Скачать

5. Полиморфизм в ооп.

Полиморфизм – это такое состояние, когда нечто одно имеет много форм. В программировании это означает, что одно и то же имя может представлять различный код, который будет выбираться автоматическим механизмом.

Стиральная машина (включить, выключить)

Кофеварка (включить, выключить)

О полиморфизме часто говорят как о третьем базовом элементе объектно-ориентированного программирования, после инкапсуляции и наследования. Полиформизм — это греческое слово, означающее "наличие многих форм". Это понятие имеет два различающихся аспекта.

  1. Во время выполнения объекты производного класса могут рассматриваться как объекты базового класса в таких местах как параметры метода и коллекции массивов. При этом объявленный тип объекта больше не идентичен его типу времени выполнения.

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

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

  1. Создание иерархии классов, в которой класс каждой конкретной формы производится от общего базового класса.

  2. Использование виртуального метода для вызова соответствующего метода в каком-либо производном классе одним вызовом метода базового класса.

6. Описание классов с с#.

В C# класс – пользовательский тип. Для определения класса используется слово class. После него следует имя класса, которое должно быть уникальным в пределах пространства имен (namespace). Требования к именам классов в C# такие же, как и к именам переменных в C/C++. Язык C# регистрозависим (MyClass, myclass – разные имена). Имя класса рекомендуется начинать с заглавной буквы. Если имя класса состоит из нескольких частей, то с большой буквы начинается каждая. Описание класса заключается в операторные скобки. Например,

class SampleClass{…}

После } символ «;» не ставится. Описание класса состоит из описания полей и методов. Каждый из этих компонентов начинается с модификатора области видимости: public, protected, private, internal.

7. Модификаторы доступа к компонентам классов в с#.

  1. public – обозначает, что компонент доступен отовсюду, в том числе из других классов и сборок;

  2. protected – компонент доступен из самого класса, которому принадлежит, и из классов, производных от него;

  3. private – компонент доступен из класса, которому он принадлежит;

  4. internal (внутренний) – компонент доступен только классам данной сборки.

Эти модификаторы справедливы для полей и методов. Описание поля состоит из модификатора, типа данных и имени, уникального в пределах класса. Может быть начальное значение, которое получит поле при создании объекта класса.

class SampleClass

{

private int myData = 2;

public const double pi = 3.1415;

public int pubData = 3;

}