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

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

16.05.2014, 16:35. Показов 22112. Ответов 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
1977 / 833 / 115
Регистрация: 01.10.2012
Сообщений: 5,114
Записей в блоге: 2
05.09.2016, 08:03
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Shamil1 Посмотреть сообщение
А Вы считаете, что программист должен знать всё на свете? Можете объяснить, чем информация о том, как сложить 2 цвета полезнее информации о том, как образуются падежи в итальянском языке?
Ну почему "знать"? Вывести несложные формулы самому. Ход мысли примерно такой

Очевидно если первое стекло (front) вообще непрозрачно, то за ним вообще ничего не увидим. Если первое "почти" непрозрачно, то заднее (back) мы должны видеть чуть-чуть, и.т.д. Так приходим к формуле
C++
1
result.alpha = front.alpha + (1 - front.alpha) * back.alpha;
А вот если мы поставим 10 полупрозрачных стекол, что увидим сквозь них? Альфа будет приближаться к 1, прозрачность (1 - alpha) к нулю - так это ж экспонента! Заметим что любители готовых решений лишены радости таких "маленьких открытий"

Ладно, с альфой разобрались, теперь как же накапливать RGB компоненты? Да точно так же как альфу, только цвета должны быть с учетом собственной альфы
C++
1
2
3
4
5
6
7
8
// premultiply alpha
float frontRed = front.red * front.alpha;
float backRed = back.red * back.alpha;
 
// accumulate RGB components
result.red = frontRed + (1 - front.alpha) * backRed;
result.green =...
result.blue =...
Осталось только "вернуть альфу взад" (un-premultiply)
C++
1
2
3
result.red /= result.alpha;
result.green /= result.alpha;
result.blue /= result.alpha;.
Ну вот и все.

Так что там у нас с "техничной" реализацией? На плюсах выходит довольно обильно, причем обычно данные - байт на канал (unsigned char) что порождает еще заботы. Ну тут кивают что, мол, шарп - это круто. Хотелось бы посмотреть во что выльется реализация на "козырных" языках. Какова же эта крутизна на деле?
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
05.09.2016, 08:12
Цитата Сообщение от Igor3D Посмотреть сообщение
Какова же эта крутизна на деле?
Та никто на шарпе без DirectX с альфой не рисует. А шейдеры которые в GPU это считают на урезанном диалекте С или плюсов пишутся.
0
 Аватар для SmittWesson
236 / 196 / 21
Регистрация: 04.06.2014
Сообщений: 1,309
05.09.2016, 10:39
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Та никто на шарпе без DirectX с альфой не рисует. А шейдеры которые в GPU это считают на урезанном диалекте С или плюсов пишутся.
Ой-ой-ой. Да уж прям-уж. Шарп, это диалект С++, заточенный для работы в сетке. "Шарпеи", захотели совместить его с Бейсиком, C++ и PHP. В результате работа с массивами, как у Бейсика, объявление как у С++, а использование в функциях как у PHP. Ну, монстр-монстром! Всё то-же самое я могу сделать на C++ и PHP. Нахрена мне что-то среднее?
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
05.09.2016, 10:52
Цитата Сообщение от SmittWesson Посмотреть сообщение
Шарп, это диалект С++
Шарп это диалект Jаva. А назвали его так потому что Sun был категорически против внесения изменений в спецификацию Java (добавления свойств делегатов и возможности отключать для некоторых мусоросборник) и пользования торговой марки Java с другой спецификацией
1
Заблокирован
05.09.2016, 10:53
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Учился. Правда не в бауманке а в более крутом.
Неужели Вы учились за границей?
Сорбона?
Оксфорд?
Ибо Круче Бауманки ВУЗа нет.
Это ВУЗ №1 в России
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
05.09.2016, 10:57
Цитата Сообщение от SmittWesson Посмотреть сообщение
Нахрена мне что-то среднее?
Ну наверное чтобы было куда памяти утекать.

Добавлено через 39 секунд
Цитата Сообщение от ИсмаилПркопенко Посмотреть сообщение
Неужели Вы учились за границей?
Приазовский Государственный Технический Университет.

Добавлено через 1 минуту
Это кстати тоже ни разу не Россия
0
Модератор
Эксперт функциональных языков программирования
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,898
05.09.2016, 17:52
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Раздел "Общепрофессиональные дисциплины"
Машинная графика.
Нашёл. Засунули его в непрофильные рядом с Безопасностью жизнедеятельности.
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
05.09.2016, 18:19
Цитата Сообщение от Shamil1 Посмотреть сообщение
Нашёл. Засунули его в непрофильные
в Общепрофессиональные дисциплины. Это то что все программисты учат даже если типа разные направления подготовки. А БЖД она со своими вариациями для разных направлений с упором на их реалии, для программистов одно для станочников другое. В отличии от охраны труда которая для всех в вузе едина. Вообще теоремы БЖД для всех специальностей начинаются с первой. А для программистов с нулевой.
0
440 / 432 / 159
Регистрация: 21.05.2016
Сообщений: 1,338
06.09.2016, 01:08
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Приазовский Государственный Технический Университет.
Это кстати тоже ни разу не Россия
Теперь все встало на свои места. Я то не мог понять откуда эти фантазии про инженерную графику.

Добавлено через 5 минут
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
в Общепрофессиональные дисциплины. Это то что все программисты учат даже если типа разные направления подготовки. А БЖД она со своими вариациями для разных направлений с упором на их реалии, для программистов одно для станочников другое. В отличии от охраны труда которая для всех в вузе едина. Вообще теоремы БЖД для всех специальностей начинаются с первой. А для программистов с нулевой.
Для программистов из приазовского университета. Не говорите за всех программистов, пожалуйста
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
06.09.2016, 07:03
Цитата Сообщение от oldnewyear Посмотреть сообщение
Для программистов из приазовского университета. Не говорите за всех программистов, пожалуйста
Ну да именно в ПГТУ вывели и доказали 0-ю теорему БЖД для препадов БЖД. Формулируется так: "Не зли программистов"

Добавлено через 1 минуту
Цитата Сообщение от oldnewyear Посмотреть сообщение
Теперь все встало на свои места. Я то не мог понять откуда эти фантазии про инженерную графику.
Ну вот потому ПГТУ и круче Бауманки и т.п. потому как такой подход к инженерной графике для Бауманки оказывается фантазии а для ПГТУ уже более 20 лет реальность.
0
440 / 432 / 159
Регистрация: 21.05.2016
Сообщений: 1,338
06.09.2016, 07:17
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Ну вот потому ПГТУ и круче Бауманки и т.п. потому как такой подход к инженерной графике для Бауманки оказывается фантазии а для ПГТУ уже более 20 лет реальность.
Пусть ПГТУ круче Бауманки, мне не жалко. Вы столько интересного рассказали о процессе обучения программистов, но забыли упомянуть, что имели ввиду украинское образование. А я то никак не мог понять, о чем вы говорите, поэтому сомнения на счет вашего ВО и возникли
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
06.09.2016, 07:32
Цитата Сообщение от oldnewyear Посмотреть сообщение
А я то никак не мог понять, о чем вы говорите,
Цитата Сообщение от oldnewyear Посмотреть сообщение
что имели ввиду украинское образование
Кстати думал что и везде так. Хотя у нас реально кафедра по нашим времеменам была нереальная. При создании кафедры препадов набирали из НИИ, препады математики все свои а не с кафедры вышки и насколько понимаю программа по тем временам была сверхпродвинутая (подход к вопросу - программист все должен делать на компьютере. Даже на рукописные лабораторки очень криво смотрели.). Цель кафедре ставилась - подготовка ведущих программистов-аналитиков и научных сотрудников НИИ по разработке софта. Но насколько знаю такая система обучения давно пошла в массы.
0
Эксперт С++
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
11.09.2016, 08:08
ИсмаилПркопенко, насчет бауманки - вы загнули.
1. Учебник по ООП, который выпустили пара теток из Бауманки - только в сортире подтираться.
2. Наши выпускгники, которые поехали в бауманку - учили всю группу программировать... ))))

Что в Бауманке сильно - математика. Как впрочем, во многих московских вузах.
Например, сейчас ВШЭ сильна математикой. А программисты там - очень средненькие.
Да и вообще в Москве с программированием не очень...
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
11.09.2016, 10:48
Цитата Сообщение от ValeryLaptev Посмотреть сообщение
Что в Бауманке сильно - математика. Как впрочем, во многих московских вузах.
Ну математика это штука такая что сколько в ВУЗе не учи все равно программисту ее слишком мало. Посему задача ВУЗа в плане математики дать азы по максимальному количеству направлений достаточные для самостоятельного раскапывания любого из этих направлений глубже. Т.е. навыки по выводу формул и преобразовнию мат методов в пригодный для компьютерного счета вид из того вида в котором они обычно в справочниках по математике. Как говорил наш математик - из любого раздела математики нужно знать две формулы. Остальные выводятся.
Цитата Сообщение от ValeryLaptev Посмотреть сообщение
А программисты там - очень средненькие.
Ну дак там на кафедре информатики 8 специальностей. т.е. как минимум 8 групп (200 человек) на каждый курс. Естественно полный разброд и шатание.
0
 Аватар для SmittWesson
236 / 196 / 21
Регистрация: 04.06.2014
Сообщений: 1,309
11.09.2016, 16:12
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Как говорил наш математик - из любого раздела математики нужно знать две формулы.
1. Бегло бежим по углам.
2. Так-же ссем трём, по ушам.
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
11.09.2016, 16:44
Цитата Сообщение от SmittWesson Посмотреть сообщение
Бегло бежим по углам.
НУ к примеру аналитическую или вычислительную геометрию так чтоб всегда на все случаИ жизни хватило за год изучить нереально. А тем более что в большинстве случАев нужна помесь, когда средствами вычислительной геометрии примитивы сначала преобразуются в систему координат наиболее удобную для решения уравнений аналитической геометрии.
0
 Аватар для SmittWesson
236 / 196 / 21
Регистрация: 04.06.2014
Сообщений: 1,309
12.09.2016, 14:05
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
так чтоб всегда на все случаИ жизни хватило за год изучить нереально
Кто бы спорил, я не стану. Вот, сегодня жена затеяла ремонт. Я выгреб из ящиков (к которым лет 30 не прикасался) свои институтские тетрадки. Я интегралы брал, - как семечки щелкал. Сейчас смотрю на свои записи, как баран на новые ворота. Всё из башки выветрилось. Почерк мой, а расуждений и хода мыслей, вообще никаких.
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
12.09.2016, 15:42
Цитата Сообщение от SmittWesson Посмотреть сообщение
Я интегралы брал, - как семечки щелкал
Да было дело на первом-втором курсе. А в реальной жизни интегралы обычно численно считаются а не аналитически. И дифуры численно интегрируются. И уравнения высших степеней тоже аналитически решать больше вычислительная нагрузка чем численно методом Ньютона...
0
Заблокирован
12.09.2016, 15:59
Цитата Сообщение от ValeryLaptev Посмотреть сообщение
1. Учебник по ООП, который выпустили пара теток из Бауманки - только в сортире подтираться.
Тогда посоветуйте хороший учебник, в котором бы подробно разбирались все недостатки ООП
0
 Аватар для SmittWesson
236 / 196 / 21
Регистрация: 04.06.2014
Сообщений: 1,309
12.09.2016, 16:35
Цитата Сообщение от ИсмаилПркопенко Посмотреть сообщение
Тогда посоветуйте хороший учебник, в котором бы подробно разбирались все недостатки ООП
Таких нет, увы. Хочешь как в фильмах, за три нажатия клавиши десятизначный код расколоть? Ну-ну, удачи. Встретимся, лет через 1000 в лобовой. Есть ещё одна фигня - но но это не для средних умов.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.09.2016, 16:35

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
240
Ответ Создать тему
Новые блоги и статьи
сукцессия 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