ООП

critrate

Registered
Здравейте съфорумници.

Наскоро забелязах това ,което трябваше да забележа преди време ..
останал съм с ламерските методи за писане на PHP код още от преди 3-4 години.Не използвам функции,класове,не съм си и помислял да започна да пиша в стил OOП.Но снощи ми просветна,че вместо да тъпча на едно место с моите знания,искам да се запозная с ООП.

Какво е вашето мнение за ООП и ако може бихте ли ми препоръчали някакви уроци?

.Благодаря ви предварително :)
 
Еми улеснява голяма част от кода

Аз с тези започнах http://nau4i.me/jupgrade/index.php/php2/12-oop
 
Да благодаря ти .Аз за сега започнах със същите уроци ,но за функции и след 1-2 дена ще почна тези за ООП,но както гледам много малко юзъри питат за нещо свързано с ООП тук.на какво се дължи това?
 
ООП се използва само за големи проекти, в който често повтаряне на нещата. Например при голям проект, в който всичко е уникално ще загубиш повече време в писане на класа, от колкото да пишеш процедурен код.
 
Като цяло идеята на ООП не е да пишеш всичко в класове. Надникнете в името - "Обектно-ориентирано".

Идеята на ООП е всяка структурна единица данни да притежава и методите с които се обработва. Можем да погледнем за пример един продукт. В обектът продукт освен цялата информация, която го характеризира (име, цвят, цена, доп. характеристики), има и методи за работа с тях като изчисляване на доставка и т.н.

Освен това ООП притежава доста шаблони за програмиране, като фактори, сингълтон и т.н., които подпомагат разработката от множество програмисти без да се правят грешки (или върху по-голям проект, в който няма как да помниш всичко).

Като цяло няма как да ти обясним какво е ООП, защото всеки има собствена гледна точка за това как се ползва и какви са преимуществата му.

За мен най-голямото преимущество е писането на DRY (Don't repeat yourself) код, който е изключително лесен за редактиране и надграждане.
 
Значи в някакви малки проекти не е задължително да пиша всичко с фукнции защото така или иначе се използва 1 път .. не се повтаря във всяка станица кода?
 
critrate каза:
Значи в някакви малки проекти не е задължително да пиша всичко с фукнции защото така или иначе се използва 1 път .. не се повтаря във всяка станица кода?
Именно :)
 
critrate каза:
Значи в някакви малки проекти не е задължително да пиша всичко с фукнции защото така или иначе се използва 1 път .. не се повтаря във всяка станица кода?

Напротив, трябва да си създадеш начин на писане. Никога не знаеш кога едно нещо ще се разрасне и кога ще се наложи да правиш промяна на някоя част от кода, която се среща на 15 места.
 
gamena007 каза:
critrate каза:
Значи в някакви малки проекти не е задължително да пиша всичко с фукнции защото така или иначе се използва 1 път .. не се повтаря във всяка станица кода?

Напротив, трябва да си създадеш начин на писане. Никога не знаеш кога едно нещо ще се разрасне и кога ще се наложи да правиш промяна на някоя част от кода, която се среща на 15 места.

Благодаря ти ,но за всичко ли тр функции т.е. и за едно wordwrap ли ?
 
Функцията е фрагмент. Това означава, че се използва за замяна със сложни фрагменти или казано на български - функциите се използват за по-дълги кодове, които не би желал да пишеш по 10 пъти.
 
HerpaMoTeH каза:
ООП се използва само за големи проекти, в който често повтаряне на нещата. Например при голям проект, в който всичко е уникално ще загубиш повече време в писане на класа, от колкото да пишеш процедурен код.

Идеята никога не е била в това да си спестиш време от създаването на проекта. Идеята е да пишеш -качествен- код, който в последствие и други хора могат -лесно- да поддържат. Процедурен код се чете трудно и трябва да се прочете целия, за да разбереш къде трябва да промениш нещо. В обектно-ориентирания виждаш обекта Cat и за да почешеш котката трябва просто да влезеш в класа и да промениш/добавиш метод. При процедурен код трябва да прочетеш всичко, да видиш кои променливи отговарят за котката, да прочетеш пак всичко за да видиш промените, които ще направиш да не счупят нещо.
 
StormBreaker каза:
HerpaMoTeH каза:
ООП се използва само за големи проекти, в който често повтаряне на нещата. Например при голям проект, в който всичко е уникално ще загубиш повече време в писане на класа, от колкото да пишеш процедурен код.

Идеята никога не е била в това да си спестиш време от създаването на проекта. Идеята е да пишеш -качествен- код, който в последствие и други хора могат -лесно- да поддържат. Процедурен код се чете трудно и трябва да се прочете целия, за да разбереш къде трябва да промениш нещо. В обектно-ориентирания виждаш обекта Cat и за да почешеш котката трябва просто да влезеш в класа и да промениш/добавиш метод. При процедурен код трябва да прочетеш всичко, да видиш кои променливи отговарят за котката, да прочетеш пак всичко за да видиш промените, които ще направиш да не счупят нещо.
Да разбирам ли, че за написването на 1 тп калкулатор е по-добре да използваш ООП. Също така нали се сещаш, че при ООП скрипта се обработва по-бавно, а понякога 5-10% не са хич малко.
 
аз до колкото съм чул с класове и функции всичко се обработва по-бързо.поне така са ми казали
 
За ООП според мен не е важно да знаеш само как се пишат класове и прочие.
ООП е начин на мислене.

critrate, процедурният код е най-бърз.
 
HerpaMoTeH каза:
StormBreaker каза:
HerpaMoTeH каза:
ООП се използва само за големи проекти, в който често повтаряне на нещата. Например при голям проект, в който всичко е уникално ще загубиш повече време в писане на класа, от колкото да пишеш процедурен код.

Идеята никога не е била в това да си спестиш време от създаването на проекта. Идеята е да пишеш -качествен- код, който в последствие и други хора могат -лесно- да поддържат. Процедурен код се чете трудно и трябва да се прочете целия, за да разбереш къде трябва да промениш нещо. В обектно-ориентирания виждаш обекта Cat и за да почешеш котката трябва просто да влезеш в класа и да промениш/добавиш метод. При процедурен код трябва да прочетеш всичко, да видиш кои променливи отговарят за котката, да прочетеш пак всичко за да видиш промените, които ще направиш да не счупят нещо.
Да разбирам ли, че за написването на 1 тп калкулатор е по-добре да използваш ООП. Също така нали се сещаш, че при ООП скрипта се обработва по-бавно, а понякога 5-10% не са хич малко.

Не си го разбрал правилно. Както каза @Soul_Stealler, ООП е начин на мислене. Процедурния естествено е по-бърз, защото се чете и изпълнява директно и последователно, докато при ООП, се чете целия клас и чак тогава се изпълнява. Но в повечето случаи, когато наистина е наложително да ползваш ООП, бързината се увеличава. С ООП работи по-бързо, отколкото процедурно.
Както и при ООП всичко е подредено, не е пръснато навсякъде и да се чудиш от къде да погледнеш скрипта.
А на въпроса ти да отговоря. Ако е някой сложен калкулатор, който пресмята най-различни неща, не само +, -, *, / , то бих използвал ООП или само отделни функции.
 
Да разбирам ли, че за написването на 1 тп калкулатор е по-добре да използваш ООП. Също така нали се сещаш, че при ООП скрипта се обработва по-бавно, а понякога 5-10% не са хич малко.

Да знаеш, че 10% от 100ms са супер много :) Ако само скоростта имаше значение то managed езиците изобщо нямаше да съществуват. И не знам в real-world-scenario кога ще ти се наложи просто да правиш 'тъп калкулатор'. Много ясно, че 5 реда код няма повече накъде да ги разбиеш.
 

Горе