Czy możesz mi powiedzieć, jaka jest różnica między abstrakcją a ukrywaniem informacji podczas tworzenia oprogramowania?
Jestem zdezorientowany. Abstrakcja ukrywa implementację szczegółów, a informacja ukrywa abstrakcyjne szczegóły czegoś.
Aktualizacja: znalazłem dobrą odpowiedź na te trzy koncepcje. Zobacz oddzielną odpowiedź poniżej na kilka cytatów zaczerpniętych z tego miejsca .
Odpowiedzi:
Idź do źródła! Grady Booch mówi (w Object Oriented Analysis and Design, strona 49, drugie wydanie):
Innymi słowy: abstrakcja = obiekt zewnętrznie; hermetyzacja (osiągnięta poprzez ukrycie informacji) = obiekt wewnętrznie,
Przykład: W .NET Framework
System.Text.StringBuilder
klasa zapewnia abstrakcję w buforze ciągów. Ta abstrakcja bufora umożliwia pracę z buforem bez względu na jego implementację. W ten sposób możesz dołączać łańcuchy do bufora bez względu na to, jakStringBuilder
wewnętrznie śledzi rzeczy, takie jak wskaźnik do bufora i zarządzanie pamięcią, gdy bufor się zapełni (co robi z hermetyzacją poprzez ukrywanie informacji).rp
źródło
OP zaktualizował swoje pytanie kilkoma cytatami, które znalazł, a mianowicie w artykule Edwarda V. Berarda zatytułowanym „Abstrakcja, enkapsulacja i ukrywanie informacji” . Ponownie publikuję nieco rozszerzoną i przeformatowaną wersję aktualizacji OP, ponieważ powinna to być odpowiedź sama w sobie.
(Wszystkie cytaty pochodzą z artykułu wymienionego powyżej).
Abstrakcja:
Ukrywanie informacji:
Kapsułkowanie:
Wniosek:
źródło
Information Hiding
(lub ukrywa implementację), podczas gdy rodzaj generycznyclass
osiąga hermetyzację, a abstrakcję uzyskuje się przezprivate
dostępAbstraction
ukrywa szczegóły implementacji, zapewniając warstwę nad podstawową funkcjonalnością.Information Hiding
ukrywa dane, na które ma wpływ ta implementacja. Użycieprivate
ipublic
podlega temu. Na przykład ukrywanie zmiennych klas.Encapsulation
jest po prostu umieszczeniem wszystkich podobnych danych i funkcji w grupie, np.Class
w programowaniu;Packet
w sieci.Poprzez wykorzystanie klas, możemy realizować wszystkie trzy koncepcje -
Abstraction
,Information Hiding
iEncapsulation
źródło
Proszę nie komplikować prostych pojęć.
Hermetyzacja : Zamknięcie danych i metod w jednej jednostce to Hermetyzacja (np. Klasa)
Abstrakcja : jest to akt przedstawiający tylko najważniejsze rzeczy bez uwzględniania szczegółów tła. (np. interfejs)
PRZYKŁADY I WIĘCEJ INFORMACJI GOTO:
http://thecodekey.com/C_VB_Codes/Encapsulation.aspx
http://thecodekey.com/C_VB_Codes/Abstraction.aspx
Zatwierdzone definicje tutaj
PS: Pamiętam też definicję z książki Sumita Arora o nazwie C ++, którą czytamy w 11 klasie;)
źródło
Znaczenie abstrakcji nadane przez Oxford English Dictionary (OED) najbliższe sensowi zamierzonemu tutaj brzmi: „Akt rozdzielania w myśli”. Lepszą definicją może być „Przedstawianie podstawowych cech czegoś bez tła lub nieistotnych szczegółów”.
Ukrywanie informacji to zasada, zgodnie z którą użytkownicy komponentu oprogramowania (takiego jak klasa) muszą znać tylko podstawowe szczegóły dotyczące sposobu inicjalizacji i dostępu do komponentu, a nie muszą znać szczegółów implementacji.
Edycja : Wydaje mi się, że abstrakcja to proces decydowania, które części implementacji powinny być ukryte .
Więc to nie jest abstrakcja VERSUS ukrywanie informacji. To informacja ukrywa abstrakcję VIA.
źródło
Abstrakcja
Abstrakcja to czynność polegająca na przedstawianiu podstawowych szczegółów bez uwzględniania szczegółów tła. Klasa abstrakcyjna ma tylko sygnatury metod, a klasa implementująca może mieć własną implementację, dzięki czemu złożone szczegóły zostaną ukryte przed użytkownikiem. Abstrakcja skupia się na widoku zewnętrznym. Innymi słowy, abstrakcja to oddzielenie interfejsów od rzeczywistej implementacji.
Kapsułkowanie
Hermetyzacja wyjaśnia wiązanie elementów członkowskich danych i metod w jedną jednostkę. Ukrywanie informacji jest głównym celem hermetyzacji. Hermetyzację osiąga się za pomocą specyfikatorów dostępu, takich jak prywatny, publiczny, chroniony. Zmienne składowe klasy są ustawiane jako prywatne, więc nie mogą być dostępne bezpośrednio dla świata zewnętrznego. Hermetyzacja skupia się na widoku wewnętrznym. Innymi słowy, hermetyzacja jest techniką używaną do ochrony informacji w obiekcie przed innym obiektem.
źródło
Abstrakcja ukrywa szczegóły implementacji, jak to ująłeś.
Abstrahujesz coś do tak wysokiego punktu, że będziesz musiał zrobić tylko coś bardzo prostego, aby wykonać akcję.
Ukrywanie informacji ukrywa szczegóły implementacji. Programowanie jest trudne. Możesz mieć wiele spraw do załatwienia i załatwienia. Mogą istnieć zmienne, które chcesz / musisz bardzo dokładnie śledzić. Ukrywanie informacji gwarantuje, że nikt przypadkowo nie zepsuje czegoś przy użyciu zmiennej lub metody, którą ujawnisz publicznie.
Te dwie koncepcje są ze sobą ściśle powiązane w programowaniu obiektowym.
źródło
Abstrakcja - jest to proces identyfikacji podstawowych cech obiektu bez uwzględniania nieistotnych i żmudnych szczegółów.
Hermetyzacja - jest to proces zamykania danych i funkcji manipulujących tymi danymi w jednej jednostce.
Abstrakcja i hermetyzacja to pojęcia powiązane, ale uzupełniające się.
Abstrakcja to proces. Hermetyzacja to mechanizm implementacji abstrakcji.
Abstrakcja skupia się na obserwowalnym zachowaniu obiektu. Hermetyzacja koncentruje się na implementacji, która powoduje takie zachowanie.
Ukrywanie informacji - to proces ukrywania szczegółów implementacji obiektu. Jest to wynik kapsułkowania.
źródło
Hermetyzacja: łączenie elementów członkowskich danych i funkcji składowych jest nazywane hermetyzacją. hermetyzacja odbywa się za pośrednictwem zajęć. abstrakcja: ukrywanie szczegółów implementacji z formularza lub z widoku nazywa się abstrakcją. ex: int x; nie wiemy, jak int będzie działać wewnętrznie. ale wiemy, że int będzie działać. to jest abstrakcja.
źródło
Abstrakcja: Abstrakcja to pojęcie / technika używana do określenia, jaki powinien być zewnętrzny widok obiektu. Udostępnianie tylko wymaganego interfejsu.
Ukrywanie informacji: jest uzupełnieniem abstrakcji, ponieważ dzięki ukrywaniu informacji uzyskuje się abstrakcję. Ukrywanie wszystkiego poza widokiem zewnętrznym.
Hermetyzacja: to wiązanie danych i powiązanych funkcji w jednostkę. Ułatwia Abstrakcje i ukrywanie informacji. Zezwalanie na zastosowanie funkcji, takich jak dostęp do członków w jednostce, w celu ukrycia abstrakcji i informacji
źródło
Zobacz post Joela na temat prawa nieszczelnych abstrakcji
JoelOnsoftware
Zasadniczo abstrakcja daje swobodę myślenia o koncepcjach wyższego poziomu. Nieprogramująca analogia polega na tym, że większość z nas nie wie, skąd pochodzi nasza żywność ani jak jest produkowana, ale fakt, że (zwykle) nie musimy się tym martwić, pozwala nam robić inne rzeczy, takie jak programowanie.
Co do ukrywania informacji to zgadzam się na jamowanie.
źródło
W skrócie
Hermetyzacja : - Ukrywanie informacji
Abstrakcja : - Ukrywanie implementacji
Abstraction
pozwala skupić się na,what the object does
podczas gdy oznacza hermetyzacjęhow an object works
źródło
Abstrakcja pozwala traktować złożony proces jako prosty proces. Na przykład standardowa abstrakcja „pliku” traktuje pliki jako ciągłą tablicę bajtów. Użytkownik / programista nie musi nawet myśleć o problemach klastrów i fragmentacji. (Abstrakcja zwykle pojawia się jako klasy lub podprogramy).
Ukrywanie informacji polega na ochronie abstrakcji przed złośliwymi / niekompetentnymi użytkownikami. Ograniczając kontrolę nad jakimś stanem (na przykład alokacją dysku twardego) do pierwotnego programisty, ogromna ilość obsługi błędów staje się zbędna. Jeśli nikt inny oprócz sterownika systemu plików nie może zapisywać na dysku twardym, sterownik systemu plików dokładnie wie, co zostało zapisane na dysku twardym i gdzie. (Zwykle manifestacją tej koncepcji jest
private
iprotected
słowa kluczowe w języku OO).źródło
Aby coś wyabstrahować, musimy ukryć szczegóły lub ukryć szczegóły czegoś, co musimy wyabstrahować. Ale oba z nich można osiągnąć przez hermetyzację.
Zatem ukrywanie informacji jest celem, abstrakcja to proces, a hermetyzacja to technika.
źródło
Abstrakcja oznacza po prostu technikę, w której tylko istotne szczegóły oprogramowania są widoczne dla użytkownika, aby pomóc użytkownikowi w jego używaniu lub obsłudze, a zatem szczegóły implementacji tego oprogramowania nie są pokazywane (są niewidoczne). Hermetyzacja to technika, w której pakiet zawiera jeden lub więcej elementów, a zatem niektóre informacje (szczególnie szczegóły programu) stały się widoczne, a niektóre niewidoczne dla użytkownika, więc hermetyzację uzyskuje się poprzez ukrywanie informacji. W podsumowaniu. Abstrakcja służy do obserwowalnego zachowania (zewnętrznie), a hermetyzacja służy do niewidzialności (wewnętrznie), ale te dwa elementy naprawdę się uzupełniają.
źródło
Po prostu dodając więcej szczegółów na temat Ukrywania informacji , znaleziono Ten link jest naprawdę dobrym źródłem z przykładami
źródło
Zarówno abstrakcja, jak i hermetyzacja to dwie z czterech podstawowych koncepcji OOP, które pozwalają zamodelować rzeczy ze świata rzeczywistego w obiekty, dzięki czemu można je zaimplementować w programie i kodzie. Wielu początkujących myli się między abstrakcją a enkapsulacją, ponieważ oba wyglądają bardzo podobnie. Jeśli zapytasz kogoś, czym jest abstrakcja, powie, że jest to koncepcja OOP, która koncentruje się na istotnych informacjach, ukrywając niepotrzebne szczegóły, a kiedy zapytasz o hermetyzację, wielu powie, że jest to kolejna koncepcja OOP, która ukrywa dane przed światem zewnętrznym. Definicje nie są błędne, ponieważ zarówno abstrakcja, jak i enkapsulacja coś ukrywają, ale kluczowa różnica polega na zamiarze.
Abstrakcja ukrywa złożoność, dając bardziej abstrakcyjny obraz, coś w rodzaju widoku 10000 stóp, podczas gdy enkapsulacja ukrywa wewnętrzną pracę, dzięki czemu można ją później zmienić. Innymi słowy, Abstrakcja ukrywa szczegóły na poziomie projektowania, a kapsułkowanie ukrywa szczegóły na poziomie implementacji.
źródło
Po przeczytaniu wszystkich powyższych odpowiedzi, jedna po drugiej, nie mogę powstrzymać się przed opublikowaniem tego
Hermetyzacja jest jednak dość wyraźna z góry ->
odnośnik wiki
źródło
Ja również byłem bardzo zdezorientowany co do dwóch koncepcji abstrakcji i enkapsulacji. Ale kiedy zobaczyłem artykuł o abstrakcji na myjavatrainer.com, stało się dla mnie jasne, że abstrakcja i enkapsulacja to jabłka i pomarańcze, nie możesz ich tak naprawdę porównać, ponieważ oba są wymagane.
Hermetyzacja to sposób tworzenia obiektu, a abstrakcja to sposób, w jaki obiekt jest postrzegany w świecie zewnętrznym.
źródło
Hermetyzacja: powiązanie danych i metody, które na nie działają. pozwala to na ukrycie danych przed wszystkimi innymi metodami w innych klasach. Przykład:
MyList
klasa, które można dodać element, usunąć element, i usunąć wszystkie elementy metodadd
,remove
orazremoveAll
ustawę na liście (prywatny tablicy), które nie mogą być dostępne bezpośrednio z zewnątrz.Abstrakcja: ukrywa nieistotne zachowanie i dane. Sposób, w jaki elementy są faktycznie przechowywane, dodawane lub usuwane, jest ukryty (abstrakcyjny). Moje dane mogą być przechowywane w prostej tablicy, ArrayList, LinkedList i tak dalej. Również sposób implementacji metod jest ukryty z zewnątrz.
źródło
Hermetyzacja - wymuszanie dostępu do danych wewnętrznych w sposób kontrolowany lub uniemożliwienie bezpośredniego dostępu do członków.
Abstrakcja - ukrywanie szczegółów implementacji niektórych metod jest nazywane abstrakcją
Rozumiemy na przykładzie: -
teraz dla abstrakcji zdefiniuj metodę, do której można uzyskać dostęp, a użytkownik nie wie, jaka jest treść metody i jak ona działa. Rozważmy powyższy przykład, możemy zdefiniować obszar metody, który oblicza pole prostokąta.
Teraz za każdym razem, gdy użytkownik użyje powyższej metody, otrzyma tylko obszar, a nie sposób, w jaki jest obliczany. Możemy rozważyć przykład metody println (), po prostu wiemy, że jest używana do drukowania i nie wiemy, jak wypisuje dane. Napisałem szczegółowo blog, na którym można zobaczyć poniższy link, aby uzyskać więcej informacji na temat abstrakcji a hermetyzacja
źródło
Warto zauważyć, że te terminy mają ustandaryzowane definicje IEEE, które można przeszukać pod adresem https://pascal.computer.org/ .
abstrakcja
ukrywanie informacji
kapsułkowanie
źródło