Programowanie obiektowe – jak sama nazwa wskazuje, wykorzystuje w programowaniu obiekty. Programowanie obiektowe ma na celu wdrożenie w programowaniu jednostek ze świata rzeczywistego, takich jak dziedziczenie, ukrywanie, polimorfizm itp. Głównym celem OOP jest powiązanie danych i funkcji, które na nich operują, tak aby żadna inna część kodu nie mogła uzyskać dostępu do tych danych poza tą funkcją.
Istnieje kilka podstawowych koncepcji, które stanowią podstawę OOP, tj.
- Klasa
- Obiekty
- Kapsułkowanie
- Abstrakcja
- Wielopostaciowość
- Dziedzictwo
- Wiązanie dynamiczne
- Przekazywanie wiadomości
Charakterystyka języka programowania obiektowego
jak zwrócić tablicę Java
Klasa
Cegiełką C++ prowadzącą do programowania obiektowego jest klasa. Jest to typ danych zdefiniowany przez użytkownika, który przechowuje własne elementy danych i funkcje członkowskie, do których można uzyskać dostęp i z których można korzystać, tworząc instancję tej klasy. Klasa jest jak plan obiektu. Na przykład: rozważ klasę samochodów. Może być wiele samochodów o różnych nazwach i markach, ale wszystkie będą miały pewne wspólne właściwości, np. wszystkie będą miały 4 koła, ograniczenie prędkości, zasięg itp. Zatem tutaj samochód to klasa, a koła to ograniczenia prędkości i przebieg są ich właściwościami.
- Klasa to typ danych zdefiniowany przez użytkownika, który zawiera elementy danych i funkcje składowe.
- Członkowie danych to zmienne danych, a funkcje członkowskie to funkcje używane do wspólnego manipulowania tymi zmiennymi. Te elementy danych i funkcje członkowskie definiują właściwości i zachowanie obiektów w klasie.
- W powyższym przykładzie klasy Samochód elementem danych będzie ograniczenie prędkości, przebieg itp., a funkcje członkowskie mogą włączać hamulce, zwiększać prędkość itp.
Możemy powiedzieć, że A Klasa w C++ to plan reprezentujący grupę obiektów, które mają pewne wspólne właściwości i zachowania.
Obiekt
Obiekt to możliwa do zidentyfikowania jednostka posiadająca pewne cechy i zachowanie. Obiekt jest instancją klasy. Kiedy klasa jest zdefiniowana, nie jest przydzielana żadna pamięć, ale podczas jej tworzenia (tj. tworzenia obiektu) pamięć jest przydzielana.
C++ // C++ Program to show the syntax/working of Objects as a // part of Object Oriented PProgramming #include using namespace std; class person { char name[20]; int id; public: void getdetails() {} }; int main() { person p1; // p1 is a object return 0; }>
Obiekty zajmują miejsce w pamięci i mają powiązany adres, taki jak rekord w języku pascalowym, struktura lub suma. Kiedy program jest wykonywany, obiekty wchodzą w interakcję poprzez wysyłanie sobie wiadomości. Każdy obiekt zawiera dane i kod umożliwiający manipulowanie danymi. Obiekty mogą wchodzić w interakcje bez konieczności znajomości szczegółów swoich danych lub kodu, wystarczy znać typ akceptowanego komunikatu i typ odpowiedzi zwracanej przez obiekty.
Aby dowiedzieć się więcej o obiektach i klasach C++, zapoznaj się z tym artykułem – Klasy i obiekty C++
Kapsułkowanie
Zwykle enkapsulację definiuje się jako pakowanie danych i informacji w jedną jednostkę. W programowaniu obiektowym enkapsulacja jest definiowana jako łączenie danych i funkcji, które nimi manipulują. Rozważmy rzeczywisty przykład enkapsulacji: w firmie istnieją różne sekcje, takie jak sekcja księgowości, sekcja finansów, sekcja sprzedaży itp. Sekcja finansów obsługuje wszystkie transakcje finansowe i prowadzi rejestr wszystkich danych związanych z finansami. Podobnie dział sprzedaży zajmuje się wszystkimi działaniami związanymi ze sprzedażą i prowadzi ewidencję całej sprzedaży. Teraz może zaistnieć sytuacja, gdy z jakiegoś powodu urzędnik z działu finansowego będzie potrzebował wszystkich danych o sprzedaży w danym miesiącu. W takim wypadku nie ma on bezpośredniego dostępu do danych działu sprzedażowego. Najpierw będzie musiał skontaktować się z innym pracownikiem działu sprzedaży, a następnie poprosić go o podanie konkretnych danych. Na tym właśnie polega enkapsulacja. Tutaj dane sekcji sprzedaży i pracowników, którzy mogą nimi manipulować, są opakowane w pojedynczą sekcję sprzedaży.

Enkapsulacja w C++
Hermetyzacja prowadzi również do abstrakcja danych lub ukrywanie danych . Użycie enkapsulacji powoduje również ukrycie danych. W powyższym przykładzie dane dowolnej sekcji, takiej jak sprzedaż, finanse lub księgowość, są ukryte przed jakąkolwiek inną sekcją.
Aby dowiedzieć się więcej na temat enkapsulacji, zapoznaj się z tym artykułem – Enkapsulacja w C++
Abstrakcja
Abstrakcja danych jest jedną z najważniejszych i najważniejszych cech programowania obiektowego w C++. Abstrakcja oznacza wyświetlenie tylko niezbędnych informacji i ukrycie szczegółów. Abstrakcja danych oznacza dostarczanie światu zewnętrznemu jedynie niezbędnych informacji o danych, ukrywanie szczegółów tła lub implementacji. Rozważmy przykład z życia wzięty, przedstawiający mężczyznę prowadzącego samochód. Człowiek wie tylko, że naciśnięcie pedału przyspieszenia zwiększy prędkość samochodu lub zaciągnięcie hamulca zatrzyma samochód, ale nie wie, w jaki sposób po naciśnięciu pedału przyspieszenia prędkość faktycznie wzrasta, nie wie o wewnętrznym mechanizmie samochodu lub zastosowanie pedału przyspieszenia, hamulców itp. w samochodzie. To jest właśnie abstrakcja.
pierwsze dziecko CSS
- Abstrakcja przy użyciu klas : Możemy zaimplementować abstrakcję w C++ za pomocą klas. Klasa pomaga nam grupować elementy danych i funkcje członkowskie przy użyciu dostępnych specyfikatorów dostępu. Klasa może zdecydować, który element danych będzie widoczny dla świata zewnętrznego, a który nie.
- Abstrakcja w plikach nagłówkowych : Jeszcze jednym rodzajem abstrakcji w C++ mogą być pliki nagłówkowe. Rozważmy na przykład metodę pow() obecną w pliku nagłówkowym math.h. Ilekroć musimy obliczyć potęgę liczby, po prostu wywołujemy funkcję pow() znajdującą się w pliku nagłówkowym math.h i przekazujemy liczby jako argumenty, nie znając algorytmu, zgodnie z którym funkcja faktycznie oblicza potęgę liczb .
Aby dowiedzieć się więcej o abstrakcji C++, zapoznaj się z tym artykułem – Abstrakcja w C++
Wielopostaciowość
Słowo polimorfizm oznacza posiadanie wielu form. W prostych słowach możemy zdefiniować polimorfizm jako zdolność komunikatu do wyświetlania w więcej niż jednej formie. Osoba w tym samym czasie może mieć różne cechy. Mężczyzna jest jednocześnie ojcem, mężem i pracownikiem. Zatem ta sama osoba zachowuje się inaczej w różnych sytuacjach. Nazywa się to polimorfizmem. Operacja może wykazywać różne zachowania w różnych przypadkach. Zachowanie zależy od typów danych używanych w operacji. C++ obsługuje przeciążanie operatorów i przeciążanie funkcji.
- Przeciążenie operatora : Proces powodujący, że operator wykazuje różne zachowania w różnych przypadkach, nazywany jest przeciążeniem operatora.
- Przeciążenie funkcji : Przeciążanie funkcji polega na używaniu jednej nazwy funkcji do wykonywania różnych typów zadań. Polimorfizm jest szeroko stosowany w implementacji dziedziczenia.
Przykład : Załóżmy, że musimy napisać funkcję dodającą kilka liczb całkowitych, czasami są to 2 liczby całkowite, a czasami są to 3 liczby całkowite. Metodę dodawania możemy napisać o tej samej nazwie i różnych parametrach, dana metoda zostanie wywołana zgodnie z parametrami.

Polimorfizm w C++
Aby dowiedzieć się więcej o polimorfizmie, zapoznaj się z tym artykułem – Polimorfizm w C++
Dziedzictwo
Zdolność klasy do wyprowadzania właściwości i charakterystyk z innej klasy nazywa się Dziedzictwo . Dziedziczenie jest jedną z najważniejszych cech programowania obiektowego.
- Podklasa : Klasa, która dziedziczy właściwości innej klasy, nazywana jest klasą podrzędną lub klasą pochodną.
- Super klasa : Klasa, której właściwości są dziedziczone przez podklasę, nazywana jest klasą bazową lub nadklasą.
- Możliwość ponownego użycia : Dziedziczenie wspiera koncepcję ponownego użycia, tj. gdy chcemy utworzyć nową klasę i istnieje już klasa zawierająca część potrzebnego nam kodu, możemy wyprowadzić naszą nową klasę z istniejącej klasy. W ten sposób ponownie wykorzystujemy pola i metody istniejącej klasy.
Przykład : Pies, Kot, Krowa mogą być klasą pochodną klasy podstawowej zwierzęcia.

Dziedziczenie w C++
Aby dowiedzieć się więcej na temat dziedziczenia, zapoznaj się z tym artykułem – Dziedziczenie w C++
vlc pobieraj filmy z YouTube'a
Wiązanie dynamiczne
W przypadku wiązania dynamicznego kod, który ma zostać wykonany w odpowiedzi na wywołanie funkcji, jest ustalany w czasie wykonywania. C++ ma funkcje wirtualne wspierać to. Ponieważ wiązanie dynamiczne jest elastyczne, pozwala uniknąć wad wiązania statycznego, które łączyło wywołanie funkcji i definicję w czasie kompilacji.
Przykład:
C++ // C++ Program to Demonstrate the Concept of Dynamic binding // with the help of virtual function #include using namespace std; class GFG { public: void call_Function() // function that call print { print(); } void print() // the display function { cout << 'Printing the Base class Content' << endl; } }; class GFG2 : public GFG // GFG2 inherit a publicly { public: void print() // GFG2's display { cout << 'Printing the Derived class Content' << endl; } }; int main() { GFG geeksforgeeks; // Creating GFG's object geeksforgeeks.call_Function(); // Calling call_Function GFG2 geeksforgeeks2; // creating GFG2 object geeksforgeeks2.call_Function(); // calling call_Function // for GFG2 object return 0; }>
Wyjście
Printing the Base class Content Printing the Base class Content>
Jak widzimy, funkcja print() klasy nadrzędnej jest wywoływana nawet z obiektu klasy pochodnej. Aby rozwiązać ten problem, używamy funkcji wirtualnych.
Powyższy przykład z funkcją wirtualną:
C++ #include using namespace std; class GFG { public: void call_Function() // function that call print { print(); } virtual void print() // using 'virtual' for the display function { cout << 'Printing the Base class Content' << endl; } }; class GFG2 : public GFG // GFG2 inherit a publicly { public: void print() // GFG2's display { cout << 'Printing the Derived class Content' << endl; } }; int main() { GFG geeksforgeeks; // Creating GFG's object geeksforgeeks.call_Function(); // Calling call_Function GFG2 geeksforgeeks2; // creating GFG2 object geeksforgeeks2.call_Function(); // calling call_Function // for GFG2 object return 0; } //this code is contributed by Md Nizamuddin>
Wyjście
Printing the Base class Content Printing the Derived class Content>
Przekazywanie wiadomości
Obiekty komunikują się ze sobą poprzez wysyłanie i odbieranie informacji. Komunikat dla obiektu jest żądaniem wykonania procedury i dlatego wywołuje w obiekcie odbierającym funkcję, która generuje pożądane wyniki. Przekazywanie wiadomości polega na określeniu nazwy obiektu, nazwy funkcji i informacji, które mają zostać wysłane.
Przykład:
C++ #include using namespace std; // Define a Car class with a method to display its speed class Car { public: void displaySpeed(int speed) { cout << 'The car is moving at ' << speed << ' km/h.' << endl; } }; int main() { // Create a Car object named myCar Car myCar; // Send a message to myCar to execute the displaySpeed method int currentSpeed = 100; myCar.displaySpeed(currentSpeed); return 0; } //this code is contributed by Md Nizamuddin>
Powiązane artykuły :
- Klasy i obiekty
- Dziedzictwo
- Modyfikatory dostępu
- Abstrakcja