помогите врубиться в ООП

kopipast

Новичок
помогите врубиться в ООП

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

если есть возможность, буду очень признателен за пример тут. с объяснением, почему это что-то лучше сделать на классах с ОО подходом...
 

Духовность™

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

Начни с Буча http://www.helloworld.ru/texts/comp/other/oop/ch01.htm
 

kopipast

Новичок
triumvirat
благодарю за наводку и рекомендацию, попробую Буча.

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

whirlwind

TDD infected, paranoid
Ну если вкратце, то разница между процедурным и оо-программированием примерно такая-же, как между программированием с goto без функций и процедурным программированием. ООП не дает преимуществ в языке, оно дает преимущества в архитектуре.
 

440hz

php.ru
ООП лежит вокруг тебя и в самом тебе. это объекты, их свойства и методы взаимодействия объектов с окружением.

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

единственно, что надо понимать за красотой ООП, это то, что оно ориентированное, но не обязательное.
 

craz

Нестандартное звание
Автор оригинала: triumvirat
В сети тысячи разных документов, описывающих ответы на твои вопросы. Обосновывать пользу ООП человеку, не писавшему на ООП, невозможно. Да и никто не будет этого делать, ибо это тема не имеет конца и на каждоеотдельное мнение может быть аргумент.

Начни с Буча http://www.helloworld.ru/texts/comp/other/oop/ch01.htm
вы не часто бываете не правы, этот тот самый нечастый случай)


обосновать
1) можно что угодно и кому угодно
2) ООП проще поддерживать - все обоснование

-~{}~ 31.07.10 14:03:

Автор оригинала: 440hz
ООП лежит вокруг тебя и в самом тебе. это объекты, их свойства и методы взаимодействия объектов с окружением.

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

единственно, что надо понимать за красотой ООП, это то, что оно ориентированное, но не обязательное.
+100!

пример:

Задача запрограммировать кошку

class cat {
function pssh(){ //учим кошку делать пшш
return "pshh";
}
}
class tiger extends cat{
function pssh(){
return "rrrrrrrrr";
}
}
$smallCat = new cat;
$tiger = new tiger;
echo $smallCat->pssh; //pssh
echo $tiger->pssh; //rrrrrrrrr

-~{}~ 31.07.10 14:10:

вот попробуйте это написать функционально?
 

Adelf

Administrator
Команда форума
>> попробую Буча.

Неужели там мало примеров было? :)
 

fixxxer

К.О.
Партнер клуба
>>функционально

как, простите?

p.s. я запросто тебе изображу объектный код на процедурном C.
 

craz

Нестандартное звание
Автор оригинала: fixxxer
>>функционально

как, простите?

p.s. я запросто тебе изображу объектный код на процедурном C.
мне? изобразите

-~{}~ 31.07.10 14:45:

когда вы это сделаете будет проще обьяснить плюсы ООП
 

kopipast

Новичок
craz
благодарю, уже ближе - стало гораздо понятнее!
теперь нужно немного усложнить задачу, чтобы совсем стало ясно? :)

вводим шерсть, ноги, уши, хвост, размер в cat
и в tiger переопределяем размер?

получается, что это оптимизированный функциональный подход?

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

craz

Нестандартное звание
нет, я переопределил одну функцию которая у разных объектов будет просто разное но есть функции которые одинаковы, к примеру

class animal {
protected _legs = 4;
function getLegs(){ //сколько ног у животных
echo $this->_legs;
}
}
class cat extends animal{
...
}
$cat = new cat;
$cat->getLegs;//4
$tiger = new tiger;
$tiger->getLegs;//
могу посоветовать книгу которая объяснит ну просто все что вас интересует, "PHP5 для профессионалов".
у тигра будет доступна родительская функция так же.

Нет не сложно, смотрите пример из реальности

у вас есть некий наобор функция класса для работы с базой данных class DB, класс абстрактный птому что может работать с любой существующей базой данных через свой функционал,

наследуем от него class Mysql_DB extends DB{} Mssql_db extend DB{}
и соответвенно настройкам и базе данных которая подключена в данный момент мы вызываем те или иные методы работы с бозой данных того или иного класса.

Я могу их придумывать до бесконечности, вам же главное понять, вся работа программиста это работа с объектами реального мира, на которых с помощью языка программирования накладываеться та или иная логика. Логику накладывать можно разными способами можно как вы процедурно/функционально, а можно с применением подхода наиболее логично описывающего сущности реального мира. воть))


ну и еще скажу зачем нужно ООП, если подход есть к нему подключаются люди, они начинаю писать что-то свое, ООП позволяет использовать такие вещи наиболее удобным способом через API

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

HraKK

Мудак
Команда форума
Я бы Буча не советовал бы новичку.

-~{}~ 31.07.10 15:49:

ну и еще скажу зачем нужно ООП, если подход есть к нему подключаются люди, они начинаю писать что-то свое, ООП позволяет использовать такие вещи наиболее удобным способом через API
бред
 

kopipast

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

никто никому ничего не должен, но раз уж участвуете в топике, нужно опытом делиться более развёрнуто. да не оскудеет рука (голова) дающего ;)

HraKK, раз так, может можно было и не писать ничего?
 

С.

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

craz

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

никто никому ничего не должен, но раз уж участвуете в топике, нужно опытом делиться более развёрнуто. да не оскудеет рука (голова) дающего ;)

HraKK, раз так, может можно было и не писать ничего?
Дайте ему поффтопить)) любит человек если)


Он имел ввиду, что бред это,то что не фик свое писать мне кажеться насколько я этого человека наю по форму,

то есть он считает что писать надо свое а не чужим пользоваться, ибо чужое глючное не удобное, я бы честно сказать присоеденился на все 100% к этой точке зрения, если бы господин HraKK написал бы свою операционку... а то ведь пользуется чужой..

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

Но свое писать надо, но надо иметь уровень как у HraKK опять же. Без этого нет смысла садиться и пытаться писать свой фреймворк.

-~{}~ 31.07.10 17:32:

Автор оригинала: С.
Мне немного не ловко тебя разочаровывать, но источник, к которому ты прильнул, находится несколько ниже пояса. Очень жаль, что он не оскудевает.
вы только что назвали форум ногами?))))))))))))))))
 
Сверху