Инкапсуляция и полиморфизм. Примеры использования.



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

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

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

32. Область видимости объектов в классах (private, public, protected). Примеры на С++.

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

сlass<Имя класса>

{

private: <Внутренние (недоступные) компоненты класса>

protected: <Защищенные компоненты класса>

public: <Общие (доступные) компоненты класса>

};

33. Наследование классов в консольном приложении.Класс-потомок наследует все возможности родительского класса - все поля и все методы, открытую и закрытую часть класса. Правда, не ко всем полям и методам класса возможен прямой доступ потомка. Поля и методы родительского класса, снабженные атрибутом private, хотя и наследуются, но по-прежнему остаются закрытыми, и методы, создаваемые потомком, не могут к ним обращаться напрямую, а только через методы, наследованные от родителя. Единственное, что не наследует потомок - это конструкторы родительского класса. Методы класса могут быть объявлены как абстрактные. Это означает, что в этом классе нет реализации этих методов. Абстрактные методы пишутся с модификатором abstract. Класс, в котором есть хотя бы один абстрактный метод, называется абстрактным (а таком классе могу быть и обычные методы). Нельзя создавать экземпляры абстрактного класса - такой класс может использоваться только в качестве базового класса для других классов. Для потомка такого класса есть две возможности - или он реализует все абстрактные методы базового класса (и в этом случае для такого класса-потомка мы сможем создавать его экземпляры), или он реализует не все абстрактные методы базового класса (в этом случае он является тоже абстрактным классом и единственная возможность его использования - это производить от него классы-потомки). Следует отметить, что в C# класс не может быть объявлен производным от нескольких классов. То есть отсутствует полное множественное наследование классов. Чтобы частично сгладить этот пробел, допускается множественное наследование интерфейсов. Обеспечить возможность классу иметь несколько родителей - один полноценный класс, а остальные в виде интерфейсов, - в этом и состоит основное назначение интерфейсов.


Дата добавления: 2018-02-18; просмотров: 619; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!