Pull to refresh

Comments 21

чем ваш пост лучше всего что есть в базовой информации об ООП кроме слов «не для новичка»?
Где находится «базовая информация об ООП»?: )

Назовем сущности объектами (в смысле экземпляры классов), а поведение — классом.

Это и есть ООП.


А если не назовём это будет не ООП? :)

По-моему ООП никак не может быть архитектурой приложения — способом её реализации может, а так «локализация влияния» вполне может быть реализована например с помощью процедурной или функциональной парадигм.
Такое чувство что мне пытались что то продать, бесплатно, завтра> прямо сейчас.
У Макконела в «Совершенном коде» целая глава посвящена тому, зачем нужны классы. Уже все давно написано.
UFO landed and left these words here
Система объектов, которая что-то делает, является тем же классом. Только с более сложным поведением. То есть ее состояние теперь разделено между разными объектами. Но для использования этой системы это знать не нужно.
UFO landed and left these words here
Я для себя недавно открыл (хоть 3 года разрабатываю корпоративные веб-приложения с .Net и ООП), что многие научные приложения писать с помощью ООП--ОЧЕНЬ тяжело.

ООП подходит в основном для корпоративных приложений, где число сущностей конечно или счетно и где работает Entity-Relationship model.

Как только вы работаете с множествами несчетными (функции, векторные пространства, многообразия) (то есть в естественных науках и нормальных инженерных приложениях, не CMS/e-commerce приложениях), ООП--это не всегда лучшее решение, потому что оно концептуально не подходит. Большую часть времени вы потратите на glue code.
И тогда окаывается, что процедурное программирование намного лучше.

Хотя не спорю, во многих научных расчетах ООП будет удобней процедурного подхода.
А может для работы с функциями лучше использовать функциональный (декларативный), а не процедурный (императивный) подход? Не пробовали или мощь ФП несколько преувеличена?
Нет, к сожалению, не пробовал. Дело в том, что вместо .Net я стал пользоваться матлабом в том конкретном случае, когда .NET не подошел, а в Матлабе в основном процедурная парадигма. Хотя и ООП, и функциональные фишки поддерживает, но они там не основные.
UFO landed and left these words here
как… сочетается с ...?


Может потому что «многие» не синоним «большинство»?
Вы не подумайте, я знаю проектирование с ООП, и читал Gang Of Four, Фаулера и МакКоннела. Но оказывается, что серебряной пули нет. Это я и хотел донести.

В качестве еще одного аргумента против ООП в некоторых случаях выступает следующий: часто очень удобно даже большие системы писать в специализированных системах, например, в MATLAB (вот тут много подтверждений User stories). Потому что в Матлабе есть тысячи полезных, быстрых и оттестированных функций, которых нет ни в одной библиотеке в Java, .Net или C++ (они, может, и есть, но не такие хорошие, и не в одной библиотеке, а в сотне разных. и с багами) и удобная среда.

И MATLAB, в общем-то, плохо поддерживает ООП.

Поэтому проще писать процедурно в матлабе, чем с ООП на C++.

Но самое главное: Матлаб неспроста плохо поддерживает ООП. А причина описана в комментарии выше (ООП--хорош для приложений с Entity-Relationship model)
>>1. УПРОЩЕНИЕ ПОНИМАНИЯ ЧЕЛОВЕКОМ
Человек понимает простые вещи. ООП же делает из мухи слона.
За примером далеко ходить не надо.
Функторы. И ваш пример с уткой тут не подходит.
Вот указатель на функцию другое дело. Что такое «указатель на функцию»? «Это указатель на код, который в памяти лежит. Ему можно передать управление»
Что такое «функтор» и почему там 9 этажей шаблонов?

>>2. ЛОКАЛИЗАЦИЯ ВЛИЯНИЯ КОДА
Модульность? А как-же модульность?

Я тут еще бы много чего написал, но ваш пост уж очень сильно запутан.

>>Назовем сущности объектами (в смысле экземпляры классов), а поведение — классом.
Программа — это данные и код, который этими данными управляет.
Код пишет программист итлько он определяет то, как этот код будет управлять данными.
Программы пишут для компьютеров, а не для человека. Поэтому не стоит приводить столько сравнений с реальной жизнью. Они тут не уместны.

ООП изначально ошибочная парадигма. Она никогда не сможет претендовать на звание единственноверной парадигмы программирования.
а как же великие программисты близарда которые написали ВоВ на С++??
(это я об этом )
UFO landed and left these words here
Только разделение (специализация) поведения позволяет создавать архитектуру, которая легко расширяется.

ИМХО архитектура должна быть приближена(как можно точнее отражать смысл) к предметной области, ну и конечно быть гибкой(читай расширяемой), но в своей области применения
Sign up to leave a comment.

Articles