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

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

16.05.2014, 16:35. Показов 22116. Ответов 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
04.09.2016, 21:59
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Но это в обязательную программу подготовки программистов не входит в отличии от курса машинной графики
Просмотрел сейчас расписание занятий на ВМК МГУ осенний и весенний семестры 2-4 курсов. Ни у одной из семи групп нет курса машинной графики.
0
Заблокирован
04.09.2016, 22:06
Цитата Сообщение от Shamil1 Посмотреть сообщение
Просмотрел сейчас расписание занятий на ВМК МГУ осенний и весенний семестры 2-4 курсов. Ни у одной из семи групп нет курса машинной графики.
__________________
Надо не МГУ смотреть (который готовит в основном юристов да экономистов) в МГТУ (самый главный ВУЗ страны по подготовке программистов в России)
0
Модератор
Эксперт функциональных языков программирования
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,898
04.09.2016, 22:11
Открыл МГТУ имени Баумана. Факультет - Информатика и системы управления. Учебный план.
Нет машинной графики.
http://www.bmstu.ru/~mosp/PLAN/000043.HTML
Логическое и функциональное программирование есть, а машинной графики нет.
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
05.09.2016, 04:43
Цитата Сообщение от Shamil1 Посмотреть сообщение
Нет машинной графики.
Раздел "Общепрофессиональные дисциплины"
Машинная графика. Инженерная графика - т.е. применение этой машинной графики к общеинженерным задачам. по часам 2 семстра машинная и 3 семестра инженерная.

Добавлено через 11 минут
Цитата Сообщение от Shamil1 Посмотреть сообщение
Открыл МГТУ имени Баумана. Факультет - Информатика и системы управления. Учебный план.
Кстати курсаки там по фунуционалу тянут на продукцию id Software конца 90-х. Как то делал для 5-курсников
0
440 / 432 / 159
Регистрация: 21.05.2016
Сообщений: 1,338
05.09.2016, 05:10
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Раздел "Общепрофессиональные дисциплины"
Машинная графика. Инженерная графика - т.е. применение этой машинной графики к общеинженерным задачам. по часам 2 семстра машинная и 3 семестра инженерная.
Инженерная графика - это начертательная геометрия. Оформление чертежей по ГОСТу, простановка размеров итд. К компьютерным наукам не имеет отношения
1
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
05.09.2016, 05:13
Цитата Сообщение от oldnewyear Посмотреть сообщение
Инженерная графика - это начертательная геометрия
Это у остальных специальностей. У программистов это в основном вычислительная и аналитическая геометрия. Т.е. математические бекграунд оной начерталки. Это и есть причина по которой остальные инженеры давно на компе чертят а не циркулем
0
440 / 432 / 159
Регистрация: 21.05.2016
Сообщений: 1,338
05.09.2016, 05:23
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Это у остальных специальностей. У программистов это в основном вычислительная и аналитическая геометрия. Т.е. математические бекграунд оной начерталки. Это и есть причина по которой остальные инженеры давно на компе чертят а не циркулем
То, о чем вы говорите, это машинная графика. Инженерная графика у всех одинаковая, что у программистов, что у металлургов
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
05.09.2016, 05:33
Цитата Сообщение от oldnewyear Посмотреть сообщение
Инженерная графика у всех одинаковая, что у программистов, что у металлургов
Та нет ошибаетесь. машинная графика это алгоритмы и математические основы визуализации изображений. А инженерная графика глазами программиста это в основном аналитическая геометрия. т.е алгоритмы аппроксимации оболочек, алгоритмы поиска линий пересечения и т.д. и т.п. Разница в том что построения циркулем - это графический метод решения уравнений пересечения. Программистов же учат алгебраическим методам решения тех же задач.
А иначе курс САПР в программу можно просто не ставить. У нас кстати в программе немного по другому было скомпановано - вчислительная геометрия добавлена в курс машинной графики, а векторная алгебра и аналитическая геометрия шли отдельным предметом. И никакой начерталки в принципе. Потом перегруппировали - потому как основное приложение вычислительной и аналитической геометрии именно решение тех же задач что и в начерталке только компутерным путем.
0
440 / 432 / 159
Регистрация: 21.05.2016
Сообщений: 1,338
05.09.2016, 05:35
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
А инженерная графика глазами программиста это в основном аналитическая геометрия. т.е алгоритмы аппроксимации оболочек, алгоритмы поиска линий пересечения и т.д. и т.п. Разница в том что построения циркулем - это графический метод решения уравнений пересечения. Программистов же учат алгебраическим методам решения тех же задач.
у меня есть подозрение что вы не учились в вузе
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
05.09.2016, 05:58
Цитата Сообщение от oldnewyear Посмотреть сообщение
у меня есть подозрение что вы не учились в вузе
Учился. Правда не в бауманке а в более крутом.
0
440 / 432 / 159
Регистрация: 21.05.2016
Сообщений: 1,338
05.09.2016, 06:12
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Учился. Правда не в бауманке а в более крутом.
Я погорячился, конечно
0
 Аватар для SmittWesson
236 / 196 / 21
Регистрация: 04.06.2014
Сообщений: 1,309
05.09.2016, 06:37
Цитата Сообщение от tramp_1-3 Посмотреть сообщение
Таким образом, можно выделить один недостаток объектно-ориентированных языков программирования – избыточность их средств при решении большинства простых задач.
М-да. Чувствуется рука новичка. Чем-же Вам классы-то не угодили в решении "Hello word"?

Добавлено через 8 минут
Цитата Сообщение от oldnewyear Посмотреть сообщение
Программистов же учат алгебраическим методам решения тех же задач.
Каким, нахрен, алгебраическим. -Аналитическим. Для начала проводится АНАЛИЗ, при помощи какого аппарата задача решаема, а уж потом, выбирается соответствующий инструмент. Мне как-то не очень весело колупать бетонную стену чайной ложкой, при всей её необходимости в повседневной жизни. Да и чай размешивать электродрелью не очень удобно. Разнообразие инструментов для того и нужно, что-бы использовать каждый по назначению, а не пытаться тапочком просверлить дырку в стене .
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
05.09.2016, 07:01
Цитата Сообщение от SmittWesson Посмотреть сообщение
Каким, нахрен, алгебраическим. -Аналитическим
Вообще аналитически это не "проводится анализ" а решение в виде формул. Так вот в большинстве случаев пересечения используемых примитивов аналитического решения вообще не существует только численное. Но анализ он все равно проводится естественно. Алгебраически это значит получение этого численного решения не путем построения циркулем а путем численного решения уравнений/систем уравнений пересечения.
0
 Аватар для SmittWesson
236 / 196 / 21
Регистрация: 04.06.2014
Сообщений: 1,309
05.09.2016, 07:07
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Алгебраически это значит получение этого численного решения не путем построения циркулем а путем численного решения уравнений/систем уравнений пересечения.
А вот мне нужно решить задачку: 2+2*2. И с какого боку здесь алгебра? Арифметика для 1-го класса СОШ.
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
05.09.2016, 07:13
а если
Цитата Сообщение от SmittWesson Посмотреть сообщение
А вот мне нужно решить задачку: 2+2*2. И с какого боку здесь алгебра? Арифметика для 1-го класса СОШ.
А там задачки в виде a+a*a

Добавлено через 5 минут
Цитата Сообщение от SmittWesson Посмотреть сообщение
Да и чай размешивать электродрелью не очень удобно.
А чем миксер от дрели отличается кроме формы сверла? Неудобно спать на потолке. Одеяло сползает.
0
 Аватар для SmittWesson
236 / 196 / 21
Регистрация: 04.06.2014
Сообщений: 1,309
05.09.2016, 07:20
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
а если
Сообщение от SmittWesson
А вот мне нужно решить задачку: 2+2*2. И с какого боку здесь алгебра? Арифметика для 1-го класса СОШ.
А там задачки в виде a+a*a
Алгебраическим будет уравнение a+a*a = 6.
Сообщение от SmittWesson
Да и чай размешивать электродрелью не очень удобно.
А чем миксер от дрели отличается кроме формы сверла? Неудобно спать на потолке. Одеяло сползает.
Дай дураку стеклянный ..., так он его об первый угол разобьёт .
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
05.09.2016, 07:30
Цитата Сообщение от SmittWesson Посмотреть сообщение
Алгебраическим будет уравнение a+a*a = 6.
вернее a+a*a=b
Цитата Сообщение от SmittWesson Посмотреть сообщение
Дай дураку стеклянный ..., так он его об первый угол разобьёт .
Дрели разные бывают. Например вот такие:

А шпаклевку в ведре удобно размешивать к примеру вот такой дрелью c вот таким "сверлом":
Название: fiolent_md1_11e_images_416742822.jpg
Просмотров: 18

Размер: 18.7 Кб
0
 Аватар для SmittWesson
236 / 196 / 21
Регистрация: 04.06.2014
Сообщений: 1,309
05.09.2016, 07:46
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
вернее a+a*a=b
В общем смысле - да. Но в той задачке которую привёл я, есть три формулы с одним результатом. 2+2*2 = 2+2+2 = 2*2+2 = 6. Это, так называемые дуальные уравнения у которых разные арифметические действия и их порядок следования, приводят к одному и тому-же результату.
Все их я не помню. Как-то увлекался этим. Если на вскидку, их таких не так уж и много. Помню только, что их штук пять всего. Не хочется копаться в своих зарисовках, но если на глаза попадутся, возможно выложу.
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
05.09.2016, 07:55
Цитата Сообщение от SmittWesson Посмотреть сообщение
Это, так называемые дуальные уравнения у которых разные арифметические действия и их порядок следования, приводят к одному и тому-же результату.
Кстати хороший способ сорвать лекцию по векторной алгебре. Одно чудо другому на паре подкинуло головоломку - 4 заданных числа найти арифметические действия между ними чтобы в ответе получилось 29 число. Через 15 минут этой задачей уже пол группы занималось а к концу пары и преподша. На следующей паре это уже компы в лаборатории обсчитывали.
0
 Аватар для SmittWesson
236 / 196 / 21
Регистрация: 04.06.2014
Сообщений: 1,309
05.09.2016, 08:02
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
На следующей паре это уже компы в лаборатории обсчитывали.
Я тут однажды задачку студенту решал по магическим квадратам. Для три на три и четыре на четыре, находятся с ходу. Вот с пять на пять и выше, пришлось повозиться. Не постеснялся прогу даже на сайт выложить:
Кликните здесь для просмотра всего текста
http://www.biz-for.ru/programs/magic_square/magic_square.php
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.09.2016, 08:02

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
220
Ответ Создать тему
Новые блоги и статьи
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы ## О чём эта статья В процессе построения ОДУ-модели (система дифференциальных. . .
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет) Содержание проекта Симуляция вековой (50 лет) экологической сукцессии в почве леса Основные участники: АМ-гриб, ЭКМ-гриб,. . .
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru