Форум программистов, компьютерный форум, киберфорум
ООП и паттерны
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.53/90: Рейтинг темы: голосов - 90, средняя оценка - 4.53
 Аватар для tramp_1-3
16 / 16 / 1
Регистрация: 13.10.2012
Сообщений: 454

Недостатки ООП

16.05.2014, 16:35. Показов 22264. Ответов 318
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задали написать небольшую статью о недостатках этой замечательной парадигмы. В нашей группе прикладной информатики я один более-менее знаком с разработкой, поэтому на придирчивость аудитории можно не рассчитывать, и я решил спросить мнение опытных людей здесь. Я самоучка-теоретик, так и не написавший более-менее достой программы за свою жизнь, поэтому часть этой статьи навеяна из сети, а вот про усложнения - уже исключительной мой загон - не могу просто взять и написать программу. Пишу, думая, что это будет целый Фреймворк. Ну в общем предлагаю вашему вниманию эту коротенькую статью и рассчитываю на объективную критику. Всего полторы страницы - больше просто не знаю к чему придраться.
https://www.dropbox.com/s/m6u9... D0%9F.docx
дропбокс глючит и не дает нормальную ссылку. вот статья под спойлером.
Кликните здесь для просмотра всего текста
Недостатки ООП
Парадима ООП не нова. ООП приобрело популярность во второй половине 80-х вместе с такими языками, как Smalltalk, С++, Objective C (другое расширение C) и некоторыми другими. 25 лет назад никто не ожидал, что “новый” феномен ООП проживет столь долго и сегодня большинство современных языков поддерживают эту парадигму.
ООП стоит на трёх китах:
1.Первый — инкапсуляция — это определение классов — пользовательских типов данных, объединяющих своё содержимое в единый тип и реализующих некоторые операции или методы над ним. Классы обычно являются основой модульности, инкапсуляции и абстракции данных в языках ООП.
2.Второй — наследование — способ определения нового типа, когда новый тип наследует элементы (свойства и методы) существующего, модифицируя или расширяя их. Это способствует выражению специализации и генерализации.
3.Третий, известный как полиморфизм, позволяет единообразно ссылаться на объекты различных классов (обычно внутри некоторой иерархии). Это делает классы ещё удобнее и облегчает расширение и поддержку программ, основанных на них.
Инкапсуляция, наследование и полиморфизм — фундаментальные свойства, которыми должен обладать язык, претендующий называться объектно-ориентированным (языки, не имеющие наследования и полиморфизма, но имеющие только классы, обычно называются основанными на классах). Различные ОО языки используют совершенно разные подходы. Мы можем различать ОО языки, сравнивая механизм контроля типов, способность поддерживать различные программные модели и то, какие объектные модели они поддерживают.
Преимущества этих языков всем известны: повторное использование кода, упрощение разработки больших программ, более логичная структура программы и многие другие. Разберём некоторые недостатки.
Недостатки есть абсолютно у всего – с этим нужно просто смириться. Важно адекватно их оценивать и стараться минимизировать их влияние. То же самое касается и объектно-ориентированной парадигмы программирования.
Есть несколько причин, почему узкие места ООП часто вылазят наружу. Я считаю, что это прежде всего непонимание самой сути объектно-ориентированной техники программирования - восприятие этой парадигмы как серебряной пули. Часто программисты стараются решать абсолютно все задачи, где даже не предвидится конкретных сущностей с их свойствами с помощью объектов, наследования и с помощью объектов. Это очень усложняет процесс. То есть вместо написания парочки функций в процедурной манере и передачи аргументов туда-обратно, программист часто пытается нагромоздить целую иерархию классов и после разгребает проблемы с видимостью классов, доступа к скрытым инкапсуляцией данным.
Таким образом, можно выделить один недостаток объектно-ориентированных языков программирования – избыточность их средств при решении большинства простых задач.
Нужно помнить, что применение ООП это прежде всего моделирование. Для построения хорошей, легко читаемой и сопровождаемой программы необходимо в самом начале разработки предусмотреть сценарии её использования и, что очень важно, изменения – заказчик легко в корне может поменять задачу. Это нетривиальный процесс, в котором часто задействуются даже отдельные языки моделирования. Не каждый способен выделить отдельные сущности и сделать их классами. Ещё меньше людей способны адекватно распределить функции, работающие с данными программы в методы и упаковать их в классы. Для этого нужно уметь мыслить объектно-ориентированными категориями. На всё это уходит драгоценное время. Оно обязательно окупится, если программист имеет дело с большим и сложным проектом, но вряд ли в других случаях, когда требуется просто решить задачу и перейти к другой.
Для меня вывод один, всем известный и общепринятый – не стоит воспринимать парадигмы и языки, их поддерживающие, как божество. Это всего лишь инструмент для решения определенного круга задач. Я думаю, что для объектно-ориентированных языков такие задачи начинаются, когда их решение укладывается более чем в тысячу строк и задачи, которые требуют масштабирования.
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.05.2014, 16:35
Ответы с готовыми решениями:

Архитектура с толстым клиентом: какие есть недостатки?
Здравствуйте, коллеги! Сейчас разрабатываем простенькое веб-приложение для учета заказов производственной компании. Функционал несложный:...

ООП ради ООП
Доброго времени суток! Есть к примеру класс Cat который реализует интерфейс Movable, инкапсулирует цвет, и прочее. Имеет ли смысл...

Изучаю Python, сейчас учу основы ООП, где можно найти задачи по ООП
Скиньте пожалуйста источники с задачами(желательно на русском)

318
Модератор
Эксперт функциональных языков программирования
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,898
13.09.2016, 20:50
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
А потом придумывают визуальные редакторы оных HTML и т.п.
Визуальные редакторы придумывают для программистов низкой квалификации, которым проще мышкой по экрану двигать, чем код писать.
0
Заблокирован
13.09.2016, 20:50
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Нормальные люди это уже лет 20 не кодом пишут а мышкой на форме расставляют и в полях инспектора объектов указывают. А подобный код если нужен компом генерится
Вот именно.
Десяток кликов мышкой и у тебя код на пару сотен строк кода.
Причем гарантированно рабочий.
Сколько бы ушло времени на набивание и ВЫВЕРКУ его в ручную?
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
13.09.2016, 20:57
Цитата Сообщение от ИсмаилПркопенко Посмотреть сообщение
Сколько бы ушло времени на набивание и ВЫВЕРКУ его в ручную?
До ... и трошки. Знаю по опыту, так как застал время когда визуальных редакторов у оконных фреймверков еще и в проекте не было.

Добавлено через 2 минуты
Цитата Сообщение от Shamil1 Посмотреть сообщение
Визуальные редакторы придумывают для программистов низкой квалификации, которым проще мышкой по экрану двигать, чем код писать.
Визуальные редакторы придумываются для программистов высокой и очень высокой квалификации у которых нет времени которое они могут потратить на низкоквалифицированную работу по растановке контролов, причем такую которую может сделать комп. Т.е. визуальные редакторы позваляют не .... мозги с интерфейсом а накидать его по шурику мышью и заниматься решением задачи а не полировкой форм.
0
Модератор
Эксперт функциональных языков программирования
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,898
13.09.2016, 20:59
Цитата Сообщение от ИсмаилПркопенко Посмотреть сообщение
Десяток кликов мышкой и у тебя код на пару сотен строк кода.
Причем гарантированно рабочий.
За десяток кликов мышкой Вы сможете добавить на форму 3 элемента с настройками по-умолчанию. Сколько это будет строчек кода, зависит от элементов. Но уверяю Вас, что те же 3 элемента при желании можно добавить из библиотеки сниппетов.

А теперь представьте ситуацию, что Вы поместили на форму ТекстБокс, задали ему позицию, размеры, шрифт и другие параметры. В этот момент выяснилось, что нужен не ТекстБокс, а ОсобыйТекстБокс, обладающий дополнительными возможностями. В коде Вам достаточно поменять одно-два слова...
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
13.09.2016, 21:04
Цитата Сообщение от Shamil1 Посмотреть сообщение
В коде Вам достаточно поменять одно-два слова...
Можно открыть текстовую версию того что сгенерил редактор и поменять эти же два слова. Потом переключиться обратно на визуальное представление и продолжить редактирование.

Добавлено через 2 минуты
Кстати приделать к визуальному редактору смену типа компонента тоже не такая уж и проблема. Удивляет почему этого до сих пор нет в существующих визуальных редакторах. Наверное потому как особого ускорения по сравнению с удалил ненужный-добавил нужный не дает.
0
Модератор
Эксперт функциональных языков программирования
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,898
13.09.2016, 21:10
Цитата Сообщение от ИсмаилПркопенко Посмотреть сообщение
на набивание и ВЫВЕРКУ его в ручную
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
визуальные редакторы позваляют не .... мозги с интерфейсом а накидать его по шурику мышью
Видимо вы до сих пор используете С++? Верю, что по сравнению с написанием кода на С++, мышка может дать ускорение.
Попробуйте использовать специализированные языки и увидите, насколько это быстрее, чем мышкой.
На всякий случай сообщаю, что нормальный редактор содержит, как минимум, автоподстановку и автоматическую проверку/подсветку синтаксиса (вручную выверять не придётся).
0
Заблокирован
13.09.2016, 21:15
Fulcrum_013, Shamil1,
Чтобы тут не оффтопить давайте продолжим тут: Обсудим идеи как можно радикально облегчить и упростить программирование?
1
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
13.09.2016, 21:44
Цитата Сообщение от Shamil1 Посмотреть сообщение
автоподстановку и автоматическую проверку/подсветку синтаксиса (вручную выверять не придётся).
Координаты контролов он тоже автоматически проверит? При этом каким бы там язык не был а вводить текста (тыкать в клавиши) придется раз в 10-20 больше чем при пользовании визуального редактора. Не говоря уже про контроль того что наинтерфейсил.

Добавлено через 13 минут
Цитата Сообщение от Shamil1 Посмотреть сообщение
На всякий случай сообщаю, что нормальный редактор содержит, как минимум, автоподстановку и автоматическую проверку/подсветку синтаксиса (вручную выверять не придётся).
Вопрос: вы бы порекомендовали инженеру-механику вместо использования для редактирования деталей сециализированного визуального редактора САПР вводить их геометрию в навороченном блокноте посредством XML?
0
Заблокирован
13.09.2016, 22:04
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
вы бы порекомендовали инженеру-механику вместо использования для редактирования деталей сециализированного визуального редактора САПР вводить их геометрию в навороченном блокноте посредством XML?
0
Эксперт С++
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
13.09.2016, 22:05
ИсмаилПркопенко, есть такая книжка!...
Моя книжка Экспресс-курс. Она старенькая, еще 2004 года. Но там как раз последние 2-3 главы - о программах Windows и программировании в С++ Buildere.
Кроме того есть небольшая книжка Литвиненко. Тоже для студентов и аналогичного характера.
0
Заблокирован
13.09.2016, 22:13
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Нормальные люди это уже лет 20 не кодом пишут а мышкой на форме расставляют и в полях инспектора объектов указывают. А подобный код если нужен компом генерится
Вот именно.
Десяток кликов мышкой и у тебя код на пару сотен строк кода.
Причем гарантированно рабочий.
Сколько бы ушло времени на набивание и ВЫВЕРКУ его в ручную?
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
В общем когда стал вопрос о разработке бортового софта для "Бурана" и ""Энергии" а так же для пускового стола и ЦУП к ним количество потребных высококвалифицированных программистов было оценено в 7-10 тысяч чел на 10 лет. Для совдепии это было непозволительной роскошью и потребный срок был пятилетка. В общем в одном из НИИ по сусекам поскребли и соорудили под это дело систему программирования схемами ДРАКОН. Даже при том что это не ООП язык с задачей управились менее чем 2 тыс человек, причем на год быстрее чем запилили стартовый стол и саму ракету.
Что в очередной раз доказывает мой тезис, который я постоянно твержу под тем или иным "соусом" на всех форумах, что КАК ВИЗУАЛЬНО ПРЕДСТАВЛЕНА ПРОГРАММА имеет решающее значение в программировании.

При неудачном визуальном представлении программу не будет написана хорошо НИКОГДА

Добавлено через 57 секунд
Цитата Сообщение от Shamil1 Посмотреть сообщение
Визуальные редакторы придумывают для программистов низкой квалификации, которым проще мышкой по экрану двигать, чем код писать.
Ага. А языка высокого уровня для лохов. Тру-программисты сразу в машинных кода фигачат
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
13.09.2016, 22:18
Цитата Сообщение от ИсмаилПркопенко Посмотреть сообщение
что КАК ВИЗУАЛЬНО ПРЕДСТАВЛЕНА ПРОГРАММА имеет решающее значение в программировании
Да кстати система пошла далеко за пределы только программирования. Видели когда нибудь в больницах плакаты со схемой действий по оказанию первой помощи и тп? Вот что то типа такого:

На самом деле это программа на языке ДРАКОН
0
Заблокирован
13.09.2016, 23:32
Fulcrum_013, Очень все наглядно и понятно.
Если написать это в виде текстовой инструкции то уже не будет так наглядно.
А так ты видишь не только последнее условие, но и весь путь по которому ты попал в данную точку
Т.е. капая в глаз 0.25% р-р дикаина ты видишь не только ближайшую точку ветвления, что у человека повреждена роговица или конъюктива, но также дальнюю точку ветвления, через какую то прошёл: что ты оказываешь первую помощь именно при лёгком ожоге. Что дает доп. контроль что ты все правильно делаешь

Добавлено через 1 минуту
А все потому что условия находятся визуально близко.
А когда пишешь код, то связные условия могут оказаться визуально далеко и доп. контроля правильности нет
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
13.09.2016, 23:39
Цитата Сообщение от ИсмаилПркопенко Посмотреть сообщение
А когда пишешь код, то связные условия могут оказаться визуально далеко и доп. контроля правильности нет
Хороший стиль декомпозиции кода - код функции помещается на экран. Но вот настолько наглядно отобразить ветвления и вообще ход выполнения текстом действительно не получится.
0
Модератор
Эксперт функциональных языков программирования
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,898
13.09.2016, 23:54
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Координаты контролов он тоже автоматически проверит?
Координаты практически никогда не нужны. Если задать координаты явно, то потом ещё придётся писать специальный код для их пересчёта в зависимости от разрешения экрана и размера окна. Обычно предпочтительней задать принцип расположения (докинг, флоатинг, выравнивание и т.п.).

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
каким бы там язык не был а вводить текста (тыкать в клавиши) придется раз в 10-20 больше чем при пользовании визуального редактора
Как часто Вам приходится использовать в своей работе html, xaml, jsp, aspx, rasor или что-нибудь в этом роде? Лучше не пишите о том, чего Вы не знаете.

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Вопрос: вы бы порекомендовали инженеру-механику вместо использования для редактирования деталей сециализированного визуального редактора САПР вводить их геометрию в навороченном блокноте посредством XML?
Инженер-механик, скорее всего, не является высоко квалифицированным программистом. Поэтому ему лучше использовать визуальный редактор.
(и я не знаю, на каком языке сохраняют код визуальные редакторы САПР... поэтому не могу сказать, как лучше поступать программистам)

Добавлено через 2 минуты
Цитата Сообщение от ИсмаилПркопенко Посмотреть сообщение
А языка высокого уровня для лохов. Тру-программисты сразу в машинных кода фигачат
Языки разметки являются языками высокого уровня. Гораздо выше, чем С++ или C#.
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
14.09.2016, 00:01
Цитата Сообщение от Shamil1 Посмотреть сообщение
Языки разметки являются языками высокого уровня
Языки разметки вообще языками программирования не являются, а являются языками (форматами) описания данных. При этом текстовые форматы вообще скоро отомрут останутся, только гораздо более производительные бинарные.
0
Модератор
Эксперт функциональных языков программирования
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,898
14.09.2016, 00:16
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Языки разметки вообще языками программирования не являются, а являются языками (форматами) описания данных.
html/xaml и т.п. являются предметно-ориентированными языками (DSL)
DSL не обязательно должен быть языком программирования
DSL лучше подходит для решения (целевых) задач, чем языки программирования "общего назначения"
языки разметки могут описывать не только внешний вид, но и поведение

Добавлено через 2 минуты
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
текстовые форматы вообще скоро отомрут останутся, только гораздо более производительные бинарные.
Люди перестанут писать код текстом на С++, а станут писать сразу exe/dll в бинарном виде?
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
14.09.2016, 00:47
Цитата Сообщение от Shamil1 Посмотреть сообщение
Люди перестанут писать код текстом на С++, а станут писать сразу exe/dll в бинарном виде?
Блок-схемки рисовать будут. При этом не надо путать языки программирования и языки (форматы) описания данных.
Цитата Сообщение от Shamil1 Посмотреть сообщение
html/xaml и т.п. являются предметно-ориентированными языками (DSL)
Это не более чем языки описания данных. А вся прочая реклама не более чем сказда для простофиль не учивших ни семиотику ни торию вычислений. И причина появления подобного рекламного бреда проста - майкрософту оказалось слабо сделать толковые системы визуального проектирования и в результате она полностью сливает рынок корпоративных средств разработки. Соответственно и придумали рекламную сказку для простофиль которые верят что достаточно закончить платные курсы майкрософт и купить визуалстудию чтобы организовать дотком и стричь зелень лопатой.
Доткомы массово свернулись в конце 90-ых в следствие появления экскаваторов корпоративного применения типа С++ Builder.
0
 Аватар для SmittWesson
236 / 196 / 21
Регистрация: 04.06.2014
Сообщений: 1,309
14.09.2016, 13:46
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
На самом деле это программа на языке ДРАКОН
Как-то тему эту я уже поднимал. Дерьмовая прога. Ошибку сделаешь, нафиг всю схему перерисовывать нужно. В общем - жопа растёт.

Добавлено через 7 минут
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Доткомы массово свернулись в конце 90-ых в следствие появления экскаваторов корпоративного применения типа С++ Builder.
В основе верно, но немного не так. Директ-Х вклинился. Мелкомягкие хотели на OpenGL выехать. Оказалось, что для С++ она хоть и подходит, но через такие костыли... Решили её в дельфине и оставить.
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
14.09.2016, 13:59
Цитата Сообщение от SmittWesson Посмотреть сообщение
Ошибку сделаешь, нафиг всю схему перерисовывать нужно. В общем - жопа растёт.
Смотря какую ошибку. Если в логике программы ошибку сделаешь тоже часто весь кусок кода нафиг переписывать нужно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.09.2016, 13:59

Недостатки React
Здравствуйте. Расскажите пожалуйста о недостатках, архитектурный просчетах, неудобствах и т.д. с которыми вы сталкивались при написании...

Укажите на недостатки
Нужна ваша помощь. Написал я программу, которая вычисляет число Pi (в дальнейшем хочу добавить другие числа, и методы вычисления), это моя...

Недостатки AnyLogic
Сразу отмечу - я далёк от программирования и не имеют опыта работы в AnyLogic. Поэтому высказанное ниже носит субъективный характер и...

Какие недостатки
Люди, что можите сказать о http://www.rucar.ru? Заранее спасибо! :)

недостатки системы
Пожалуйста, скажите, кому что не нравится в windows 7 с точки зрения безопасности.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
280
Ответ Создать тему
Новые блоги и статьи
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
сукцессия 43. Вторая научная статья за месяц- прайминг и гатгил
anaschu 25.07.2026
две стороны одной монеты
Более приземисто - Эстафету хвоста в .cdl (деревья эстафеты в сад).
Hrethgir 24.07.2026
В будущем, после написания блока инверсии обхода дерева (эстафеты хвоста), я планирую вернуться к нашему прошлому разговору о том, обладают ли знания целеполаганием. Тогда я пришел к выводу, что. . .
Вот представьте что вам дали бессмертие.
kumehtar 24.07.2026
Вот представьте что вам дали бессмертие, ничего более не меняя. Вообще ничего, только бессмертие в нынешнем виде. Рады были бы? Что бы вы тут делали всё это время? Никакой пенсии. Никакого нового. . .
сукцессия 41
anaschu 24.07.2026
Численная верификация бифуркации в агентной модели лесной сукцессии: от одного параметра к ансамблю Автор: пользователь @Shumilov_AS | Раздел: Прикладная математика / Численные методы Кратко. . .
сукцессия 40. Ансамблевая кластерная параметризаци, часть 1.
anaschu 24.07.2026
Пр# Сопровождение научной статьи ИИ-ассистентом: подготовка публикации и калибровка агентно-ориентированной модели сукцессии микоризных систем **Полевые заметки о двухнедельной совместной работе**. . .
Теория всего 12. ВГК на планете в стратегической игре "терра"
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики 1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru