Abstracvstoupit Java

Co je to bล™iลกnรญ svalytracvstoupit Java?

Abstracvรกnรญ je koncept objektovฤ› orientovanรฉho programovรกnรญ, kterรฝ โ€žzobrazujeโ€œ pouze zรกkladnรญ atributy a โ€žskrรฝvรกโ€œ nepotล™ebnรฉ informace. Hlavnรญm รบฤelem abstracskrรฝvรก pล™ed uลพivateli nepotล™ebnรฉ detaily. AbstracCรญlem je vybrat data z vฤ›tลกรญho mnoลพstvรญ dat, aby se uลพivateli zobrazily pouze relevantnรญ detaily objektu. Pomรกhรก to snรญลพit sloลพitost a รบsilรญ programovรกnรญ. Je to jeden z nejdลฏleลพitฤ›jลกรญch konceptลฏ objektovฤ› orientovanรฝch programลฏ (OOP).

kliknฤ›te zde pokud video nenรญ pล™รญstupnรฉ

Pojฤme cviฤit bล™iลกnรญ svalytracv objektovฤ› orientovanรฝch programovacรญch metodรกch s pล™รญkladem:

Pล™edpoklรกdejme, ลพe chcete vytvoล™it bankovnรญ aplikaci a budete poลพรกdรกni o shromรกลพdฤ›nรญ vลกech informacรญ o vaลกem zรกkaznรญkovi. Existuje ลกance, ลพe pล™ijdete s nรกsledujรญcรญmi informacemi o zรกkaznรญkovi

Abstracvstoupit Java
Abstracvstoupit Java

K vytvoล™enรญ bankovnรญ aplikace vลกak nejsou nutnรฉ vลกechny vรฝลกe uvedenรฉ informace. Musรญte tedy vybrat pouze uลพiteฤnรฉ informace pro vรกs bankovnรญ aplikace z tohoto fondu. Data jako jmรฉno, adresa, daลˆovรฉ informace atd. dรกvajรญ smysl pro bankovnรญ aplikaci, kterรก je Abstracpล™รญklad v objektovฤ› orientovanรฝch programovacรญch metodรกch

Abstracvstoupit Java

Protoลพe jsme naฤetli/odebrali/vybrali informace o zรกkaznรญkovi z vฤ›tลกรญho fondu, proces se oznaฤuje jako Abs.tracvstoupit OOPStejnรฉ informace vลกak po extracDatabรกzi ted lze pouลพรญt pro ลกirokou ลกkรกlu aplikacรญ. Napล™รญklad stejnรก data mลฏลพete pouลพรญt pro ลพรกdosti o pล™ijetรญ do nemocnice, ลพรกdosti o pracovnรญ portรกl, vlรกdnรญ databรกzi atd. s malรฝmi nebo ลพรกdnรฝmi รบpravami. Stanou se tak vaลกimi hlavnรญmi daty. To je vรฝhoda Abs.tracv OOP.

Rozdรญl mezi bล™iลกnรญmi svalytraca zapouzdล™enรญ

Abstracvรกnรญ Zapouzdล™enรญ
AbstracObjektovฤ› orientovanรฉ programovรกnรญ ล™eลกรญ problรฉmy na รบrovni nรกvrhu. Zapouzdล™enรญ to ล™eลกรญ na รบrovni implementace.
AbstracCรญlem programovรกnรญ je skrรฝt neลพรกdoucรญ detaily a zรกroveลˆ zobrazit nejdลฏleลพitฤ›jลกรญ informace. Zapouzdล™enรญ znamenรก spojenรญ kรณdu a dat do jedinรฉ jednotky.
Data Abstracvstoupit Java umoลพลˆuje zamฤ›ล™it se na to, co musรญ informaฤnรญ objekt obsahovat Zapouzdล™enรญ znamenรก skrytรญ vnitล™nรญch detailลฏ nebo mechaniky toho, jak objekt nฤ›co dฤ›lรก, z bezpeฤnostnรญch dลฏvodลฏ.

Rozdรญl mezi bล™iลกnรญmi svalytracTล™รญda a rozhranรญ t

AbstracTล™รญda t Rozhranรญ
Bล™iลกnรญ svalytracTล™รญda T mลฏลพe mรญt obฤ› bล™iลกnรญ svalytract a neabsolventnรญtracmetody. Rozhranรญ mลฏลพe mรญt pouze abstracmetody.
Nepodporuje vรญcenรกsobnou dฤ›diฤnost. Podporuje vรญcenรกsobnou dฤ›diฤnost.
Mลฏลพe zajistit implementaci rozhranรญ. Nemลฏลพe zajistit implementaci abs.tractล™รญda t.
Bล™iลกnรญ svalytracTล™รญda t mลฏลพe mรญt chrรกnฤ›nรฉ a abstracveล™ejnรฉ metody. Rozhranรญ mลฏลพe mรญt pouze veล™ejnรฉ abstracmetody.
Bล™iลกnรญ svalytracTล™รญda t mลฏลพe mรญt promฤ›nnou typu final, static nebo static final s libovolnรฝm specifikรกtorem pล™รญstupu. Rozhranรญ mลฏลพe mรญt pouze veล™ejnou statickou koneฤnou promฤ›nnou.

Co je to bล™iลกnรญ svalytracTล™รญda t?

bล™iลกnรญ svalyTRACTล˜รDA T je typem tล™รญdy v Java, kterรฉ deklarujรญ jeden nebo vรญce abstract metody. Tyto tล™รญdy mohou mรญt abstract metody, stejnฤ› jako konkrรฉtnรญ metody. Normรกlnรญ tล™รญda nemลฏลพe mรญt abstracmetody. AbstracTล™รญda t je tล™รญda, kterรก obsahuje alespoลˆ jeden abstracmetoda t. Koncept mลฏลพeme chรกpat pomocรญ pล™รญklad tvaru v Javฤ›.

Zvaลพte nรกsledujรญcรญ hierarchii tล™รญd sestรกvajรญcรญ z tล™รญdy Shape, kterรก je zdฤ›dฤ›na tล™emi tล™รญdami Rectangle, Circle a Triangle. Tล™รญda Shape je vytvoล™ena, aby ลกetล™ila spoleฤnรฉ atributy a metody sdรญlenรฉ tล™emi tล™รญdami Rectangle, Circle a Triangle. Jednou z takovรฝch metod sdรญlenรฝch vลกemi tล™emi podล™รญzenรฝmi tล™รญdami a pล™รญtomnรฝmi ve tล™รญdฤ› Shape je metoda countArea().

AbstracTล™รญda t v Java

Tvar bล™iลกnรญch svalลฏtracPล™รญklad

Nynรญ pล™edpoklรกdejme, ลพe pรญลกete kรณd pro vytvoล™enรญ objektลฏ pro tล™รญdy zobrazenรฉ vรฝลกe. Podรญvejme se, jak tyto pล™edmฤ›ty budou vypadat v praktickรฉm svฤ›tฤ›. Objekt tล™รญdy obdรฉlnรญk dรก obdรฉlnรญk, tvar, kterรฝ tak bฤ›ลพnฤ› pozorujeme v kaลพdodennรญm ลพivotฤ›.

AbstracTล™รญda t

Objekt tล™รญdnรญho trojรบhelnรญku dรก trojรบhelnรญk, opฤ›t bฤ›ลพnรฝ kaลพdodennรญ tvar.

AbstracTล™รญda t

Ale jak by vypadal pล™edmฤ›t Class Shape v praktickรฉm svฤ›tฤ›?

AbstracTล™รญda t

Pokud pozorujete, ลพe tล™รญda Shape slouลพรญ v nรกลก cรญl dosรกhnout dฤ›dictvรญ a polymorfismus. Nebylo to ale stavฤ›no pro vytvรกล™enรญ instancรญ. Takovรฉ tล™รญdy mohou bรฝt oznaฤeny AbstractBล™iลกnรญ svalytracTล™รญdu t v Javฤ› nelze vytvoล™it.

Syntaxe:

abstract class Shape{
	// code
}

Je moลพnรฉ, ลพe tล™รญdu Shape NEOZNAฤŒUJETE jako Abs.tract a potรฉ vytvoล™it jeho instanci. Takovรฝ objekt ale nebude mรญt ve vaลกem kรณdu ลพรกdnรฉ vyuลพitรญ a otevล™e prostor pro potenciรกlnรญ chyby. Proto to nenรญ ลพรกdoucรญ.

Co jsou bล™iลกnรญ svalytracMetody v Java?

bล™iลกnรญ svalyTRACT-METODA in Java, je metoda, kterรก mรก pouze definici metody, ale neobsahuje implementaci. Metoda bez tฤ›la se nazรฝvรก Abs.tracMetoda t. Musรญ bรฝt deklarovรกna v abstractล™รญda t. Bล™iลกnรญ svalytracMetoda t nikdy nebude koneฤnรก, protoลพe abstracTล™รญda t musรญ implementovat vลกechny abstracmetody.

Jak vลกichni vรญme, vzorec pro vรฝpoฤet plochy pro obdรฉlnรญk, kruh a trojรบhelnรญk je jinรฝ. Metoda countArea() bude muset bรฝt pล™epsรกna dฤ›dรญcรญmi tล™รญdami. Nemรก smysl ji definovat ve tล™รญdฤ› Shape, ale musรญme se ujistit, ลพe vลกechny dฤ›dรญcรญ tล™รญdy majรญ metodu.

Takovรฉ metody mohou bรฝt oznaฤeny abstract.

Syntaxe:

abstract public void calculateArea();

Pro abstracU metody t nenรญ nutnรก ลพรกdnรก implementace. Definuje se pouze podpis metody.

Abstracvรกnรญ Code Pล™รญklad

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();
}  
}

Vรฝhody bล™iลกnรญch svalลฏtracvรกnรญ

  • Hlavnรญ vรฝhoda pouลพรญvรกnรญ bล™iลกnรญch svalลฏtracvstoupit Programovรกnรญ spoฤรญvรก v tom, ลพe vรกm umoลพลˆuje seskupit nฤ›kolik pล™รญbuznรฝch tล™รญd jako sourozence.
  • AbstracTechnologie v objektovฤ› orientovanรฉm programovรกnรญ pomรกhรก snรญลพit sloลพitost procesu nรกvrhu a implementace softwaru.

Koneฤnรฉ klรญฤovรฉ slovo v Java

Poslednรญ modifikรกtor se vztahuje na tล™รญdy, metody a promฤ›nnรฉ. Vรฝznam koncovรฉho se liลกรญ od kontextu k kontextu, ale zรกkladnรญ myลกlenka je stejnรก.

  • Poslednรญ tล™รญdu nelze zdฤ›dit
  • Koneฤnรก promฤ›nnรก se stรกvรก konstantou a jejรญ hodnotu nelze zmฤ›nit.
  • Koneฤnou metodu nelze pล™epsat. To se provรกdรญ z bezpeฤnostnรญch dลฏvodลฏ a tyto metody se pouลพรญvajรญ pro optimalizaci.

Pล™รญklad :- Nauฤit se bล™iลกnรญ svalytracklรญฤovรก slova t a final

Krok 1) Zkopรญrujte nรกsledujรญcรญ kรณd do editoru.

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) Uloลพte, zkompilujte a spusลฅte kรณd.

Krok 3) Chyba =? Bล™iลกnรญ svalytracMetoda t nenรญ implementovรกna ve tล™รญdฤ› Rectangle. Pro opravu problรฉmu odkomentujte ล™รกdek ฤ. 15.

Krok 4) Odkomentujte ล™รกdek ฤ. 13. Uloลพte a zkompilujte kรณd.

Krok 5) Chyba = ? promฤ›nnรก b je koneฤnรก

Kdy pouลพรญvat bล™iลกnรญ svalytracMetody a bล™iลกnรญ svalytracTล™รญda t?

AbstracMetody t se vฤ›tลกinou deklarujรญ tam, kde dvฤ› nebo vรญce podtล™รญd dฤ›lajรญ stejnou vฤ›c rลฏznรฝmi zpลฏsoby prostล™ednictvรญm rลฏznรฝch implementacรญ. Takรฉ rozลกiล™ujรญ stejnรฉ Abs.tractล™รญda t a nabรญzรญ rลฏznรฉ implementace bล™iลกnรญch svalลฏtracmetody.

AbstracTล™รญdy t pomรกhajรญ popisovat obecnรฉ typy chovรกnรญ a hierarchii tล™รญd objektovฤ› orientovanรฉho programovรกnรญ. Popisuje takรฉ podtล™รญdy, kterรฉ nabรญzejรญ podrobnosti o implementaci abs.tractล™รญda t.

Shrnutรญ:

  • AbstracVรฝbฤ›r v programovรกnรญ je proces vรฝbฤ›ru dลฏleลพitรฝch datovรฝch sad pro Objekt ve vaลกem softwaru a vynechejte ty nepodstatnรฉ.
  • Jakmile si vymodelujete objekt pomocรญ Data Abstracvstoupit Java, stejnรก sada dat mลฏลพe bรฝt pouลพita v rลฏznรฝch aplikacรญch.

Shrลˆte tento pล™รญspฤ›vek takto: