LINUX.ORG.RU

В чём суть ООП?


3

5

С точки зрения манеры проектирования, а не особенностей реализации С++ там CLOS. Вот например я использую определения классов и даже иногда наследование как узнать пишу ли я в ООП стиле?

★★★★★

Последнее исправление: ados (всего исправлений: 1)

Ты так спрашиваешь, словно книг по приемам ООП в природе не существует.

mono ★★★★★
()
Ответ на: комментарий от Kindly_Cat

Приёмы ООП умещаются в твиттер

Не стал бы утверждать так, конечно, при определенных трактовках «Приёмы ООП», возможно. Но все таки, ООП - парадигма программирования, поэтому комплексное описание философии и того, что следует из нее, явно пойдет не на одну книгу.

anonymous
()

Все остальное не нужно, используется только в жарких спорах теоретиков и дальше хеловорд обычно не заходит.

ilovewindows ★★★★★
()
Ответ на: комментарий от Kindly_Cat

Книга нужна, чтобы более лучше понять те приемы, что «умещаются в твиттер», и как их применять на практике.

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

mono ★★★★★
()

man Smalltalk

ООП — это в первую очередь абстракция. Абстракция типа «черный ящик». Представьте, что у вас есть подчиненный и вы просите его что-нибудь сделать, при этом вам не важно, как он будет это делать. Ваши просьбы при этом могут быть абсолютно произвольными.

Кроме того, здесь важно понять, что вы не «вызываете метод», заставляя объект что-то сделать, а «посылаете сообщение» с вежливой просьбой что-либо сделать.

Оно нужно, если ваша задача удобно ложится на такие абстракции.

buddhist ★★★★★
()

несколько утрируя: если ты работаешь со своим кодом исключительно по фиксированным интерфейсам (и редко когда можешь сказать статически, что же за код будет реально вызван), то скорее всего ты пишешь именно в ООП стиле

динамическая диспетчеризация, вот в чём соль

jtootf ★★★★★
()
Ответ на: комментарий от KRoN73

Только дискретная логика, только хардкор.

anonymous
()
Ответ на: комментарий от KRoN73

Ну шутка же. А вообще, сочетание данных и методов тоже очень важно

Zorn
()

Если задаете такие вопросы - то значит ООП вы не используете ;)

qrck ★★
()

Еще задолго до появления Smalltalk Алан Кей сформулировал три фундаментальных принципа объектно-ориентированного программирования:

  • Объект - базовая единица объектно-ориентированной системы.
  • Объекты могут обладать состоянием.
  • Посылка сообщения - единственный способ обмена информацией между объектами.

http://www.smalltalk.ru/articles/smalltalk.html

ringill
()

ООП? это такое новое название для «модули и интефейсы»?

amaora ★★
()
Ответ на: комментарий от Zorn

Не во всех языках она есть, не так ли? Есть разве в C++?

А механизм виртуальных функций по твоему что?

m0rph ★★★★★
()
Ответ на: комментарий от ringill

Он провел аналогию с живым организмом, состоящим из клеток, которые обмениваются между собой информацией только посредством посылки сообщений.

Традиционный организм представляет множество клеток различных типов, и имеет различные ткани работы с ними – клетки нервные и клетки крови, мышечная, костная ткани, эпителий, желудочный сок, пещеристые тела и т.д. Такое разнообразие вносит излишнюю сложность, затрудняет изучение и препятствует хорошей масштабируемости.

Deleted
()

Binding behavior to references

Ты пишешь в ООП стиле, если защищаешь данные путем сокрытия за публичными методами.

dizza ★★★★★
()
Ответ на: комментарий от buddhist

при этом вам не важно, как он будет это делать

В случае с ООП С++ нам ещё не важно и что он будет делать.

PolarFox ★★★★★
()
Ответ на: комментарий от user0

Наследование, полиморфизм, инкапсуляция

Никогда не мог понять, почему для этого нужно прибивать фун^Wметоды к данным.

anonymous
()
Ответ на: комментарий от Zorn

у вас гном написан в стиле ООП на лысых сях.

Deleted
()
Ответ на: комментарий от Zorn

Я не так хорошо знаю C++, не знаю, как они работают и что это.

Виртуальная функция - это функция, которая может быть переопределена (замещена) в классе потомке. При этом какая именно реализация должена быть вызвана при работе через интерфейс базового класса, определяется только во время выполнения программы - т.е. это и есть механизм динамической диспетчеризации методов.

m0rph ★★★★★
()
Ответ на: комментарий от drBatty

наследование порождает кучу проблем, прототипирование, подмешивание удобнее. Другое дело что для некоторых это сложно вот они и «добавляют ООП в javascript».

Deleted
()
Ответ на: комментарий от Deleted

наследование порождает кучу проблем

расскажи мне пожалуйста, каким образом в C++ мне реализовать полиморфизм и абстракцию, без наследования от абстрактных базовых классов?

drBatty ★★
()
Ответ на: комментарий от Zorn

Я не так хорошо знаю C++, не знаю, как они работают и что это.

виртуальная функция == отправка сообщения какому-то объекту.

drBatty ★★
()
Ответ на: комментарий от drBatty

Реализовывать ООП через макросы может и можно...

На этой фразе в тред врывается вся орда лоровских лисперов, гикая и стреляя из имакса в воздух. Наступает </thread>.

Но я не хочу.

Ты спросил, я ответил.

LamerOk ★★★★★
()
Ответ на: комментарий от LamerOk

На этой фразе в тред врывается вся орда лоровских лисперов, гикая и стреляя из имакса в воздух. Наступает </thread>.

та мне пофиг до этих марсиан. Да они у меня все в игноре вроде.

drBatty ★★
()
Ответ на: комментарий от LamerOk

На этой фразе в тред врывается вся орда лоровских лисперов, гикая и стреляя из имакса в воздух. Наступает </thread>.

Он вроде имел в виду макросы препроцессора C(++), поэтому должны ворваться фанаты GTK с Gedit'ом(?).

korvin_ ★★★★★
()

В недостающей первой букве.

soomrack ★★★★
()
Ответ на: комментарий от Zorn

Есть разве в C++?

эм. а виртуальные функции-члены там зачем?

jtootf ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.