encapsulation c
Pełne omówienie hermetyzacji w C ++:
Szczegółowo omówiliśmy abstrakcję w naszym poprzednim samouczku. Jak wiemy, abstrakcja ukrywa szczegóły implementacji przed użytkownikiem i udostępnia tylko ten interfejs, który jest wymagany przez użytkownika.
W tym samouczku omówimy jeszcze jedną ważną cechę OOP, tj. Hermetyzację. Abstrakcja i hermetyzacja idą w parze. W rzeczywistości możemy powiedzieć, że zamknięty kod pomaga nam w abstrakcji. Innymi słowy, hermetyzacja i abstrakcja są ze sobą ściśle powiązane.
=> Odwiedź tutaj, aby zapoznać się z pełnym kursem C ++ od ekspertów.
W ten sposób możemy omówić te dwie koncepcje razem, ponieważ istnieje bardzo cienka granica między hermetyzacją a abstrakcją.
konwerter youtube na mp3 z edytorem tagów
Czego się nauczysz:
- Co to jest hermetyzacja?
- Wdrożenie hermetyzacji
- Różnica między hermetyzacją a abstrakcją
- Wniosek
- rekomendowane lektury
Co to jest hermetyzacja?
Hermetyzacja danych odnosi się do procesu wiązania razem danych i funkcji lub metod działających na tych danych w jedną jednostkę, aby były one chronione przed zewnętrznymi zakłóceniami i niewłaściwym wykorzystaniem.
Jest to ważna koncepcja programowania obiektowego i prowadzi do kolejnej koncepcji OOP znanej jako „ Ukrywanie danych ”. Hermetyzacja ukrywa dane i ich członków, podczas gdy abstrakcja ujawnia tylko niezbędne szczegóły lub interfejsy do świata zewnętrznego.
W pewnym sensie abstrakcja przedstawia „abstrakcyjny pogląd” na ukryte dane światu zewnętrznemu. Tak więc stwierdziliśmy już, że hermetyzacja i abstrakcja idą w parze.
Klasa w C ++ to ta, w której łączymy razem elementy składowe danych i funkcje działające na tych elementach danych wraz ze specyfikatorami dostępu, takimi jak prywatny, publiczny i chroniony, reprezentują hermetyzację. Omówiliśmy już specyfikatory dostępu w naszym wcześniejszym samouczku dotyczącym klas i obiektów.
Wiemy również, że domyślnie członkowie klasy są prywatni. Kiedy deklarujemy członków klasy jako prywatne, a metody dostępu do członków klasy jako publiczne, naprawdę wdrażamy hermetyzację. Jednocześnie zapewniamy abstrakcyjny widok danych na świat zewnętrzny w formie metod publicznych.
Wdrożenie hermetyzacji
Hermetyzacja w C ++ jest zaimplementowana jako klasa, która łączy dane i funkcje operujące na tych danych razem. Przeważnie dane są deklarowane jako prywatne, więc nie są dostępne poza klasą. Metody lub funkcje są zadeklarowane jako publiczne i można uzyskać do nich dostęp za pomocą obiektu klasy.
Nie możemy jednak uzyskać bezpośredniego dostępu do członków prywatnych i nazywa się to ukrywaniem danych. Po wykonaniu tej czynności dane są zabezpieczone i mogą być dostępne tylko przez funkcje tej konkretnej klasy, w której dane są zadeklarowane.
// Example program #include #include using namespace std; //example class to demonstrate encapsulation class sampleData{ int num; char ch; public: //getter methods to read data values int getInt() const{ return num; } char getCh() const{ return ch; } //setter methods to set data values void setInt(int num) { this->num = num; } void setCh(char ch){ this->ch = ch; } }; int main() { sampleData s; s.setInt(100); s.setCh('Z'); cout<<'num = '< Wynik:
num = 100
ch = Z
W powyższym programie umieściliśmy w klasie dwie zmienne składowe wraz z metodami pobierającymi i ustawiającymi. i to jest przykład hermetyzacji.
Zadeklarowaliśmy dwie zmienne, tj. Num i ch, jako zmienne prywatne, aby nie były dostępne dla świata zewnętrznego. Są dostępne tylko dla funkcji, które zadeklarowaliśmy jako publiczne. W ten sposób mamy ukryte składowe danych jako zmienne prywatne w klasie.
Weźmy inny przykład, aby lepiej zrozumieć hermetyzację w C ++.
#include #include using namespace std; //Accounts class: includes salary info for a particular employee class Accounts{ int empId; double salary, basic, allowances, deductions; public: Accounts(int empId):empId(empId){} //read salary info void readEmployeeInfo(int empId){ cout<<'Enter basic for the employee'< basic; cout<>allowances; cout<>deductions; } //calculate salary double calculateSalary(){ salary = basic+ allowances - deductions; return salary; } //display details void display(){ salary = calculateSalary(); cout<<'Employee: '< Wynik:
Wpisz podstawowy dla pracownika1: 10000
zasiłki: 4324,43
odliczenia: 1000
Pracownik: 1
Wynagrodzenie: 13324,4
To kolejny przykład hermetyzacji. Jak pokazano powyżej, mamy klasę Konta, która łączy dane konta i wszystkie funkcje, które operują na tych danych, w jedną klasę Konta. W funkcji głównej możemy stworzyć obiekt tej klasy i uzyskać dostęp do funkcji w celu uzyskania żądanych informacji.
Jeśli inne klasy mówią, że dane pracowników chcą mieć dostęp do danych kont, nie mogą tego zrobić bezpośrednio. Będzie musiał utworzyć obiekt klasy Konta i będzie mógł uzyskać dostęp tylko do tych elementów, które są publiczne. W ten sposób, stosując hermetyzację, gwarantujemy kontrolę dostępu do danych, a także zapewniamy ich integralność.
Różnica między hermetyzacją a abstrakcją
Abstrakcja i hermetyzacja są ze sobą ściśle powiązane. Hermetyzacja pomaga w abstrakcji, łącząc razem dane i metody operujące na tych danych.
Kapsułkowanie Abstrakcja Ukrywa dane Ukrywa realizację Łączy dane i metody razem Udostępnia użytkownikowi abstrakcyjny interfejs, pokazujący tylko to, co jest wymagane Pomaga w abstrakcji Pomaga w ponownym wykorzystaniu i zabezpieczeniu kodu. Zaimplementowana jako klasa ze specyfikatorami dostępu definiującymi dostęp do elementów członkowskich danych i metod Zaimplementowana jako klasa abstrakcyjna i interfejsy, których nie można utworzyć.
Wniosek
Hermetyzacja jest jedną z najważniejszych cech OOP, ponieważ zapewnia nam sposób na ukrycie danych. To z kolei zwiększa bezpieczeństwo danych i chroni je przed złośliwym wykorzystaniem.
Hermetyzacja pomaga w abstrakcji, dzięki czemu możemy ujawnić użytkownikowi końcowemu tylko wymagany interfejs i odpowiednio ukryć inne szczegóły. W tym samouczku przyjrzeliśmy się koncepcjom abstrakcji i enkapsulacji w C ++.
W naszym nadchodzącym samouczku omówimy dziedziczenie w C ++ z przykładami.
=> Odwiedź tutaj, aby zapoznać się z serią samouczków szkoleniowych dotyczących języka C ++.
rekomendowane lektury
- Abstrakcja danych w C ++
- Typy danych C ++
- Najlepsza DARMOWA seria samouczków języka C #: najlepszy przewodnik po języku C # dla początkujących
- 70+ NAJLEPSZYCH samouczków C ++ do nauki programowania w C ++ ZA DARMO
- Funkcje biblioteczne w C ++
- Programowanie obiektowe w C ++
- Wprowadzenie do struktur danych w C ++
- Listy inicjalizacyjne w C ++