Характеристики объектно-ориентированного программирования

Класс является носителем общих для объектов этого класс признаков. Класс характеризуется следующими основополагающими понятиями ООП:

I. Наследование. Позволяет создавать новые классы на основе имеющегося класса с наследование всех его свойств и методов и добавлением собственных. Класс, не имеющий предшественника, называется базовым. Если первый называется базовым, то второй – производным классом (или подклассом). Например, класс «Животное» имеет свойства: «название», «размер», методы «идти», «размножаться». Созданный на его основе класс «Корова» наследует все эти свойства и методы, к которым дополнительно добавляется свойство «домашнее» и метод «давать молоко».

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

Характеристики объектно-ориентированного программирования - student2.ru

Пример объектной модели «Геометрические фигуры на плоскости», содержащей иерархию объектов (классов):

Характеристики объектно-ориентированного программирования - student2.ru

Здесь производный класс образовывается от одного базового класса – так называемое единичное наследование. Однако существует (в некоторых средах программирования C++, VC++) и множественное наследование, при котором производный класс образуется сразу от нескольких базовых, что позволяет создавать достаточно сложные иерархии классов:

Характеристики объектно-ориентированного программирования - student2.ru

II. Полиморфизм. Объекты разных классов могут использовать одноименные методы, работающие по-разному для разных объектов. Или, другими словами, различные объекты выполняют одно и тоже действие по- своему. Например: в одном и том же классе могут быть перегруженные методы (в классе Random – методы Next(…)).

В большинстве случаев методы базового класса в производных классах приходиться переопределять.Все переопределяемые методы по интерфейсу (заголовку) совпадают с методами базового объекта. Во время работы программы вызываются методы соответствующего класса. Например, пусть в базовом классе «Животное» имеется метод «Идти», который переопределен в производных классах «Корова» и «Кенгуру». Объект класса «Корова» выполняет метод «Идти» совсем не так как объект класса «Кенгуру». Компилятор по типу объекта (его классу) распознает, какой конкретно метод надо вызвать, и не вызовет для объекта класса «Корова» метод «Идти» класса «Кенгуру».

Итак, свойство объектов переопределять методы базового (наследуемого) класса и называется полиморфизмом.

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

III. Инкапсуляция – скрытие сложного механизма действия объекта, т. е. скрытие деталей, несущественных для использования объекта. Определив класс, можно создавать объекты этого класса и манипулировать ими, используя методы. При этом некоторые данные и методы, инкапсулированные в одном классе, можно сделать недоступными вне реализации класса, а другие могут быть доступны из любого места программы. Это реализуется с помощью атрибутов доступа к элементам класса (public, protected, private). Для реализации инкапсуляции используется атрибут доступа к членам класса private(частный, закрытый).

15.Форма определения класса в C#. Члены класса. Спецификаторы доступа к членам класса.

2.1. Форма определения класса. Члены класса

Все C# -программы оформляются в виде класса. Определяя класс, мы определяем данные, которые он содержит, и код, манипулирующий этими данными. Данные содержатся в переменных экземпляров, определяемых классом, а код в методах. Класс определяет также ряд специальных членов. Например, статистические переменные, конструкторы, деструкторы, индексаторы, события, операторы и свойства.

Класс создается с помощью ключевого слова class. Общая форма определения класса:

class Имя_класса

{

// Объявление членов-переменных экземпляров (полей):

доступ тип переменная_1;

доступ тип переменная_2;

. . .

доступ тип переменная_n;

// Конструкторы

// Методы:

доступ Тип_возвращаемого_значения Имя_метода_1 (список параметров)

{

// тело метода

}

доступ Тип_возвращаемого_значения Имя метода_2 (список параметров)

{

// тело метода

}

. . .

доступ Тип_возвращаемого_значения Имя метода_n (список параметров)

{

// тело метода

}

// Свойства и индексаторы

// События

// Операторные методы

}

Наши рекомендации