Python - Обекти

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

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

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

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

Тогава можем да видим, че това е нещо, което ни помага да имаме код, който да е по -траен във времето, по -лесен за поддържане.
Това се състои в скриване на вътрешните детайли на класа от външния свят, така че да може да бъде достъпен само чрез собствени обекти и методи, по този начин можем да работим с класове, без да се налага да знаем тяхната вътрешна работа, премахвайки сложността на внедряването и защитавайки логиката в нашите обекти.
Също така ни позволява работи с увереност, че данните в нашия обект няма да бъдат променени, тъй като ако те работят по абстрактен начин, ще можем да създаваме екземпляри няколко пъти и всеки екземпляр е напълно индивидуален.
Нека разгледаме пример за обект, който не е капсулиран:

Тук виждаме това, въпреки че е било o1 който направи набор от името, o2 достъп до същото име, без да сте го задали, това в приложение би било проблематично, нека си представим, че се нуждаем от цената на няколко продукта и всеки от тях презаписва цената на предишния.
Сега с капсулиране, нека да разгледаме как би работил целият поток на програмата.

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