Мнение за писане на OOP

rutera24

Registered
Пичове здравейте. Въпроса който ме мъчи е защо да пиша OOP.

Смятам да сменям професията и имам опит с php поне 5 години но OOP ми е мъгла. Опитвам се да го проумея от уроци но не успявам.

Дайте съвети. Вие защо го ползвате, някой който има същите тръдности и как ги е преодулял.

Мерси на всеки.
 
Колега, аз също имах твоите терзания. Честно казано за мен ООП също беше мъгла. След доста четене и опити установих, че е много улесняващо да поддържаш система създадена с ООП. Преимуществата са огромни и не се дерзай а започни да пишеш и сам за себе си ще осъзнаеш колко удобно е. С времето и навика просто ще забравиш за чистото процедурно писане. Това е като да имаш пишеща машина и компютър един до друг. И на двете можеш да набереш текст но на компютъра е по-удобно и можете с колегите да направите редакция в движение, докато на пишещата машина става по-трудно. ООП е стил на работа и помага много в проектирането на дадена система. Класовете не ги интересува от къде са извикани стига да се отговарят на условията. Това ги прави независими и означава, че работата по проекта може да бъде разхвърляна към няколко програмиста. Подрежда се кода и подръжката става лесна. В клас User няма да търсиш метод с името setCarColor($color) просто защото се предполага, че въпросният метод с така поставеното му наименование, ще се отнася за друг клас с името Car. Поради тази причина и дебъгването е по-удобно. Да създават се и несгоди но има и Шаблони за дизайн, които решават конкретни проблеми. Не се съмнявай а започни да пишеш и с писането сам ще стигнеш до изводите, че процедурното писане в чистата си форма не е лошо, но обединено с обектният модел става изключително мощен инструмент с преизползване на кода без излишното му повтаряне.
 
OOП е просто парадигма, набор от конвенции за структуриране и организиране на кода.

Ако не ти допада, можеш да пишеш функционално - поразрови се за functional programming, където фокусът от изграждане на йерархии от обекти се мести върху сглобяването на по-сложни фунцкии от множество по-прости.
И там се ползват обекти, разбира се, защото все някак трябва да можеш да групираш различни променливи, но погледът върху тях е различен.
 
5 години и без опит с ООП? Значи нямаш никакъв опит.


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

Това прозвуча точно като да пишеш процедурен код в класове, което е възможно най-грешното при използване на обекти.

@anonimen го каза ясно. Това ти е начин да пресъздадеш нещата абстрактно и по-добре структурирани.
 
Много, Ви благодаря за изчерпателните отговори пичове. В крайна сметка с гледане на уроци независимо дали са платени или безплатни не стават нещата докато сам не си захванеш проект който да си развиеш и да си видиш отстрани нещата колко по-лесно би могло да стане със ООП и някой и друг клас, най-малкото мога да преизползвам кода си отново. Така и направих, почнах да си пиша една система социална мрежа която е от 0-та именно за да мога да я ъпгрейдна, така виждам смисъла от наученото в уроците по ООП.

Сега се замислям на къде да поема към Ъпгрейд php-процедура > ООП или да продължа към Java - мобилни приложения (android). Преди правих приложения дори имам качени е маркета и за две години яко забравих нещата когато не го практикуваш и работиш скапана работа която не ти харесва и така.
 
Двата ти коментара много съмнително звучат. Ако си писал приложенията на Java, значи би трябвало да си запознат с ООП.
 
Ем не съм бос в обектния модел, знам какво са методи, класове, конструктори, абстракция, енкапсулажия, малко полиморфизъм и т.н. но реално до сега не съм намирал приложение на ооп модела. А преди около 2 години се хванах и направих едни 4 приложения едва ли не за тест но като чели тогава ми бяха ясни сега не намирам логика къде да го използвам това ооп, а се търси навсякъде за работа. Затова и питам хора който са минали по този път да пишат на процедурен и да не виждат особено голяма логика от това да минават към ооп, но това стана ясно в горните коментари.

За приложениета в стора
https://play.google.com/store/apps/developer?id=Neo-Droid

Отново мерси на всички, както написах по-горе развивам си проект и ще опитам така да си припомня-науча ооп-пхп на ниво ползвател. Все пак не работя това а възнамерявам да започна.
 
Хахах и аз бях така, пич ООП е супер, ще ти спести толкова главоболие и да не говорим колко лесно ще бъде.

Виж и този модел още по як е: https://bg.wikipedia.org/wiki/Model-View-Controller

Повярвай ще забравиш за друго като научиш ООП :)
 
Здравей,

това, което си дал като пример не е "процедурен код".


OOP е парадигма за създаване на абстракция и придаване на "форма" (ако мога да го нарека така)/структиране на кода.

Твоя пример е просто PHP код.

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

Повечето код, който ти си пускал е по-скоро функционално програмиране, обхванаето от неймспейсове и вместо функции използваш методите на класове. Това не е обектно ориентирано програмиране.
 
Revelation каза:
Изтървах изтрития пост. :(

Той беше клас с метод и вътре суич, ще се опитам да го репликирам.


PHP:
class Test {

    public function method_name($promenliva) {
        //---старт на процедурен код
        switch($promenliva) {
              case 1:
                  return 'test';

        }
        //-- край на процедурния код

    }
}
 

Горе