LINUX.ORG.RU

понять суть ООП

 ,


5

1

собственно САБЖ подскажите что почитать/посмотреть, чтобы вникнуть в предметную область. Понимаю, что пишу как-то не так, ибо передаю методам кучу параметров и почти не использую свойств.

★★★★★

Последнее исправление: cetjs2 (всего исправлений: 2)
Ответ на: комментарий от unt1tled

Да у тебя троллефобия... и часто тебе тролли мерещатся? Хочешь поговорить об этом? ... я у тебя спросил, вполне конкретный вопрос, ты сам его инициализировал, а в ответ я слышу херню про «неокрепшую психику», «простреленных ног» и тп и тд. То есть ни какой конкретики. Зачем тогда было начинать?

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

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

//fixed

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

Кто, КТО, вернет мне тысячную долю секунды времени моей жизни, КТО я тебя спрашиваю, а?

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

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

Ничего я не начинал. Я сказал как есть, те кто «знает C++» тоже это знают и спрашивать глупые вопросы не станут. О том, что плюсы могут научить плохому повествует хотябы энное кол-во книл типа «как писать хороший код на C++». Говорит само за себя, правда?
Хочешь ответа - вот тебе один: множественное наследование. Щас пойдут вопросы типа «ну-ка ну-ка расскажи чем тебе МН не угодило?», на них просто не хочу отвечать, сходи в вуз, там спроси.

unt1tled ★★★★
()
Последнее исправление: unt1tled (всего исправлений: 1)
Ответ на: комментарий от AIv

А вот передергивать не надо. Числодробилки - это отдельная тема и в эту тему вообще никаким боком не влазиют.

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

дело не в языке...какой бы язык ни был, не главное ли понимание структуры программы? То есть, что взять за класс, какие выделить методы и свойства, и как организовать иерархию? Мне важно понять именно принципы ООП.

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

А я вот не знаю и мне это интересно, а твой ответ на отстань. Я как раз занимаюсь изучением плюхи и мне интересны его минусы. Но, от тебя вменяемого ответа, я как понимаю не услышу.

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

А вот передергивать не надо.

А вот не надо писать таких категоричных глупостей - и не будут передергивать;-)

Числодробилки - это отдельная тема и в эту тему вообще никаким боком не влазиют.

В какую эту? В ООП? Вполне себе влазят.

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

В данном случае дело и в языке тоже. Есть языки, которые учат хорошему стилю и практикам изначально. Ява - один из них (имхо лучший).
Начинай отсюда http://docs.oracle.com/javase/tutorial/java/concepts/

Также написано много учебников с изучением ооп и явой в качестве примеров.

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

О том, что плюсы могут научить плохому повествует хотябы энное кол-во книл типа «как писать хороший код на C++»

Полностью согласен. Плюсы ужасный ЯП, и писать на нем хороший код сложно, поэтому такие книги и выходят. Вся беда в том, что на многих ЯП (например фортране) писать хороший код НЕВОЗМОЖНО.

К сожалению, для целого ряда задач, альтернативы плюсам пока нету.

AIv ★★★★★
()

спасибо всем причастным!

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

Так может, это не в языке дело? Это как все кричат про ПХП, что он плохой язык, потому, что... школоло на нем плохо пишет. Занавес. Так и тут. С++ плохой, потому что на нем надо писать правильно.

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

А вот не надо писать таких категоричных глупостей - и не будут передергивать;-)

Это не глупости, это сегодняшние реалии. Академики вообще не смотрят на те 20% с которых все началось и пишут абстракции на прологах/хацкелях.

В какую эту? В ООП? Вполне себе влазят.

в «понять суть ооп»

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

как это можно в с++ с указателями

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

java более допиленная

11 стандарт сильно поменял ситуацию

Но С++ красивее.

но вот это как было враньем, так и осталось

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

Так и тут. С++ плохой, потому что на нем надо писать правильно.

с++ плохой, потому что на для того, чтобы на нём писать правильно, нужно потратить дохрена времени, и не далеко не факт, что это оправдает себя.

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

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

Холиварненько) Какие тогда есть альтерантивы? Чтобы было платформо-независимым конечно.

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

на спичках экономия

А где-то далеко-далеко на Плюке спички это главная ценность. Я о том что для хелловорлда 20 процентов и не важно, а в каких то крупных проектах стремятся ускорить работу системы, радуясь и 5%

comp00 ★★★★
()

ООП начинается с задач, и разбиение задачи на сущности и обьекты

если у вас нет задач для решения, то тупо читать какие то книги - толку не будет

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

ООП — это когда состояние и функции с ним связанные таскаются рядом. Остальное — свистоперделки.

Плюсую, а то, не давая четкого определения, лепят из ооп чуть ли не абстракцию (уровня инкапсуляции etc), а де факто - всего лишь один из подходов.

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

!!!Прочитай это сообщение очень внимательно!!!

Сначала научись читать не по диагонали и понимать прочитанное. Может после этого такие как я начнут приносить тебе пользу в своих коментариях.

Так и тут. С++ плохой, потому что на нем надо писать правильно.

Никто (не я уж точно) не говорил, что плюсы плохие. Я сказал, что он может ТОПИКСТАРТЕРА научить плохому. Из твоих постов было ясно, что ты знаком с языком.

«неокрепшую психику», «простреленных ног» и тп и тд. То есть ни какой конкретики. Зачем тогда было начинать?

Научить плохому С++ может именно потому, что там можно стрелять себе в ноги. В ява - нельзя. Это и есть конкретика, которую я имел в виду.

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

В «понять суть ООП» ЯП вообще не имеет значения.

Имеет. ООП надо изучать на языке, который кроме этого самого ООП никаких парадигм не проповедует, а уж темболее отступов :D

unt1tled ★★★★
()

Парадигмы ООП:

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

В современных ООП-языках все парадигмы понимаются по-своему. Единства реализации нет.

Механизм обмена сообщениями между объектами извращён до неузнаваемости.

iZEN ★★★★★
()
Последнее исправление: iZEN (всего исправлений: 1)
Ответ на: комментарий от unt1tled

Я как раз прочитал все правильно. Это у тебя, хорошее учит плохому. Парадокс.

Из твоих постов было ясно, что ты знаком с языком.

Лично С++ сейчас изучаю. Поэтому и спрашиваю.

Научить плохому С++ может именно потому, что там можно стрелять себе в ноги. В ява - нельзя. Это и есть конкретика, которую я имел в виду.

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

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

Суть таже, похапе/с++/другой ЯП плохой, потому что руки крюки у программиста. Как то так, это все звучит.

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

Это у тебя, хорошее учит плохому. Парадокс.

Плюсы не хороши и не плохи. Это инструмент. Сложный, профессиональный, поэтому плох для «зеленых».

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

Ты все правильно понял. К слову: любой большой проект на любом языке монструозен и требует гигабайты памяти. На яве пишутся именно большие и мощные вещи, потому что похоронить все (под грудами говна из плюсов) гораздо сложнее.

unt1tled ★★★★
()

Уважаемый топикстартер. Ты выбрал не совсем подходящий ресурс для того, чтобы «понять суть ООП». Вернее, совсем не подходящий.

Дело в том, что /development/ ЛОРа не является сообществом профессиональных разработчиков. Профессионалы (то есть те, кто владеет технологиями на высоком уровне и зарабатывает на жизнь разработкой ПО) здесь в подавляющем меньшинстве и, я бы сказал, на птичьих правах. Абсолютное большинство — это тролли, диванные теоретики, доморощенные гуру, форумные трепачи, лисперы, хаскелисты и прочие ёбнутые на голову адепты маргинальщины, фрики, школьники, хипсторы, петросяны, IT-эзотерики, IT-шарлатаны, IT-небыдло и так далее. Здесь в воздухе густо пахнет мамкиным борщом и нонконформизмом. Здесь модно поливать говном все практические, промышленные технологии и подходы (к которым, несомненно, относится и ООП). Поэтому вместо экспертного мнения ты получишь здесь 100500 тонн говна на ООП и 9000 советов учить лисп, хаскель, Smalltalk, Brainfuck, Agda2 и Coq. Разве это то, чего ты хочешь?

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

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

дело не в языке...какой бы язык ни был, не главное ли понимание структуры программы? То есть, что взять за класс, какие выделить методы и свойства, и как организовать иерархию? Мне важно понять именно принципы ООП.

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

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

В современных ООП-языках все парадигмы понимаются по-своему. Единства реализации нет.

Это не совсем верно. В промышленных или «мейнстрим» языках (Java, C++, C#) единство есть. Python пытается их догнать, и, надо сказать, небезуспешно. Несколько особнячком стоят JavaScript и Ruby. По-настоящему «нет единства» только в маргинальных языках, но они, разумеется, не заслуживают внимания.

Механизм обмена сообщениями между объектами извращён до неузнаваемости.

Но ведь это был ранний, экспериментальный и наивный подход к реализации ООП. Он выполнил свою функцию и отжил своё. Его заменили более эффективными решениями. Что не так?

anonymous
()

а я то думал что сейчас с этими знаниями рождаются

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

Плюсы не хороши и не плохи. Это инструмент. Сложный, профессиональный, поэтому плох для «зеленых».

Смотри, еще немного и будешь говорить противоположное. Но сложный и плохой, это разве синонимы?

Ты все правильно понял. К слову: любой большой проект на любом языке монструозен и требует гигабайты памяти. На яве пишутся именно большие и мощные вещи, потому что похоронить все (под грудами говна из плюсов) гораздо сложнее.

Ха. Это смешно читать. Ото, все что пишется на яве глючное, тяжелое и медленное. Спасибо, я буду теперь знать почему. Потому, что программисту лень писать правильно и он пишет как попало на яве.

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

опять все переврал, попетросянил и продолжил флеймить
уйди, ты скучный

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

для хелловорлда 20 процентов и не важно

с нынешними скоростями - почти нигде не важно, за исключением, разве что, числодробилок разного рода

а в каких то крупных проектах стремятся ускорить работу системы, радуясь и 5%

про корень всех зол слышал?

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

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

далеко не всё. Можешь, например, на tuxguitar посмотреть

Но зато, ничего плохому не научит.

а в первом классе учат вместо умножения складывать, экие негодяи!

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

Нет, ява в итоге уступает гораздо больше. Да и язычок убогонький. В восьмерке еще ничего так будет, но все-равно. Когда пишешь на нем, чувствуешь себя обезьянкой в клетке... Когда изучал ява отвратила уже хелловорлдом.

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

Когда изучал ява отвратила уже хелловорлдом.

Когда папуас пытался изучить английский, он его отвратил уже фразой «My name is Makatumba».

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

Нет, С++ нормальный язык. То что лично вы пишете врайтонли код говорит лишь о вашем неосиляторстве и не очем более. Ну или просто сказок наслушались. Пишите на ява - ваш уровень не позволяет давать вам в руки полноценные инструменты.

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

далеко не всё. Можешь, например, на tuxguitar посмотреть

Большинство. А этого хватит. Да и пример плохой, редактор простенький.

а в первом классе учат вместо умножения складывать, экие негодяи!

Умножение по сути и есть складывание.

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

Большинство

это не все

редактор простенький.

почти на уровне guitar pro (ну, не считая синтеза), а жрёт сравнимо

Умножение по сути и есть складывание.

сложи мне π×e

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