Энциклопедия C++ Builder



ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ И C++ - часть 7


• Приватные private имена имеют наиболее ограниченный доступ, разрешенный только методам данного класса. Доступ производных классов к приватным методам базовых классов запрещен.

• Защищенные protected имена имеют доступ, разрешенный методам данного и производных от него классов.

• Общедоступные public имена имеют неограниченный доступ, разрешенный методам всех классов и их объектов.

Следующие правила применяются при образовании различных секций объявления класса:

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

2. Если секция не названа, компилятор считает последующие объявления имен класса приватными. Здесь проявляется отличие объявлений класса и структуры - последняя рассматривается по умолчанию как общедоступная.

3. По мере возможности не помещайте члены данных в общедоступную секцию, если только вы действительно не хотите разрешить доступ к ним отовсюду. Обычно их объявляют защищенными, чтобы разрешить доступ только методам производных классов.

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

5. Конструкторы и деструкторы являются специальными функциями, которые не возвращают значения и имеют имя своего класса. Конструктор строит объект данного класса, а деструктор его удаляет.

6. Методы (так же как конструкторы и деструкторы), которые содержат более одной инструкции C++, рекомендуется объявлять вне класса.

Листинг 3.2 представляет попытку наполнить объявление базового класса некоторым конкретным содержанием. Отметим характерное для компонентных классов C++Builder объявление свойства Count в защищенной секции, а метода SetCount, реализующего запись в член данных FCount -

в приватной секции.

class TPoint { private:

int FCount; // Приватный член данных void _fastcall SetCount(int Value);

protected:

_property int Count = // Защищенное свойство

{ read= FCount, write=SetCount };

double x; // Защищенный член данных

double у; // Защищенный член данных public:

TPoint(double xVal, double yVal); // Конструктор |




Содержание  Назад  Вперед