Объектно-ориентированное программирование



Объектно-ориентированное программирование - стр. 61


            void write (Color color);

          };

Члены суперкласса (атрибуты и операции) наследуются его подклассами (члены, определенные в суперклассе, имеются у всех его подклассов). Члены суперкласса, определенные в нем как private, недоступны для операций его подклассов; для операций подклассов доступны члены суперкласса, определенные в нем protected и как public. Методы, определенные в суперклассе, могут быть переопределены в (некоторых) его подклассах, если они определены как виртуальные (virtual). Например, метод write класса Shape может быть переопределен в его подклассах Box и Circle, поэтому он определен как виртуальный; методы и в подклассах не переопределяются, поэтому их можно не объявлять как виртуальные. Если в определении виртуального метода указана его "инициализация" к 0 (virtual void write (Color color) = 0;), то он обязательно должен быть переопределен в каждом его подклассе (такой метод называется абстрактным). Класс, содержащий хотя бы один абстрактный метод, также называется абстрактным. Для абстрактных классов нельзя порождать объекты (объекты определены только для его подклассов). Если все методы класса определены как абстрактные, то говорят, что такой (абстрактный) класс определяет интерфейс, реализуемый в его подклассах.

В языке C++ поддерживается множественное наследование: каждый класс может иметь один или несколько суперклассов.

Реализация зависимостей

Зависимости в языке C++ реализуются с помощью указателей или с помощью специальных объектов. Например, зависимость "много-к-одному" между классами Item и Group реализована через указатели:

          class Item{

          public:

            virtual void cut ();

            virtual void move (Length deltax, Length deltay) = 0;

            virtual Boolean pick (Length px, Length py) = 0;

            virtual void ungroup () = 0;

          private:

            Group* group;

            friend Group::add_item (Item*);




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