Форум программистов, компьютерный форум, киберфорум
ООП и паттерны
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
Результаты опроса: используете ли вы ооп
да 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. Показов 103361. Ответов 793
Метки нет (Все метки)

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

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

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

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

793
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21282 / 8307 / 637
Регистрация: 30.03.2009
Сообщений: 22,668
Записей в блоге: 30
10.02.2010, 13:59
Студворк — интернет-сервис помощи студентам
> Для серьёзных проектов альтернативы по-моему нет

Наверняка я знать этого не могу, но вроде бы как все современные промышленные компиляторы написаны на Си без какого бы то ни было ООП
0
 Аватар для 0xAX
2451 / 362 / 9
Регистрация: 27.06.2009
Сообщений: 880
10.02.2010, 14:02
Цитата Сообщение от Evg Посмотреть сообщение
Наверняка я знать этого не могу, но вроде бы как все современные промышленные компиляторы написаны на Си без какого бы то ни было ООП
Либо на ML и ему подобных где ооп отсутсвует
0
Технофашист
229 / 217 / 11
Регистрация: 11.03.2009
Сообщений: 887
10.02.2010, 14:03
darkAngel, то, что ты описал - это НЕ есть ООП (а точнее так: ООП далеко не только это). Это всего лишь техническая реализация языка Си++. Формально - да, это инкапсуляция
вот в том то и дело, что это живой пример плюсов ООП. Его удобства, когда всё раскладывается по полочкам, структурированно.
А грузить человека без опыта абстрактными классами, виртуальными деструкторами - без толку.
0
Эксперт С++
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
10.02.2010, 14:06
Цитата Сообщение от only# Посмотреть сообщение
Вы всерьез уверены что крупный проект без приемов ооп не написать? (При том что он не будет уступать аналогу написанному на ооп ни по каким характеристикам).
Крупный проект без приемов ООП написать вполне можно. Он действительно не будет уступать аналогу, написанному на ООП, ни по каким характеристикам. Кроме двух.
Стоимости и сроков разработки.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21282 / 8307 / 637
Регистрация: 30.03.2009
Сообщений: 22,668
Записей в блоге: 30
10.02.2010, 14:09
darkAngel, я же так и написал: "далеко не только это". Но для объяснения непонимающему это никак не канает (опять-таки по собственному опыту). Доступно объяснить человеку, зачем нужно писать set'ы и get'ы, когда можно напрямую обращаться к полям структуры без лишней писанины - таким образом ты не сможешь. А если и объяснишь, то у человека будет только некоторое теоретическое понимание. Практическое понимание возникнет только тогда, когда человек поимеет негативный опыт в большой программе (ещё и когда эту программу пишет стадо, на 50% состоящее из идиотов)
0
1261 / 799 / 108
Регистрация: 16.09.2009
Сообщений: 2,010
10.02.2010, 14:12
на 50% состоящее из идиотов
А что такое бывает?
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21282 / 8307 / 637
Регистрация: 30.03.2009
Сообщений: 22,668
Записей в блоге: 30
10.02.2010, 14:14
Цитата Сообщение от CheshireCat Посмотреть сообщение
Стоимости и сроков разработки.
Зависит от конкретной задачи. Если задача по своей сути не требует ООП-подхода, то использование Си++ негавтивно повлияет на оба эти параметра. Если требует - то наоборот

Есть ещё такой момент. Большая программа на Си++ будет раза в три дольше компилироваться, чем аналог на Си. Из-за того, что в системной части очень много шаблонов, многие коды будут компилироваться по многу раз, а на линковке будет выкинуто всё, кроме одной инстанциации. В результате, когда сравнивается пересборка всего проекта за час и за три часа, вот эти самые два часа разницы могут так же оказать существенное влияние на сроки исполнения.
0
81 / 39 / 3
Регистрация: 29.01.2010
Сообщений: 386
10.02.2010, 14:15  [ТС]
Цитата Сообщение от Evg Посмотреть сообщение

Из постановки вопроса я так понял, что КОТ сие отличие понимает. Он не понимает ЗАЧЕМ это нужно, когда можно без этого. Или я не так понял его непонятки
Верно. Понимаю. И мне кажется, что для крупных проетов ооп - удобно. Но просто в большинстве книг, по которым я учусь (учился) ооп используется как мне кажется не совсем уместно. Именно поэтому и возник вопрос - возможно ли в мелких и средних разработках обойтись без ооп.

Цитата Сообщение от Evg Посмотреть сообщение
Day,
Скрытие полей (private, public) - тоже довольно удобная вещь. И полезно в том числе и для себя, когда проект уже реализуется несколько лет и ты с трудом вспоминаешь конкретику того, что было год назад. В этом месте наличие идиотов необязательно.
А скрытие - меня раздражает очень сильно. Но как я смотрю на больших проектах это также удобно (опять же показывает, что ооп удобно на крупных проектах), а также при доработки своей же программы через какой-то промежуток времени.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21282 / 8307 / 637
Регистрация: 30.03.2009
Сообщений: 22,668
Записей в блоге: 30
10.02.2010, 14:16
Цитата Сообщение от Genius Ignat Посмотреть сообщение
А что такое бывает?
Жизнь устроена так, что в любой крупной конторе есть куча народу, которых можно условно назвать "идиотами". Это люди, за которыми надо постоянно следить и водить за руку. Есть такая мысль: 20% людей делают 80% работы. Почти всегда это оказывается близким к истине. Но оставшиеся 20% тоже кто-то должен делать. Даже если это "грязная" работа, то всё равно там образуется широкое поле возможностей, как плохой специалист может конкретно всем подна$рать (имеется в виду НЕ намеренно, а в силу своего непрофессионализма)
3
 Аватар для snake32
3584 / 1714 / 236
Регистрация: 26.02.2009
Сообщений: 8,666
Записей в блоге: 6
10.02.2010, 14:16
Цитата Сообщение от only# Посмотреть сообщение
Вы всерьез уверены что крупный проект без приемов ооп не написать?
Написать можно ВСЁ и на чём угодно! Только ООП даёт возможность более правильнее, нагляднее представить весь проект, то есть эммм.... ближе к человеческому пониманию, так сказать почеловечаче =). А не просто раздельные функции и переменные. Думаю, ООП - это следующий шаг(или полушаг) после процедурно-функционального программирования (где есть только подпрограммы, ПФП).
Вы всерьёз уверены что я не смогу написать этот проект на ASMе? И он точно не будет уступать по скорости и объёму бинарного кода. Только если б это было проще(читать как быстрее) чем на чистом Си, никто б и никогда б не использовал Си. А смысл?
Чувствую, что и между ПФП и ООП можно провести подобную параллель.

Не по теме:

ПФП - это только что придумал, тк забыл как правильно сие должно называться

0
 Аватар для 0xAX
2451 / 362 / 9
Регистрация: 27.06.2009
Сообщений: 880
10.02.2010, 14:17
Цитата Сообщение от Genius Ignat Посмотреть сообщение
А что такое бывает?
бывает и больше

Добавлено через 48 секунд
Цитата Сообщение от CheshireCat Посмотреть сообщение
Стоимости и сроков разработки.
Ой не скажите, не всегда
0
81 / 39 / 3
Регистрация: 29.01.2010
Сообщений: 386
10.02.2010, 14:18  [ТС]
Цитата Сообщение от Evg Посмотреть сообщение
Доступно объяснить человеку, зачем нужно писать set'ы и get'ы, когда можно напрямую обращаться к полям структуры без лишней писанины - таким образом ты не сможешь
как я понял - это удобно как правило не для тебя, а для людей которые с тобой работают.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21282 / 8307 / 637
Регистрация: 30.03.2009
Сообщений: 22,668
Записей в блоге: 30
10.02.2010, 14:19
Цитата Сообщение от @KOT@ Посмотреть сообщение
А скрытие - меня раздражает очень сильно. Но как я смотрю на больших проектах это также удобно (опять же показывает, что ооп удобно на крупных проектах), а также при доработки своей же программы через какой-то промежуток времени.
Скажем так: аккуратное написание объектов требует дополнительного времени (хотя бы потому, что букв получается больше). На на больших проектах потеря времени на лишние буквы как правило с лихвой компенсируется временем, сэкономленным на отладке. Если ты сделаешь вне методов класса запись в private поле, то у тебя уже всё сломается на этапе компиляции. А на Си можно потратить несколько дней, чтобы найти место, где какой-то идиот модифицировал поле структуры, в комментарии к которому написано, что его модифицировать нельзя (ну так, условно говоря)
1
Фрилансер
 Аватар для Black Fregat
3709 / 2083 / 567
Регистрация: 31.05.2009
Сообщений: 6,683
10.02.2010, 14:20
Вставлю и свои 5 копеек. Никто никому ООП не навязывает. Если Вам лично проще работать без ООП - флаг в руки. Чистая правда: можно обойтись вообще без ООП и сделать все тоже самое. Более того, можно напихать в свою программу чужих классов и использовать их, не беря от ООП больше ничего.

ООП - скорее инструмент проектирования, а не разработки. Если программа проста и вся держится в голове - флаг в руки. Вот когда взаимодействие сущностей становится не столь очевидным, ООП помогает избавиться от каши в собственной голове.

Лично у меня бывает, что первые итерации программы пишутся без всякого ООП. А вот по мере накопления функциональности приходит понимание структуры предметной области. И "плоский" код начинает переползать в создаваемые под эту структуру классы. Для собственного удобства.
4
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21282 / 8307 / 637
Регистрация: 30.03.2009
Сообщений: 22,668
Записей в блоге: 30
10.02.2010, 14:22
Цитата Сообщение от @KOT@ Посмотреть сообщение
как я понял - это удобно как правило не для тебя, а для людей которые с тобой работают.
Ну... в том числе и для тебя. Если в процессе отладки ты видишь поле private, то ты можешь понять, что за пределами твоего класса его никто не мог модифицировать, а потому не надо искать по всему проекту из миллиона файлов места, где могли бы туда что-то записать
0
556 / 510 / 25
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
10.02.2010, 14:25
теоретически можно ВСЕ в машинных кодах писать (ведь компилируется все в них в конце-концов!). когда-то даже занимался этими фокусами (типа с пульта машины в память набить нечто, что считает перфокарту и распечатает содержимое. позже - что на экране фокус нарисует и т.д.).
но когда люди начинают категорично ругать ооп (или любую другую технологию), у меня возникает подозрение, что они ее просто не поняли, не освоили, не попробовали. так человек утверждает, что ему лучше его самогона напитка нет, и ругает хорошие коньяки и вина, которых он никогда не пробовал и в перспективе позволить себе не сможет.
0
1261 / 799 / 108
Регистрация: 16.09.2009
Сообщений: 2,010
10.02.2010, 14:26
Evg:
Если 50% идиотов: на месте private внезапно может оказаться и public
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21282 / 8307 / 637
Регистрация: 30.03.2009
Сообщений: 22,668
Записей в блоге: 30
10.02.2010, 14:28
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от Black Fregat Посмотреть сообщение
Лично у меня бывает, что первые итерации программы пишутся без всякого ООП. А вот по мере накопления функциональности приходит понимание структуры предметной области. И "плоский" код начинает переползать в создаваемые под эту структуру классы. Для собственного удобства.
Это правильно. Когда я учился в институте, то один преподаватель рассказал. Сам он электронщик, разрабатывает цифровые устройства для компутеров. Большинство таких людей традиционно слабо разбираются в программировании - имеют некоторую базу, чтобы уметь оттестировать свой девайс, но программерского мышления нет. Он долго считал, что программист сядет и подумает, набросает в голове схему программы, а потом её реализовывает. В какой-то момент он начал наблюдать (для самообразования) за тем, как работаю программисты. Для него было большим открытием, что программист работает как художник. Художник обычно нарисует маленький фрагмент, отойдёт и посмотрит, как он выглядит. Потом другой фрагмент, опять отойдёт. Потом увидит, что вместе они не смотрятся, и поверх этого ещё раз перерисует. Так же и программист. Сначала что-то сделает и посмотрит, потом ещё сделает и посмотрит, потом когда ничаниает более-менее вырисовываться вся логика - начнёт всё это переделывать

Добавлено через 1 минуту
Цитата Сообщение от Genius Ignat Посмотреть сообщение
Evg:
Если 50% идиотов: на месте private внезапно может оказаться и public
Когда программу пишет большая группа, то подразумевается, что каждый человек программирует отведённый ему набор исходников, а не модифицирует какой попало файл
8
81 / 39 / 3
Регистрация: 29.01.2010
Сообщений: 386
10.02.2010, 14:30  [ТС]
Цитата Сообщение от Evg Посмотреть сообщение
Ну... в том числе и для тебя. Если в процессе отладки ты видишь поле private, то ты можешь понять, что за пределами твоего класса его никто не мог модифицировать, а потому не надо искать по всему проекту из миллиона файлов места, где могли бы туда что-то записать
Чем то напоминает константы. Но тем не менее значение и методом или get set можно изменить - какая разница?Хотя тут же сам отвечу на свой вопрос - get set позволяют проверить Правильность данных

Добавлено через 1 минуту
Цитата Сообщение от Evg Посмотреть сообщение
Художник обычно нарисует маленький фрагмент, отойдёт и посмотрит, как он выглядит. Потом другой фрагмент, опять отойдёт. Потом увидит, что вместе они не смотрятся, и поверх этого ещё раз перерисует. Так же и программист. Сначала что-то сделает и посмотрит, потом ещё сделает и посмотрит, потом когда ничаниает более-менее вырисовываться вся логика - начнёт всё это переделывать
Узнаю себя
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21282 / 8307 / 637
Регистрация: 30.03.2009
Сообщений: 22,668
Записей в блоге: 30
10.02.2010, 14:33
Цитата Сообщение от @KOT@ Посмотреть сообщение
Чем то напоминает константы. Но тем не менее значение и методом или get set можно изменить - какая разница?Хотя тут же сам отвечу на свой вопрос - get set позволяют проверить Правильность данных
В дополнение. Если нужно что-то найти поиском, то когда ищешь "SetX", найдёшь все места быстрее, чем когда ищешь просто "x" (потому что во птором случае будет куча локальных переменных, полей в других структурах и т.п.). Ты всегда можешь в отладчике поставить брейкпоинт на процедуру set - это намного проще, чем пытаться отловить точку, где произошла запись напрямую в твоё поле (адрес, куда реально идёт запись к тому же будет плавать от запуска к запуску)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.02.2010, 14:33

Стоит ли учить ООП в одно время с Яп
Добрый день! Начал активно изучать 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...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов. Логика кажется понятной: 1. Находим ключевые слова. 2. Добавляем их на. . .
Знание — сила: Доктрина интенциональности знаний, углубление в формулу
Hrethgir 01.08.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11957&stc=1&d=1785567302 Знаменитый афоризм Фрэнсиса Бэкона «Знание — сила» (Scientia potentia est) в массовой культуре принято понимать. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru