|
16 / 16 / 1
Регистрация: 13.10.2012
Сообщений: 454
|
|
Недостатки ООП16.05.2014, 16:35. Показов 21757. Ответов 318
Метки нет (Все метки)
Задали написать небольшую статью о недостатках этой замечательной парадигмы. В нашей группе прикладной информатики я один более-менее знаком с разработкой, поэтому на придирчивость аудитории можно не рассчитывать, и я решил спросить мнение опытных людей здесь. Я самоучка-теоретик, так и не написавший более-менее достой программы за свою жизнь, поэтому часть этой статьи навеяна из сети, а вот про усложнения - уже исключительной мой загон - не могу просто взять и написать программу. Пишу, думая, что это будет целый Фреймворк. Ну в общем предлагаю вашему вниманию эту коротенькую статью и рассчитываю на объективную критику. Всего полторы страницы - больше просто не знаю к чему придраться.
https://www.dropbox.com/s/m6u9... D0%9F.docx дропбокс глючит и не дает нормальную ссылку. вот статья под спойлером. Кликните здесь для просмотра всего текста
Недостатки ООП
Парадима ООП не нова. ООП приобрело популярность во второй половине 80-х вместе с такими языками, как Smalltalk, С++, Objective C (другое расширение C) и некоторыми другими. 25 лет назад никто не ожидал, что “новый” феномен ООП проживет столь долго и сегодня большинство современных языков поддерживают эту парадигму. ООП стоит на трёх китах: 1.Первый — инкапсуляция — это определение классов — пользовательских типов данных, объединяющих своё содержимое в единый тип и реализующих некоторые операции или методы над ним. Классы обычно являются основой модульности, инкапсуляции и абстракции данных в языках ООП. 2.Второй — наследование — способ определения нового типа, когда новый тип наследует элементы (свойства и методы) существующего, модифицируя или расширяя их. Это способствует выражению специализации и генерализации. 3.Третий, известный как полиморфизм, позволяет единообразно ссылаться на объекты различных классов (обычно внутри некоторой иерархии). Это делает классы ещё удобнее и облегчает расширение и поддержку программ, основанных на них. Инкапсуляция, наследование и полиморфизм — фундаментальные свойства, которыми должен обладать язык, претендующий называться объектно-ориентированным (языки, не имеющие наследования и полиморфизма, но имеющие только классы, обычно называются основанными на классах). Различные ОО языки используют совершенно разные подходы. Мы можем различать ОО языки, сравнивая механизм контроля типов, способность поддерживать различные программные модели и то, какие объектные модели они поддерживают. Преимущества этих языков всем известны: повторное использование кода, упрощение разработки больших программ, более логичная структура программы и многие другие. Разберём некоторые недостатки. Недостатки есть абсолютно у всего – с этим нужно просто смириться. Важно адекватно их оценивать и стараться минимизировать их влияние. То же самое касается и объектно-ориентированной парадигмы программирования. Есть несколько причин, почему узкие места ООП часто вылазят наружу. Я считаю, что это прежде всего непонимание самой сути объектно-ориентированной техники программирования - восприятие этой парадигмы как серебряной пули. Часто программисты стараются решать абсолютно все задачи, где даже не предвидится конкретных сущностей с их свойствами с помощью объектов, наследования и с помощью объектов. Это очень усложняет процесс. То есть вместо написания парочки функций в процедурной манере и передачи аргументов туда-обратно, программист часто пытается нагромоздить целую иерархию классов и после разгребает проблемы с видимостью классов, доступа к скрытым инкапсуляцией данным. Таким образом, можно выделить один недостаток объектно-ориентированных языков программирования – избыточность их средств при решении большинства простых задач. Нужно помнить, что применение ООП это прежде всего моделирование. Для построения хорошей, легко читаемой и сопровождаемой программы необходимо в самом начале разработки предусмотреть сценарии её использования и, что очень важно, изменения – заказчик легко в корне может поменять задачу. Это нетривиальный процесс, в котором часто задействуются даже отдельные языки моделирования. Не каждый способен выделить отдельные сущности и сделать их классами. Ещё меньше людей способны адекватно распределить функции, работающие с данными программы в методы и упаковать их в классы. Для этого нужно уметь мыслить объектно-ориентированными категориями. На всё это уходит драгоценное время. Оно обязательно окупится, если программист имеет дело с большим и сложным проектом, но вряд ли в других случаях, когда требуется просто решить задачу и перейти к другой. Для меня вывод один, всем известный и общепринятый – не стоит воспринимать парадигмы и языки, их поддерживающие, как божество. Это всего лишь инструмент для решения определенного круга задач. Я думаю, что для объектно-ориентированных языков такие задачи начинаются, когда их решение укладывается более чем в тысячу строк и задачи, которые требуют масштабирования. “Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
0
|
|
| 16.05.2014, 16:35 | |
|
Ответы с готовыми решениями:
318
Архитектура с толстым клиентом: какие есть недостатки?
Изучаю Python, сейчас учу основы ООП, где можно найти задачи по ООП |
|
Заблокирован
|
||||
| 06.11.2016, 01:34 | ||||
|
К чему Вы это сказали? Добавлено через 43 секунды Shamil1, Ответьте на вопрос: что является интерфейсом не абстрактного класса в С++? Добавлено через 1 минуту Добавлено через 4 минуты Нельзя же все буквально понимать
0
|
||||
|
Модератор
3138 / 2286 / 469
Регистрация: 26.03.2015
Сообщений: 8,893
|
|||
| 06.11.2016, 03:33 | |||
|
Функции могут принимать аргументы пользовательских типов. И это 1) не является недостатком, и 2) присуще не только ООП.
0
|
|||
|
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
||
| 06.11.2016, 07:26 | ||
|
Чтобы в нем не было «гиперболы», «аллегории», «сарказма», демагогии в духе «а есть ли у абстрактного класса интерфейс» и прочей шелухи. Для примера кода сформулируйте конкретную проблему, которая мешает жить.
0
|
||
|
Заблокирован
|
|||||
| 06.11.2016, 11:19 | |||||
|
Добавлено через 1 минуту Так что проблема именно в ООП Добавлено через 4 минуты 0x10, Т.е. Вы НАМЕРЕННО уклоняетесь от ответа на поставленный Вам вопрос и уводите обсуждение в сторону? Если Вы забыли вопрос - вот он: У НЕ абстрактного класса нет интерфейса? Ответьте только "ДА" или "НЕТ". Больше мне ничего от Вас не надо. Добавлено через 2 минуты
0
|
|||||
|
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|
| 06.11.2016, 11:23 | |
|
0
|
|
|
Заблокирован
|
|||||||
| 06.11.2016, 11:40 | |||||||
|
И то, что Вы сказали хрень вы не признаете? Ну тогда да. Общение с Вами я закончил. Не вижу смысла общаться с человеком, когда его спрашиваешь об одном, а он соскакивает с им же поднятой темы и уводит тему в сторону Добавлено через 5 минут Господа! Может кто-нибудь другой хочет высказаться раз уж 0x10 слился? Краткое содержание в чем спич вышел. Я по простому, "на пальцах", без наукообразия и затуманивания смысла сказал:
0
|
|||||||
|
Модератор
3138 / 2286 / 469
Регистрация: 26.03.2015
Сообщений: 8,893
|
||||
| 06.11.2016, 13:28 | ||||
|
0
|
||||
|
Заблокирован
|
|
| 06.11.2016, 13:46 | |
|
0
|
|
|
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
|
||
| 06.11.2016, 15:19 | ||
дети играют игрушками прибитыми к полу.
0
|
||
| 06.11.2016, 15:32 | |
|
Возможно человек стал задумываться над вещами на которые раньше не обращал внимания. Напр, да, каждое полезное действие так или иначе создает "зависимость" и далеко не всегда безобидную. Сама по себе это полезная процедура осмысления, если бы не одно "но" - грубо говоря, "чувак борзый". Начал он вообще с того что объявил всех программистов "недо-инженерами"
. Попытки чего-то обсуждать неизменно "переходят на личности", т.к. человек не хочет понять что его мнение пока наивно и незрело, объяснять ему это бесполезно.Коллеги, ну и смысл его трогать? Пусть поразмышляет и подумает еще N лет о том кто он на земле этой грешной. Потом может и поговорим (если научится себя вести)
2
|
|
|
Заблокирован
|
||
| 06.11.2016, 16:22 | ||
|
Что утыкаешься в ряд проблем и ограничений. Я не прав? Добавлено через 2 минуты Igor3D, Может начнете с простого вместо того, чтобы "переходить на личности"? Не абстрактный класс имеет интерфейс или не имеет? ДА? или НЕТ? Спасибо
0
|
||
|
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
|
||
| 06.11.2016, 16:33 | ||
|
вы это.. не говорите на чём ир пишете. взрослые люди смеятся (не обязательно открыто) будут.
0
|
||
|
Заблокирован
|
|
| 06.11.2016, 17:07 | |
|
pycture, Давайте все же "вернемся к нашим баранам"(с)
То бишь недостаткам объектно-ориентированного программирования в С++. Вы согласны, что говорить, как пишут в книгах, что интерфейс класса, это, грубо говоря, просто список заголовков его методов - не верно? Что говорить об инкапсуляции, когда у тебя классы-параметры и классы-пеоля описываются во вне, тоже не верно. Хотя они фактически тоже являются частью интерфейса
0
|
|
|
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
|
||||
| 07.11.2016, 06:22 | ||||
0
|
||||
|
Заблокирован
|
|
| 07.11.2016, 11:22 | |
|
0
|
|
|
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
|
||
| 07.11.2016, 13:30 | ||
|
0
|
||
|
Заблокирован
|
||
| 07.11.2016, 14:05 | ||
|
Самой простой случай. Есть класс X. В нем метод g(Y,Z) Классы Y,Z описаны, естественно, вне класса X. В теле g вызываются метод h(W) класса Y и метод j(U) класса Z. Таким образом, класс X уже "завязался" на 4 класса: Y,Z,W,U. А ведь это очень примитивный пример. В реале все гораздо сложней и запутанней.
0
|
||
|
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
|
||
| 07.11.2016, 20:40 | ||
|
0
|
||
|
Заблокирован
|
|
| 07.11.2016, 22:15 | |
|
pycture, Ты мне не тыкай.
![]() Я с тобой на брудершафт не пил. И по возрасту тебе в отцы хожусь
0
|
|
| 07.11.2016, 22:15 | |
|
Помогаю со студенческими работами здесь
319
Недостатки React
Недостатки AnyLogic Какие недостатки недостатки системы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений.
. . .
|
21 мат мед. Планы на развитие модели здравоСохранения
anaschu 01.06.2026
AnyLogic: план развития симуляционной модели рабочего коллектива — динамический абсентеизм, реальные данные, три сценария сравнения
Продолжаю серию постов о дискретно-событийной модели рабочего. . .
|
20. Мат мед. Абсентеизм как отдельный тип простоя
anaschu 29.05.2026
Апдейт модели: исправленные баги, абсентеизм и новые механизмы
Продолжаю развивать ранее описанную модель рабочего коллектива на AnyLogic. За последние несколько дней был проведён серьёзный. . .
|
19. здоровье, усталость и психотип работника влияют на производительность предприятия, и наоборот, производительность на здоровье, усталось и психотип
anaschu 28.05.2026
Дискретно-событийная модель рабочего коллектива на AnyLogic: здоровье, выгорание, психотипы и микростимуляция
Привет, коллеги. Хочу поделиться итогами нескольких недель работы над симуляционной. . .
|
|
"Прокси" для последовательного порта
Eddy_Em 28.05.2026
Эту штуку написал я достаточно давно. Но сейчас вот понадобилось настроить датчик грозы, но при этом не отключать его от "метеодемона". Соответственно, надо запустить этот "прокси": метеодемон будет. . .
|
Рефакторинг программы уравнивания.
Massaraksh7 26.05.2026
Пример по предыдущей записи в блоге. Но, надо заметить, что, во-первых, там оптимизация не только математики, но и работы с базой данных, и с графами, а во-вторых, это ещё не всё.
|
Использование TThread в Lazarus для математических вычислений.
Massaraksh7 25.05.2026
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
|
Модель здравосохранения 18. Чем здоровее работник, тем быстрее выгорает
anaschu 24.05.2026
Имитационная модель корпоративного здравоохранения: что показывает математика
Сегодня в модели рабочего коллектива на AnyLogic появились три новые механики — выгорание через накопленную усталость,. . .
|