|
16 / 16 / 1
Регистрация: 13.10.2012
Сообщений: 454
|
|
Недостатки ООП16.05.2014, 16:35. Показов 21769. Ответов 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, сейчас учу основы ООП, где можно найти задачи по ООП |
|
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||
| 12.09.2016, 16:40 | ||
|
0
|
||
|
Заблокирован
|
|||
| 12.09.2016, 20:16 | |||
|
ХОРОШИЙ учебник подразумевает, что в нем будут описаны не только достоинства того или иного метода/парадигмы, но и его недостатки Добавлено через 34 секунды Или хотя ГРАНИЦЫ ПРИМЕНИМОСТИ метода Добавлено через 3 минуты Вот пример
0
|
|||
|
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
|
|
| 12.09.2016, 21:47 | |
|
ИсмаилПркопенко, Скользкие места - это не учебник.
А вот на Озоне появился действительно хорошая книжка по стандартному С++ http://www.ozon.ru/context/detail/id/136427551/ Но там только язык с библиотекой. Формочек там нет. По формочкам я вам уже писал: можно книжки Культина, можно книжки Зиборова взять. Учебник по WinForms - это книжка Петцольда. Посмотрите опять же все это на Озоне.
0
|
|
| 12.09.2016, 21:50 | |
|
Не по теме: Этот коричневый поток на обложке символизирует то что я думаю? :D
0
|
|
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
||
| 12.09.2016, 22:40 | ||
|
Забавляет его фраза в начале, что он, типа, вкратце, а остальное на сайтах по С++ читайте.
0
|
||
|
236 / 196 / 21
Регистрация: 04.06.2014
Сообщений: 1,309
|
||
| 13.09.2016, 07:03 | ||
|
0
|
||
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
||
| 13.09.2016, 13:16 | ||
|
Я считаю, что давно уже пора визуальную часть тоже как-то стандартизировать, какой смысл придуриваться?
0
|
||
|
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||
| 13.09.2016, 13:58 | |||
|
Добавлено через 6 минут Добавлено через 2 минуты При всем при этом ввод программ текстом это способ ввода эпохи телетайпов. Давно уже эпоха сенсорных панелей. Так что в ближайшем будущем все это должно кардинально измениться. Т.е. прийти к чему то наподобие ДРАКОН+ООП+КОП+визуальная сборка компонентов.
0
|
|||
|
Заблокирован
|
||
| 13.09.2016, 14:06 | ||
|
Набивать код посимвольно вручную - это просто титаническая работа. Все равно что зубочисткой пилить дерево в три обхвата. Давно уже пора придумать более адекватные способы представления программ
0
|
||
|
|
||||
| 13.09.2016, 15:32 | ||||
|
1
|
||||
|
Модератор
3138 / 2286 / 469
Регистрация: 26.03.2015
Сообщений: 8,894
|
||
| 13.09.2016, 16:34 | ||
|
0
|
||
|
Заблокирован
|
||||
| 13.09.2016, 16:58 | ||||
|
Добавлено через 1 минуту
0
|
||||
|
Модератор
3138 / 2286 / 469
Регистрация: 26.03.2015
Сообщений: 8,894
|
||
| 13.09.2016, 17:04 | ||
|
0
|
||
|
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||
| 13.09.2016, 17:15 | ||
|
0
|
||
|
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
|
|
| 13.09.2016, 17:27 | |
|
Mr.X, я не писал, что это - учебник.
Но книжка - хорошая. Это я как эксперт в книжках говорю. Написана по стандарту 2011 и 2014. Половина книжки - по шаблонам и метапрогроаммированию. Ориентирована на проги научно-числового программирования. Как я понял, автор - один из создателей Boost Graph Library, перевод которой я редактировал в издательстве Питер. Добавлено через 3 минуты SmittWesson, это понятно, Но в состав библиотек Java формочки входят в нескольких вариантах. А в стандартной библиотеке С++ формочек нет.
0
|
|
|
Заблокирован
|
|||
| 13.09.2016, 19:38 | |||
|
Бывает маленькая простая картинка/схема/диаграмма несет больше информации, чем 100 страниц кода. Тот же GUI текстом описывать заколебёсся. Добавлено через 6 минут Беда всех книжек по С++ - нет комплексного изложения. Ведь чтобы писать на С++ под венду не достаточно просто освоить синтаксис С++ и даже ООП. Нужно освоить IDE (а они сейчас МОНСТРОобразные) и сопутствующие инструменты (редакторы, отладчики, профилировщики, анализаторы кода и т.д. и т.п.. Нужно освоить событийно-ориентированную модель Windows Нужно освоить ряд библиотек, фреймворков, надстроек, обёрток, DSL-ей Нужно освоить языки описания GUI Да много чего нужно освоить прежде чем ты сможешь что называется "сесть и поехать"© И таких книжек нет. От слова САПСЕМ. Ну где программирование на С++ описывается в КОМПЛЕКСЕ Вся инфа РАЗМАЗАНА по десяткам книг. Это существенно осложняет "быстрый старт" для тех кто изучает программирование "с нуля"
0
|
|||
|
Модератор
3138 / 2286 / 469
Регистрация: 26.03.2015
Сообщений: 8,894
|
|||
| 13.09.2016, 19:50 | |||
|
А вот в коде можно легко описать и это, и внешний вид: <ТекстовоеПоле Ширина=10 Высота=3 ВалидацияТип=Число ВалидацияИнтервал=(0,100) />
0
|
|||
|
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||||
| 13.09.2016, 20:43 | |||||
|
Добавлено через 2 минуты Добавлено через 3 минуты Добавлено через 8 минут
0
|
|||||
|
Модератор
3138 / 2286 / 469
Регистрация: 26.03.2015
Сообщений: 8,894
|
||
| 13.09.2016, 20:45 | ||
|
0
|
||
|
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||
| 13.09.2016, 20:47 | ||
|
0
|
||
| 13.09.2016, 20:47 | |
|
Недостатки React
Недостатки AnyLogic Какие недостатки недостатки системы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Программа для com-порта
Uhbif79 05.06.2026
Всем привет, давно хотел изучить Qt, начинал, бросал, потом снова начинал. И сейчас вот смог написать свою первую программу.
До этого имел опыт программирования микроконтроллеров, писал прошивки на. . .
|
Транскрипция 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
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
|