Wśród programistów programowanie obiektowe przyciągnęło wielu zwolenników. Popularny język komputerowy Python również przestrzega paradygmatu zorientowanego obiektowo.
Zajmuje się definiowaniem obiektów i klas w Pythonie, co stanowi podstawę zasad OOP. W tym samouczku na temat „programowania obiektowego w Pythonie” dowiesz się, jak deklarować klasy Pythona, tworzyć z nich obiekty i korzystać z czterech technik OOP.
Więc po pierwsze.
Co to jest programowanie obiektowe?
Głównym celem programowania obiektowego (OOP) jest tworzenie „obiektów”. Zbiór powiązanych ze sobą zmiennych i funkcji tworzy obiekt.
Te zmienne są często określane jako atrybuty obiektu, a jego zachowania są często określane jako jego funkcje. Elementy te zapewniają aplikacji bardziej efektywną i zrozumiałą strukturę. Przykładem przedmiotu jest samochód.
Gdyby samochód był przedmiotem, jego atrybuty obejmowałyby takie rzeczy, jak kolor, model, cena, marka itp. Ponadto przyspieszałby, zwalniał i zmieniał biegi.
Inna ilustracja: jeśli myślimy o psie jako o przedmiocie, to niektóre z jego cech mogą być kolorem, rasą, imieniem, wagą itp. I porusza się, szczeka, bawi się itp.
Programowanie zorientowane obiektowo jest dobrze znane, ponieważ uwzględnia w programowaniu koncepcje świata rzeczywistego, takie jak obiekty, ukrywanie, dziedziczenie itp. Wizualizacja jest prostsza, ponieważ jest tak podobna do rzeczywistych warunków.
Koncepcje programowania obiektowego
Klasy i obiekty w Pythonie
Podobnie jak wszystkie inne języki zorientowane obiektowo, Python umożliwia projektowanie klas w celu generowania obiektów. Najpopularniejsze typy danych w Pythonie, w tym łańcuchy znaków, listy, słowniki i inne obiekty, to klasy wbudowane.
Klasa to grupa połączonych metod i zmiennych instancji, które definiują określony rodzaj obiektu. Klasa może być postrzegana jako model lub szablon obiektu. Zmienne tworzące klasę nazywane są atrybutami.
Obiekt jest członkiem klasy, która ma zdefiniowany zestaw atrybutów. Dzięki temu przy użyciu tej samej klasy można utworzyć dowolną liczbę obiektów.
Klasy Pythona definiuje się za pomocą słowa class, po którym następuje nazwa klasy i dwukropek. Ilustracją klasy papug może być:
Tutaj deklarujemy pustą klasę Parrot za pomocą słowa kluczowego class. Tworzymy instancje z klas. Instancja to konkretny obiekt utworzony z określonej klasy. „pass” jest często używany jako zamiennik kodu, którego implementacji możemy na razie zrezygnować. Możemy wykonać kod Pythona bez zgłaszania błędu, używając słowa kluczowego „pass”.
Utworzenie instancji klasy skutkuje obiektem (instancją). Podczas tworzenia klasy definiowany jest tylko opis obiektu. W rezultacie nie jest przydzielana żadna pamięć ani pamięć RAM.
Przykładem obiektu klasy papuga jest:
Obj jest w tym przypadku obiektem klasy Parrot.
Powiedzmy, że znamy szczegóły dotyczące papug. Teraz zademonstrujemy, jak stworzyć klasę papugi i jej obiekty.
Metoda specjalna ( __init__ )
Metoda o nazwie init definiuje atrybuty, które musi posiadać każdy obiekt Parrot (). Kiedy tworzony jest nowy obiekt Parrot, funkcja __init__ tworzy stan początkowy obiektu, przypisując wartości, które dostarczamy we właściwościach obiektu.
Tak więc każda nowa instancja klasy jest inicjowana za pomocą __init__(). Chociaż __init__() może przyjąć dowolną liczbę parametrów, self jest zawsze pierwszym parametrem.
Argument własny zawiera odwołanie do instancji klasy aktywnej. Wskazuje na to parametr self, który łączy się z adresem bieżącego obiektu klasy i daje nam dostęp do danych jego (obiektu) zmiennych.
1 przykład
W powyższym kodzie stworzyliśmy klasę o nazwie Parrot. Następnie definiowane są właściwości. Cechy rzeczy to jej właściwości. Funkcja __init__ klasy określa te cechy.
Kiedy obiekt jest tworzony, metoda inicjatora jest tą, która jest wywoływana początkowo. Następnie tworzone są instancje klasy Parrot. Blaze i Wonda w tym przypadku są odniesieniami (wartościami) do naszych nowych obiektów. __class .species umożliwia nam dostęp do atrybutu class.
Każda instancja klasy ma te same cechy. Dostęp do właściwości instancji można również uzyskać za pomocą blaze.name i blaze.age. Jednak wszystkie instancje klasy mają unikalne atrybuty instancji.
2 przykład
Metody
Funkcje zdefiniowane wewnątrz ciała klasy nazywane są metodami. Służą do określenia, jak przedmiot będzie się zachowywał.
We wspomnianej aplikacji () zdefiniowano dwie metody, sing() i dance. Ponieważ są one wywoływane na obiekcie instancji, takim jak płomień, nazywane są metodami instancji.
Podstawy koncepcji OOPS
Cztery podstawowe idee programowania obiektowego to:
- Dziedzictwo
- Kapsułkowanie
- Wielopostaciowość
- Abstrakcja
Dziedzictwo
Ludzie często mówią noworodkom, że mają cechy twarzy, które przypominają ich rodziców lub że odziedziczyli określone cechy po rodzicach.
Możliwe, że zauważyłeś również, że dzielisz kilka cech ze swoimi rodzicami. Rzeczywista sytuacja jest również dość podobna do dziedziczenia.
Jednak w tym przypadku cechy „klas nadrzędnych” są przekazywane „klasom podrzędnym”. Aspekty te nazywane są w tym kontekście „właściwościami” i „metodami”.
Klasa może wywodzić swoje metody i atrybuty z innej klasy za pomocą techniki znanej jako dziedziczenie. Dziedziczenie to proces, w którym klasa potomna otrzymuje właściwości klasy nadrzędnej.
Przykład:
Klasa nadrzędna Human jest dziedziczona przez klasę potomną Boy z powyższego przykładu. Ponieważ Boy dziedziczy po klasie Human, możemy uzyskać dostęp do wszystkich jej metod i atrybutów podczas tworzenia instancji klasy Boy.
W klasie Boy została również zdefiniowana metoda o nazwie schoolName. Obiekt klasy nadrzędnej nie może uzyskać dostępu do metody schoolName. Metodę schoolName można jednak wywołać, tworząc obiekt klasy potomnej (Boy).
Kapsułkowanie
Nadanie każdej zmiennej w programie globalnego dostępu nie jest mądrym posunięciem podczas pracy z klasami i obsługi wrażliwych danych.
Nie dając programowi pełnego dostępu do żadnej z tych zmiennych, enkapsulacja zapewnia nam mechanizm uzyskiwania niezbędnych zmiennych.
Metody zdefiniowane jawnie w tym celu mogą służyć do aktualizowania, edytowania lub usuwania danych ze zmiennych. Ta metoda programowania ma zalety zwiększonego bezpieczeństwa i kontroli nad wprowadzanymi danymi.
Zobacz, jak szybko zmienne mogą być dostępne w poniższej demonstracji:
Wielopostaciowość
Załóżmy, że używasz telefonu do przeglądania Kanały na Instagramie. Kiedy nabrałeś ochoty na posłuchanie muzyki, uzyskałeś dostęp do Spotify i zacząłeś odtwarzać swoją ulubioną piosenkę.
Po pewnym czasie odebrałeś połączenie, więc wstrzymałeś to, co robiłeś w tle, aby je odebrać. Twój znajomy zadzwonił i poprosił o wysłanie SMS-a z numerem telefonu pewnej osoby.
Więc wysłałeś mu numer telefonu przez SMS i kontynuowałeś swoje zadania. Załapałeś się na coś? Za pomocą tylko jednego urządzenia — telefonu komórkowego — możesz przeglądać kanały, słuchać muzyki, odbierać i wykonywać połączenia telefoniczne oraz wysyłać wiadomości.
Dlatego polimorfizm jest z tym porównywalny. Poly oznacza liczne, a morph oznacza różne formy. Dlatego polimorfizm jako całość odnosi się do czegoś o różnych formach.
Lub „coś”, co w zależności od okoliczności może wykazywać różne zachowania. W OOPS polimorfizm opisuje funkcje o tych samych nazwach, ale różnych zachowaniach. Alternatywnie inna sygnatura funkcji z tą samą nazwą funkcji (parametry przekazywane do funkcji).
Przykład:
Tutaj możemy użyć zmiennej animal do iteracji obiektów Zebry i Królika, używając ich odpowiednich metod instancji. W rezultacie zachowanie (kolor() i zjada()) zarówno Zebry, jak i Królika jest tutaj reprezentowane przez pojedynczą zmienną o nazwie zwierzę. Jest to zatem zgodne z zasadami polimorfizmu.
Abstrakcja
Do czytania tych treści najprawdopodobniej używasz laptopa, telefonu lub tabletu. Czytając go, prawdopodobnie robisz również notatki, podkreślasz kluczowe fragmenty i być może przechowujesz pewne informacje w swoich osobistych aktach.
Wszystko, co możesz zobaczyć, kiedy to czytasz, to „ekran” z danymi, które są ci wyświetlane. Podczas pisania widzisz tylko klawisze klawiatury, więc nie musisz się martwić o wewnętrzne subtelności, takie jak to, jak naciśnięcie klawisza może spowodować pojawienie się tego słowa na ekranie.
Alternatywnie, jak naciśnięcie przycisku na ekranie może uruchomić nową kartę.
Dlatego wszystko, co możemy zaobserwować w tej sytuacji, jest abstrakcją. Widzimy tylko wynik, jaki tworzy, a nie wewnętrzne zawiłości (które tak naprawdę mają dla nas znaczenie).
Podobnie abstrakcja ujawnia tylko funkcje, które posiada wszystko, ukrywając wszelkie implementacje lub wewnętrzne szczegóły.
Głównym celem abstrakcji jest ukrycie informacji tła i wszelkich implementacji danych zewnętrznych, aby ludzie widzieli tylko to, co muszą zobaczyć. Pomaga w zarządzaniu złożonością kodu.
Przykład:
Obecna jest tutaj klasa abstrakcyjna związana z pojazdami. Ponieważ dziedziczy z klasy abstrakcyjnej ABC, jest abstrakcyjna. Ponieważ metody abstrakcyjne nie są zdefiniowane lub pozostają puste, klasa Vehicle ma metodę abstrakcyjną o nazwie no of wheels, która nie ma definicji.
Przewidują klasy, które dziedziczą klasy abstrakcyjne, aby zapewnić implementację metody.
Korzyści z koncepcji OOPS
- Hermetyzacja zapewnia wysokie bezpieczeństwo i prywatność danych.
- Elastyczność w posiadaniu wielu polimorficznych wersji tej samej klasy.
- Wysoki poziom złożoności kodu został zredukowany przez abstrakcję.
- Zamiast przeszukiwać setki wierszy kodu w celu zlokalizowania pojedynczego problemu, modułowość programowania sprawia, że debugowanie jest proste.
- Ponowne użycie kodu jest spowodowane dziedziczeniem właściwości klasy nadrzędnej przez klasę potomną.
- Skuteczne rozwiązywanie problemów jest możliwe, ponieważ tworzymy klasy, które wykonują niezbędne działania dla każdego mini-problemu. Następujący problem można rozwiązać jeszcze szybciej, ponieważ możemy ponownie wykorzystać te klasy.
Wnioski
Podsumowując, dowiedzieliśmy się o pomysłach OOPS w Pythonie, najgorętszym obecnie paradygmacie programowania.
Po przeczytaniu tego musiałeś zdać sobie sprawę, że paradygmat OOPS całkowicie zajmuje się ideą klas i obiektów. oraz koncepcje OOPS, takie jak enkapsulacja, polimorfizm, dziedziczenie i abstrakcja.
Dodaj komentarz