![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Санитар
Старожил
Регистрация: 04.10.2008
Сообщений: 2,577
|
![]()
ИМХО, немного холиварная статья про "принципы ООП". С одной стороны, все это ООП - это очень просто, т.к. "добавили class, public, protected, virtual и ... все?".
С другой стороны, понять как им пользоваться не так легко. Потому что, оказывается, кроме этих ключевых слов есть куча принципов. Но откуда и зачем появились эти принципы и почему я "должен делать именно так?" - спрашивает себя каждый студент. А еще есть шаблоны проектирования, что с ними делать - пытаться понять или зазубрить? Преподаватель, отвечает на такие вопросы не всегда. Зато на эти вопросы пытается ответить статья, можно поспотрить и пообсуждать эту тему... Ссылка. |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
![]()
А что тут холиварного?
Кто холиварить будет? Любители мучить животных ООП?) Про юнитов только какой-то странный пример с магическими числами. Надо для начала обозначить что это за числа (урон оружия?), а потом может и переопределять hit не понадобится.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
![]() |
![]() |
![]() |
#3 | ||
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
![]() Цитата:
Цитата:
Абстрагирование это обобщение. К примеру квадрат ромб круг это фигура. Абстрагирование применяется для снижения числа IF при кодирование больших программ. Для этого применяется принцип подстановки Барбары. Сам принцип приведен в [1], а доказательство в книге [2] Модульность. Применяют для ускорения сборки. К примеру за счёт распараллеливания ядро Линукса собирается за 3 минуты а не за 0,5 часа. Но что-бы разбить на модули нужно переписать классы с использованием принципов капсулирования. Такие принципы как принцип Деметера. Плюс инкапсуляция делает объекты потоко безопасными. 1. http://ccfit.nsu.ru/~rylov/OOP%26OOD.PDF 2. (Библиотека программиста) Э. Гамма, Р. Хелм, Р. Джонсон, Д. Влиссидес-Приемы объектно-ориентированного проектирования. Паттерны проектирования-ДМК Пресс (2010)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
||
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
![]()
ну не только для этого же.
Кроме С++ нет языков что ли? https://en.wikipedia.org/wiki/Modular_programmingС чего вдруг? Это от реализации зависит.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. Последний раз редактировалось Alex11223; 03.10.2019 в 11:41. |
![]() |
![]() |
![]() |
#5 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
вот и начался обещанный холивар!
![]() |
![]() |
![]() |
![]() |
#6 | |
Санитар
Старожил
Регистрация: 04.10.2008
Сообщений: 2,577
|
![]() Цитата:
- И да, мне постоянно приходилось писать Код:
- "дублирование кода свидетельствует об упущенной возможности для абстракции" - это не я сказал, а Фаулер и он имел ввиду не только if-ы. Модульность - это далеко не только ускорение сборки. Инкапсуляция - это не только о потокобезопасности. Вы выдергиваете какие-то частности. И это прямо противоположно "принципам". Молоток создан чтобы забивать гвозди. Но вы бы, наверняка, добавили что его можно метать и т.п. |
|
![]() |
![]() |
![]() |
#7 | |
Санитар
Старожил
Регистрация: 04.10.2008
Сообщений: 2,577
|
![]() Цитата:
А набежали другие ![]() |
|
![]() |
![]() |
![]() |
#8 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
![]()
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
![]() |
![]() |
![]() |
#9 |
Санитар
Старожил
Регистрация: 04.10.2008
Сообщений: 2,577
|
![]()
Мне кажется очень бодрое и продуктивное обсуждение вопроса получилось тут: https://programming.d3.ru/statia-uch...sorting=rating.
|
![]() |
![]() |
![]() |
#10 | ||
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
![]() Цитата:
Но вообще я о указателях. Указатели указывают на общие данные. А общие данные надо защищать иначе будет возникать гонка процессов. А принцип Деметера. Гласит что если избавится от всех указателей то объекты будут инкапсулированы. Точно т.е. же и для потоков если мы избавимся от всех указателей то у нас не останется общих данных. Конечно есть трудности со скрытыми указателями. Такими как ссылки в Си или Var в паскале. Но это уже свойство конкретного компилятора. Генерирует он потоко безопасный код или нет. Цитата:
В данном случае стоит применять инверсию управления. Не вы проверяете, а ваша библиотека должны проверять IF.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
||
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Холивар - язык программирования | 13th | Общие вопросы по программированию, компьютерный форум | 36 | 31.05.2012 23:41 |
Что такое холивар ЯП? | Web-User | Помощь студентам | 11 | 22.07.2011 09:50 |
Принципы работы icq | Mantell | Общие вопросы .NET | 0 | 30.06.2009 10:42 |
Классы vs. функции (вопрос, а не холивар) | Qousio | Общие вопросы C/C++ | 7 | 21.05.2009 18:00 |