языков программирования 10 поддерживают ООП на уровне синтаксиса. http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html • Программы на C++ работают быстро. • Ergo: Занимаемся ООП на C++.
только немного по-другому» • Поведение класса A наследуется от класса B (с изменениями). • B — базовый класс (суперкласс). • A — производный класс (подкласс).
• Ссылки. • Новый синтаксис преобразования типов. • Расширение смысла const. • Перегрузка функций. • namespace и using. • Шаблоны функций и классов. • Переопределение операторов. • Исключения. Что есть в C++, чего нет в C
базового класса, код может работать с любым его наследником. • Отсутствие дублирования. В идеале: Новый функционал = Старый функционал + Переопределение некоторых методов
раздельность изменений ширины и высоты (setWidth, setHeight), то Square нельзя наследовать от Rectangle. • Можно сделать, чтобы у класса Square и setWidth, и setHeight устанавливали как высоту, так и ширину, поддерживая «квадратность», но…
высокого уровня не должны зависеть от модулей низкого уровня. Оба типа модулей должны зависеть от абстракций. • Абстракции не должны зависеть от подробностей, наоборот, подробности должны зависеть от абстракций.
class TimerClient { public: virtual void timeout() = 0; }; Как сделать класс TimedDoor с сигналом о незакрытии? class Door { public: virtual void lock() = 0; virtual void unlock() = 0; virtual bool isOpen() = 0; };