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

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

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

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

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

793
 Аватар для snake32
3586 / 1716 / 236
Регистрация: 26.02.2009
Сообщений: 8,672
Записей в блоге: 6
12.03.2011, 13:45
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Metal_666_ Посмотреть сообщение
Вот кстати сейчас читаю "совершенный код"
Для тех кто не скачал:
Заключение
Объекты предоставляют поведение и скрывают данные. Это позволяет
программисту легко добавлять новые виды объектов, не изменяя существующего
поведения. С другой стороны, объекты усложняют добавление нового поведения к
существующим объектам. Структуры данных предоставляют данные, но не
обладают сколько-нибудь значительным поведением. Они упрощают добавление
нового поведения в существующие структуры данных, но затрудняют добавление
новых структур данных в существующие функции.
Если в некоторой системе нас прежде всего интересует гибкость в добавлении
новых типов данных, то в этой части системы предпочтение отдается объектной
реализации. В других случаях нам нужна гибкость расширения поведения, и
тогда в этой части используются типы данных и процедуры. Хороший программист
относится к этой проблеме без предубеждения и выбирает то решение, которое
лучше всего подходит для конкретной ситуации.
0
Комбинатор
 Аватар для DenQ
980 / 252 / 13
Регистрация: 10.03.2010
Сообщений: 3,556
12.03.2011, 13:59
Зачем читать книги в которых трактуются "принципы"(полезность) ООП? ты попробуй сам, и оценишь, есть ли польза...
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21282 / 8307 / 637
Регистрация: 30.03.2009
Сообщений: 22,669
Записей в блоге: 30
12.03.2011, 14:24
Цитата Сообщение от snake32 Посмотреть сообщение
Для тех кто не скачал
Очень смахивает на правду. В каждом конкретном случае я могу сказать, что лучше использовать, но вот чтобы так обобщённо изложить мысль - у меня не получится.
0
0 / 0 / 0
Регистрация: 02.08.2013
Сообщений: 9
06.08.2013, 16:30
ООП (в частности та самая инкапсуляция) - это именно для увеличения скорости работы программ, ну и программиста. Сама концепция ООП – это просто развитие концепции функций. Часто ООП даётся как упавшая с неба данность в отрыве от того, что к этому привело, вот и кажется, что процедурное программирование и ООП противоречат друг другу. На самом же деле ООП – это всего лишь развитие понятия функции и более того, плотно поработав с функциями, вы в итоге сами изобретёте ООП. Более подробно и развёрнуто, как инкапсуляция возникает из работы с функциями описано здесь:

http://www.prointellekt.ru/ProgrOOP1.php

Рекомендую – сразу отпадут вопросы про private и public, а так же о том, когда имеет смысл применять ООП, а когда нет.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21282 / 8307 / 637
Регистрация: 30.03.2009
Сообщений: 22,669
Записей в блоге: 30
06.08.2013, 16:49
Цитата Сообщение от Newest Посмотреть сообщение
ООП (в частности та самая инкапсуляция) - это именно для увеличения скорости работы программ
Приведи, пожалуйста, пример, когда ООП (в частности инкапсуляция) даёт ускорение по отношению к программе без ООП

Добавлено через 5 минут
Цитата Сообщение от Newest Посмотреть сообщение
Почитал. Такое ощущение, что статью писал либо школоло, либо, что более вероятно, преподаватель, который на старости лет услышал слово "ООП", не разобрался, что это вообще такое, но уже учит этому других
1
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
06.08.2013, 17:45
Цитата Сообщение от Newest Посмотреть сообщение
это именно для увеличения скорости работы программ
http://lucacardelli.name/Paper... sOfOO.html
...
Let us now consider object-oriented languages, and see how they compare on these metrics.
  • Economy of execution. Object-oriented style is intrinsically less efficient that procedural style. In pure object-oriented style, every routine is supposed to be a (virtual) method. This introduces additional indirections through method tables and prevents optimizations such as inlining. The traditional solution to this problem (analyzing and compiling whole programs) violates modularity and is not applicable to libraries.
...
Цитата Сообщение от Newest Посмотреть сообщение
На самом же деле ООП – это всего лишь развитие понятия функции и более того, плотно поработав с функциями, вы в итоге сами изобретёте ООП.
Лол, почему не ФП?
0
0 / 0 / 0
Регистрация: 02.08.2013
Сообщений: 9
07.08.2013, 19:06
Цитата Сообщение от Evg Посмотреть сообщение
Приведи, пожалуйста, пример, когда ООП (в частности инкапсуляция) даёт ускорение по отношению к программе без ООП
Пример в указанной статье. Отказ от резервирования и уничтожения памяти внутри функции каждый раз при её вызове разве не увеличивает скорость программы? В этом и есть одна из фишек и целей инкапсуляции.

Цитата Сообщение от Evg Посмотреть сообщение
Почитал. Такое ощущение, что статью писал либо школоло, либо, что более вероятно, преподаватель, который на старости лет услышал слово "ООП", не разобрался, что это вообще такое, но уже учит этому других
Поконкретнее, пожалуйста, где в этой статье демонстрируется, что автор не разобрался в ООП?
0
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
07.08.2013, 19:14
Цитата Сообщение от Newest Посмотреть сообщение
Пример в указанной статье. Отказ от резервирования и уничтожения памяти внутри функции каждый раз при её вызове разве не увеличивает скорость программы?
Казалось бы, при чём здесь ООП?

Цитата Сообщение от Newest Посмотреть сообщение
В этом и есть одна из фишек и целей инкапсуляции.
Инкапсуляция к этому не имеет никакого отношения.

А автор все-таки школоло, если приводит такие аргументы.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21282 / 8307 / 637
Регистрация: 30.03.2009
Сообщений: 22,669
Записей в блоге: 30
07.08.2013, 19:27
Цитата Сообщение от Newest Посмотреть сообщение
Пример в указанной статье
В указанной статье поток сознания и огрызки кода. Приведи ПОЛНЫЕ примеры кодов с ООП и без ООП, из которых бы явно вытекало, что код с ООП работает быстрее.

Цитата Сообщение от Newest Посмотреть сообщение
Поконкретнее, пожалуйста, где в этой статье демонстрируется, что автор не разобрался в ООП?
Покажи мне хотя бы одно место в статье, где вообще речь про ООП идёт
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
07.08.2013, 22:25
Цитата Сообщение от Newest Посмотреть сообщение
Поконкретнее, пожалуйста, где в этой статье демонстрируется, что автор не разобрался в ООП?
Вообще во всей статье. От начала до конца.
0
0 / 0 / 0
Регистрация: 02.08.2013
Сообщений: 9
08.08.2013, 09:36
Цитата Сообщение от Nameless One Посмотреть сообщение
Казалось бы, при чём здесь ООП?


Инкапсуляция к этому не имеет никакого отношения.
Ну так инкапсуляция даёт удобный инструмент, чтобы делать это проще – разве нет?

Цитата Сообщение от Evg Посмотреть сообщение
Приведи ПОЛНЫЕ примеры кодов с ООП и без ООП, из которых бы явно вытекало, что код с ООП работает быстрее.
Ok, Ok – погорячился, признаю. Конечно, можно написать, пользуясь только функциями то же, что и на ООП и скорость на ООП будет не выше. В лучшем случае на ООП скорость будет такой же, как и в программе на функциях. В худшем случае ... (ну вы знаете). Однако, писать на функциях часто громоздко, не удобно, затратно по времени. ООП и инкапсуляция в частности убирает эти неудобства – это и демонстрирует статья на которую дана ссылка. Так что ООП в определённых ситуациях увеличивает лишь скорость разработки программ. Однако, часто увеличивает значительно (надеюсь тут спорить мало кто будет).


Цитата Сообщение от Evg Посмотреть сообщение
Покажи мне хотя бы одно место в статье, где вообще речь про ООП идёт
Термин инкапсуляция ничего не говорит? В статье показано, когда инкапсуляция удобна – позволяет уйти от функции с огромным количеством аргументов.


Цитата Сообщение от korvin_ Посмотреть сообщение
Вообще во всей статье. От начала до конца.
Надо же, как конкретно и аргументировано! Прямо всё по полочкам.


Про школоло скажу одну вещь – дружеский совет тем, кто это слово так любит. Ребята, вы палитесь этой фразой.
0
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
08.08.2013, 09:55
Цитата Сообщение от Newest Посмотреть сообщение
Ну так инкапсуляция даёт удобный инструмент, чтобы делать это проще – разве нет?
Чтобы делать проще что? «Отказ от резервирования и уничтожения памяти внутри функции»? Ты хоть определение инкапсуляции читал?

Кстати, статья написана так, как будто инкапсуляция возможна только в ООП-языках.

Цитата Сообщение от Newest Посмотреть сообщение
Про школоло скажу одну вещь – дружеский совет тем, кто это слово так любит. Ребята, вы палитесь этой фразой.
Ок, ты меня устыдил. *Сел делать уроки*
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
08.08.2013, 10:11
Цитата Сообщение от Newest Посмотреть сообщение
В статье показано, когда инкапсуляция удобна – позволяет уйти от функции с огромным количеством аргументов.
[sarcasm]О да, именно в этом и суть инкапсуляции.[/sarcasm]
Code
1
2
3
4
5
6
7
8
9
10
type Params struct {
    Foo int
    Bar string
    Gee []float64
}
 
func MyCoolProc(p *Params) {
    p.Foo = len(p.Gee)
    p.Bar = fmt.Sprint(p.Gee)
}
ущел от функции с огромным количеством параметров без всякой инкапсуляции.
0
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
08.08.2013, 10:18
korvin_, но ведь если заменить Gee на gee и использовать структуру в другом пакете, то это будет уже ИНКАПСУЛЯЦИЯ!!!11 И да, ты же нигде вручную память не выделяешь!

Шах и мат!
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
08.08.2013, 11:11
Цитата Сообщение от Newest Посмотреть сообщение
Надо же, как конкретно и аргументировано! Прямо всё по полочкам.
Ты и так уже слишком толст. Ну да ладно, вот еще немного корма:

Часто это из-за того, что у авторов нет чёткого понимания о том, что же такое ООП
Ну да, какой-то анонимус, не потрудившийся даже подписаться в своей "статейке" определенно знает ООП лучше, чем
доктор компьютерных наук Стэнфорда, старший архитектор по разработке ПО сначала Sun, а потом и IBM, Ричард Гэбриел
или лучше
Гая Стила, отца-разработчика языка Scheme, крупнейшего специалиста-теоретика по ООП, авторитет которого в американской академической среде непререкаем.
Так как если у нашего изображения, например, 100 столбцов, а мы попытаемся прочитать из памяти числа, там, где по нашему мнению 101 столбец, то прочитать-то мы эту память прочитаем
Как будто кроме проблемы Си -- это проблемы всех не-ООП языков.

Вот мы уже и подошли к первой идее ООП – к идее структуры.
Лол, структуры были до ООП, в том же Си.

Как известно структура является, по сути, предтечей класса и объединяет в себе данные разного типа.
Вообще нет.

В примере с изображением мы объединили данные типа массива и данные типа переменных – размеры массива.
Что вообще такое "данные типа переменных"?
Lisp
1
2
(defun image (pixels width height)
  (cons pixels (cons width height)))
Haskell
1
data Image = Image [[Pixel]] Int Int
Я объединил массив и его размеры без всякого ООП.

На это создание и уничтожение отвлекаются ресурсы компьютера, в итоге программа работает медленнее.
На создание и уничтожение данных на стеке тратится ничтожно малое количество ресурсов компьютера. Ну да собственно
C
1
2
3
4
int foo()
{
    static int temp_data = 0;
}
И никакого ООП.

Так же нам самим постоянно необходимо следить за тем предусмотрели ли мы в функции уничтожение временно созданных переменных или нет, ведь если не предусмотрели, то память компьютера при многократном вызове одной и той же функции достаточно быстро окажется “захламлённой”.
Выделение памяти на стеке? Не, не слышал. Автоматическая сборка мусора? Не, не слышал.

То есть, например, пусть каждый раз в функции написанной на c++ выделяется память следующим образом:
Ну и зачем там указатели? А про RAII автор тоже не слышал?

Таким образом, внутри функции F11() теперь не будут каждый раз создаваться и удаляться эти самые переменные. Таким образом, резервировать память для данной функции мы будем до её запуска единожды создав соответствующие переменные.
Не забывая при этом каждый раз их инициализировать? Еще наводящий вопрос: что будет, если теперь запустить эту функцию дважды в два потока?

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

Всё это прекрасно, но если нам необходимо огромное количество самых разнообразных промежуточных переменных, массивов и т.п. для работы функции?
Т.е. возвращаемся к началу -- создавать данные перед вызовом функции. Только вот на стеке они создаются значительно быстрее, чем в куче. Это просто

Ведь часто функция – это достаточно большая подпрограмма.
Декомпозируй на более мелкие. К.О.

Так вот, объединение данных и функций для их обработки в одной структуре (получившей название класса) – это и есть суть такого понятия, как инкапсуляция.
Нет, суть инкапсуляции в сокрытии внутренней реализации объекта или модуля.

И опять взаимоисключающие абзацы:
Класс – это такая форма организации кода, где под одним именем (идентификатором) находятся и данные и функции для их обработки.
Оказалось, что это оптимально, когда функции лишь выполняют наборы операций над данными, а описания данных и сами данные (память) для этих функций находятся в отдельном от функций месте.
Объект, к слову, – это конкретная реализация класса.
Объект -- это экземпляр класса, а не реализация.

Следующее понятие ООП – это полиморфизм. Здесь всё достаточно просто и это понятие есть, по сути, развитие такого явления, как перегрузка функций.
Перегрузка функций -- это и есть один из подвидов полиморфизма. И полиморфизм появился до ООП.

Ну и, наконец, наследование. Опять пример из обработки изображений. Пусть до нас кто-то создал класс для работы с изображениями. Нас этот класс полностью устраивает, однако нам бы хотелось, чтобы помимо тех возможностей по обработке изображений, что предоставляет данный класс, в нём появились бы дополнительные функции. Процедура наследования и позволяет создать наш собственный класс для работы с изображениями на основе существующего класса – наш класс унаследует все функции предыдущего, плюс мы туда добавим нужные нам функции. Вот и всё. Это очень удобно, так как нам нет необходимости повторять работу по разработке функций, которые уже существуют в уже созданном до нас классе. Мы эти функции просто наследуем создавая класс-наследник уже существующего класса.
И что из этого вытекает? Вот до меня кто-то создал процедуру:
C
1
2
3
4
void process(Image* x)
{
    // ...
}
Она что-то делает с числами, а я хочу расширить эту процедуру дополнительной обработкой. Пожалуйста:
C
1
2
3
4
5
6
void myProcess(Image* x)
{
    // ...
    process(x);
    // ...
}
И никакого ООП и наследования.

Что-то многовато получилось, смотри не лопни.

P.S. У автора оказывается есть еще статья про типы: http://www.prointellekt.ru/Progrint.php , слава богу короткая, но наверное поржать тоже можно.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21282 / 8307 / 637
Регистрация: 30.03.2009
Сообщений: 22,669
Записей в блоге: 30
08.08.2013, 11:43
Цитата Сообщение от Newest Посмотреть сообщение
Термин инкапсуляция ничего не говорит?
Говорит. Но на всякий случай тебя уведомлю, "инкапсуляция" и "ООП" - это вовсе не одно и то же

Цитата Сообщение от Newest Посмотреть сообщение
В статье показано, когда инкапсуляция удобна – позволяет уйти от функции с огромным количеством аргументов
В статье приведён абсолютно идиотский пример не из мира сего, про который с огромной натяжкой можно сказать, что он хоть как-то описывает инкапсуляцию. Но где же тут ООП?

Добавлено через 5 минут
Цитата Сообщение от korvin_ Посмотреть сообщение
P.S. У автора оказывается есть еще статья про типы: http://www.prointellekt.ru/Progrint.php , слава богу короткая, но наверное поржать тоже можно
Стремление объяснить другим то, что ты понял - похвально. Но при этом крайне желательно хорошо понимать то, что ты объясняешь. Автор, к сожалению, имеет слишком маленький опыт программирования, а потому статья вышла бредовой, а временами ещё и заведомо неправильной. Хотя тем, кто только начинает программировать, может оказаться полезной, но при этом требуется оговорка, что не надо понимать в буквальном смысле написанное
0
0 / 0 / 0
Регистрация: 02.08.2013
Сообщений: 9
08.08.2013, 21:14
Цитата Сообщение от Nameless One Посмотреть сообщение
Чтобы делать проще что? «Отказ от резервирования и уничтожения памяти внутри функции»? Ты хоть определение инкапсуляции читал?
Пользуясь инкапсуляцией можно оказаться от резервирования и уничтожения памяти внутри функции. При этом ваши данные могут быть защищены так же, как если бы вы резервировали под них память внутри функции. И делается это очень просто. Вы будете с этим спорить?


Цитата Сообщение от korvin_ Посмотреть сообщение
[sarcasm]О да, именно в этом и суть инкапсуляции.[/sarcasm]
Code
1
2
3
4
5
6
7
8
9
10
type Params struct {
    Foo int
    Bar string
    Gee []float64
}
 
func MyCoolProc(p *Params) {
    p.Foo = len(p.Gee)
    p.Bar = fmt.Sprint(p.Gee)
}
ущел от функции с огромным количеством параметров без всякой инкапсуляции.

В этом примере ваши данные, что подаются на вход функции, может менять ещё кто-то кроме этой функции. В примере из статьи, описав в классе данные, как private вы получите доступ к этим данным только из функции класса.


Цитата Сообщение от korvin_ Посмотреть сообщение
Ну да, какой-то анонимус, не потрудившийся даже подписаться в своей "статейке" определенно знает ООП лучше, чем или лучше
Блин, подписи и авторитеты – это ведь так важно! Вы прямо, как тот эстет, который заявляет типа того, что: как можно судить о музыке, если вы не знаете биографию композитора и то насколько этот композитор авторитетен.

Цитата Сообщение от korvin_ Посмотреть сообщение
Как будто кроме проблемы Си -- это проблемы всех не-ООП языков.
При чём тут те или другие языки. Тут не агитация за или против чего-то, тут попытка объяснить одно из явлений некоторых языков.

Цитата Сообщение от korvin_ Посмотреть сообщение
Автоматическая сборка мусора? Не, не слышал.
Ага, сборщик мусора ваще не занимает ресурсы. Речь ведь здесь идёт о том, чтобы код был побыстрее, а вы про сборщик мусора … Ну-ну …

Цитата Сообщение от korvin_ Посмотреть сообщение
Ну и зачем там указатели? А про RAII автор тоже не слышал?
Не ну конечно, раз есть RAII и куча всего ещё, то надо было в статье изобразить все варианты выделения памяти. А может там чего ещё, кроме RAII не описано? Ну так вы не стесняйтесь, ведь есть ещё куча прекрасных вещей, которые вы можете упомянуть, там, например, ну ваще ничего несказанно об ассемблере, о том, как устроен компьютер. Эх, вот ведь недоработка!

Цитата Сообщение от korvin_ Посмотреть сообщение
Не забывая при этом каждый раз их инициализировать? Еще наводящий вопрос: что будет, если теперь запустить эту функцию дважды в два потока?
Про два потока – туда же. Мы можем ещё кучу прекрасных вещей упомянуть никак не связанных с этим примером. Однако это несколько уход в сторону – вы не находите?

Цитата Сообщение от korvin_ Посмотреть сообщение
А указатели ничего в памяти не занимают, да?
Вам про то, что не надо внутри функции каждый раз выделять и чистить память при её запуске, что память занимается до запуска функции, а вы про то, что указатели занимают в памяти место. Так, что опять мимо темы.

Цитата Сообщение от korvin_ Посмотреть сообщение
Нет, суть инкапсуляции в сокрытии внутренней реализации объекта или модуля.
Ну, наконец-то! А не про это ли в данной статье, а не там ли говорится о private, который нужен для того, чтобы функция работала с данными так, как если бы они были созданы внутри функции. Ведь сокрытие есть и для переменных созданных внутри функции. Так нет, нам этого сокрытия недостаточно. Мы создаём класс, где функция и данные для её работы отдельно. Так, что суть инкапсуляции далеко не только в сокрытии, а и в разделении данных и того, что с этими данными работает.

Цитата Сообщение от korvin_ Посмотреть сообщение
Перегрузка функций -- это и есть один из подвидов полиморфизма. И полиморфизм появился до ООП.
Батенька, ау, разве не то же самое в статье написано: Следующее понятие ООП – это полиморфизм. Здесь всё достаточно просто и это понятие есть, по сути, развитие такого явления, как перегрузка функций.

Цитата Сообщение от Evg Посмотреть сообщение
Говорит. Но на всякий случай тебя уведомлю, "инкапсуляция" и "ООП" - это вовсе не одно и то же
... Но где же тут ООП?
А кто говорит, что это одно и то же? Однако инкапсуляцию принято считать одним из принципов ООП. Хочешь, не хочешь, а без неё ООП не считается ООП. Поэтому описывать инкапсуляцию для ознакомления с ООП просто необходимо.

Цитата Сообщение от Evg Посмотреть сообщение
Хотя тем, кто только начинает программировать, может оказаться полезной, но при этом требуется оговорка, что не надо понимать в буквальном смысле написанное
Ну дык, сразу было сказано, что статья для введения в курс дела, чтобы показать, что принципы ООП не падают с неба и чтобы начинающих в связи с этим чувствовали бы себя посвободнее.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21282 / 8307 / 637
Регистрация: 30.03.2009
Сообщений: 22,669
Записей в блоге: 30
08.08.2013, 21:20
Цитата Сообщение от Newest Посмотреть сообщение
В примере из статьи, описав в классе данные, как private вы получите доступ к этим данным только из функции класса
Детская наивность и вера во всё светлое...

Цитата Сообщение от Newest Посмотреть сообщение
Однако инкапсуляцию принято считать одним из принципов ООП. Хочешь, не хочешь, а без неё ООП не считается ООП. Поэтому описывать инкапсуляцию для ознакомления с ООП просто необходимо
Т.е. ты уже перестаёшь утверждать, что статья была про ООП?

Цитата Сообщение от Newest Посмотреть сообщение
Ну дык, сразу было сказано, что статья для введения в курс дела, чтобы показать, что принципы ООП не падают с неба и чтобы начинающих в связи с этим чувствовали бы себя посвободнее
Вообще-то я писал про другую статью (о базовых типах)
0
0 / 0 / 0
Регистрация: 02.08.2013
Сообщений: 9
08.08.2013, 21:31
Цитата Сообщение от Evg Посмотреть сообщение
Детская наивность и вера во всё светлое...
Ну дык и данные образованные внутри функций не такие уж и закрытые, так ведь речь не об этом.

Цитата Сообщение от Evg Посмотреть сообщение
Т.е. ты уже перестаёшь утверждать, что статья была про ООП?
А разве когда я описываю то из чего состоит некое явление, то я не описываю это самое явление хотя бы частично.
Поэтому нет - не перестаю.

К тому же сама тема этой ветки форума - вопрос, где лучше применять ООП, а где можно и без него. Статья в принципе отвечает на этот вопрос.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21282 / 8307 / 637
Регистрация: 30.03.2009
Сообщений: 22,669
Записей в блоге: 30
08.08.2013, 21:46
Цитата Сообщение от Newest Посмотреть сообщение
Ну дык и данные образованные внутри функций не такие уж и закрытые, так ведь речь не об этом.
А о чём?

Цитата Сообщение от Newest Посмотреть сообщение
А разве когда я описываю то из чего состоит некое явление, то я не описываю это самое явление хотя бы частично
Т.е. если я напишу статью про автомагнитолы или про автомобильные освежители воздуха, то я смело могу назвать статью "Устройство автомобиля"?

Цитата Сообщение от Newest Посмотреть сообщение
Поэтому нет - не перестаю.
Тогда ещё раз - покажи мне хотя бы один пример на ООП, вытекающий из той статьи, из которого очевидным образом было бы видно, что ООП это немеренно круто

Цитата Сообщение от Newest Посмотреть сообщение
К тому же сама тема этой ветки форума - вопрос, где лучше применять ООП, а где можно и без него. Статья в принципе отвечает на этот вопрос.
Статья вообще не про ООП.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.08.2013, 21:46

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


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

Или воспользуйтесь поиском по форуму:
300
Ответ Создать тему
Новые блоги и статьи
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
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
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru