Основные принципы ООП.
Иерархия классов. Класс может наследовать компоненты из другого класса. Наследующий дочерний класс – потомок, а наследуемый – предок. Процедура наследования относится только к классам, но не к объектам. Потомки содержат все методы и поля предков. При создании нового класса описываются только новые поля и методы. Если в родительском классе поле изменено, то у потомков тоже это поле изменено. Ни у одного потомка не должно быть полей, имена которых такие же как у любого из предков. А имена методов могут совпадать. При наследовании классов важную роль играет статус доступа (статус внешней видимости) компонентов. Для любого класса все его компоненты лежат в области его действия. Тем самым любая принадлежащая классу функция может использовать любые компонентные данные и вызывать любые принадлежащие классу функции. Вне класса в общем случае доступны только те его компоненты, которые имеют статус public. В иерархии классов соглашение относительно доступности компонентов класса следующее. Собственные (private) методы и данные доступны только внутри того класса, где они определены. Защищенные (protected) компоненты доступны внутри класса, в котором они определены, и дополнительно доступны во всех производных классах. Общедоступные (public) компоненты класса видимы из любой точки программы, т.е. являются глобальными. class B { protected: int t; public: char u;}; class E: B {... }; // t, и наследуются как private class S: B {... }; // t, и наследуются как public Пр.2.2 class tPoint { int x, y; } class tColorPoint: tPoint { – принцип наследования unsigned char color; } Не допускается прямое обращение к полям. Принцип наследования является основным отличием ООП от структурного программирования. Наследование одного класса от другого может продолжаться бесконечно, таким образом образуется иерархия классов.
Иерархия строится от общего к частному (координаты точки x, y, центр фигуры). Верхние классы иерархии обычно не имеют объектов – их называют абстрактные. 3)Методы (правила). ООП исключает прямое обращение к полям. Для работы с полями используют методы. Метод – процедура или функция объявленная внутри класса. Внутри класса только заголовок метода. Тело метода можно описывать сразу после описания своего класса или после описания всех классов (предпочтительнее). Классы и их методы имеют общую область действия в памяти, поэтому имена формальных параметров метода и имена полей не должны совпадать. Пр.2.3 class tlocation { инкап- public: int x, y; суляция void Init (int Init X, Init Y); }; class tPoint: public: tlocation { int color; }; void tlocation:: Init(int Init X, Init Y) { x=Init X; y=Init Y; }; Main() { tPoint p; p.Init(23,56); p.color= 14; Пр.2.4 class tlocation { public: int x, y; void Init (int Init X, Init Y); }; void tlocation:: Init(int Init X, Init Y) { x=Init X; y=Init Y; }; class tPoint public: tlocation { int color; void Init (int Init X, Init Y, col); }; void tPoint:: Init(int Init X, Init Y, col) { x= Init X; tlocation::Init(Init X, Init Y); y= init Y; color=col; } Begin… p.Init(23,56,11); end; При описании метода указывается <имя класса>::<имя метода> при вызове метода указывается <имя объекта>.<имя метода>. В этом примере – перекрытие метода Init.(подавление). Метод Init класса tPoint перекрывает или подавляет одноимённый метод родительского класса. Порядок вызова методов. Сначала компилятор ищет данный метод в классе, к которому принадлежит вызывающий объект, если не находит, то ищет метод в родительском классе и далее вверх по иерархии. Если метод не найден, то выдаёт сообщение об ошибке. Основные принципы ООП. Инкапсуляция – объединение полей записи с процедурами и функциями, работающих с полями этих записей, которое формирует новый тип объекта. Наследование – создание иерархии классов для того, чтобы поля данных и методы предков автоматически были полями данных и методами потомков. Наследование полей и методов различны.
Полиморфизм – присвоение определённому действию одного имени, которое затем совместно используется по всей иерархии класса (сверху вниз), причем каждый класс иерархии выполняет характерным именно для него способом.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|