LINUX.ORG.RU

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


3

5

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

★★★★★

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

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

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

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

anonymous ()

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

ilovewindows ★★★★★ ()

Настало время сделать функция в функции функции..

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

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

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

mono ★★★★★ ()

как узнать пишу ли я в ООП стиле?

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

user0 ()

man Smalltalk

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

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

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

buddhist ★★★★★ ()

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

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

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

инкапсуляция

Нужно! Можно обойтись одними замыканиями, а ООП не нужон!!11

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

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

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

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

Можно обойтись одними замыканиями

Можно обойтись машинными кодами.

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

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

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

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

Zorn ()

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

qrck ★★ ()

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

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

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

ringill ()

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

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

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

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

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

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

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

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

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

Deleted ()

Binding behavior to references

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

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

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

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

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

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

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

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

Не могли бы вы удосужить нас более развёрнутым ответом?

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

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

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

Еще задолго до появления Smalltalk Алан Кей...

А как же Simula?

Simula is considered the first object-oriented programming language.

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

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

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

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

Наследование, ... , инкапсуляция

Не нужно.

зачем тебе ООП?

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

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

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

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

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

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

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

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

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

Через шаблоны.

шаблоны - те же макросы(в C++). Реализовывать ООП через макросы может и можно... Но я не хочу.

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

шаблоны - те же макросы(в C++)

o_O' фигасе сравнил.

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

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

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

Но я не хочу.

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

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

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

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

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

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

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

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

кто сказал что язык без утиной типизации хорош?

Deleted ()

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

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

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

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

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