Python zorientowany obiektowo - wprowadzenie
Języki programowania pojawiają się nieustannie, podobnie jak różne metodologie. Jedną z metod, która stała się dość popularna w ciągu ostatnich kilku lat, jest programowanie obiektowe.
W tym rozdziale omówiono cechy języka programowania Python, które sprawiają, że jest to język programowania obiektowego.
Schemat klasyfikacji programowania językowego
Python można scharakteryzować za pomocą metodologii programowania obiektowego. Poniższy obraz przedstawia charakterystykę różnych języków programowania. Obserwuj cechy Pythona, które sprawiają, że jest on zorientowany obiektowo.
Zajęcia z Langauage | Kategorie | Langauages |
---|---|---|
Paradygmat programowania | Proceduralny | C, C ++, C #, Objective-C, java, Go |
Skrypty | CoffeeScript, JavaScript, Python, Perl, Php, Ruby | |
Funkcjonalny | Clojure, Eralang, Haskell, Scala | |
Klasa kompilacji | Statyczny | C, C ++, C #, Objective-C, java, Go, Haskell, Scala |
Dynamiczny | CoffeeScript, JavaScript, Python, Perl, Php, Ruby, Clojure, Erlang | |
Klasa typu | Silny | C #, java, Go, Python, Ruby, Clojure, Erlang, Haskell, Scala |
Słaby | C, C ++, C #, Objective-C, CoffeeScript, JavaScript, Perl, Php | |
Klasa pamięci | Zarządzane | Inni |
Niezarządzane | C, C ++, C #, cel-C |
Co to jest programowanie obiektowe?
Object Orientedśrodki skierowane na przedmioty. Innymi słowy, oznacza to funkcjonalnie ukierunkowane na modelowanie obiektów. Jest to jedna z wielu technik wykorzystywanych do modelowania złożonych systemów poprzez opisywanie zbioru obiektów oddziałujących na podstawie ich danych i zachowania.
Python, programowanie obiektowe (OOP), to sposób programowania, który koncentruje się na używaniu obiektów i klas do projektowania i tworzenia aplikacji. Główne filary programowania obiektowego (OOP) to Inheritance, Polymorphism, Abstraction, ogłoszenie Encapsulation.
Analiza zorientowana obiektowo (OOA) to proces badania problemu, systemu lub zadania oraz identyfikacja obiektów i interakcji między nimi.
Dlaczego warto wybrać programowanie obiektowe?
Python został zaprojektowany z podejściem obiektowym. OOP oferuje następujące korzyści -
Zapewnia przejrzystą strukturę programu, która ułatwia mapowanie rzeczywistych problemów i ich rozwiązań.
Ułatwia konserwację i modyfikację istniejącego kodu.
Zwiększa modułowość programu, ponieważ każdy obiekt istnieje niezależnie, a nowe funkcje można łatwo dodawać bez naruszania istniejących.
Przedstawia dobre ramy dla bibliotek kodu, w których dostarczane komponenty mogą być łatwo dostosowywane i modyfikowane przez programistę.
Zapewnia możliwość ponownego wykorzystania kodu
Programowanie proceduralne a programowanie obiektowe
Programowanie proceduralne wywodzi się z programowania strukturalnego opartego na koncepcjach functions/procedure/routines. Dostęp i zmiana danych są łatwe w programowaniu zorientowanym proceduralnie. Z drugiej strony programowanie zorientowane obiektowo (OOP) umożliwia dekompozycję problemu na kilka jednostek o nazwieobjectsa następnie zbuduj dane i funkcje wokół tych obiektów. Koncentruje się bardziej na danych niż na procedurze lub funkcjach. Również w OOP dane są ukryte i nie można uzyskać do nich dostępu za pomocą procedury zewnętrznej.
Tabela na poniższej ilustracji przedstawia główne różnice między podejściem POP i OOP.
Różnica między programowaniem proceduralnym (POP) a programem. Programowanie obiektowe (OOP).
Programowanie proceduralne | Programowanie zorientowane na obiekt | |
---|---|---|
Oparte na | W Pop cały nacisk kładzie się na dane i funkcje | Ups opiera się na prawdziwym scenariuszu. Cały program jest podzielony na małe części zwane obiektami |
Możliwość ponownego użycia | Ograniczone ponowne wykorzystanie kodu | Ponowne wykorzystanie kodu |
Podejście | Podejście odgórne | Projektowanie ukierunkowane na obiekt |
Specyfikatory dostępu | Żaden | Publiczne, prywatne i chronione |
Przenoszenie danych | Dane mogą swobodnie przenosić się z funkcji do funkcji w systemie | W Oops dane mogą się przenosić i komunikować ze sobą za pomocą funkcji składowych |
Dostęp do danych | W popie większość funkcji wykorzystuje globalne dane do udostępniania, do których można uzyskać swobodny dostęp z funkcji do funkcji w systemie | W Ups dane nie mogą swobodnie przenosić się z metody na metodę, można je przechowywać publicznie lub prywatnie, abyśmy mogli kontrolować dostęp do danych |
Ukrywanie danych | W popie, tak specyficzny sposób na ukrywanie danych, więc trochę mniej bezpieczny | Zapewnia ukrywanie danych, o wiele bezpieczniejsze |
Przeciążenie | Niemożliwe | Funkcje i przeciążanie operatorów |
Przykładowe języki | C, VB, Fortran, Pascal | C ++, Python, Java, C # |
Abstrakcja | Używa abstrakcji na poziomie procedury | Używa abstrakcji na poziomie klasy i obiektu |
Zasady programowania obiektowego
Programowanie obiektowe (OOP) opiera się na koncepcji objects zamiast działań i datazamiast logiki. Aby język programowania był zorientowany obiektowo, powinien posiadać mechanizm umożliwiający pracę z klasami i obiektami, a także implementację i wykorzystanie podstawowych zasad i pojęć obiektowych, a mianowicie dziedziczenie, abstrakcję, hermetyzację i polimorfizm.
Rozumiemy w skrócie każdy z filarów programowania obiektowego -
Kapsułkowanie
Ta właściwość ukrywa niepotrzebne szczegóły i ułatwia zarządzanie strukturą programu. Implementacja i stan każdego obiektu są ukryte za dobrze określonymi granicami, co zapewnia przejrzysty i prosty interfejs do pracy z nimi. Jednym ze sposobów osiągnięcia tego jest uczynienie danych prywatnymi.
Dziedzictwo
Dziedziczenie, zwane także uogólnieniem, pozwala nam uchwycić hierarchiczną relację między klasami i obiektami. Na przykład „owoc” jest uogólnieniem słowa „pomarańcza”. Dziedziczenie jest bardzo przydatne z punktu widzenia ponownego wykorzystania kodu.
Abstrakcja
Ta właściwość pozwala nam ukryć szczegóły i wyeksponować tylko istotne cechy koncepcji lub przedmiotu. Na przykład osoba prowadząca skuter wie, że po naciśnięciu klaksonu emitowany jest dźwięk, ale nie ma pojęcia, w jaki sposób dźwięk jest generowany po naciśnięciu klaksonu.
Wielopostaciowość
Polimorfizm oznacza wiele form. Oznacza to, że rzecz lub działanie występuje w różnych formach lub na różne sposoby. Dobrym przykładem polimorfizmu jest przeciążanie konstruktorów w klasach.
Python zorientowany obiektowo
Sercem programowania w Pythonie jest object i OOPjednak nie musisz ograniczać się do korzystania z OOP, organizując swój kod w klasy. OOP dodaje do całej filozofii projektowania Pythona i zachęca do czystego i pragmatycznego sposobu programowania. OOP umożliwia także pisanie większych i złożonych programów.
Moduły a klasy i obiekty
Moduły są jak „Słowniki”
Podczas pracy z modułami zwróć uwagę na następujące punkty -
Moduł Pythona to pakiet służący do hermetyzacji kodu wielokrotnego użytku.
Moduły znajdują się w folderze z rozszerzeniem __init__.py plik na nim.
Moduły zawierają funkcje i klasy.
Moduły są importowane przy użyciu rozszerzenia import słowo kluczowe.
Przypomnij sobie, że słownik to key-valuepara. To znaczy, jeśli masz słownik z kluczemEmployeID i chcesz go odzyskać, będziesz musiał użyć następujących linii kodu -
employee = {“EmployeID”: “Employee Unique Identity!”}
print (employee [‘EmployeID])
Będziesz musiał pracować nad modułami z następującym procesem -
Moduł to plik Pythona zawierający pewne funkcje lub zmienne.
Zaimportuj potrzebny plik.
Teraz możesz uzyskać dostęp do funkcji lub zmiennych w tym module za pomocą „.” (dot) Operator.
Rozważmy moduł o nazwie employee.py z funkcją o nazwie employee. Kod funkcji podano poniżej -
# this goes in employee.py
def EmployeID():
print (“Employee Unique Identity!”)
Teraz zaimportuj moduł, a następnie uzyskaj dostęp do funkcji EmployeID -
import employee
employee. EmployeID()
Możesz wstawić do niego zmienną o nazwie Age, jak pokazano -
def EmployeID():
print (“Employee Unique Identity!”)
# just a variable
Age = “Employee age is **”
Teraz uzyskaj dostęp do tej zmiennej w następujący sposób -
import employee
employee.EmployeID()
print(employee.Age)
Teraz porównajmy to ze słownikiem -
Employee[‘EmployeID’] # get EmployeID from employee
Employee.employeID() # get employeID from the module
Employee.Age # get access to variable
Zauważ, że w Pythonie istnieje wspólny wzorzec -
Zrób key = value styl kontenera
Wyciągnij coś z tego przez nazwę klucza
Porównując moduł ze słownikiem, oba są podobne, z wyjątkiem następujących -
W przypadku dictionary, klucz jest łańcuchem, a składnia to [klucz].
W przypadku module, klucz jest identyfikatorem, a składnia to .key.
Klasy są jak moduły
Moduł jest specjalistycznym słownikiem, który może przechowywać kod Pythona, dzięki czemu można się do niego dostać za pomocą znaku „.” Operator. Klasa to sposób na zgrupowanie funkcji i danych i umieszczenie ich w kontenerze, aby można było uzyskać do nich dostęp za pomocą operatora „.”.
Jeśli musisz stworzyć klasę podobną do modułu pracownika, możesz to zrobić za pomocą następującego kodu -
class employee(object):
def __init__(self):
self. Age = “Employee Age is ##”
def EmployeID(self):
print (“This is just employee unique identity”)
Note- Klasy są preferowane w stosunku do modułów, ponieważ można je ponownie wykorzystać bez większych zakłóceń. Podczas gdy z modułami masz tylko jeden z całym programem.
Obiekty są jak mini-import
Klasa jest jak mini-module i możesz importować w podobny sposób, jak robisz to w przypadku klas, używając pojęcia o nazwie instantiate. Pamiętaj, że podczas tworzenia wystąpienia klasy otrzymasz plikobject.
Możesz utworzyć instancję obiektu, podobnie jak wywołanie klasy takiej jak funkcja, jak pokazano -
this_obj = employee() # Instantiatethis_obj.EmployeID() # get EmployeId from the class
print(this_obj.Age) # get variable Age
Możesz to zrobić na jeden z trzech następujących sposobów -
# dictionary style
Employee[‘EmployeID’]
# module style
Employee.EmployeID()
Print(employee.Age)
# Class style
this_obj = employee()
this_obj.employeID()
Print(this_obj.Age)