Abstrakcja a enkapsulacja: różnica między abstrakcją a enkapsulacją

Opublikowany: 2021-02-09

Spis treści

Wstęp

Każdy programista dąży do opracowania schludnego i czystego kodu i musi użyć odpowiedniej broni z koncepcji zbroi lub OOP. Korzystanie z odpowiednich koncepcji OOP zmniejszy złożoność, a encja obiektów zostanie oddzielona od innych części kodu. Ponadto poprawia czytelność i można ją łatwo modyfikować w razie potrzeby.

Ponadto koncepcja OOP, taka jak dziedziczenie, zapewnia rozszerzalność kodu. Te koncepcje są pomocne przy definiowaniu klas abstrakcyjnych, aktualizowaniu wcześniej zaimplementowanych kodów, implementowaniu aplikacji w rzeczywistych scenariuszach.

Abstrakcja, enkapsulacja to podstawowe pojęcia w programowaniu obiektowym. I każdy programista wdraża te koncepcje w celu uzyskania czystego i wielokrotnego użytku kodu. Ale istnieje znaczna liczba różnic między tymi dwoma pojęciami, zrozummy je w tym artykule.

Najpierw prześledźmy szybko pojęcia abstrakcji i enkapsulacji.

Abstrakcja

Abstrakcja to proces ukrywania niepotrzebnych danych i pokazywania tylko istotnych danych. Z oceanu danych utrzymujemy tylko przejrzystość niektórych danych dla użytkownika. Ta ważna koncepcja w programowaniu obiektowym zmniejszy złożoność kodu i zwiększy czytelność.

Załóżmy na przykład, że przydzielono nam zadanie stworzenia portalu zapisów na kursy online, a dostępne pola danych to {imię, wiek, aktualny zawód, nazwa uczelni, nazwa kursu, metoda płatności, imię rodzeństwa, stan cywilny, pojazd numer}.

Po zapoznaniu się z dostępnymi polami danych, zrozumiemy, że niektóre pola nie są wymagane w portalu rejestracji na kurs, pola takie jak {imię rodzeństwa, stan cywilny, numer pojazdu} nie są wymagane do rejestracji na kurs.

Musimy więc być konkretni i wybrać tylko istotne dane. Teraz potrzebne pola to {imię i nazwisko, wiek, aktualny zawód, nazwa uczelni, nazwa kursu, metoda płatności}, to jest przykład abstrakcji w OOP, ponieważ eskortowaliśmy wybrane informacje z całych danych.

Teraz te nowe dane mogą być również wykorzystywane w innych aplikacjach, takich jak śledzenie stanu kursu, zapis ukończenia kursu itp. Możemy używać tych samych danych bez żadnych zmian.

Wiele osób często myli się z abstrakcją i klasą abstrakcyjną, więc czy są one spokrewnione?

Klasa abstrakcyjna różni się od abstrakcji, klasy/metody abstrakcyjne są tworzone z zamiarem ich implementacji w klasie lub podklasie potomnej. Podczas gdy abstrakcja to po prostu ukrywanie danych i pokazywanie tylko odpowiednich danych za pomocą specyfikatorów dostępu, takich jak publiczny, chroniony, prywatny.

Kapsułkowanie

Enkapsulacja wiąże elementy członkowskie danych ze zmiennymi członkowskimi. Pozwoli to uniknąć bezpośredniego dostępu do zmiennych, ponieważ bezpośredni dostęp do zmiennych może naruszać prywatność, a ukrywanie implementacji nie będzie możliwe.

Mogliśmy przejść przez kilka klasycznych metod w klasie, takich jak set i get, gdzie metoda set służy do aktualizowania lub przydzielania wartości zmiennej, a metoda get służy do odczytywania lub pobierania wartości zmiennej. Tutaj możemy bezpośrednio uzyskać dostęp do zmiennych za pomocą obiektu tej klasy, ale jeśli chcemy uczynić zmienną prywatną, powinniśmy użyć tych ustawień i uzyskać metody.

Koncepcja jest prosta, uczynimy zestaw i otrzymamy metody publiczne, a zmienne będą prywatne. Tak więc dostęp do zmiennych można uzyskać tylko za pomocą metod publicznych poza klasą, ponieważ obiekty prywatne nie są dostępne poza klasą, ale dostępne wewnątrz klasy. Ta koncepcja wiązania lub łączenia zmiennych za pomocą metod nazywa się enkapsulacją.

Przyjrzyjmy się prostemu programowi Java, aby lepiej to zrozumieć.

klasa KursRejestracja {
private String nazwa_ucznia;
prywatne String nazwa_kursu;
public String getName (){
zwróć imię_ucznia;
}
public void setName (nazwa ciągu){
to .nazwa_ucznia=nazwa;
}
public String getCourse (){
zwróć nazwa_kursu;
}
public void setCourse (kurs String){
ten .nazwa_kursu=kurs;
}
}
public class up pGrad {
public static void main (String[] args){
CourseRegistration c= new CourseRegistration();
c.setName( “mithun” );
c.setCourse( „Nauka o danych” );
System.out.println(c.getName());
System.out.println(c.getCourse());
}
}

W powyższym kodzie stworzyliśmy klasę CourseRegistration, w której zmienne składowe nazwa studenta i nazwa kursu są prywatne, ale uzyskujemy do nich dostęp w innej klasie za pomocą funkcji set name i pobieramy nazwy. W klasie głównej stworzyliśmy obiekt typu CourseRegistration. Inicjujemy i uzyskujemy dostęp do zmiennych składowych za pomocą funkcji set i get.

Teraz, gdy widzieliśmy definicję i przykład abstrakcji, omówmy zalety i różnice między abstrakcją a enkapsulacją.

Zalety abstrakcji

  • Zachowana jest prywatność danych, ponieważ tylko istotne dane są widoczne dla użytkownika.
  • Zmniejsza złożoność kodu i zwiększa czytelność.
  • Klasa, która implementuje abstrakcję, może być używana jako klasa nadrzędna, dziedzicząc je, poprawiając w ten sposób możliwość ponownego użycia i zmniejszając duplikację.

Zalety enkapsulacji

  • Pomaga w powiązaniu członków danych z funkcjami członkowskimi.
  • Poprawia wydajność i przyjazny dla użytkownika do analizy błędów.
  • Zapewnia programiście elastyczność w kontrolowaniu dostępności i przejrzystości danych.

Różnica między abstrakcją a enkapsulacją

Definicja

  • Abstrakcja to ukrywanie szczegółów i implementacji kodu.
  • Enkapsulacja to ukrywanie danych i kontrolowanie widoczności kodu.

Faza

  • Abstrakcja to proces na poziomie projektu.
  • Enkapsulacja to proces na poziomie implementacji.

Zdolność główna

  • Abstrakcja dotyczy tego, co może zrobić instancja klasy, zamiast implementacji klasy.
  • Enkapsulacja pomaga w wiązaniu danych i kontroli nad utrzymaniem przejrzystości danych.

Przypadek użycia

  • Abstrakcja jest procesem na poziomie projektu i służy do zmniejszenia złożoności na etapie projektowania projektu.
  • Enkapsulacja jest procesem na poziomie wdrożenia i służy zapewnieniu prywatności i utrzymaniu kontroli nad przejrzystością danych na etapie realizacji projektu.

Jak wdrożyć

  • Abstrakcję można osiągnąć za pomocą klas i interfejsów w javie.
  • Enkapsulacja jest również implementowana przy użyciu klas, a kontrolę nad prywatnością danych uzyskuje się poprzez określenie specyfikatorów dostępu, takich jak chroniony, publiczny, prywatny.

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

Wniosek

Przeanalizowaliśmy znaczenie pojęć OOP, zrozumieliśmy definicję abstrakcji i enkapsulacji. Przeszedłem przez przykłady abstrakcji i enkapsulacji. Przyjrzeliśmy się również zaletom korzystania z koncepcji OOP, takich jak abstrakcja i enkapsulacja. I na koniec omówiliśmy różnicę między abstrakcją a enkapsulacją.

Teraz, gdy jesteś już świadomy definicji i implementacji abstrakcji, enkapsulacji, spróbuj zaimplementować je w swoim kodzie i spróbuj zmniejszyć złożoność kodu, który będziesz pisać od teraz!

Jeśli chcesz dowiedzieć się więcej o Java, programowaniu z pełnym stosem, sprawdź program 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 rygorystycznych szkoleń, ponad 9 projektów i zadania, status absolwentów IIIT-B, praktyczne praktyczne projekty zwieńczenia i pomoc w pracy z najlepszymi firmami.

Czym jest abstrakcja w programowaniu obiektowym?

Abstrakcja w programowaniu obiektowym to technika reprezentowania informacji wysokiego poziomu o problemie poprzez budowanie obiektu. Abstrakcja jest implementowana za pomocą interfejsu, a implementacja interfejsu odbywa się za pomocą rzeczywistego kodu. Abstrakcja jest zaimplementowana, gdy konkretne szczegóły są ukryte przed zużywającymi modułami, zapewniając im inny interfejs. Abstrakcja jest zaimplementowana, aby ukryć szczegóły implementacji szczegółów niskiego poziomu. Służy również do ukrywania skomplikowanych szczegółów i zapewnia użytkownikowi prostszy interfejs.

Jak działają klasy i obiekty w programowaniu?

Klasy i obiekty to dwie główne koncepcje stosowane we wszystkich obiektowych językach programowania. Każda klasa zawiera zestaw zmiennych i metod, których może używać i manipulować. W obiektowym języku programowania wszystkie obiekty w programie mają określony typ, a zmiennymi i metodami obiektu można manipulować tylko metodami tego samego typu. W większości języków obiektowych klasa służy do tworzenia obiektu i odwrotnie. Program obiektowy składa się z obiektów, procedur i typów danych. Wszystko w programie zorientowanym obiektowo, w tym dane i kod, jest obiektem.

Jakie są różnice między enkapsulacją a abstrakcją?

Abstrakcja to metoda usuwania niepotrzebnych szczegółów w kodzie i skupienia się na odpowiednich częściach. Na przykład, zamiast pisać funkcję mnożącą dwie liczby, możemy napisać funkcję „mnożenie” i użyć jej do pomnożenia dowolnej liczby przez dowolną liczbę. Abstrakcja to sposób na przedstawienie pewnych konkretnych danych. Hermetyzacja to sposób na ukrycie złożoności czegoś i odsłonięcie tylko tych części, które chcesz odsłonić. Na przykład, jeśli masz klasę, która ma jedno lub więcej pól prywatnych, których używasz do przechowywania danych, to jesteś w enkapsulacji. Klasa zawiera dane i ma metody, które uwidaczniają dane publiczne.