Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.02.2013, 21:35   #41
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Цитата:
Вот мы плавно подошли к тому, что терминология - очень тонкий вопрос.
К этому плавно подошли еще на первой странице темы, я чето даже вмешиваться не стал, терминология меня сразу угнетла, с первых строк. Термины "специализация" (я не слышал этого слова очень давно, и думал этот термин давно умер, как и "генерализация", про которую ТС не упоминул) и "перезагрузка функций" (тоже где-то на первой странице) огорчили.

Подозреваю, что под специализацией ТС имеет ввиду обобщение (отношение между более общим и менее общим понятием), однако, ТС где-то пояснял, что "Механизм наследования позволяет реализовать специализацию.". Вот я не пойму что он имеет ввиду под специализацией, но наследование - частный случай обобщения, и он явно не позволяет реализовать это самое наследование.

И вот эти примеры с первой страницы:
Цитата:
Динамическое связывание происходит во время исполнения программы.
Пример. Динамический полиморфизм (перезагрузка методов класса)
В примере тип будет известен во время компиляции, и выбор метода произойдет тогда же, время выполнения и динамический полиморфиз тут не при чем.

Я думаю, тему зря закрепили, в ней полно подозрительной терминологии.
rrrFer вне форума Ответить с цитированием
Старый 07.02.2013, 23:03   #42
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от rrrFer Посмотреть сообщение
Подозреваю, что под специализацией ТС имеет ввиду обобщение (отношение между более общим и менее общим понятием), однако, ТС где-то пояснял, что "Механизм наследования позволяет реализовать специализацию.". Вот я не пойму что он имеет ввиду под специализацией, но наследование - частный случай обобщения, и он явно не позволяет реализовать это самое наследование.
Ну вообще то, термин "специализация" не вполне удачный, но уместный.

"Наследник специализирует предка".
"Наследник конкретизирует предка".

Правда в том, что на языке с++ это не всегда так. И лично я уже давным давно забил на все эти глупые правила "квадрат есть четырехугольник, а значит должен быть наследником".

На плюсах можно проворачивать множество разных трюков.
И важен эффект, который можно достичь применив тот или иной трюк.

И если ради этого окружности и ромбу придется унаследоваться от какого то непонятного "буст::но_копи", то полагаю, сие никак не специализирует базовый класс. Однако нужный эффект будет достигнут. Ну вы понэли.
_Bers вне форума Ответить с цитированием
Старый 07.02.2013, 23:54   #43
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Цитата:
Сообщение от rrrFer Посмотреть сообщение
В примере тип будет известен во время компиляции, и выбор метода произойдет тогда же, время выполнения и динамический полиморфиз тут не при чем.
Я писал уже об этой ошибке:

Цитата:
Сообщение от 8Observer8 Посмотреть сообщение
По-моему, я совершил ошибку и перезагрузку методов класса отнёс к динамическому полиморфизму.
...
...какая из функций с одинаковыми именами будет вызвана решится на этапе компиляции (на этапе линковки у функций имена будут уже разные).
8Observer8 вне форума Ответить с цитированием
Старый 08.02.2013, 13:07   #44
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Цитата:
Сообщение от rrrFer Посмотреть сообщение
К этому плавно подошли еще на первой странице темы, я чето даже вмешиваться не стал, терминология меня сразу угнетла, с первых строк. Термины "специализация" (я не слышал этого слова очень давно, и думал этот термин давно умер, как и "генерализация", про которую ТС не упоминул) и "перезагрузка функций" (тоже где-то на первой странице) огорчили.
Tерминология взята из книги Крупника "Изучаем C++" (см. последнюю главу "Заключение"). Книга далее по ссылке, первая во вложении: http://programmersforum.ru/showpost....&postcount=147

Цитата:
Сообщение от rrrFer Посмотреть сообщение
Подозреваю, что под специализацией ТС имеет ввиду обобщение (отношение между более общим и менее общим понятием)
Специализация в объектно-ориентированном подходе - это уточнение. Например, из класса животных мы можем выделить насекомых и млекопитающих и т.д. Наследование в C++ существует для поддержания специализации.
8Observer8 вне форума Ответить с цитированием
Старый 08.02.2013, 13:39   #45
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

"Наследование в C++ существует для поддержания специализации. "
верно, но сформулировано нехорошо и С++ тут не при чем, быть может.

Нашел вот тебе книжку: http://forum.sources.ru/index.php?showtopic=284923
Не крупник конечно, но тоже сойдет )
rrrFer вне форума Ответить с цитированием
Старый 08.02.2013, 13:48   #46
ROD
Linux C++ Qt ARM
Старожил
 
Аватар для ROD
 
Регистрация: 30.11.2008
Сообщений: 3,030
По умолчанию

Цитата:
Сообщение от rrrFer Посмотреть сообщение
"Наследование в C++ существует для поддержания специализации. "
верно, но сформулировано нехорошо и С++ тут не при чем, быть может.

Нашел вот тебе книжку: http://forum.sources.ru/index.php?showtopic=284923
Не крупник конечно, но тоже сойдет )
Блин, это шикарно! Надо на главной странице форума это цитировать
Цитата:
Аффтар, для написания книги С++ можешь ты не знать, но русский знать обязан.
Дилетант широкого профиля.

"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс
ROD вне форума Ответить с цитированием
Старый 08.02.2013, 23:25   #47
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от 8Observer8 Посмотреть сообщение
Специализация в объектно-ориентированном подходе - это уточнение. Например, из класса животных мы можем выделить насекомых и млекопитающих и т.д. Наследование в C++ существует для поддержания специализации.
Все верно, согласно каноническим понятиям ООП. В отрыве от языка.

Но на практике - значение имеет лишь эффект, который может быть достигнут.


Наиболее убогие и жалкие из-кейсы, в библиотеках, из тех, что я видел на плюсах - канонические
_Bers вне форума Ответить с цитированием
Старый 09.02.2013, 07:45   #48
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Объектно-ориентированное программирование (ООП) "стоит на трёх китах":

- Классификация

- Специализация

- Полиморфизм
Вообще-то три кита С++ это:

Наследование,
инкапсуляция,
полиморфизм.


Если автор не в курсе.
Таких понятий как
- Классификация
- Специализация
в С не существует.
Есть понятие Класс. Оно вытекает из понятия инкапсуляции, как метод реализации последнего.
Классы делятся на базовые, производны и абстрактные.
Каждый из этих классов, может наследоваться классами-наследниками.
Классам-наследникам, доступны все функции и методы классов-родителей, находящиеся в разделе - public.
Наряду с этими, классами имеются так-же классы-друзья.
Как разновидность классов применяются структуры (struct) и объединения (union).
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 09.02.2013, 19:34   #49
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Цитата:
Сообщение от Smitt&Wesson Посмотреть сообщение
Вообще-то три кита С++ это:

Наследование,
инкапсуляция,
полиморфизм.


Если автор не в курсе.
Таких понятий как
- Классификация
- Специализация
в С не существует.
Да я ошибся. Вместо:
Цитата:
Объектно-ориентированное программирование (ООП) "стоит на трёх китах":
Нужно:
Цитата:
Объектно-ориентированный подход (ООП) "стоит на трёх китах":
Может модератор исправит.

А то что вы написали - это механизмы. Всё верно.

Объектно-ориентированный подход (ООП):

- Классификация

- Специализация

- Полиморфизм

Соответствующие механизмы в С++:

- для классификации: инкапсуляция и сокрытие данных

- для специализации: наследование
8Observer8 вне форума Ответить с цитированием
Старый 09.02.2013, 20:37   #50
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Опять Вы свою хрень парите. Только мозги новичкам запудриваете.
Инкапсуляция и сокрытие данных, это одно и то-же. Масло - масляное.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Инструкция по созданию заготовки для 2D игр (для начинающих) 8Observer8 Gamedev - cоздание игр: Unity, OpenGL, DirectX 31 20.03.2023 02:01
C++ для начинающих a_Alise Помощь студентам 2 27.03.2016 10:00
C++ для начинающих Haruko_ Помощь студентам 0 23.10.2012 21:41
С++ для начинающих Maxim1 Общие вопросы C/C++ 10 31.05.2010 00:22