|
|
| Результаты опроса: используете ли вы ооп | |||
| да |
|
238 | 86.55% |
| нет |
|
37 | 13.45% |
| Голосовавшие: 275. Вы ещё не голосовали в этом опросе | |||
|
|
Рейтинг 4.76/461:
|
|
81 / 39 / 3
Регистрация: 29.01.2010
Сообщений: 386
|
|
Стоит ли использовать ООП?09.02.2010, 13:44. Показов 103223. Ответов 793
Метки нет (Все метки)
Здравствуйте.
Возник такой вопрос: стоит ли использовать ооп. Даже не так, когда использовать ооп? Иногда (даже чаще всего) легче написать простые функции, а не мутить с классами обектами и методами. Раздражает инкапсуляция - какой вообще ее смысл? Чтобы получить переменную класса по правилам ооп нужно создавать метод для ее чтения? когда такой подход оправдан - ведь затрачивается куча лишнего времени.
5
|
|
| 09.02.2010, 13:44 | |
|
Ответы с готовыми решениями:
793
Стоит ли использовать ООП -- часть вторая
|
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|
| 31.03.2018, 12:33 | |
|
0
|
|
|
|
|
| 31.03.2018, 14:57 | |
|
Да нифига.
Оправдано наращивание абстракций. Причём без ограничений. А там где есть ограничения, некие границы, например, то же ООП, там рост приостанавливается. А если его хотят надстроить далее, то грохнется вся махина. Читали фантастический рассказ Клиффорда Саймака "Фактор ограничения"? Там люди попадают на планету, которая состояла из множества слоёв этажей, на которых располагались вычислительные системы. Так вот фактор ограничения был в том, что цивилизация не смогла дальше наращивать новые слои из-за того что металл мог не выдержать вышележащие слои. Так и с ООП.
0
|
|
|
Модератор
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,898
|
|
| 31.03.2018, 17:15 | |
|
0
|
|
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|
| 31.03.2018, 19:14 | |
|
CoderHuligan, Ну дак именно ООП и позволяет наращивать абстракции. При этом при правильном проектировании более общая абстракция имеет свойство давать меньшее количество слоев оберток. Вообще ключ к пониманию - ООП это методология проектирования основанная именно на выделении абстрактных сущностей и взаимодействий из предметной области а не ключевое слово class. Кстати так о птичках языков которые реально поддерживают ООП парадигму раз два и обчелся. Без множественного наследования классов возможности построения высокоуровневых абстракций урезаются процентов на 95. При всем при этом, из всех языков поддерживающих множественное наследование классов, универсальным и высокоуровневым является только один - С++.
0
|
|
|
|
||
| 31.03.2018, 20:24 | ||
|
Одной из причин создания ООП провозглашалось возможное повторное использование кода, и быстрота разработки. Ничего из этого не оправдалось на практике. Наоборот: разработка усложнилась в разы.
0
|
||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||||
| 31.03.2018, 21:07 | ||||
|
CoderHuligan, Абстракции в росте не нуждаются по определению абстракции.
0
|
||||
|
Модератор
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,898
|
|||
| 31.03.2018, 21:23 | |||
|
0
|
|||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||
| 31.03.2018, 21:32 | |||
|
.
0
|
|||
|
Модератор
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,898
|
||
| 31.03.2018, 21:33 | ||
|
Деревья выражений и связанные задачи.
0
|
||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||
| 31.03.2018, 21:36 | |||
|
0
|
|||
|
Модератор
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,898
|
|||
| 31.03.2018, 21:42 | |||
|
0
|
|||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||
| 31.03.2018, 21:52 | |||
|
Добавлено через 1 минуту
0
|
|||
|
Модератор
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,898
|
|||
| 31.03.2018, 22:37 | |||
|
0
|
|||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||
| 31.03.2018, 23:19 | |||
|
Добавлено через 1 минуту
0
|
|||
|
Модератор
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,898
|
||||
| 01.04.2018, 02:23 | ||||
|
- только список ссылок на детей - список ссылок на детей и ссылка на родителя - ссылка на первого ребёнка и ссылка на правого соседа ("брата") - левый и правый индексы (и никаких ссылок) - ничего (позиции "родственников" вычисляются по формулам) Список вариантов можно продолжить.
0
|
||||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||||||
| 01.04.2018, 06:30 | ||||||
|
Те же движки твердотельного моделирования живут на своих наборах функционала с середины 90-х и менять его не собираются. Они правда почти поголовно гибриды - аналитически заданные в частных случаях (которое едет с первого поколения САПР - с 60-х) + нурбсы. Некоторые вообще на 100% на нурбсах живут, эти вообще вечные. Добавлено через 34 минуты А в главных что береза что сосна что осина умеют расти цвести и гореть в печке. Т.е. набор операций допустимых с деревом извне абсолютно независим от способа обеспечения его связности. Именно этот факт позволит наклепать любых типов деревьев если понадобится, и при работе с деревом даже не заботится о том какого оно типа, даже при перекидывании узла из дерева одного типа в дерево другого типа. Потому что опять же упрятывание создания узла в подкапотную фабрику дерева обеспечивает перекидываются данные из багажника а не сам узел, что позволяет не знать о том как конкретно устроено дерево абсолютно всем кто с ним взаимодействует. Добавлено через 34 минуты Но как бы основные 90% работы как делали эти 10% мозговых элит так и делают. Вспомните хотя бы недавний балаган про 300 тыс строк говнокода на ява-скрипте и 5+ человеко-лет на неработающий набор частных псевдорешений, когда универсальное в около 10 тыс строк и человеко-год уложилось на заре эволюции когда оно только эксперементальным все было. А для его набора примитивов там все гораздо проще обойдется. Кстати шутка что тим-лид это такой человек который за 4 часа может сделать месячную работу всей команды родилась именно в вебдеве. И имеет в своем корне именно то что тим-лид обычно спец с ВО, который в результате глубокого владения ООП может увидеть абстракцию которая в десятки а то и сотни раз сократит потребный код, там где вся команда со школьным образованием и кучей сертификатов, даже не подумает ее искать.
0
|
||||||
|
Модератор
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,898
|
|||||
| 01.04.2018, 11:16 | |||||
|
Поясню на более простом примере. Есть абстракция Число. Есть набор операций над числами. Есть набор алгоритмов, применимых к числам. Но ООП не позволяет использовать эту абстракцию. Нет классов Число, ЦелоеЧисло и т.п. и ни кому не приходит в голову их создать и от них наследовать. Вы не можете закодировать, например, алгоритм Евклида для любых целых чисел (включая длинные целые числа, реализованные в сторонней библиотеке). А, например, в Haskell можно определить класс типов (здесь "класс" — термин, употребляемый в теории множеств для обозначения произвольных совокупностей множеств, обладающих каким-либо определенным свойством или признаком). А затем закодировать произвольный алгоритм для этого класса типов. Можно взять произвольный подходящий пользовательский тип данных (возможно, из сторонней библиотеки) и указать, что он принадлежит данному классу типов. Тогда все функции, реализующие алгоритмы для данного класса типов, будут работать и для него. Что мы в итоге имеем... Есть очень общие, универсальные абстракции (число, дерево, список, свёртка и так далее), но ООП не предоставляет возможности их использовать. Есть абстракции неуниверсальные (фигура, документ, пользователь и так далее), но их интерфейс зависит от конкретной задачи. Если требования изменились, то может потребоваться изменить их интерфейс. Если мы хотим закодировать некий общий алгоритм, например, сортировку, то у нас есть два варианта: 1. Использовать неудобный ООП подход. То есть, для каждого используемого варианта сортировки написать отдельный класс, инкапсулирующий сравнение элементов (шаблон Стратегия). Интерфейс метода будет выглядеть примерно так: public void Sort( IComparer<T> comparer) Вызов метода будет выглядеть примерно так: dinosaurs.Sort(new DinoComparer()); Главное неудобство этого подхода не в том, что это несколько лишних строк кода (обычно, в отдельном файле), а в том, что каждый раз, встречая в коде вызов этого метода, придётся отвлекаться на прочтение кода этого класса, чтобы понять/вспомнить, как именно он сравнивает. 2. Использовать удобный ФП подход. Алгоритм принимает функцию сравнения в качестве параметра. Интерфейс метода будет выглядеть примерно так: public void Sort( Comparison<T> comparison) Вызов метода будет выглядеть примерно так: dinosaurs.Sort((x,y) => x.Weight < y.Weight); Во-первых, сразу понятно, как мы сравниваем. Во-вторых, не нужно писать лишние классы. Программы типа 1С постоянно приходится дорабатывать. Причём, некоторые изменения "ломают" основы. Например, введение НДС (для каждой позиции в счёте кроме цены/количества теперь нужно хранить сумму НДС - без добавления нового поля в таблицу не обойтись). А как изменились со времён Wolf3D требования к 3D движкам? С узкоспециализированными программами ещё сложнее. Сначала Заказчик говорит "хочу так". Когда это написано и можно попробовать, он говорит "нет, так неудобно, нужно сделать вот так". Через полгода использования он говорит "а давайте добавим ещё вот такую фичу". Причём, эта новая фича может потребовать перестройку ядра системы, потому что изначально в систему не была заложена принципиальная возможность подобных изменений.
0
|
|||||
| 01.04.2018, 14:28 | |||
![]()
1
|
|||
|
Модератор
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,898
|
||||
| 01.04.2018, 15:00 | ||||
|
Любую проблему можно решить добавлением ещё одного уровня абстракции... кроме проблемы слишком большого количества уровней абстракции . . 1С - это ещё цветочки по сравнению с Equation, которая для IBM iSeries AS/400.
0
|
||||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||||||||
| 01.04.2018, 16:19 | |||||||||
|
Добавлено через 1 минуту Добавлено через 2 минуты Добавлено через 1 минуту Добавлено через 1 минуту Добавлено через 3 минуты Добавлено через 3 минуты
0
|
|||||||||
| 01.04.2018, 16:19 | |
|
Стоит ли учить ООП в одно время с Яп Как использовать ООП в WinAvr Js class как правильно использовать ООП Когда следует использовать ООП в РНР? WITH AS стоит ли использовать Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Из невошедшего на форум (диалог с ИИ-гугла)
zorxor 29.07.2026
А вот, что интересно, сказал мне ИИ-гугла:
Этот текст — эмоциональный пост пользователя под ником zorxor на интернет-форуме (вероятно, посвященном мистике, непознанному или альтернативной науке). . . .
|
Был праздник вчера, а я и не знал.
kumehtar 28.07.2026
27. 07. 2026г. Intel Core 2 Duo исполнилось 20 лет
Новости компьютерного мира и их обсуждение (4)
Салют, шампанское, овации!
:drink:
|
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 27.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр.
Дословно, отклонённая. . .
|
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы
Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
|
|
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
|
Очистка реквизитов и табличных частей документа при копировании (вариант 2)
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2.
Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
|
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
|
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
|