Dziś wkroczmy w świat niesamowity! Wreszcie wkraczamy do świata współcześnie szeroko wykorzystywanego paradygmatu programowania. Jest to OOP, czyli nic innego jak programowanie obiektowe. Jest to absolutnie jedna z ważniejszych koncepcji w dzisiejszym programowaniu.
Zrozumienie programowania obiektowego jest kluczowe. Popchnie to Cię w nowe rejony, dotąd niedostępne na tej ścieżce. OOP zmienia programy tak, że są one lepiej poukładane. Ponadto, są one łatwiejsze w utrzymaniu, lepiej odzwierciedlają rzeczywistość wokół. Jest ona przecież obiektowa, człowiek myśli obiektami 😉
OOP, wykorzystuje się w dzisiejszych czasach wszędzie. Na pewno wszędzie tam gdzie pisze się coś naprawdę dużego. Obiektowość to paradygmat programowania, jest on więc niezależny od języka. Jest to podejście uniwersalne, które ma naprawdę ogrom zalet. Jedyną jego wadą jest to, że trzeba je zrozumieć 😉
OOP i język Python
Python to jeden z języków typowo obiektowych, w których w zasadzie wszystko jest obiektem. Każda struktura czy wartość, z jaką dotychczas zdarzyło Nam się pracować w kursie, to obiekt. Łańcuchy tekstowe , liczba całkowita to też wszystko są obiekty. Tak samo mamy ze strukturami jak listy czy słowniki, też są one obiektami. Obiekty są wszędzie!
Obiekt, nie bierze się z niczego, powstaje on z tak zwanej klasy. Czym jest klasa, zapytasz? Klasa jest blueprintem, czyli projektem, wzorcem. Z takiego wzorca powstają właśnie obiekty. Innymi słowy, jeśli produkowalibyśmy w fabryce np. gumowe kaczki, klasa to byłaby ta forma z której te kaczki odlewamy. Forma ta określa jak taka kaczka wygląda, czy i gdzie ma dziub, a gdzie skrzydła i ogonek.
Mamy więc nasz projekt, czyli klasę. Oczywiście jak mówiliśmy wszystko jest obiektem, taki integer przykładowo też. Zatem, musi więc istnieć jakiś projekt na taki integer. I tak właśnie jest - istnieją klasy wbudowane. Jest wzorzec (klasa) string, dict, tuple, int, float. Jeśli stworzysz sobie któryś z nich i użyjesz funkcji type, to zobaczysz na podstawie jakiej klasy powstał.

Jak widzimy powyżej, liczba typu int, jest obiektem klasy int. Zatem powstała z takiego właśnie 'projektu'. OOP pozwala Nam zamienić Nasz kod w trochę taką dobrze zorganizowaną fabrykę, gdzie mamy projekty i na ich podstawie budujemy rzeczy, czyli obiekty.
OOP - początek
Object-oriented programming (OOP) wprawdza wiele pojęć i koncepcji, ale My zaczniemy sobie od podstaw, będziemy się zajmować dziś głównie klasami i obiektami. Jak wspominaliśmy istnieją klasy wbudowane takie jak int, float czy str - domyślnie zawiera je Python. Prócz takich klas wbudowanych możemy też tworzyć własne klasy, i to jest bardzo wielka siła "mogąca góry przenosić" 😉
Za pomocą tworzenia klas, modelujemy rzeczywistość. OOP pozwala nam wyrazić pewne mechanizmy z otaczającego Nas świata, Kwiatek może mieć listki, łodygę i pachnieć. Wszystko to możemy zawrzeć w klasie o nazwie 'kwiat'. Następnie zrobić tyle obiektów klasy kwiat ile Nam się podoba, tworząc np. łąkę 😉
Klasą może być wpis na blogu, a raczej obiektem klasy, a także użytkownik - każdego z nich reprezentować może nowy obiekt. Organizacja rzeczy staje się prosta i intuicyjna. Klasa grupuje cechy, właściwości i zachowania - a raczej umożliwia zrobienie tego. Zróbmy coś konkretnego, pokażmy sobie jak wygląda schemat klasy.

Jak widzimy na powyższym obrazku, klasę tworzymy używając słowa kluczowego class , po którym podajemy wybraną nazwę klasy. Następnie jest dwukropek, po którym standardowo zaczynamy wcięty blok kodu. W bloku tym zaczyna się zabawa, definiujemy tam bowiem dane (właściwości klasy) i zachowania (metody). Czyli jakie cechy może posiadać obiekt tej klasy, oraz co może robić. Należy też dodać, że zwyczajowo nazwę klasy rozpoczynamy dużą literą.
OOP - pierwsza klasa
Wyjaśniliśmy sobie już kilka pojęć związanych z paradygmatem projektowania obiektowego, czas więc je wykorzystać w praktyce. Stworzymy sobie Naszą pierwszą klasę. Dla przykładu stworzymy klasę, która będzie reprezentowała punkty, takie jak na osi lub jakimś wykresie.
Taki punkt będzie miał jakieś cechy, czyli właściwości klasy. Punkt na wykresie zwykle ma jakieś swoje współrzędne na osi x i na osi y. Możemy też powiedzieć, że taki punkt ma jakieś swoje zachowania, może się przykładowo przesuwać.
Zacznijmy sobie od stworzenia klasy Point, ale na razie nie będziemy jej wypełniać, a użyjemy sobie słowa kluczowego pass. Słowo to bywa przydatne w sytuacji gdy przykładowo tworzymy klasę, ale jej ciało wypełnimy później.

Interpreter języka Python będzie bowiem wymagał od Nas, tworzących klasę, aby wypełnić ją definicjami właściwości i metod (zachowań), ale My chcemy to zrobić później. Zatem by zaspokoić interpreter i by się zamknął, używamy słowa pass.
Tym sposobem nie musimy definiować co robi klasa, a możemy z niej korzystać. Jednak nie robimy tego bezpośrednio, bo jak mówiliśmy klasa to projekt. Gdy chcesz dom, to nie mieszkasz w projekcie, musisz najpierw zbudować dom na podstawie projektu, który masz. Zbudujmy zatem Nasz obiekt, na podstawie klasy, nadając mu nazwę 'punkt'.

Jak możesz się domyślić, patrząc na obrazek powyżej, zmienna punkt, to po prostu nazwa Naszego obiektu. Do zmiennej zaś przypisaliśmy klasę użytą jak funkcja. Dokładniej, użycie klasy tak jak funkcji, konstruuje Nam obiekt. Na tak skonstruowany obiekt wskazuje teraz zmienna punkt, do której przypisaliśmy to 'skonstruowanie'.
Możemy sobie teraz taką zmienną, wskazującą na obiekt, wyświetlić i zobaczyć co się stanie.

Uruchamiając taki kod, otrzymujemy informacje, że zmienna wskazuje na 'Point object' czyli obiekt typu Point. Obiekt ten znajduje się pod konkretnym adresem w pamięci, i właśnie ten adres mamy wyświetlany na końcu ( __main__ na razie się nie przejmuj).
Obiektów możemy tworzyć sobie ile chcemy, właśnie w pokazany wyżej sposób, możemy też przypisać im konkretne cechy, co tylko zobaczysz dziś, a zajmiemy się tym w kolejnej części kursu 😉

Zdefiniowaliśmy, że Nasz obiekt Point ma właściwości x i y. Tym właściwością przypisaliśmy na sztywno wartości zero, pomyśl jakie to może mieć konsekwencje dla obiektów. Do następnego!

[…] Naszą klasę i tutaj pojawia się pewna kwestia. Możemy bowiem na jej podstawie utworzyć obiekt i przypisać mu […]
[…] sytuacja ma się z klasami, o których niedawno rozmawialiśmy. Klasa to właśnie trochę taki człowiek, ma swoje atrybuty, ale ma również to co Nas dziś […]
[…] każdym kolejnym wpisem zagłębiamy się coraz bardziej w temat programowania obiektowego (OOP), a robi się coraz ciekawiej.. Jedna z takich ciekawych koncepcji to dziedziczenie. Dziedziczenie, […]