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

Abstrakcja w Java
Abstrakcja w Java

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

Abstrakcja w Java

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.

Klasa abstrakcyjna w Java

Przykล‚ad abstrakcji ksztaล‚tu

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.

Klasa abstrakcyjna

Obiekt trรณjkฤ…ta klasowego da trรณjkฤ…t, znowu powszechny codzienny ksztaล‚t.

Klasa abstrakcyjna

Ale jak wyglฤ…daล‚by obiekt Class Shape w praktycznym ล›wiecie?

Klasa abstrakcyjna

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.

Podsumuj ten post nastฤ™pujฤ…co: