Инструменты пользователя

Инструменты сайта


examination:ccc:question9

Вопрос №9. Элементы ООП. Классы и их свойства.

Элементы ООП

Объект

Объект - совокупность переменных состояния и связанных с ними методов.

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

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

Инкапсуляция

Инкапсуляция является одним из трех основных принципов объектно-ориентированного программирования. Использование объектов для программирования позволяет абстрагироваться от непосредственной реализации интерфейсных методов. Так как объекты являются независимыми сущностями.

Для представления объектов в языках программирования используются классы.

Класс – это структурированный тип данных. В классе определяются атрибуты объекта, называемые полями, и методы обработки.

Для работы с объектами некоторого класса необходимо создать экземпляр класса. Например, есть класс «человеки» и экземпляр «Нина»! Класс является типом данных, экземпляр – переменой.

Наследование

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

Полиморфизм

Полиморфизм – третий принцип ООП. Полиморфизм – это свойство, которое позволяет одно и то же имя использовать для решения разных задач (аналог перегрузки функций). Соответственно, в классе мы можем определять методы с разной реализацией.

Классы

В классе используются различные области данных и методов. Эти области содержат в себе данные и методы, доступные внешним объектам (эта область обычно обозначается словом public).

Вторая область - private: к данным и методам этой области могут обращаться только методы самого класса. Наследуемые классы также не могут получить доступ к этим данным и методам.

Третья область - protected: к данным и методам этой области могут обращаться наследники этого класса, но внешние объекты с ними оперировать также не могут.

Дружественные функции

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

Класс:
{data
методы
друж.функции}


Дружественная функция может быть методом другого класса.

Перегружаемые функции и операторы

Перегрузка функций и операторов реализует механизм полиморфизма.

В языках ООП существует ограничение на использование перегрузки. Конкретное ограничение зависит от языка программирования.

Виртуальные функции

С понятием виртуальных функций связаны понятия раннего и позднего связывания.

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

Раннее связывание повышает эффективность программы, а позднее повышает ее универсальность, но снижает эффективность.

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

Виртуальный метод - метод, который, будучи описан в наследуемых классах, замещает собой соответствующий метод во всех остальных классах, в том числе и в родительском. То есть, при использовании виртуальных методов реализуется механизм позднего связывания.

Если в производном классе виртуальный метод не переопределен, то при вызове будет использоваться метод в ближайшем по иерархии базовом классе.

Абстрактный класс – класс, содержащий хотя бы один виртуальный метод, который не реализован в этом классе. Абстрактные классы используются для определения базового набора данных и методов. Сам по себе абстрактный класс практической ценности не имеет.

Конструкторы и деструкторы

Конструктор - это метод класса, определяющий состояние экземпляра класса в момент его создания.

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

Конструкторы наследуются потомками класса.

Деструктор – это метод класса, отвечающий за удаление экземпляра класса.

Деструктор тоже не имеет возвращаемого типа; имеет то же самое имя, что и класс.

examination/ccc/question9.txt · Последние изменения: 2014/01/15 08:13 (внешнее изменение)