Co to jest ukrywanie danych w C++? Wyjaśnienie abstrakcji i enkapsulacji

Opublikowany: 2021-05-24

Spis treści

Wprowadzenie do ukrywania danych

Dane są najbardziej wrażliwym i niestabilnym składnikiem programu, który w przypadku manipulacji może skutkować nieprawidłowym wynikiem i zaszkodzić integralności danych. W tym miejscu ukrywanie danych okazuje się niezbędne. W żargonie technicznym ukrywanie danych, zwane również ukrywaniem informacji, jest nieodłącznym mechanizmem programowania obiektowego (OOP), który ukrywa szczegóły obiektu wewnętrznego przed użytkownikiem końcowym.

Podstawowym celem ukrywania danych jest ukrycie danych w klasie przed nieautoryzowanym dostępem i uniknięcie niepotrzebnej penetracji spoza klasy. Ukrywanie danych gwarantuje ograniczony dostęp do danych, aby zapewnić integralność obiektu i zapobiec niezamierzonym lub zamierzonym zmianom w danym programie.

Mówiąc najprościej, ukrywanie danych zajmuje pewne części kodu programu i odsłania je przed członkami obiektów. Jeśli członek obiektu próbuje uzyskać dostęp do ukrytych danych, program zwróci błąd. Jest to mechanizm ostrzegawczy wprowadzony w celu zapewnienia, że ​​programista powstrzyma się od łączenia się z błędnymi danymi, które zostały ukryte. Często ukryte są elementy wewnętrzne bez przewidywalnej potrzeby po stronie użytkownika.

Ukrywanie danych, abstrakcja danych i enkapsulacja danych

Ukrywanie danych w C++ jest ściśle skorelowane z dwiema innymi właściwościami OOP — abstrakcją i enkapsulacją.

Abstrakcja danych

Abstrakcja danych to mechanizm ujawniania użytkownikowi końcowemu tylko odpowiedniego interfejsu programu i ukrywania bardziej skomplikowanych i złożonych szczegółów implementacji. Rozważmy przykład z życia, aby lepiej zrozumieć. Rozważ swój telewizor. Możesz włączać i wyłączać telewizor, zmieniać kanał, regulować jego głośność oraz dodawać komponenty zewnętrzne, takie jak magnetowidy, odtwarzacze DVD i głośniki. Ale nie znasz wewnętrznych mechanizmów telewizora.

Nie jesteś świadomy, w jaki sposób odbiera sygnały, tłumaczy je i wreszcie wyświetla dane wyjściowe. Telewizja jest zatem doskonałym przykładem oddzielenia wewnętrznej realizacji od wpływu zewnętrznego. Dzięki abstrakcji danych implementacja klasy jest chroniona przed przypadkowymi błędami i ewoluuje w odpowiedzi na zmieniające się wymagania lub raporty o błędach bez ingerencji na poziomie użytkownika.

Enkapsulacja danych

Enkapsulacja danych odnosi się do łączenia danych i powiązanych z nimi funkcji w jedną jednostkę nazywaną klasą. Mówiąc krótko, jeśli masz niewidoczny atrybut z zewnątrz obiektu i łączysz go z metodami zapewniającymi dostęp do odczytu lub zapisu, możesz ukryć delikatne informacje i regulować dostęp do wewnętrznego stanu obiektu.

W związku z tym, w zależności od metod, które zaimplementujesz, jesteś na gestii podjęcia decyzji, czy atrybut może być odczytywany i zmieniany, czy jest tylko do odczytu lub w ogóle nie jest widoczny.

Różnica między ukrywaniem danych a enkapsulacją danych

Omawiając OOP, ukrywanie danych i enkapsulacja danych są często używane zamiennie, ponieważ oba te pojęcia współpracują w celu osiągnięcia wspólnego obiektywnego, pomocniczego strażnika poufnych informacji. Idea enkapsulacji danych jest niewątpliwie funkcjonalnie porównywalna z ukrywaniem danych, ale ponieważ działają one na różnych poziomach, różnią się strukturalnie.

Chociaż są ze sobą wewnętrznie powiązane, istnieje zasadnicza różnica między ukrywaniem danych a enkapsulacją danych.

  1. Główna różnica między ukrywaniem danych a enkapsulacją polega na tym, że pierwsza z nich koncentruje się na zwiększeniu bezpieczeństwa danych w programie, podczas gdy druga zajmuje się ukrywaniem złożoności programu.
  2. Ukrywanie danych koncentruje się na dostępności elementu członkowskiego obiektu w klasie, podczas gdy enkapsulacja danych koncentruje się na sposobie dostępu do danych i zachowaniu różnych obiektów. Enkapsulacja odbywa się głównie poprzez ukrywanie informacji, a nie tylko ukrywanie informacji. Oznacza to, że programista ukrywa struktury składowe obiektu i ukrywa implementację wszystkich jego metod.
  3. Podczas gdy ukrywanie danych koncentruje się na ograniczeniu użycia danych w programie w celu zapewnienia bezpieczeństwa danych, enkapsulacja danych koncentruje się na zawijaniu (lub enkapsulowaniu) złożonych danych, aby przedstawić użytkownikowi prostszy widok.
  4. W przypadku ukrywania danych, dane muszą być zdefiniowane tylko jako prywatne. W przypadku enkapsulacji dane mogą być publiczne lub prywatne.
  5. Ukrywanie danych jest zarówno procesem, jak i techniką samą w sobie, podczas gdy enkapsulacja danych jest podprocesem ukrywania danych.

Specyfikatory dostępu

C++ obsługuje ukrywanie danych, a co za tym idzie, abstrakcję danych i enkapsulację danych poprzez tworzenie typów zdefiniowanych przez użytkownika, zwanych klasami. Zakres członków tej utworzonej klasy jest definiowany przez słowa kluczowe zwane specyfikatorami dostępu. Zazwyczaj istnieją trzy typy ochrony lub specyfikatorów dostępu dostępne w ramach kategorii - prywatne, chronione i publiczne, używane do budowania możliwości enkapsulacji klasy.

Specyfikatory dostępu pomagają zdefiniować, w jaki sposób można uzyskać dostęp do zmiennych i funkcji typu spoza klasy. Zwykle dane w klasie są prywatne, aby wyeliminować przypadkowe instancje manipulacji, a ich operacje są publiczne. Jednak dostępność w ramach rangi nie jest ograniczona żadnymi ograniczeniami.

Zmienne/funkcje prywatne: Dostęp do nich mają tylko członkowie zdefiniowani jako część klasy.

Zmienne/funkcje publiczne: Dostęp z dowolnego miejsca w programie.

Chronione zmienne/funkcje Są prywatne w ramach klasy i są dostępne tylko dla dostępu zdalnego w klasie pochodnej.

Zastosowanie ukrywania danych

Aby lepiej zrozumieć ukrywanie danych, rozważmy następujący przykład. Biorąc pod uwagę, że jesteś programistą, załóżmy, że deklarujesz klasę o nazwie 'CheckAccount', w której zdefiniowałeś członka danych za pomocą terminu 'Saldo', który odnosi się do salda konta bankowego użytkownika.

W tym konkretnym przykładzie element danych „Saldo” jest informacją wrażliwą. Chociaż możesz oferować dostęp aplikacji zewnętrznej w celu przeglądania tych poufnych informacji, najprawdopodobniej nie pozwolisz tej zewnętrznej aplikacji na zmianę atrybutów danych przechowywanych w Saldzie członka. Ten wynik można osiągnąć za pomocą ukrywania danych, a dokładniej, jest on kontrolowany przez użycie specyfikatora dostępu prywatnego.

  1. Ukrywanie danych jest często wykonywane na danych, które są nieprzewidywalne i delikatne. Tego rodzaju dane są podstawą skutecznego i szybkiego uruchamiania programu. Ze względu na nieuzasadniony dostęp, powstałe zmiany danych są trwałe i wymuszają całkowitą przeróbkę ze strony programisty przed dalszym użyciem.
  2. Ukrywanie danych pomaga chronić członków klasy przed niezamierzonym przeoczeniem. Klasa zwykle składa się z różnych powiązanych pól, które muszą być w niezawodnym stanie. Załóżmy, że programista może bezpośrednio kontrolować dowolne z tych pól. W takim przypadku istnieje możliwość, że możesz przekształcić jeden obszar bez zmiany krytycznych powiązanych pól, pozostawiając twoją klasę w stanie konfliktu.

Korzyści z ukrywania danych

Korzyści z ukrywania danych są wielorakie:

  1. Służy do zmniejszenia nieprzewidywalności i złożoności danych.
  2. Poprawia możliwość ponownego wykorzystania programu.
  3. Ograniczając współzależności między komponentami oprogramowania, zmniejsza się również złożoność systemu w celu zwiększenia niezawodności.
  4. Ukrywa fizyczny projekt składowania danych. Pomaga to w jasnym zdefiniowaniu interfejsu, poprawia czytelność i zrozumiałość.
  5. Zapewnia ochronę danych przed uszkodzeniem i nieuprawnionym dostępem. Innymi słowy, pomaga ukryć ważne dane, zapewniając w ten sposób podwyższone protokoły bezpieczeństwa przed hakerami. Gdyby wszystkie dane wewnętrzne zostały upublicznione, hakerzy mogliby łatwo przeniknąć do danych wewnętrznych i wprowadzić złośliwie zamierzone zmiany w celu zmiany działania programu. Ukrycie danych znacznie utrudnia złamanie kodu, ponieważ ukryte dane będą niewidoczne dla zewnętrznych członków klasy, a tym samym dla hakera.
  6. Enkapsulowane klasy są proste, łatwe w zarządzaniu i ułatwiają dalszy rozwój aplikacji.

Wada ukrywania danych

Jedyną wadą ukrywania danych jest dodatkowe kodowanie. Ukrywanie danych wymaga od programistów pisania dłuższych kodów, aby uzyskać pożądany efekt w ukrytych danych.

Ucz się kursów inżynierii oprogramowania online z najlepszych światowych uniwersytetów. Zdobywaj programy Executive PG, Advanced Certificate Programs lub Masters Programs, aby przyspieszyć swoją karierę.

Wniosek

Ukrywanie danych jest podobne do gry w rosyjską ruletkę. W rosyjskiej ruletce tylko jedna z sześciu dziur ma kulę. Wyobraźmy sobie, że strzał jest dostrzegalnym zagrożeniem dla danych. Czy zechciałbyś zaryzykować? Może istnieć pięć scenariuszy, które działają na Twoją korzyść, ale czy potrafisz konkretnie zidentyfikować zagrożenie? Odpowiedź brzmi nie. Wszystkie scenariusze niosą ze sobą jednakowy probabilistyczny ciężar podejrzeń i strachu. Zamiast poddawać się tej niepewności, zajmij stanowisko wobec zagrożeń danych. Działaj pod przykrywką i ukrywaj dane.

Jeśli chcesz dowiedzieć się więcej o Javie, programach OOP i tworzeniu pełnego stosu oprogramowania, zapoznaj się z programem Executive PG UpGrad i IIIT-B w zakresie tworzenia pełnego stosu oprogramowania, który jest przeznaczony dla pracujących profesjonalistów i oferuje ponad 500 godzin rygorystycznego szkolenia, Ponad 9 projektów i zadań, status absolwentów IIIT-B, praktyczne praktyczne projekty zwieńczenia i pomoc w pracy z najlepszymi firmami.

Czym jest enkapsulacja w programowaniu obiektowym?

Enkapsulacja to sposób na powiązanie danych i kodu, który operuje na danych. Jest to mechanizm służący do ukrywania szczegółów implementacji danych przy jednoczesnym eksponowaniu abstrakcji danych światu zewnętrznemu. Proces ukrywania informacji za dobrze zdefiniowanym interfejsem jest znany jako enkapsulacja. Enkapsulacja to potężna koncepcja programowania obiektowego. Jest to proces ukrywania wewnętrznych danych i operacji obiektu przed światem zewnętrznym poprzez tworzenie funkcji akcesorów.

Czym jest abstrakcja w programowaniu obiektowym?

Abstrakcja to technika stosowana w programowaniu zorientowanym obiektowo do oddzielania interfejsów klas od szczegółów implementacji każdego pojedynczego obiektu. Oznacza to, że kod można zmienić bez zmiany kodu, który korzysta z klasy. W programowaniu obiektowym (OOP) abstrakcja reprezentuje obiekt, którym można manipulować, ale nie jest on jawnie zdefiniowany. Abstrakcja jest ważną częścią OOP; jest to proces oddzielania interfejsu klasy od implementacji jej metod.

W jaki sposób klasy i obiekty oddziałują na siebie w programowaniu obiektowym?

Klasy i obiekty są podstawą programowania obiektowego (OO). Programowanie obiektowe to paradygmat programowania, który wykorzystuje obiekty i klasy do modelowania świata rzeczywistego. Klasa to plan lub szablon. To opis lub specyfikacja tego, czym powinien być obiekt. Definiuje cechy, zachowania i dane określonego typu obiektu. Obiekty to instancje lub przykłady klasy. Każdy obiekt w programie można podzielić na jedną lub więcej klas. Klasa może dziedziczyć właściwości, metody i inne cechy innej klasy. Nazywa się to dziedziczeniem.