Programowanie zorientowane obiektowo
https://en.wikipedia.org/wiki/Procedural_programming
https://en.wikipedia.org/wiki/Object-oriented_programming
https://en.wikipedia.org/wiki/Software_design_pattern
https://bykowski.pl/wzorce-projektowe/
WPROWADZENIE
Python jest językiem do programowania zorientowanego obiektowo
(OOP, object-oriented programming).
Cechy takiego programowania są następujące:
- Programy są zbudowane z definicji obiektów (klasy).
Obiekty łączą w sobie dane (atrybuty) i funkcje (metody),
ponadto większość obliczeń wyrażona jest w postaci operacji na obiektach.
- Każda definicja obiektu odpowiada obiektowi lub koncepcji
w świecie rzeczywistym; funkcje działające na obiektach odpowiadają
sposobowi działania obiektów w świecie rzeczywistym.
Python ma cechy, które wspierają programowanie orientowane obiektowo.
Nie są one konieczne do programowania, ale je ułatwiają.
Nowe typy obiektów w Pythonie tworzone są za pomocą klas.
Klasy obsługują dziedziczenie, czyli mechanizm dostosowywania
kodu oraz jego ponownego wykorzystania.
Klasy udostępniają specjalne metody protokołów, które pozwalają
odpowiadać obiektom na różne rodzaje operacji, tak jak to
robią obiekty typów wbudowanych. Używa się tu pojęcia
przeciążanie operatorów lub polimorfizmu.
Wreszcie klasy pozwalają grupować wiele komponentów działających
razem w jeden zespół, to jest kompozycja.
Programowanie zorientowane obiektowo jest nie tylko technologią,
ale i pewnym doświadczeniem.
Podsumowanie koncepcji związanych z programowaniem zorientowanym
obiektowo:
- Dziedziczenie - zwykle używane w celu ponownego użycia
kodu, w Pythonie oparte na wyszukiwaniu atrybutów.
- Polimorfizm - znaczenie metody (operacji) uzależnione
jest od typu (klasy) obiektu, na którym się tą operację wykonuje.
- Hermetyzacja (enkapsulacja) - ukrywanie szczegółów
implementacyjnych za interfejsem obiektu. Można modyfikować implementację
interfejsu bez wpływania na użytkowników tego obiektu.
- Kompozycja - osadzanie innych obiektów w obiekcie
pojemnika.
- Wzorce projektowe (ang. design patterns) -
często wykorzystywane struktury programowania zorientowanego obiektowo.
Wzorce dzieli się na trzy rodziny:
(1) wzorce kreacyjne
(dotyczą sposobu tworzenia klas, metod, oraz typów danych),
(2) wzorce strukturalne
(dotyczą zależności powiązanych ze sobą obiektów),
(3) wzorce czynnościowe lub behawioralne
(dotyczą zachowania współpracujących obiektów.).