logo

Abstrakcija Java valodā

Abstrakcija Java valodā ir process, kurā mēs lietotājam rādām tikai būtiskas detaļas/funkcionalitāti. Lietotājam netiek rādīta nebūtiskā ieviešanas informācija.

Šajā rakstā mēs uzzināsim par abstrakciju un to, ko nozīmē abstrakts.



Vienkāršs piemērs, lai saprastu abstrakciju:

Televizora tālvadības pults ir izcils abstrakcijas piemērs . Tas vienkāršo mijiedarbību ar televizoru, slēpjot sarežģītību aiz vienkāršām pogām un simboliem, padarot to vienkāršu, neizprotot televizora darbības tehniskās detaļas.

Kas ir abstrakcija Java valodā?

Java valodā abstrakcija tiek panākta ar saskarnes un abstraktās nodarbības . Izmantojot saskarnes, mēs varam sasniegt 100% abstrakciju.

Datu abstrakciju var definēt arī kā procesu, kurā tiek identificētas tikai nepieciešamās objekta īpašības, ignorējot nebūtiskās detaļas. Objekta īpašības un uzvedība to atšķir no citiem līdzīga veida objektiem, kā arī palīdz klasificēt/grupēt objektus.



Abstrakcijas reālās dzīves piemērs:

Apsveriet reālu piemēru, kad vīrietis vada automašīnu. Vīrietis zina tikai to, ka, nospiežot akseleratorus, palielinās automašīnas ātrums vai bremzēšana apturēs automašīnu, bet viņš nezina, kā, nospiežot akseleratoru, ātrums faktiski palielinās, viņš nezina par automašīnas iekšējo mehānismu. vai akseleratora, bremžu uc ieviešanu automašīnā. Tā ir abstrakcija.

Java Abstract klases un Java Abstract metodes

  1. Abstraktā klase ir klase, kas tiek deklarēta ar abstraktu atslēgvārdu.
  2. Abstraktā metode ir metode, kas tiek deklarēta bez ieviešanas.
  3. Abstraktajā klasē var būt vai var nebūt visas abstraktās metodes. Dažas no tām var būt konkrētas metodes
  4. Metodes definētais kopsavilkums vienmēr ir jāpārdefinē apakšklasē, tādējādi padarot noteicošais obligāta vai padara pašu apakšklasi abstraktu.
  5. Jebkura klase, kurā ir viena vai vairākas abstraktas metodes, arī jādeklarē ar abstraktu atslēgvārdu.
  6. Nevar būt abstraktas klases priekšmets. Tas nozīmē, ka abstraktu klasi nevar tieši izveidot ar jauns operators .
  7. Abstraktajai klasei var būt parametrizēti konstruktori, un noklusējuma konstruktors vienmēr atrodas abstraktajā klasē.

Algoritms abstrakcijas ieviešanai Java

  1. Nosakiet klases vai saskarnes, kas būs daļa no abstrakcijas.
  2. Izveidojiet abstraktu klasi vai saskarni, kas definē šo klašu kopīgās darbības un īpašības.
  3. Abstraktajā klasē vai interfeisā definējiet abstraktas metodes, kurām nav nekādas ieviešanas detaļas.
  4. Ieviesiet konkrētas klases, kas paplašina abstrakto klasi vai ievieš saskarni.
  5. Ignorēt abstraktās metodes konkrētajās klasēs, lai nodrošinātu to specifiskās ieviešanas iespējas.
  6. Izmantojiet konkrētās klases, lai īstenotu programmas loģiku.

Kad izmantot abstraktās klases un abstraktās metodes?

Ir situācijas, kurās mēs vēlamies definēt virsklasi, kas deklarē noteiktās abstrakcijas struktūru, nenodrošinot katras metodes pilnīgu ieviešanu. Dažreiz mēs vēlamies izveidot virsklasi, kas definē tikai vispārināšanas veidlapu, kas tiks koplietota visām tās apakšklasēm, atstājot katras apakšklases ziņā aizpildīšanu.

Apsveriet klasiskās formas piemēru, ko, iespējams, izmanto datorizētā projektēšanas sistēmā vai spēļu simulācijā. Pamata veids ir forma, un katrai formai ir krāsa, izmērs un tā tālāk. No tā tiek atvasināti (iedzimti) specifiski formu veidi — aplis, kvadrāts, trīsstūris utt. — katram no tiem var būt papildu īpašības un darbības. Piemēram, noteiktas formas var apgriezt. Dažas darbības var atšķirties, piemēram, ja vēlaties aprēķināt formas laukumu. Tipu hierarhija iemieso gan formu līdzības, gan atšķirības.



Abstraktā klase Java valodā

Java abstrakcijas piemērs

1. piemērs:

Java


kā izlauzties no brīža cilpas java



// Java program to illustrate the> // concept of Abstraction> abstract> class> Shape {> >String color;> > >// these are abstract methods> >abstract> double> area();> >public> abstract> String toString();> > >// abstract class can have the constructor> >public> Shape(String color)> >{> >System.out.println(>'Shape constructor called'>);> >this>.color = color;> >}> > >// this is a concrete method> >public> String getColor() {>return> color; }> }> class> Circle>extends> Shape {> >double> radius;> > >public> Circle(String color,>double> radius)> >{> > >// calling Shape constructor> >super>(color);> >System.out.println(>'Circle constructor called'>);> >this>.radius = radius;> >}> > >@Override> double> area()> >{> >return> Math.PI * Math.pow(radius,>2>);> >}> > >@Override> public> String toString()> >{> >return> 'Circle color is '> +>super>.getColor()> >+>'and area is : '> + area();> >}> }> class> Rectangle>extends> Shape {> > >double> length;> >double> width;> > >public> Rectangle(String color,>double> length,> >double> width)> >{> >// calling Shape constructor> >super>(color);> >System.out.println(>'Rectangle constructor called'>);> >this>.length = length;> >this>.width = width;> >}> > >@Override> double> area() {>return> length * width; }> > >@Override> public> String toString()> >{> >return> 'Rectangle color is '> +>super>.getColor()> >+>'and area is : '> + area();> >}> }> public> class> Test {> >public> static> void> main(String[] args)> >{> >Shape s1 =>new> Circle(>'Red'>,>2.2>);> >Shape s2 =>new> Rectangle(>'Yellow'>,>2>,>4>);> > >System.out.println(s1.toString());> >System.out.println(s2.toString());> >}> }>

>

git pull sintakse
>

Izvade

Shape constructor called Circle constructor called Shape constructor called Rectangle constructor called Circle color is Redand area is : 15.205308443374602 Rectangle color is Yellowand area is : 8.0>

2. piemērs:

Java




// Java Program to implement> // Java Abstraction> > // Abstract Class declared> abstract> class> Animal {> >private> String name;> > >public> Animal(String name) {>this>.name = name; }> > >public> abstract> void> makeSound();> > >public> String getName() {>return> name; }> }> > // Abstracted class> class> Dog>extends> Animal {> >public> Dog(String name) {>super>(name); }> > >public> void> makeSound()> >{> >System.out.println(getName() +>' barks'>);> >}> }> > // Abstracted class> class> Cat>extends> Animal {> >public> Cat(String name) {>super>(name); }> > >public> void> makeSound()> >{> >System.out.println(getName() +>' meows'>);> >}> }> > // Driver Class> public> class> AbstractionExample {> >// Main Function> >public> static> void> main(String[] args)> >{> >Animal myDog =>new> Dog(>'Buddy'>);> >Animal myCat =>new> Cat(>'Fluffy'>);> > >myDog.makeSound();> >myCat.makeSound();> >}> }>

>

sarakstu kārtot pēc java

>

Izvade

Buddy barks Fluffy meows>

Iepriekš minētās Java programmas skaidrojums:

Šis kods definē Animal abstrakto klasi ar abstraktu metodi makeSound(). Suns un Cat klases paplašina Animal un ievieš makeSound() metodi. Metode main() izveido suņa un kaķa gadījumus un izsauc tiem metodi makeSound().

Tas parāda Java abstrakcijas koncepciju, kur mēs definējam veidni klasei (šajā gadījumā Animal), bet atstājam atsevišķu metožu ieviešanu definēt pēc apakšklasēm (šajā gadījumā makeSound()).

Interfeiss

Saskarnes ir vēl viena abstrakcijas ieviešanas metode Java. Galvenā atšķirība ir tā, ka, izmantojot saskarnes, mēs varam sasniegt 100% abstrakciju Java klasēs. Java vai jebkurā citā valodā saskarnēs ir iekļautas gan metodes, gan mainīgie, bet trūkst metodes pamatteksta. Papildus abstrakcijai saskarnes var izmantot arī saskarņu ieviešanai Java.

Īstenošana: Lai īstenotu an saskarne mēs izmantojam atslēgvārdu darbarīki ar klasi.

Java




// Define an interface named Shape> interface> Shape {> >double> calculateArea();>// Abstract method for> >// calculating the area> }> > // Implement the interface in a class named Circle> class> Circle>implements> Shape {> >private> double> radius;> > >// Constructor for Circle> >public> Circle(>double> radius) {>this>.radius = radius; }> > >// Implementing the abstract method from the Shape> >// interface> >public> double> calculateArea()> >{> >return> Math.PI * radius * radius;> >}> }> > // Implement the interface in a class named Rectangle> class> Rectangle>implements> Shape {> >private> double> length;> >private> double> width;> > >// Constructor for Rectangle> >public> Rectangle(>double> length,>double> width)> >{> >this>.length = length;> >this>.width = width;> >}> > >// Implementing the abstract method from the Shape> >// interface> >public> double> calculateArea() {>return> length * width; }> }> > // Main class to test the program> public> class> Main {> >public> static> void> main(String[] args)> >{> >// Creating instances of Circle and Rectangle> >Circle myCircle =>new> Circle(>5.0>);> >Rectangle myRectangle =>new> Rectangle(>4.0>,>6.0>);> > >// Calculating and printing the areas> >System.out.println(>'Area of Circle: '> >+ myCircle.calculateArea());> >System.out.println(>'Area of Rectangle: '> >+ myRectangle.calculateArea());> >}> }>

>

>

Izvade

tīkls un tīklu veidi
Area of Circle: 78.53981633974483 Area of Rectangle: 24.0>

Abstrakcijas priekšrocības

Šeit ir dažas abstrakcijas priekšrocības:

  1. Tas samazina lietu skatīšanās sarežģītību.
  2. Izvairās no koda dublēšanās un palielina atkārtotu izmantošanu.
  3. Palīdz palielināt lietojumprogrammas vai programmas drošību, jo lietotājam tiek sniegta tikai būtiska informācija.
  4. Tas uzlabo lietojumprogrammas apkopi.
  5. Tas uzlabo lietojumprogrammas modularitāti.
  6. Uzlabošana kļūs ļoti vienkārša, jo, neietekmējot galalietotājus, mēs varam veikt jebkāda veida izmaiņas mūsu iekšējā sistēmā.
  7. Uzlabo koda atkārtotu izmantošanu un apkopi.
  8. Slēpj ieviešanas informāciju un atklāj tikai būtisku informāciju.
  9. Nodrošina lietotājam skaidru un vienkāršu saskarni.
  10. Palielina drošību, liedzot piekļuvi iekšējai klases informācijai.
  11. Atbalsta modularitāti, jo sarežģītas sistēmas var sadalīt mazākās un vieglāk pārvaldāmās daļās.
  12. Abstrakcija nodrošina veidu, kā no lietotāja paslēpt ieviešanas detaļu sarežģītību, padarot to vieglāk saprotamu un lietojamu.
  13. Abstrakcija nodrošina elastību programmas ieviešanā, jo izmaiņas pamatā esošajās ieviešanas detaļās var veikt, neietekmējot lietotāja saskarni.
  14. Abstrakcija nodrošina modularitāti un problēmu nošķiršanu, padarot kodu vieglāk uzturējamu un vieglāk atkļūdojamu.

Abstrakcijas trūkumi Java valodā

Šeit ir galvenie Java abstrakcijas trūkumi:

  1. Abstrakcija var apgrūtināt sistēmas darbības izpratni.
  2. Tas var palielināt sarežģītību, īpaši, ja to neizmanto pareizi.
  3. Tas var ierobežot īstenošanas elastību.
  4. Abstrakcija var padarīt kodu nevajadzīgu sarežģītību, ja to neizmanto pareizi, tādējādi palielinot izstrādes laiku un pūles.
  5. Abstrakcija var apgrūtināt koda atkļūdošanu un izpratni, jo īpaši tiem, kas nav pazīstami ar abstrakcijas slāņiem un ieviešanas informāciju.
  6. Pārmērīga abstrakcijas izmantošana var samazināt veiktspēju papildu koda un netiešo slāņu dēļ.

Lasi arī:

Abstrakcija Java — FAQ

Q1. Kāpēc mēs izmantojam abstraktu?

Viens no galvenajiem iemesliem, kāpēc mēs izmantojam abstraktus jēdzienus, ir sarežģītības vienkāršošana. Iedomājieties, ka mēģināt izskaidrot visu Visumu ar katru atomu un zvaigzni! Abstrakti ļauj mums tālināt, uztvert galvenās idejas, piemēram, gravitāciju un enerģiju, un izprast to visu, nezaudējot detaļās.

Šeit ir daži citi iemesli, kāpēc mēs Java izmantojam abstraktu:

1. Abstrakcija : Abstraktās klases tiek izmantotas, lai definētu vispārīgu veidni citām klasēm, kas jāievēro. Viņi definē noteikumu un vadlīniju kopumu, kas jāievēro viņu apakšklasēm. Nodrošinot abstraktu klasi, mēs varam nodrošināt, ka klasēm, kas to paplašina, ir konsekventa struktūra un uzvedība. Tas padara kodu sakārtotāku un vieglāk uzturējamu.

2. Polimorfisms : Abstraktās klases un metodes nodrošina polimorfismu Java. Polimorfisms ir objekta spēja iegūt dažādas formas. Tas nozīmē, ka abstrakta tipa mainīgais var saturēt objektus no jebkuras konkrētas šīs abstraktās klases apakšklases. Tas padara kodu elastīgāku un pielāgojamāku dažādām situācijām.

3. Ietvari un API: Javai ir daudz ietvaru un API, kas izmanto abstraktas klases. Izmantojot abstraktās klases, izstrādātāji var ietaupīt laiku un pūles, balstoties uz esošo kodu un koncentrējoties uz aspektiem, kas raksturīgi viņu lietojumprogrammām.

Q2. Kāda ir atšķirība starp Iekapsulēšana un datu abstrakcija?

Šeit ir dažas galvenās atšķirības starp melnbalto iekapsulāciju un abstrakciju:

Iekapsulēšana

Abstrakcija

Iekapsulēšana ir datu slēpšana (informācijas slēpšana) Abstrakcija ir detalizēta slēpšana (īstenošanas slēpšana).
Iekapsulēšana grupē datus un metodes, kas iedarbojas uz datiem Datu abstrakcija nodarbojas ar saskarnes atklāšanu lietotājam un ieviešanas detaļu slēpšanu
Iekapsulētās klases ir Java klases, kas seko datu slēpšanai un abstrakcijai Abstrakcijas ieviešana tiek veikta, izmantojot abstraktās klases un interfeisu
Iekapsulēšana ir procedūra, kas notiek ieviešanas līmenī abstrakcija ir dizaina līmeņa process

Q3. Kāds ir datu abstrakcijas reāls piemērs?

Televizora tālvadības pults ir lielisks abstrakcijas piemērs dzīvē. Tas vienkāršo mijiedarbību ar televizoru, slēpjot sarežģītību aiz vienkāršām pogām un simboliem, padarot to vienkāršu, neizprotot televizora darbības tehniskās detaļas.

Q4. Kāda ir atšķirība starp abstraktajām klasēm un saskarnēm Java?

Šeit ir dažas galvenās atšķirības Java b/w abstraktajās klasēs un saskarnēs:

Abstraktā klase

pavasara zābaku arhitektūra

Saskarnes

Abstraktās klases atbalsta abstraktās un neabstraktās metodes Interfeisa atbalstiem ir tikai abstraktas metodes.
Neatbalsta vairākkārtēju mantojumu Atbalsta vairāku mantojumu
Abstraktās klases var paplašināt ar Java klasēm un vairākām saskarnēm Interfeisu var paplašināt tikai ar Java saskarni.
Abstraktās klases dalībnieki Java var būt privāti, aizsargāti utt. Saskarnes pēc noklusējuma ir publiskas.

Piemērs:

publisks abstraktas klases transportlīdzeklis{
publisks abstrakts tukšais disks ()
}

Piemērs:

publiska saskarne Dzīvnieks{
nevar runāt();
}