Въведение в OOP (Обектно ориентирано програмиране)
Както обещах ще почна и серия от уроци по ООП ( Обектно ориентирано програмиране ). Ще се опитам да ви разясня какво е ООП, кога, къде, защо да го ползвате, а пък вземе да дойде някой по-вещ и да драсне едно коментарче да допълни или да ме поправи в случай, че съм допуснал някаква грешка. ![]()
Какви са плюсовите на ООП?
- С него лесно разграничавате простия html код от php. Т.е. визуалността и логиката са разделени почти напълно и така лесно може да се осъществи работя между програмист и уеб дизайнер. Програмистът си пише класовете, осъщестява връзки между тях. В тези класове може да има абсолютно всичко – вземане на информация от база данни, добавяне, пресмятане, проверки и всичко друго, за което можете да се сетите. Може да има и html, но една от идеите е кодът да е по-четим, така че по-добре да няма html.
В този урок ще получите базисна информация, АМА АБСОЛЮТНО БАЗИСНА!
Сега ще ви дам понятията, а после ще напишем един клас
Ако това беше ВЛОГ, щеше да е супер яко, ама си е блог.
Клас (Class) – както вече споменах класовете са така да се каже дефиниция на темплейт. Приемете го като мегафункция, ако искате, в която може да се пишат други функции.
Обект (Object) – обектът е активната част на един клас. Тук ще въведа и терминът инстанциране (от инстанция). Това е копирането на клас в паметта на php, даване на уникално име. Как да инстанцираме даден клас? С ключовата дума new. След малко ще видете жив пример.
Метод (Method) – сходно на функция, но написана в самия клас. Не е баш функция и никога не я наричайте функция, а метод.
Свойство (Property) - сходно на променлива. Разликата е, че е в класа и има някои особености, които ще ви покажа по-долу или в друг урок (за повече информация).
Полиморфизъм (Polymorphism) – възможността на ООП в два или повече класа да има два или повече метода или свойства с едно и също име. Примерно имаме онлайн магазин и при писането сме сложили в класа Product свойство Price, а при класа Category сме сложили пак свойство Price. Дори тези два класа да са в един файл тези две свойства няма да бъдат презаписани. Класовете не се интересуват какъв е кодът около тях, а само какво е при тях.
Капсулация – възможността да защитаваш информацията си извън класа. Примерно в класа Users имаш свойство или метод с име Password. При задаване на това свойство/метод, че е private, то никой извън класа не може да се добере до информацията в това свойство метод. Да кажем, че имаме сайт, в който има потребители – ник, имейл, парола и т.н. Някой иска да се добере до тази информация и да прави после бели. Няма значение как ще се добере – да хакне сайта, да се добере до някой файл, в който се инклуудват разни файлове с класове, на сървъра и да промени малко кода в този файл, така че да се опита да повика примерно свойството Pass от клас Users. Ако сме капсулирали Pass като private, просто няма да може, ама по никакъв начин. Ето и видовете капсулация – public, private, protected. В някой от следващите уроци ще обясня за тях и малко допълнително инфо за връзката между един клас с друг ( от друг!! не повече. В php не е възможно да се осъщестява връзка между повече от два класа наведнъж).
Наследяване (inheritance) – възможността на даден клас да приема свойства и методи от друг клас. Не е възможно един клас да наследява информация от два класа или повече, поне в PHP. В един клас може да има свойства и методи от повече от един клас, но това ще се получи така, ако в класа Class1 има дадени свойства и методи, Class2 наследява класа Class1, а пък Class3 наследява класа Class2. Така в Class3 ще има методите и свойствата от Class2 и Class1.
Това беше с терминологията, поне за този урок
След някой друг ден, ако не съм зает, ще пусна следващ урок, в който ще създадем първия си клас, ще се опитам да обясня това-онова, кое защо и т.н.
Related posts:
[...] първия урок за OOP, който написах снощи, реших да пусна и втори, а имено [...]