Comments 21
чем ваш пост лучше всего что есть в базовой информации об ООП кроме слов «не для новичка»?
2011 — год ООП на хабре.
Где находится «базовая информация об ООП»?: )
Назовем сущности объектами (в смысле экземпляры классов), а поведение — классом.
Это и есть ООП.
А если не назовём это будет не ООП? :)
По-моему ООП никак не может быть архитектурой приложения — способом её реализации может, а так «локализация влияния» вполне может быть реализована например с помощью процедурной или функциональной парадигм.
может не стоит писать ПОЛУЖИРНЫМ КАПСОМ
У Макконела в «Совершенном коде» целая глава посвящена тому, зачем нужны классы. Уже все давно написано.
Я для себя недавно открыл (хоть 3 года разрабатываю корпоративные веб-приложения с .Net и ООП), что многие научные приложения писать с помощью ООП--ОЧЕНЬ тяжело.
ООП подходит в основном для корпоративных приложений, где число сущностей конечно или счетно и где работает Entity-Relationship model.
Как только вы работаете с множествами несчетными (функции, векторные пространства, многообразия) (то есть в естественных науках и нормальных инженерных приложениях, не CMS/e-commerce приложениях), ООП--это не всегда лучшее решение, потому что оно концептуально не подходит. Большую часть времени вы потратите на glue code.
И тогда окаывается, что процедурное программирование намного лучше.
Хотя не спорю, во многих научных расчетах ООП будет удобней процедурного подхода.
ООП подходит в основном для корпоративных приложений, где число сущностей конечно или счетно и где работает Entity-Relationship model.
Как только вы работаете с множествами несчетными (функции, векторные пространства, многообразия) (то есть в естественных науках и нормальных инженерных приложениях, не CMS/e-commerce приложениях), ООП--это не всегда лучшее решение, потому что оно концептуально не подходит. Большую часть времени вы потратите на glue code.
И тогда окаывается, что процедурное программирование намного лучше.
Хотя не спорю, во многих научных расчетах ООП будет удобней процедурного подхода.
А может для работы с функциями лучше использовать функциональный (декларативный), а не процедурный (императивный) подход? Не пробовали или мощь ФП несколько преувеличена?
как… сочетается с ...?
Может потому что «многие» не синоним «большинство»?
Вы не подумайте, я знаю проектирование с ООП, и читал Gang Of Four, Фаулера и МакКоннела. Но оказывается, что серебряной пули нет. Это я и хотел донести.
В качестве еще одного аргумента против ООП в некоторых случаях выступает следующий: часто очень удобно даже большие системы писать в специализированных системах, например, в MATLAB (вот тут много подтверждений User stories). Потому что в Матлабе есть тысячи полезных, быстрых и оттестированных функций, которых нет ни в одной библиотеке в Java, .Net или C++ (они, может, и есть, но не такие хорошие, и не в одной библиотеке, а в сотне разных. и с багами) и удобная среда.
И MATLAB, в общем-то, плохо поддерживает ООП.
Поэтому проще писать процедурно в матлабе, чем с ООП на C++.
Но самое главное: Матлаб неспроста плохо поддерживает ООП. А причина описана в комментарии выше (ООП--хорош для приложений с Entity-Relationship model)
В качестве еще одного аргумента против ООП в некоторых случаях выступает следующий: часто очень удобно даже большие системы писать в специализированных системах, например, в MATLAB (вот тут много подтверждений User stories). Потому что в Матлабе есть тысячи полезных, быстрых и оттестированных функций, которых нет ни в одной библиотеке в Java, .Net или C++ (они, может, и есть, но не такие хорошие, и не в одной библиотеке, а в сотне разных. и с багами) и удобная среда.
И MATLAB, в общем-то, плохо поддерживает ООП.
Поэтому проще писать процедурно в матлабе, чем с ООП на C++.
Но самое главное: Матлаб неспроста плохо поддерживает ООП. А причина описана в комментарии выше (ООП--хорош для приложений с Entity-Relationship model)
>>1. УПРОЩЕНИЕ ПОНИМАНИЯ ЧЕЛОВЕКОМ
Человек понимает простые вещи. ООП же делает из мухи слона.
За примером далеко ходить не надо.
Функторы. И ваш пример с уткой тут не подходит.
Вот указатель на функцию другое дело. Что такое «указатель на функцию»? «Это указатель на код, который в памяти лежит. Ему можно передать управление»
Что такое «функтор» и почему там 9 этажей шаблонов?
>>2. ЛОКАЛИЗАЦИЯ ВЛИЯНИЯ КОДА
Модульность? А как-же модульность?
Я тут еще бы много чего написал, но ваш пост уж очень сильно запутан.
>>Назовем сущности объектами (в смысле экземпляры классов), а поведение — классом.
Программа — это данные и код, который этими данными управляет.
Код пишет программист итлько он определяет то, как этот код будет управлять данными.
Программы пишут для компьютеров, а не для человека. Поэтому не стоит приводить столько сравнений с реальной жизнью. Они тут не уместны.
ООП изначально ошибочная парадигма. Она никогда не сможет претендовать на звание единственноверной парадигмы программирования.
Человек понимает простые вещи. ООП же делает из мухи слона.
За примером далеко ходить не надо.
Функторы. И ваш пример с уткой тут не подходит.
Вот указатель на функцию другое дело. Что такое «указатель на функцию»? «Это указатель на код, который в памяти лежит. Ему можно передать управление»
Что такое «функтор» и почему там 9 этажей шаблонов?
>>2. ЛОКАЛИЗАЦИЯ ВЛИЯНИЯ КОДА
Модульность? А как-же модульность?
Я тут еще бы много чего написал, но ваш пост уж очень сильно запутан.
>>Назовем сущности объектами (в смысле экземпляры классов), а поведение — классом.
Программа — это данные и код, который этими данными управляет.
Код пишет программист итлько он определяет то, как этот код будет управлять данными.
Программы пишут для компьютеров, а не для человека. Поэтому не стоит приводить столько сравнений с реальной жизнью. Они тут не уместны.
ООП изначально ошибочная парадигма. Она никогда не сможет претендовать на звание единственноверной парадигмы программирования.
Только разделение (специализация) поведения позволяет создавать архитектуру, которая легко расширяется.
ИМХО архитектура должна быть приближена(как можно точнее отражать смысл) к предметной области, ну и конечно быть гибкой(читай расширяемой), но в своей области применения
Sign up to leave a comment.
Зачем ООП