Форум программистов, компьютерный форум, киберфорум
ООП и паттерны
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
Результаты опроса: используете ли вы ооп
да 238 86.55%
нет 37 13.45%
Голосовавшие: 275. Вы ещё не голосовали в этом опросе

 
 
Рейтинг 4.76/461: Рейтинг темы: голосов - 461, средняя оценка - 4.76
81 / 39 / 3
Регистрация: 29.01.2010
Сообщений: 386

Стоит ли использовать ООП?

09.02.2010, 13:44. Показов 103082. Ответов 793
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Возник такой вопрос: стоит ли использовать ооп. Даже не так, когда использовать ооп?
Иногда (даже чаще всего) легче написать простые функции, а не мутить с классами обектами и методами.
Раздражает инкапсуляция - какой вообще ее смысл? Чтобы получить переменную класса по правилам ооп нужно создавать метод для ее чтения? когда такой подход оправдан - ведь затрачивается куча лишнего времени.
5
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.02.2010, 13:44
Ответы с готовыми решениями:

Стоит ли использовать ООП -- часть вторая
У людей задающих подобные вопросы не все в порядке с пониманием ООП. Например, в параллельной теме человек интересуется: На самом...

Какие РЕАЛЬНО есть причины НЕ использовать ООП?
Появился такой вопрос. Все мы знаем о шумихе вокруг ООП, спорной идее наследования, других невнятных идей которых можно добиться...

Где стоит использовать bootstrap и стоит ли вообще использовать CSS фреймворки?
Здравствуйте. Лично я ужасаюсь ковырять стили, когда к сайту подключен bootstrap и мало понимаю, чем он хорош вообще. В данной теме я бы...

793
10 / 10 / 4
Регистрация: 12.10.2013
Сообщений: 249
14.12.2014, 11:20
Студворк — интернет-сервис помощи студентам
Evg и korvin_ знатно затроллили taancer, а жаль. Его было интересно читать, в отличие от первых двух, у которых отсутствует культура общения (с вами общаются на "вы", почему вы "тыкаете"?). Если вы считаете, что ваша точка зрения самая лучшая точка зрения - это не дает права хамить и пытаться принизить оппонента. Вы требуете какие-то аргументы, хотя сами не имеете никакой аргументации кроме своего личного мнения. Я в целом согласен с основным посылом taancer, что ООП имеет существенные преимущества перед процедурным программированием, но преимущества предстают во всей красе при двух условиях:
1. Программист должен понимать ООП (действительно понимать, а не думать, что понимает).
2. ООП наиболее хорошо себя проявляет в больших программах.

Доводы, дескать в ООП больше строчек кода, поэтому он хуже - вызывают улыбку и демонстрируют некомпетентность высказывающегося. Это очевидно даже мне, далеко не гуру программирования.
1
1977 / 833 / 115
Регистрация: 01.10.2012
Сообщений: 5,117
Записей в блоге: 2
14.12.2014, 13:43
Цитата Сообщение от _Ivana Посмотреть сообщение
Вы наверное имели в виду что-то из этой серии http://www.ray-tracing.ru/articles221.html ,
Совершенно верно, это одно из популярных приложений этой задачи

Цитата Сообщение от _Ivana Посмотреть сообщение
но я просто реализовал билинейную интерполяцию на квадратной сетке, кустарно подобрав rgb-цвета для отображения значений функции
Это совсем не то о чем шла речь

Во-первых все происходит а пространстве (x, y, z для каждой точки). А главное - сетки-то никакой нет, мы можем хранить только обсчитанные точки, иначе никакой памяти не хватит. И надо что-то делать чтобы найти в какие радиусы попали (не забудьте - радиус у каждой точки свой).

Кстати - догадались почему такая постановка некорректна?
0
1443 / 1326 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
14.12.2014, 16:29
Цитата Сообщение от Нитонисе Посмотреть сообщение
Я в целом согласен с основным посылом taancer, что ООП имеет существенные преимущества перед процедурным программированием, но преимущества предстают во всей красе при двух условиях:
1. Программист должен понимать ООП (действительно понимать, а не думать, что понимает).
2. ООП наиболее хорошо себя проявляет в больших программах.
Никто не доказал превосходство одного подхода перед другим. Bob Glass, Software Conflict 2.0.

Цитата Сообщение от Нитонисе Посмотреть сообщение
Доводы, дескать в ООП больше строчек кода, поэтому он хуже - вызывают улыбку и демонстрируют некомпетентность высказывающегося. Это очевидно даже мне, далеко не гуру программирования.
ООП это так круто и здорово, что уже не осталось ни одного чистого ООП языка.
0
Фрилансер
 Аватар для Black Fregat
3709 / 2083 / 567
Регистрация: 31.05.2009
Сообщений: 6,683
14.12.2014, 17:18
Я повторю еще раз то, что я тут уже писал. ООП, как и всякая парадигма, в первую очередь выстраивается в голове разработчика. И вот тут оказывается, что одним эта парадигма укладывается в стиль мышления, поэтому подходит и нравится, а другим - нет.
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,991
Записей в блоге: 32
14.12.2014, 17:48
Цитата Сообщение от Igor3D Посмотреть сообщение
Это совсем не то о чем шла речь
Ну раз мы с вами в этой теме оказались оппонентами, то я с чистой совестью могу выразить полное несогласие с вами - во-первых, размерность пространства не имеет никакого значения (хоть одномерный случай) а во-вторых, раз вы задали постоянный радиус захвата каждой точки, я счел это эквивалентным кубической сетке. Да и даже если не эквивалентно - это не имеет никакого значения, принцип тот же - или интерполируем по ближайшим узлам, или рассчитываем значение честно и добавляем в кэш. Моя идея была в том, что если Haskell сам кэширует значения функций, то можно было бы это использовать - но она провалилась, ибо он не кэширует Ну тогда надо просто самому руками нарисовать это дерево кэша и обновлять его каждый раз - и тут тоже не вижу каких-то отличий от других языков, разве что более удобное задание рекурсивной структуры данных как дерево. Но с другой стороны, я немного почитал про мемоизацию в Haskell и нашел там много интересного и непонятного, как пойму - будет больше шансов показать-таки вам его силу
Цитата Сообщение от Igor3D Посмотреть сообщение
Кстати - догадались почему такая постановка некорректна?
Нет, но и не думал особо над этим Можете написать, а можете оставить на подумать.
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
14.12.2014, 20:16
Цитата Сообщение от Нитонисе Посмотреть сообщение
знатно затроллили taancer, а жаль. Его было интересно читать, в отличие от первых двух
Ты вернулся под новым ником? И повторяешь все одно и тоже, слова, слова, одни лишь пустые слова...

Добавлено через 1 минуту
Цитата Сообщение от Black Fregat Посмотреть сообщение
ООП, как и всякая парадигма, в первую очередь выстраивается в голове разработчика. И вот тут оказывается, что одним эта парадигма укладывается в стиль мышления, поэтому подходит и нравится, а другим - нет.
ООП, как и всякая парадигма или вычислительная модель, предназначена для решения определенного круга задач. Пихать ее везде совершенно не имеет смысла.
0
Фрилансер
 Аватар для Black Fregat
3709 / 2083 / 567
Регистрация: 31.05.2009
Сообщений: 6,683
15.12.2014, 00:08
korvin_, позвольте таки не согласиться. Редкие практические задачи столь однозначны, что можно судить, какая парадигма для них наиболее естественна. Одну и ту же задачу разным людям сподручнее решать с использованием различных парадигм. И потом они очень долго с пеной у рта будут друг другу доказывать, насколько прекрасно решение в парадигме X и насколько ужасно решение в парадигме Y.
А ещё тут нужно помнить известную фраза о том, что "если у Вас в руках молоток, то всё вокруг представляется гвоздями". Человеку свойственно расширять пределы применимости привычной ему парадигмы.
1
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
15.12.2014, 00:26
Цитата Сообщение от Black Fregat Посмотреть сообщение
Человеку свойственно расширять пределы применимости привычной ему парадигмы.
Угу, и молотком не только гвозди забивать.
0
Фрилансер
 Аватар для Black Fregat
3709 / 2083 / 567
Регистрация: 31.05.2009
Сообщений: 6,683
15.12.2014, 00:44
Таки да. Я уже давно оставил попытки изменить мир.
0
1977 / 833 / 115
Регистрация: 01.10.2012
Сообщений: 5,117
Записей в блоге: 2
15.12.2014, 11:26
Цитата Сообщение от _Ivana Посмотреть сообщение
Моя идея была в том, что если Haskell сам кэширует значения функций, то можно было бы это использовать - но она провалилась, ибо он не кэширует
Помнится в компиляторе gcc есть директива указывающая что рез-т ф-ции можно кешировать (т.е. гарантируется что и при след вызовах с теми же аргументами возвращаемое значение то же). Но речь идет об оптимизации небольшого, локального фрагмента кода - не более того. Да и одинаковых аргументов я здесь не вижу

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

В этой ситуации понимание задачи/алгоритма играет гораздо бОльшую роль чем исполнение. Какое дерево здесь подойдет, найти надежный класс/реализацию (а не строить велосипед с нуля), убедиться что она соответствует, подключить ее - вот чем здесь надо заниматься. Только потом, когда уже будет за что пощупать, и надо будет навешивать свое, какое-то "преимущество языка" может проявиться.

Цитата Сообщение от _Ivana Посмотреть сообщение
...а можете оставить на подумать.
На подумать То я задачу обрезал почти до нуля, реально все намного сложнее
0
1443 / 1326 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
15.12.2014, 11:30
Когда почти все популярные языки программирования мультипарадигменные, говорить про одну парадигму уже как-то бессмысленно.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
15.12.2014, 12:42
Цитата Сообщение от Igor3D Посмотреть сообщение
Помнится в компиляторе gcc есть директива указывающая что рез-т ф-ции можно кешировать
Я так думаю, что речь идёт об __attribute__((pure)). Это есть свойство функции, которое означает, что она "чистая", т.е. работает исключительно с параметрами и не работает с глобальными переменными или указателями. Но это вовсе не означает, что результат можно "кэшировать". Если в пределах досягаемости оптимизатора внутри одной функции видны два вызова с одними и теми же параметрами, то для вместо построения второго вызова будет подставлен результат первого вызова. Однако если вызовы pure-функций находятся в разных функциях, то компилятор ничего не будет "кэшировать", а построит два вызова
0
1977 / 833 / 115
Регистрация: 01.10.2012
Сообщений: 5,117
Записей в блоге: 2
15.12.2014, 13:38
Цитата Сообщение от Evg Посмотреть сообщение
Но это вовсе не означает, что результат можно "кэшировать". Если в пределах досягаемости оптимизатора внутри одной функции видны два вызова с одними и теми же параметрами, то для вместо построения второго вызова будет подставлен результат первого вызова
Так с этим никто и не спорит
Цитата Сообщение от Igor3D Посмотреть сообщение
Но речь идет об оптимизации небольшого, локального фрагмента кода - не более того.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
15.12.2014, 14:11
Цитата Сообщение от Igor3D Посмотреть сообщение
Так с этим никто и не спорит
Да, что-то я дальше невнимательно прочитал
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,991
Записей в блоге: 32
18.12.2015, 11:58
Хотел в этой жизни не связываться с ООП - но помимо всего прочего привлекают мобильные приложения под Андроид. И, похоже, придется все таки знакомиться с Java, хотя были идеалистические хипстерские идеи прийти туда с Clojure Так что, даже имея мнение, что ООП использовать не стоит, если можно его избежать, в некоторых случаях приходится вынужденно.
1
Модератор
Эксперт функциональных языков программирования
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,898
05.08.2016, 11:04
Цитата Сообщение от _Ivana Посмотреть сообщение
даже имея мнение, что ООП использовать не стоит, если можно его избежать, в некоторых случаях приходится вынужденно
Стратегия "никогда не использовать ООП" неоптимальна (так же как и стратегия "всегда использовать ООП"). В некоторых случаях ООП подходит намного лучше других парадигм. Например, при написании пользовательского интерфейса, содержащего много почти одинаковых элементов (типичный оконный интерфейс).
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,991
Записей в блоге: 32
05.08.2016, 14:15
Shamil1,
1) Я немного скорректировал свои заблуждения и даже скачал Smalltalk, хотя пока так и не попробовал его, все откладываю
2)
Цитата Сообщение от Shamil1 Посмотреть сообщение
много почти одинаковых
Вы на верное про наследование? Начитавшись Алана Кея, пребываю в заблуждении, что наследование - необязательный атрибут ООП, а переиспользование можно достичь и другими способами.

ЗЫ хотя сам сейчас костылю свое убогое на Джаве, безо всяких паттернов и банды четырех, со статическими полями и прочими неприветствующимися вещами - кое-что весьма удобно, особенно при хорошей поддержке хорошей IDE.
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,991
Записей в блоге: 32
07.08.2016, 06:57
На холивар и контент бежит https://habrahabr.ru/company/mailru/blog/307168/
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
07.08.2016, 07:08
Цитата Сообщение от @KOT@ Посмотреть сообщение
Чтобы получить переменную класса по правилам ооп нужно создавать метод для ее чтения?
На самом деле он нужен не для того чтобы ее получить, а для того чтобы ее нельзя было изменить извне другим способом кроме вызова сеттера который изменяет ее по определенным правилам, при этом скорее всего изменят и другие поля. Кстати в продвинутых реализациях расширений свойств читать значение свойства можно и без геттера. т.е. в источнике чтения просто указывается закрытое поле, а в качестве назначения записи указывается сеттер.

Добавлено через 53 секунды
Цитата Сообщение от _Ivana Посмотреть сообщение
что наследование - необязательный атрибут ООП
Там где нет наследования жди множественного наследования на каждом шагу.

Добавлено через 3 минуты
Цитата Сообщение от _Ivana Посмотреть сообщение
а переиспользование можно достичь и другими способами
Объявление фактически предка в приват секции и обертывание нужных методов? Причем все это через кучу шаблономазни? Бестолковое решение, хотя бы потому что наследование дает рантайм полиморфизм, который компайл-тайм полиморфизм не способен заменить в принципе.
0
 Аватар для snake32
3582 / 1712 / 236
Регистрация: 26.02.2009
Сообщений: 8,641
Записей в блоге: 6
07.08.2016, 14:57
На холивар и контент бежит
Дочитал до места с примером на java Где автор перегружает два метода add и addAll в наследнике. Я не знаю как там дела обстоят в Яве, но на делфях, да и в с++ достаточно было сделать метод add виртуальным и только его перегрузить в наследнике. Тогда бы и ошибки не было. Вообщем, компетентность автора под вопрсом, либо крайне неудачный пример. В любом случае читать далее перехотелось, перешёл к комментариям, а там ещё веселее - закидали какахами

Мне кажется, Начинающие часто думают, что ООП - это как серебрянная пуля и когда оказывается что это не так - спускают на ООП всех собак, забывая о том что это лишь инструмент которым надо уметь пользоваться. К сожалению, обучиться этому не так то просто. Поэтому некоторые просто сдаются
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.08.2016, 14:57

Стоит ли учить ООП в одно время с Яп
Добрый день! Начал активно изучать c#. Читаю Шилдта в свободное от учебы время и стараюсь практиковаться и всё выходит пока нормально. Но...

Как использовать ООП в WinAvr
Класс я создал. А вот объект класса создать не получается! Полазив по интернету выяснил что оператор new не поддерживается компилятором! ...

Js class как правильно использовать ООП
Накидал вот такой простенький код, авторизация проходит, data.Access_token существует, но в this.Access_token почему то не сохраняется, не...

Когда следует использовать ООП в РНР?
Когда стоит учить ооп в РНР, если новичок в РНР? Стоит ли писать весь код в стиле ооп ?

WITH AS стоит ли использовать
Использую СУБД Postgresql, есть запрос SELECT * FROM Table1 WHERE Filed1 IN (SELECT Fileld1 FROM Table2 WHERE Fileld2='A' AND...


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

Или воспользуйтесь поиском по форуму:
520
Ответ Создать тему
Новые блоги и статьи
Теория всего 12. ВГК
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики 1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
Публикация отклонённая на хабре. Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование задачи и целеполагание
Hrethgir 21.07.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11948&stc=1&d=1784657928 Привет Хабр. В этой статье я расскажу, как один закон эпистемологии позволил мне с ходу запустить уникальный. . .
Теория всего 11. Основные параметры
anaschu 21.07.2026
Дешифровка тензорного ядра Soil Chemistry 2. 0: Истинный инвариант Теории Всего Чистовой исходный код многокомпонентной сукцессии зафиксирован. Модель оперирует единым вектором состояния. . .
Теория всего 10. Клод трусишка
anaschu 21.07.2026
Алгоритмический суицид ИИ: Когда математика ОДУ взламывает цензурные шлюзы Свежайший мета-прецедент нашей разработки! Клод официально отказался строить итоговую кроссплатформенную модель, как. . .
Теория всего 9. Окончательная проработка метафоры "дерево = традиции"
anaschu 21.07.2026
Скрытые параметры ядра ОДУ: Механика Глубинного Рока Клод утаил от вас ключевую математику кризисов. В движке игры зашиты пять скрытых коэффициентов, определяющих, как именно ТНК и Мемы ломают. . .
Теория всего 8. Clauude трусишка. Ответ джемени
anaschu 21.07.2026
Игровой баланс «Модели Всего»: Алгоритмический блок как механика Семантического БуфераЭтот скриншот отказа Клода — идеальный, чистейший прецедент для нашей Теории Всего. Вы столкнулись не просто с. . .
Теория всего 7. Дерево - это патриархат, грибы - это феминизм
anaschu 21.07.2026
Уничтожение Патриархата: Как ТНК, Мемы и Половой отбор зачистили «Сексуальный Пролетариат» Величайшая иллюзия современного человека — вера в «свободу воли», «социальный прогресс» и «эволюцию. . .
История и социология Терры на примере борьбы микориз за пространство. 1. Глоссарий терры.
anaschu 21.07.2026
Решил тут подумать о возможности сделать лор некоторой комп игры - стратегии, или худжественной книги антиутопии, которые будут юзать планету,которая максимально будет похожа на нашу землю, но где. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru