data abstraction c
Wszystko, co musisz wiedzieć o abstrakcji w C ++.
W tej serii samouczków C ++ nauczymy się wszystkich głównych koncepcji programowania obiektowego w języku C ++, które są znane jako cztery filary OOP.
- Abstrakcja
- Kapsułkowanie
- Dziedzictwo
- Wielopostaciowość
W tym samouczku zbadamy wszystko o abstrakcji danych w C ++.
=> Kliknij tutaj, aby zapoznać się z serią szkoleń Absolute C ++.
Czego się nauczysz:
- Co to jest abstrakcja?
- Implementacja abstrakcji w C ++
- Zalety abstrakcji
- Wniosek
- rekomendowane lektury
Co to jest abstrakcja?
Abstrakcja to technika programowania zorientowanego obiektowo, za pomocą której ukrywamy przed użytkownikiem szczegóły implementacji i ujawniamy tylko wymagany interfejs.
Możemy wziąć przykład klimatyzatora (AC) z życia. Mamy pilota do sterowania różnymi funkcjami AC, takimi jak uruchamianie, zatrzymywanie, zwiększanie / zmniejszanie temperatury, sterowanie wilgotnością itp. Możemy sterować tymi funkcjami za pomocą zegara przycisku, ale wewnętrznie istnieje złożona logika, która jest wdrożone do wykonywania tych funkcji.
Jednak jako użytkownik końcowy wystawiliśmy tylko zdalny interfejs, a nie szczegóły implementacji wszystkich tych funkcji.
głównym celem testów akceptacyjnych jest
Abstrakcja to jeden z czterech filarów programowania obiektowego, a prawie wszystkie rozwiązania OOP oparte są na zasadach abstrakcji, czyli separacji interfejsu i szczegółów implementacji w programie.
Na powyższym diagramie pokazaliśmy obiekt i jego zawartość jako obrazową reprezentację. Widzimy, że najbardziej wewnętrzna warstwa tego obiektu to jego podstawowa funkcjonalność, po której następują szczegóły implementacji.
W OOP te dwie warstwy (choć w większości przypadków jest to tylko jedna warstwa) nie są narażone na świat zewnętrzny. Najbardziej zewnętrzna warstwa, interfejs, jest warstwą zapewnianą użytkownikowi końcowemu w celu uzyskania dostępu do funkcjonalności obiektu.
W rezultacie wszelkie zmiany wprowadzone w najbardziej wewnętrznych warstwach obiektu nie są oczywiste dla użytkownika końcowego, o ile interfejs, na który jest on narażony, pozostaje taki sam.
Implementacja abstrakcji w C ++
C ++ obsługuje abstrakcję na dużej głębokości. W C ++ nawet funkcje biblioteczne, z których korzystamy, można uznać za przykład abstrakcji.
Implementację abstrakcji w C ++ możemy przedstawić następująco:
Jak pokazano na powyższym rysunku, możemy zaimplementować abstrakcję w C ++ na dwa sposoby:
# 1) Korzystanie z klas i specyfikatorów dostępu
Klasę zaimplementowaną w C ++ ze specyfikatorami dostępu public, private i protected można uznać za implementację abstrakcji.
Jak już wiemy, użycie specyfikatorów dostępu pozwala nam kontrolować dostęp przyznawany członkom klasy. Możemy uczynić niektórych członków prywatnymi, aby byli niedostępni poza klasą. Możemy mieć niektórych członków jako chronionych, aby były dostępne tylko dla klas pochodnych. Na koniec możemy upublicznić niektórych członków, aby byli dostępni poza klasą.
Korzystając z tego pojęcia, możemy zaimplementować abstrakcję w taki sposób, że szczegóły implementacji są ukryte przed światem zewnętrznym za pomocą specyfikatora dostępu prywatnego, podczas gdy interfejs może być ujawniony światu zewnętrznemu za pomocą specyfikatora publicznego.
Dlatego możemy zaimplementować abstrakcję w C ++, używając klasy do łączenia danych i funkcji w jedną jednostkę oraz używając specyfikatorów dostępu do kontrolowania dostępu do tych danych i funkcji.
Aby to zademonstrować, zaimplementujmy następujący przykład.
#include #include using namespace std; class sample { int num1,num2; void readNum(){ cout<>num1; cout<>num2; } public: void displaySum() { readNum(); cout<<'
Sum of the two numbers = '< Wynik:
Wpisz num1: 10
Wpisz num2: 20
Suma dwóch liczb = 30
W powyższym programie mamy przykładową klasę, która ma dwie zmienne całkowite, num1 i num2. Posiada również dwie funkcje readNum i displaySum. Elementy członkowskie danych num1 i num2, a także funkcja readNum, są prywatne dla klasy.
Funkcja displaySum jest publiczna dla klasy. W funkcji głównej tworzymy obiekt klasy sample i wywołujemy displaySum, który odczytuje dwie liczby oraz wypisuje ich sumę.
To jest implementacja abstrakcji. Udostępniamy publicznie tylko jedną funkcję, zachowując w tajemnicy inne elementy i funkcje danych. Chociaż jest to tylko przykład pokazujący abstrakcję, podczas wdrażania rzeczywistych problemów, możemy mieć wiele poziomów abstrakcji w C ++.
# 2) Korzystanie z implementacji pliku nagłówkowego
Używamy plików nagłówkowych w programie C ++ do importowania i używania predefiniowanych funkcji. W tym celu używamy dyrektywy #include, aby dołączyć pliki nagłówkowe do naszego programu.
Na przykład, w powyższym programie wykorzystaliśmy funkcje cin i cout. Jeśli chodzi o te funkcje, wiemy tylko, jak z nich korzystać i jakie parametry przyjmują.
Nie wiemy, co dzieje się w tle podczas wywoływania tych funkcji ani jak są one zaimplementowane w pliku nagłówkowym iostream. To kolejny sposób abstrakcji zapewniany przez C ++.
Nie znamy szczegółów realizacji wszystkich funkcji, które importujemy z plików nagłówkowych.
Oto kolejny przykład pokazujący abstrakcję.
#include #include using namespace std; class employee{ int empId; string name; double salary,basic,allowances; double calculateSalary(int empId){ salary = basic+allowances; return salary; } public: employee(int empId, string name,double basic,double allowances): empId(empId),name(name),basic(basic),allowances(allowances){ calculateSalary(empId); } void display(){ cout<<'EmpId = '< Wynik:
EmpId = 1 Imię = Ved
Wynagrodzenie pracownika = 1824 5,4
W tym przykładzie zdefiniowaliśmy pracownika klasowego, który ma prywatne dane, takie jak empId, imię i nazwisko, szczegóły dotyczące wynagrodzenia, takie jak podstawa i dodatki. Definiujemy również funkcję prywatną „Oblicz wynagrodzenie”, która oblicza wynagrodzenie na podstawie podstawy i dodatków.
Mamy konstruktora do inicjalizacji wszystkich danych dla konkretnego obiektu pracownika. Wywołujemy również funkcję „Oblicz wynagrodzenie” konstruktora, aby obliczyć wynagrodzenie obecnego pracownika.
Następnie mamy funkcję „wyświetl”, która wyświetla dane empId, nazwisko i pensję. W funkcji głównej tworzymy obiekt klasy pracowniczej i wywołujemy funkcję wyświetlania.
Widzimy wyraźnie poziom abstrakcji, jaki zapewniliśmy w tym programie. Ukryliśmy wszystkie dane pracownika oraz funkcję Oblicz wynagrodzenie przed użytkownikiem, czyniąc je prywatnymi.
Udostępniliśmy użytkownikowi tylko jeden wyświetlacz funkcji, który przekazuje użytkownikowi wszystkie informacje o obiekcie pracownika, a jednocześnie ukrywa szczegóły, takie jak dane prywatne i sposób obliczania wynagrodzenia pracownika.
Robiąc to, w przyszłości, jeśli będziemy chcieli dodać więcej szczegółów i zmienić sposób obliczania wynagrodzenia, nie musimy zmieniać funkcji wyświetlania. Użytkownik będzie nieświadomy tych zmian.
Zalety abstrakcji
Poniżej wymieniono niektóre z zalet abstrakcji.
- Programista nie musi pisać kodu niskiego poziomu.
- Abstrakcja chroni wewnętrzną implementację przed złośliwym użyciem i błędami.
- Abstrakcja może zapobiegać powielaniu kodu, a zatem programista musi wielokrotnie wykonywać te same zadania.
- Abstrakcja promuje ponowne użycie kodu i prawidłowo klasyfikuje składowe danych klasy.
- Programista może zmienić wewnętrzne szczegóły implementacji klasy bez wiedzy użytkownika końcowego, tym samym bez wpływu na operacje warstwy zewnętrznej.
Wniosek
Abstrakcja jest jednym z najważniejszych pojęć w OOP i jest zaimplementowana w C ++. Używając abstrakcji, możemy zachować szczegóły implementacji programu w tajemnicy i ujawniać tylko te szczegóły, które chcemy, światu zewnętrznemu.
Korzystając z koncepcji abstrakcji, możemy projektować abstrakcyjne typy danych i klasy, które działają jako szkielet rozwiązania programistycznego, na podstawie którego zbudowane jest całe rozwiązanie. W miarę postępów w tematach OOP dowiemy się więcej o tych typach i klasach.
za pomocą czego mogę otworzyć plik eps
W naszych nadchodzących samouczkach dowiemy się o innym filarze OOP, czyli o enkapsulacji. Będziemy tam również wspólnie rozważać abstrakcję i hermetyzację.
=> Poszukaj całej serii szkoleń C ++ tutaj.
rekomendowane lektury
- Typy danych C ++
- Hermetyzacja w C ++
- 10 najlepszych narzędzi do nauki o danych w 2021 r., Aby wyeliminować programowanie
- Programowanie obiektowe w C ++
- Wprowadzenie do struktur danych w C ++
- 70+ NAJLEPSZYCH samouczków C ++ do nauki programowania w C ++ ZA DARMO
- Parametryzacja danych JMeter za pomocą zmiennych zdefiniowanych przez użytkownika
- Ponad 10 najlepszych narzędzi do gromadzenia danych ze strategiami gromadzenia danych