Języki obiektowe. Podstawy programowania obiektowego

Programowanie obiektowe opiera się na prezentacji programu w postaci zestawu obiektów. Każdy obiekt należy do klasy, która z kolei zajmuje swoje miejsce w hierarchii dziedziczonej. Zastosowanie OOP minimalizuje zbędne dane, co poprawia łatwość zarządzania, zrozumienie programu.

Co to jest OOP

powstało w wyniku rozwoju programowania proceduralnego. Podstawą języków obiektowych są następujące zasady, takie jak:
  • enkapsulacja;
  • dziedziczenie;
  • polimorfizm.
  • Niektóre zasady pierwotnie ustanowione w pierwszych OOP uległy znacznej zmianie.
    Przykłady języków obiektowych:
  • Pascal. Wraz z wydaniem Delphi 7 na oficjalnym poziomie zaczęto nazywać się Delphi. Głównym obszarem korzystania z Object Pascal jest pisanie aplikacji.
  • C ++ jest szeroko stosowany do tworzenia oprogramowania, które jest jednym z najpopularniejszych języków. Dotyczy tworzenia systemu operacyjnego, aplikacji, sterowników urządzeń, aplikacji, serwerów, gier.
  • Java jest transmitowana w kodzie bajtowym, przetwarzana przez wirtualną maszynę Java. Zaletą tej metody realizacji jest niezależność systemu operacyjnego i sprzętu. Istniejące rodziny: wersja standardowa, edycja Enterprise, edycja Micro, karta.
  • javascript jest używany jako język skryptowy dla stron internetowych. Składnia w dużej mierze przypomina Si i Java. Jest implementacją Ecmascript. Sam Ecmascript służy jako podstawa do konstruowania innych języków skryptowych, takich jak JScript, ActionScript.
  • Cel-Coparty na języku C, a sam kod C jest jasny dla kompilatora Objective-C.
  • Perl - wysoki poziom jest interpretowany w dynamicznym języku uniwersalnym Microsoft. Ma bogate możliwości pracy z tekstem, pierwotnie zaprojektowane specjalnie do manipulacji z tekstem. Obecnie jest wykorzystywany w administrowaniu systemem, programowaniu sieci, bioinformatyce itp.
  • PHP. Skrót jest tłumaczony jako preprocesor hipertekstu. Służy do tworzenia aplikacji internetowych, w tym części serwerowej. Pozwala tworzyć aplikacje GUI za pomocą pakietów PHP-GTK, PHP-Qt, WinBinder.
  • Python jest językiem ogólnego przeznaczenia, koncentrującym się na poprawie wydajności programistów i czytelności kodu. Opracowano projekt Cython do tłumaczenia programów napisanych w języku Python na kod C.
  • Abstrakcja

    Każda książka z gatunku "Object-Oriented Programming for Dummies" podkreśla jedną z głównych zasad - abstrakcję. Chodzi o to, aby podzielić szczegóły lub cechy realizacji programu na ważne i nieważne. Wymagany w przypadku dużych projektów, umożliwia pracę na różnych poziomach reprezentacji systemu bez podawania szczegółów.


    Abstrakcyjny typ danych jest przedstawiony jako interfejs lub struktura. Pozwala nie myśleć o poziomie szczegółowości wdrożenia. ATD nie zależy od innych sekcji kodu. Dobrze znany aforyzm Davida Wheelera świadczy o tym, że wszystkie problemy z informatyką można rozwiązać na innym poziomie abstrakcji.

    Dziedziczenie

    Dostępne są języki obiektowedziedziczone jest jedną z najważniejszych zasad.
    Wskazuje, że funkcje niektórych typów mogą być ponownie użyte. Klasa dziedzicząca właściwości innej nazywa się pochodną, ​​potomkiem lub podklasą. Ten, z którego pochodzi dziedziczenie, nazywany jest przodkiem, podstawą lub superklasą. Związek z potomkami potomków generuje specjalną hierarchię. Istnieje kilka rodzajów dziedziczenia:
  • proste;
  • liczba mnoga.
  • Gdy dziedziczenie wielokrotne może być kilkorga dzieci z jednego przodka, gdy jest to zwykły - tylko jeden. Jest to główna różnica między typami. Dziedziczenie wygląda następująco: klasa Animal {function draw () {return "tylko zwierzę"; } function eat {} {return the animal is eating};}} class Cow extends Animal {function draw () {Return "coś, co wygląda jak krowa"}} Widzimy, że klasa Cow odziedziczyła wszystkie metody ze zwierzęcia klasy. jeśli robisz Cow.eat (), otrzymujemy "zwierzę je", a następnie draw () zostaje zmieniony Cow.draw () zwróci "coś, co wygląda jak krowa", a Animal.draw () zwróci "tylko zwierzę" "


    Enkapsulacja

    Enkapsulacja ogranicza dostęp do innych komponentów, wiąże dane z metodami przetwarzania, a specyfikator dostępu prywatnego jest używany do pakowania.
    Zwykle identyfikuje się pojęcie enkapsulacji i ukrywania, ale niektóre języki rozróżniają te pojęcia. Innymi słowy, krytyczne właściwości są chronione, a ich zmiana staje się niemożliwa. class Animal {private $ name; function __construct ($ name) {$ this- & gt; name = $ name; } function getName {} {return $ this-> name; }} Nazwa jest przyjmowana jako argumenty konstruktora. Kiedy konstruktor jest używany w innych częściach kodu, nic nie może zmienić elementu name. Jakzobacz, jest to wskazane w środku, dla innych części kodu jest niedostępne.

    Polimorfizm

    Polimorfizm pozwala na użycie nazwy i nazwy do rozwiązywania podobnych, ale technicznie różnych zadań.
    W powyższym przykładzie znajduje się tabela. Widzimy klasę CardDesk i klasę GraphicalObject. Oba mają funkcję zwaną draw (). Wykonuje różne akcje, choć ma jedno imię. Polimorfizm ad hoc lub specjalny polimorfizm wykorzystuje:
  • przeciążenie funkcji, metod;
  • przynosząc typy.
  • Przeciążenie polega na użyciu kilku funkcji o pojedynczej nazwie, gdy wybór odpowiedniego następuje w fazie kompilacji. Przenoszenie typów oznacza konwersję wartości jednego typu wartości na inny typ. Istnieje wyraźna transformacja - funkcja akceptująca jeden typ, ale zwracana do innej, niejawna, wykonywana jest przez kompilator lub interpreter.
    "Jeden interfejs - wiele wdrożeń" Bjorn Stroustrup.

    Klasa

    Klasa to rodzaj danych, który składa się z jednego zestawu pól i metod.
    Ma wewnętrzne i zewnętrzne interfejsy do zarządzania treścią. Podczas kopiowania przez przypisanie skopiowany interfejs, ale nie dane. Różne typy współdziałają ze sobą poprzez:
  • dziedziczenie;
  • stowarzyszenia;
  • agregacja.
  • W dziedziczeniu, klasa potomna dziedziczy wszystkie właściwości rodzica, powiązanie odnosi się do interakcji obiektów. Gdy obiekt jednej klasy wchodzi do innego, nazywa się to agregacją. Ale kiedy w ciągu życia nadal polegają na sobie nawzajem, jest to kompozycja. Jednym z głównychcechy to zakres widoczności. Koncepcja jest różnie określona przez różnych posłów. W Object Pascal jest opisana w następujący sposób: ClassName = class (nadklasy) prywatne {przedmioty stosowanie jest ograniczone wyłącznie poza modułem} {tutaj wskazuje pola} ścisłe prywatny {dostęp spetsyfykator stały się dostępne wraz z wydaniem Delphi 2007 oznacza to samo jak prywatne} protected {elementy mogą ClassName używane wewnątrz lub z rzędu} public {} {opublikowanego wszystkie pozycje są dostępne, są one wyświetlane w Inspector'e} end Object; Tutaj SuperClass jest przodkiem, z którego wywodzi się dziedziczenie. Aby utworzyć C ++ wygląda następująco: class MojaKlasa: public Parent {public: MyClass (); //konstruktor ~ MyClass (); //destruktor protected: private:}; W tym przykładzie rodzic jest przodkiem, jeśli taki istnieje. Specifier prywatne, publiczne, chronione oznaczenia takie same, jak w poprzednim przykładzie w Pascalu. Widzimy także destruktor konstruktor dostępny dla każdej części programu. W C ++ wszystkie elementy domyślnie jest prywatny, a zatem nie mogą zostać pominięte.

    Specyfika realizacji

    W centrum języków obiektowych obiekt jest częścią klasy. Składa się z:
  • pól;
  • metoda.
  • ​​Pole danych opisuje parametry obiektu. Reprezentują pewną wartość należącą do klasy, opisują jej stan, właściwości. Są one domyślnie zamknięte, a zmiany danych występują z powodu użycia różnych metod. Metoda - zestaw funkcji, które określają wszystkie możliwe akcje dostępne do wykonania nad obiektem. Wszystkie obiekty wchodzą w interakcje z metodami nawzajem. Może być zewnętrzny lub wewnętrznyktóra jest określona przez modyfikatory dostępu.

    Metodyka OOP

    Istnieją następujące metodologie:
  • Programowanie zorientowane na komponenty;
  • Programowanie prototypów;
  • Programowanie klasowe.
  • Programowanie oparte na komponentach opiera się na koncepcji komponentu - takiego integralnego programu, który jest przeznaczony do ponownego użycia. Realizowany jako zestaw projektów o wspólnej funkcji, regułach, ograniczeniach. Podejście to jest stosowane w języku Java zorientowanym obiektowo, gdzie orientacja komponentu jest zaimplementowana za pomocą JavaBeans, napisanych zgodnie z tymi samymi regułami.
    W programowaniu prototypowym nie ma koncepcji klasy - dziedziczenie odbywa się poprzez klonowanie istniejącego prototypu. Jest to podstawa zorientowanych obiektowo języków javascript i innych eksaskopowych dialektów, a także lua lub lo. Główne cechy:
  • potomkowie nie powinni zachowywać strukturalnego podobieństwa prototypu (w stosunku do klasy - kopia tego dzieje się dokładnie);
  • Podczas kopiowania prototypu wszystkie metody są dziedziczone jeden po drugim.
  • Programowanie klasowe koncentruje się na koncepcji klasy i instancji. Klasa określa ogólną strukturę, zachowanie instancji, które je wykonują.

    Języki zorientowane obiektowo

    Wszystkie OSOA są w pełni zgodne z zasadami OOP - elementy są obiektami posiadającymi właściwości. W takim przypadku mogą być dodatkowe środki.
    OSO koniecznie zawiera zestaw następujących elementów:
  • deklaracja klas z polami, metodami;
  • rozszerzenie przez dziedziczeniefunkcje;
  • zachowanie polimorficzne.
  • Oprócz powyższej listy można dodać dodatkowe fundusze:
  • konstruktor, destruktor, finalizatorzy;
  • właściwości;
  • wskaźniki;
  • modyfikatory dostępu.
  • Niektóre OSO odpowiadają wszystkim głównym elementom, inne - częściowo. Pozostałe są hybrydowe, to znaczy są połączone z podsystemami innych paradygmatów. Zazwyczaj zasady OOP można stosować również w języku zorientowanym na uprzedzenia. Jednak użycie OBO nadal nie czyni kodu obiektowym. JAP wspierają więcej niż jeden paradygmat. Na przykład PHP lub javascript wspierają programowanie funkcjonalne, proceduralne, obiektowe. Java działa z pięcioma paradygmatami: obiektowym, uogólnionym, proceduralnym, aspektowym, konkurencyjnym. C # jest uważany za jeden z najbardziej udanych przykładów wielowymiarowości. Obsługuje te same podejścia, co Java, do tej listy dodaje się refleksyjny paradygmat. MP, jak Oz, ma na celu połączenie wszystkich pojęć tradycyjnie związanych z różnymi paradygmatami programu.

    Powiązane publikacje