Abstrakcja w Java
Czym jest abstrakcja Java?
Abstrakcja jest koncepcjฤ programowania obiektowego, ktรณra โpokazujeโ tylko istotne atrybuty i โukrywaโ niepotrzebne informacje. Gลรณwnym celem abstrakcji jest ukrywanie niepotrzebnych szczegรณลรณw przed uลผytkownikami. Abstrakcja to wybieranie danych z wiฤkszego zbioru, aby pokazaฤ uลผytkownikowi tylko istotne szczegรณลy obiektu. Pomaga w redukcji zลoลผonoลci i wysiลkรณw programowania. Jest to jedna z najwaลผniejszych koncepcji OOP.
Kliknij w tym miejscu jeลli film nie jest dostฤpny
Przeanalizujmy abstrakcjฤ w OOP na przykลadzie:
Zaลรณลผmy, ลผe chcesz utworzyฤ aplikacjฤ bankowฤ i poproszono ciฤ o zebranie wszystkich informacji o twoim kliencie. Istnieje prawdopodobieลstwo, ลผe znajdziesz nastฤpujฤ ce informacje o kliencie

Jednak nie wszystkie powyลผsze informacje sฤ wymagane do utworzenia aplikacji bankowej. Dlatego musisz wybraฤ tylko przydatne informacje dla swojego aplikacja bankowa z tego basenu. Dane takie jak imiฤ i nazwisko, adres, informacje podatkowe itp. majฤ sens w przypadku aplikacji bankowej, ktรณra jest przykลadem abstrakcji w OOP
Poniewaลผ pobraliลmy/usunฤliลmy/wybraliลmy informacje o kliencie z wiฤkszej puli, proces ten w jฤzyku angielskim nazywany jest Abstrakcjฤ . OOP. Jednak te same informacje po wyodrฤbnieniu mogฤ byฤ wykorzystane w szerokim zakresie aplikacji. Na przykลad, moลผesz uลผyฤ tych samych danych do aplikacji szpitalnej, aplikacji portalu pracy, bazy danych rzฤ dowej itp. z niewielkฤ lub ลผadnฤ modyfikacjฤ . Stฤ d stajฤ siฤ Twoimi danymi gลรณwnymi. Jest to zaleta abstrakcji w OOP.
Rรณลผnica miฤdzy abstrakcjฤ a enkapsulacjฤ
| Abstrakcja | Kapsuลkowanie |
|---|---|
| Abstrakcja w programowaniu obiektowym rozwiฤ zuje problemy na poziomie projektu. | Enkapsulacja rozwiฤ zuje ten poziom implementacji. |
| Abstrakcja w programowaniu polega na ukrywaniu niepotrzebnych szczegรณลรณw, a jednoczeลnie pokazywaniu najwaลผniejszych informacji. | Hermetyzacja oznacza powiฤ zanie kodu i danych w jednฤ caลoลฤ. |
| Abstrakcja danych w Java pozwala skupiฤ siฤ na tym, co musi zawieraฤ obiekt informacyjny | Kapsuลkowanie oznacza ukrycie wewnฤtrznych szczegรณลรณw lub mechanizmรณw dziaลania obiektu ze wzglฤdรณw bezpieczeลstwa. |
Rรณลผnica miฤdzy klasฤ abstrakcyjnฤ a interfejsem
| Klasa abstrakcyjna | Interfejs |
|---|---|
| Klasa abstrakcyjna moลผe mieฤ zarรณwno metody abstrakcyjne, jak i nieabstrakcyjne. | Interfejs moลผe zawieraฤ wyลฤ cznie metody abstrakcyjne. |
| Nie obsลuguje wielokrotnego dziedziczenia. | Obsลuguje wielokrotne dziedziczenie. |
| Moลผe zapewniฤ implementacjฤ interfejsu. | Nie moลผe zapewniฤ implementacji klasy abstrakcyjnej. |
| Klasa abstrakcyjna moลผe mieฤ chronione i abstrakcyjne metody publiczne. | Interfejs moลผe mieฤ tylko publiczne metody abstrakcyjne. |
| Klasa abstrakcyjna moลผe mieฤ koลcowฤ , statycznฤ lub statycznฤ zmiennฤ koลcowฤ z dowolnym specyfikatorem dostฤpu. | Interfejs moลผe mieฤ tylko publicznฤ statycznฤ zmiennฤ koลcowฤ . |
Co to jest klasa abstrakcyjna?
KLASA abstrakcyjna jest rodzajem zajฤฤ Java, ktรณre deklarujฤ jednฤ lub wiฤcej metod abstrakcyjnych. Klasy te mogฤ mieฤ metody abstrakcyjne, a takลผe metody konkretne. Normalna klasa nie moลผe mieฤ metod abstrakcyjnych. Klasa abstrakcyjna to klasa zawierajฤ ca co najmniej jednฤ metodฤ abstrakcyjnฤ . Moลผemy zrozumieฤ tฤ koncepcjฤ poprzez przykลad ksztaลtu w Javie.
Rozwaลผ nastฤpujฤ cฤ hierarchiฤ klas skลadajฤ cฤ siฤ z klasy Shape, ktรณra jest dziedziczona przez trzy klasy Rectangle, Circle i Triangle. Klasa Shape zostaลa utworzona, aby zaoszczฤdziฤ na wspรณlnych atrybutach i metodach wspรณลdzielonych przez trzy klasy Rectangle, Circle i Triangle. calculatorArea() jest jednฤ z takich metod wspรณลdzielonych przez wszystkie trzy klasy podrzฤdne i obecnฤ w klasie Shape.
Zaลรณลผmy teraz, ลผe piszesz kod, aby utworzyฤ obiekty dla klas przedstawionych powyลผej. Obserwujmy, jak te obiekty bฤdฤ wyglฤ daฤ w praktycznym ลwiecie. Obiekt klasy prostokฤ t nada prostokฤ towi ksztaลt, ktรณry tak powszechnie obserwujemy w ลผyciu codziennym.
Obiekt trรณjkฤ ta klasowego da trรณjkฤ t, znowu powszechny codzienny ksztaลt.
Ale jak wyglฤ daลby obiekt Class Shape w praktycznym ลwiecie?
Jeลli zauwaลผysz, ลผe klasa Shape sลuลผy nasz cel osiฤ gniฤcia dziedzictwo i polimorfizm. Ale nie zostaล zbudowany do tworzenia instancji. Takie klasy moลผna oznaczyฤ etykietami Abstrakcja. Nie moลผna utworzyฤ instancji abstrakcyjnej klasy Java.
Skลadnia:
abstract class Shape{
// code
}
Moลผliwe, ลผe NIE oznaczysz klasy Shape jako abstrakcyjnej, a nastฤpnie utworzysz jej instancjฤ. Ale taki obiekt nie bฤdzie miaล zastosowania w twoim kodzie i otworzy miejsce na potencjalne bลฤdy. Dlatego nie jest to poลผฤ dane.
Czym sฤ metody abstrakcyjne Java?
METODA ABSTRAKCYJNA in Java, to metoda, ktรณra ma tylko definicjฤ metody, ale nie zawiera implementacji. Metoda bez treลci nazywana jest metodฤ abstrakcyjnฤ . Musi byฤ zadeklarowany w klasie abstrakcyjnej. Metoda abstrakcyjna nigdy nie bฤdzie ostateczna, poniewaลผ klasa abstrakcyjna musi implementowaฤ wszystkie metody abstrakcyjne.
Jak wszyscy wiemy, wzรณr na obliczenie pola prostokฤ ta, koลa i trรณjkฤ ta jest inny. Metoda obliczArea() bฤdzie musiaลa zostaฤ zastฤ piona przez klasy dziedziczฤ ce. Nie ma sensu definiowaฤ tego w klasie Shape, ale musimy siฤ upewniฤ, ลผe wszystkie klasy dziedziczฤ ce majฤ tฤ metodฤ.
Takie metody moลผna nazwaฤ abstrakcyjny.
Skลadnia:
abstract public void calculateArea();
Dla metoda abstrakcyjna, nie jest wymagana ลผadna implementacja. Zdefiniowany jest tylko podpis metody.
Przykลad kodu abstrakcji
abstract class Shape{
abstract void calculateArea();
}
class guru99 extends Shape{
void calculateArea(){System.out.println("Area of Shape");}
public static void main(String args[]){
Shape obj = new guru99();
obj.calculateArea();
}
}
Zalety abstrakcji
- Gลรณwnฤ zaletฤ stosowania abstrakcji w Programowanie polega na tym, ลผe pozwala zgrupowaฤ kilka powiฤ zanych klas jako rodzeลstwo.
- Abstrakcja w programowaniu obiektowym pomaga uproลciฤ proces projektowania i implementacji oprogramowania.
Ostateczne sลowo kluczowe w Java
Ostatni modyfikator dotyczy klas, metod i zmiennych. Znaczenie sลowa final rรณลผni siฤ w zaleลผnoลci od kontekstu, ale podstawowa idea jest taka sama.
- Klasy koลcowej nie moลผna dziedziczyฤ
- Zmienna koลcowa staje siฤ staลฤ i nie moลผna zmieniฤ jej wartoลci.
- Nie moลผna zastฤ piฤ metody koลcowej. Odbywa siฤ to ze wzglฤdรณw bezpieczeลstwa, a metody te sลuลผฤ do optymalizacji.
Przykลad :- Aby nauczyฤ siฤ abstrakcyjnych i koลcowych sลรณw kluczowych
Krok 1) Skopiuj poniลผszy kod do edytora.
abstract class Shape{
final int b = 20;
public void display(){
System.out.println("This is display method");
}
abstract public void calculateArea();
}
public class Rectangle extends Shape{
public static void main(String args[]){
Rectangle obj = new Rectangle();
obj.display();
//obj.b=200;
}
//public void calculateArea(){}
}
Krok 2) Zapisz, skompiluj i uruchom kod.
Krok 3) Bลฤ d =? Metoda abstrakcyjna nie jest zaimplementowana w klasie Rectangle. Aby rozwiฤ zaฤ problem, odkomentuj wiersz nr 15.
Krok 4) Odkomentuj liniฤ nr 13. Zapisz i skompiluj kod.
Krok 5) Bลฤ d =? zmienna b jest ostateczna
Kiedy stosowaฤ metody abstrakcyjne i klasฤ abstrakcyjnฤ ?
Metody abstrakcyjne sฤ najczฤลciej deklarowane tam, gdzie dwie lub wiฤcej podklas rรณwnieลผ robi to samo na rรณลผne sposoby poprzez rรณลผne implementacje. Rozszerza takลผe tฤ samฤ klasฤ abstrakcyjnฤ i oferuje rรณลผne implementacje metod abstrakcyjnych.
Klasy abstrakcyjne pomagajฤ opisaฤ ogรณlne typy zachowaล i hierarchiฤ klas programowania obiektowego. Opisujฤ rรณwnieลผ podklasy, aby zaoferowaฤ szczegรณลy implementacji klasy abstrakcyjnej.
Podsumowujฤ c:
- Abstrakcja w programowaniu to proces wybierania waลผnych zbiorรณw danych dla przedmiot w oprogramowaniu i pomijajฤ c te nieistotne.
- Po zamodelowaniu obiektu za pomocฤ abstrakcji danych w Java, ten sam zestaw danych moลผna wykorzystaฤ w rรณลผnych aplikacjach.




