Сообщение Re: Объясняем наследование от 29.10.2014 11:37
Изменено 29.10.2014 11:38 vpchelko
Здравствуйте, Tilir, Вы писали:
В Java очень хорошо наследование показано стандартными коллекциями: List, Map, Set ... etc
Скрытый текст | |
T>Hi, T>У меня тут есть немного студентов на нашей базовой кафедре, которых надо научить плюсам в свободное от работы время. Пока всё шло хорошо, но скоро надо будет объяснить им наследование. Пока план примерно такой: T> T>Рассказать про открытое наследование интерфейса. Показать как писать чисто абстрактные классы. Рассказать про чисто виртуальные функции. T>Показать как удобно объекты с одним интерфейсом втыкаются в обобщенный код T>Немного блабла про is-a и LSP T>Упомянуть про наследование реализации, рассказать про просто виртуальные функции, статический и динамический тип, показать примеры когда это полезно и когда вредно. Особо остановиться на виртуальных деструкторах. T>Упомянуть про закрытое и защищённое наследование. Объяснить что закрытое это такая композиция (и поэтому лучше делать явную композицию), а защищённое вообще никто не знает зачем нужно. T>Рассказать про RTTI и dynamic_cast. T>И дальше отправиться в космос -- множественное наследование, ромбовидные схемы, виртуальные базовые классы, etc. T> T>Но весь этот план требует некоего сквозного примера для которого проводить объяснения. И вот тут у меня затык. T>Все книги по C++ которые объясняют наследование вызывают желание убить себе лицо рукой. Вызывали когда я был на втором курсе, вызывают сейчас много лет спустя. Даже дедушка Строструп не уберёгся и унаследовал класс Manger от класса Employer, стыд и унижение. Варианты наследовать котят от собачек, груши от фруктов, кружочки от квадратиков и т.п. не рассматриваются, мне будет стыдно рассказывать, им будет стыдно слушать. Когда я совсем состарюсь пойду воспитателем в детский сад, там мне это очень пригодится, а пока ну нафиг. T>Нахожусь в активном поиске нормального вменяемого примера наследования. Пока что придумал такую идею -- наследовать от "графа вообще" его частные случаи -- CFG, DAG, дерево. Близко к моей основной теме (оптимизирующие компиляторы), можно что-то рассказать дополнительно. T>Но хотелось бы послушать мнение народа. Как бы вы объясняли наследование? T>--- T>With best regards, Konstantin | |
В Java очень хорошо наследование показано стандартными коллекциями: List, Map, Set ... etc
Re: Объясняем наследование
Здравствуйте, Tilir, Вы писали:
В Java очень хорошо наследование показано стандартными коллекциями: List, Map, Set ... etc
А вот например С++ виртуальное наследование, я до сих пор не видел прикладных задач — где это нужно.
Скрытый текст | |
T>Hi, T>У меня тут есть немного студентов на нашей базовой кафедре, которых надо научить плюсам в свободное от работы время. Пока всё шло хорошо, но скоро надо будет объяснить им наследование. Пока план примерно такой: T> T>Рассказать про открытое наследование интерфейса. Показать как писать чисто абстрактные классы. Рассказать про чисто виртуальные функции. T>Показать как удобно объекты с одним интерфейсом втыкаются в обобщенный код T>Немного блабла про is-a и LSP T>Упомянуть про наследование реализации, рассказать про просто виртуальные функции, статический и динамический тип, показать примеры когда это полезно и когда вредно. Особо остановиться на виртуальных деструкторах. T>Упомянуть про закрытое и защищённое наследование. Объяснить что закрытое это такая композиция (и поэтому лучше делать явную композицию), а защищённое вообще никто не знает зачем нужно. T>Рассказать про RTTI и dynamic_cast. T>И дальше отправиться в космос -- множественное наследование, ромбовидные схемы, виртуальные базовые классы, etc. T> T>Но весь этот план требует некоего сквозного примера для которого проводить объяснения. И вот тут у меня затык. T>Все книги по C++ которые объясняют наследование вызывают желание убить себе лицо рукой. Вызывали когда я был на втором курсе, вызывают сейчас много лет спустя. Даже дедушка Строструп не уберёгся и унаследовал класс Manger от класса Employer, стыд и унижение. Варианты наследовать котят от собачек, груши от фруктов, кружочки от квадратиков и т.п. не рассматриваются, мне будет стыдно рассказывать, им будет стыдно слушать. Когда я совсем состарюсь пойду воспитателем в детский сад, там мне это очень пригодится, а пока ну нафиг. T>Нахожусь в активном поиске нормального вменяемого примера наследования. Пока что придумал такую идею -- наследовать от "графа вообще" его частные случаи -- CFG, DAG, дерево. Близко к моей основной теме (оптимизирующие компиляторы), можно что-то рассказать дополнительно. T>Но хотелось бы послушать мнение народа. Как бы вы объясняли наследование? T>--- T>With best regards, Konstantin | |
В Java очень хорошо наследование показано стандартными коллекциями: List, Map, Set ... etc
А вот например С++ виртуальное наследование, я до сих пор не видел прикладных задач — где это нужно.