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

preview_player
Показать описание
Рассказ об основных идеях ООП. Различия между наследованием и агрегированием. Особенности наследования в C++. Ключевое слово friend.

Лекция №8 в курсе "C++" (осень 2015).
Преподаватель курса: Александр Владимирович Смаль

Рекомендации по теме
Комментарии
Автор

Да, в какой-то момент была тема смешивать инкапсуляцию и наследование и полиморфизм в одну кашу и зачем-то представлять наследование в смысловых понятиях подкатегории "это" есть частный случай "того". Проблема здесь в том, что объект в ООП это не "стол", "стул", "квадрат" или любое другое абстрактное понятие, это просто кусок данных с кодом, который их обрабатывает. В связи с этим возможность делать подкатегории по сути только сбивает с толку и подталкивает не в том направлении. Но, слава Богу, эта концепция давно устарела - "наследование" ушло в прошлое. Следует понимать, что ни инкапсуляция, ни полиморфизм никак не должны быть связаны с раширением данных объекта, это совершенно отдельные и независимые концепции, что делает их гораздо более полезными на практике. Когда в Java ввели интерфейсы это был первый шаг к отказу от иерархий объектов. Интерфейс суть способ взаимодействовать с объектом, никак не привязанный к его внутреннему представлению это то, что позволило выделить инкапсуляцию в чистом виде и отделить её от другого прочего. Тем не менее классическое наследование всё ещё остается в языках вроде java и C++, от него нельзя избавиться в языках сейчас по историческим причинам. Более современные языки (Rust, Go), не поддерживают наследование овсем, хотя они всё так же используют концепции инкапсуляции и полиморфизма.

fedoresko
Автор

Что я могу сказать?
"Инструменты, которыми мы пользуемся, оказывают глубокое (и коварное!) влияние на то, как мы думаем, и, следовательно, на нашу способность думать ". Э.В.Дейкстра

brodskyizya
Автор

На 12-м слайде забыли добавить const в сигнатуру clone:
Person * clone() const {...}; // иначе это не переопределение виртуального метода

alexun
Автор

Жаль, но преподаватель не пишет код. Слайды это хорошо, но без практических примеров многие вещи усвоить солжно

sarlevdiz
Автор

Это лет 20 как устарело и нельзя применять в проектирование в чистом виде.

svLimones