Cum se implementează abstracția datelor în Java?

Publicat: 2022-05-17

Abstracția, polimorfismul, încapsularea și moștenirea sunt cele patru elemente de bază ale programării orientate pe obiecte. Una dintre ele, Abstracția datelor, va fi discutată în detaliu în articolul următor. De asemenea, vom învăța cum să efectuăm abstractizarea datelor în Java.

Cuprins

Ce este abstracția datelor?

Abstracția datelor este caracteristica în care doar cele mai importante detalii sunt afișate utilizatorului. Utilizatorul nu este conștient de detaliile triviale sau neesențiale. De exemplu, un automobil este considerat ca un întreg, mai degrabă decât părțile sale distincte. Practica identificării numai a atributelor necesare ale unui articol în timp ce se aruncă informațiile străine este cunoscută sub numele de abstractizare a datelor.

În termeni simpli, abstracția datelor afișează elemente importante pentru utilizator, păstrând în același timp ascunse elemente nesemnificative.

Folosim cuvântul cheie „abstract” pentru a implementa abstractizarea cu ajutorul claselor și interfețelor. Putem avea atât metode abstracte, cât și concrete în clasele abstracte.

Ce sunt clasele abstracte?

În programarea orientată pe obiecte, o clasă abstractă este o clasă care declară una sau mai multe metode abstracte. Singura distincție între clasele Java abstracte și obișnuite este că clasele abstracte conțin cuvântul cheie abstract, în timp ce clasele Java obișnuite nu. Pentru declararea unei clase abstracte, folosim cuvântul cheie abstract înainte de numele clasei sale. În clase pot exista atât metode abstracte, cât și concrete. Cu toate acestea, metodele abstracte nu pot fi prezente în clasele obișnuite. O clasă cu cel puțin o metodă abstractă este denumită clasă abstractă.

Sintaxa sa este:

clasă abstractă publică Name_of_Class

{

abstract public Nume_Metodă();

}

Un exemplu de implementare a clasei abstracte este:

//numirea abstractă a clasei

clasa abstractă DemoClass

{

//numirea metodei abstracte

abstract void disp();

}

//procedând cu clasa abstractă

Clasa publică MainClass extinde DemoClass

{

//definirea corpului metodei clasei abstracte

void display()

{

System.out.println(„Metoda abstractă numită.”);

}

public static void main(String[] args)

{

MainClass obj = new MainClass ();

//invocarea metodei abstracte

obj.display();

}

}

Pentru a enumera punctual:

  • O clasă trebuie definită ca abstractă dacă are cel puțin o metodă abstractă.
  • O clasă care a fost declarată abstractă nu poate fi instanțiată.
  • Trebuie să moșteniți o clasă abstractă dintr-o altă clasă și să furnizați implementări pentru ca metodele sale abstracte să o utilizeze.
  • Trebuie să furnizați implementări pentru toate metodele abstracte dintr-o clasă abstractă dacă o moșteniți.

Ce sunt metodele abstracte?

O metodă abstractă are doar declarația metodei și nicio implementare. O metodă abstractă poate fi reprezentată printr-o metodă fără un corp propriu. Metodele abstracte trebuie declarate exclusiv în cadrul claselor abstracte.

Dacă doriți ca o clasă să aibă o metodă, dar implementarea efectivă a acelei metode să fie determinată de clasele copil, desemnați metoda ca un abstract în clasa părinte.

Avantajele abstracției datelor în programarea orientată pe obiecte

  • În programarea orientată pe obiecte, abstractizarea reduce complexitatea proiectării programului și procesul de implementare a acestuia pe software.
  • Cel mai important avantaj al implementării abstracției în programarea Java este că utilizatorii pot organiza cu ușurință clase pe baza asemănărilor, cum ar fi frații și, prin urmare, moștenirea datelor și migrarea datelor devin ușoare și fezabile.
  • Moștenirea este posibilă. De exemplu:

/* Nume fișier: DemoAbstract.java */

Clasa publică DemoAbstract {

public static void main(String [] args) {

/* următoarele nu pot fi scrise și inițiază erori */

angajat e = nou angajat(„Peter D.”, „Hartford, CT”, 35);

System.out.println(„\n Utilizați referința angajatului și apelați MailCheck–“);

e.mailCheck();

}

}

Aceasta arată următoarea eroare:

Employee.java:46: Angajatul este abstract; nu poate fi instanțiată

angajat e = nou angajat(„Peter D.”, „Hartford, CT”, 35);

^

1 eroare

Deci folosim utilizarea clasei abstracte ca:

/* Nume fișier: employee.java */

angajat al clasei abstracte publice {

privat String N;

Private String Add;

private int Num;

Angajat public (String N, String Add, int Num) {

System.out.println(„Construirea unui angajat”);

aceasta.nume = N;

this.address = Adaugă;

this.number = Num;

}

public double compute_pay() {

System.out.println(„În interiorul angajatului compute_pay”);

randament 0,0;

}

public void Mailcheck() {

System.out.println(„Trimiterea unui cec către ” + acest.nume + ” ” + această adresă);

}

public String toString() {

returnează N + ” ” + Adaugă + ” ” + N;

}

public String getName() {

întoarcere N;

}

public String getAddress() {

return Adaugă;

}

public void setAddress(String newAddress) {

Adaugă = Adresă nouă;

}

public int getNumber() {

return Num;

}

}

Când folosim clase abstracte sau metode abstracte?

Când luăm în considerare exemplul general de „forme”, ne putem imagina că este folosit în referire la un sistem de proiectare asistată de computer sau pentru simularea unui joc video. Tipul fundamental la care se face referire aici este o „formă”, fiecare formă având propriile sale atribute de culoare, dimensiune, etc. Clase specifice de forme - cerc, pătrat, triunghi etc., sunt derivate (moștenite) din aceasta, fiecare dintre ele. poate avea proprietăți și comportamente unice suplimentare. Anumite forme, de exemplu, pot fi simetrice, în timp ce altele nu sunt. Atât asemănările, cât și diferențele distincte dintre forme sunt întruchipate în ierarhia tipurilor.

Prin urmare, forma poate fi analogă cu o clasă abstractă, în timp ce diferitele tipuri de forme pot fi notate ca clase concrete.

Iată un scenariu din viața reală pentru a explica clasele abstracte:

// Program Java pentru a demonstra Abstracția

formă abstractă de clasă {

Culoarea șirului;

zonă dublă abstractă();

public abstract String toString();

// clasa abstractă poate avea constructorul

formă publică (culoarea șirului)

{

System.out.println(„Constructorul de formă numit”);

aceasta.culoare = culoare;

}

// aceasta este o metodă concretă

public String getColour() { returnează culoarea; }

}

clasa Cercul extinde forma {

dublu r;

Cerc public (culoarea șirului, dublu(r)

{

// apelarea constructorului Shape

super(culoare);

System.out.println(„Constructorul de cerc numit”);

aceasta.r = r;

}

@Override zone duble()

{

return Math.PI * Math.pow(r, 2);

}

@Override public String toString()

{

returnează „Culoarea cercului este” + super.getColor()

+ „și zona este: ” + area();

}

}

clasa Dreptunghi extinde forma {

lungime dubla;

latime dubla;

dreptunghi public (culoarea șirului, lungime dublă,

latime dubla)

{

// apelarea constructorului Shape

super(culoare);

System.out.println(„Constructorul dreptunghiular numit”);

aceasta.lungime = lungime;

aceasta.latime = latime;

}

@Override double area() { returnare lungime * lățime; }

@Override public String toString()

{

returnează „Culoarea dreptunghiului este” + super.getcolor()

+ „și zona este: ” + area();

}

}

test de clasă publică {

public static void main(String[] args)

{

Forma s1 = cercul nou ("Roșu", 2.2);

Forma s2 = nou Dreptunghi(„Galben”, 2, 4);

System.out.println(s1.toString());

System.out.println(s2.toString());

}

}

Acest segment de cod este o versiune modificată a celui de aici .

Un fragment de cod al unui program în care este utilizată abstracția datelor în Java:

// Abstracție în Java

clasa abstractă ElecBill

{

//metoda abstractă

abstract float compBill();

}

clasa Comm extinde ElecBill

{

float compBill() {

retur 1,00*100;

}

}

clasa Domestic extinde ElecBill

{

float compBill() {

retur 0,50*75;

}

}

Concluzie

Abstracția datelor este un aspect important al programării orientate pe obiecte. Pentru limbaje precum Java, abstracția și alte concepte OOP precum moștenirea, încapsularea și polimorfismul joacă un rol crucial în scrierea programelor eficiente.

Dacă doriți să învățați POO în profunzime și să dobândiți abilități de programare de primă clasă, vă recomandăm să vă înscrieți la Certificarea PG legată de job-ul de la upGrad în inginerie software, care este concepută pentru a ajuta studenții să dobândească abilități în Java, OODAP, DSA, HTML5, CSS3 , JavaScript, MERN, AWS, baze de date SQL și NoSQL, Spring Boot etc. Cursul de 5 luni acoperă două specializări – MERN Stack Specialization și Cloud-Native Specialization și oferă acces la sesiuni de consiliere în carieră upGrad 360°.

Învață cursuri de dezvoltare software online de la cele mai bune universități din lume. Câștigați programe Executive PG, programe avansate de certificat sau programe de master pentru a vă accelera cariera.

Ce este polimorfismul? Cum este diferit de abstractizarea datelor?

Polimorfismul este o generalizare, similară cu abstracția datelor, dar are loc în timpul execuției. Dacă există un mecanism de acces la o colecție de tipuri distincte de obiecte în care acestea nu se pot distinge unele de altele, acestea sunt polimorfe. Deci, chiar dacă nu sunt identice, toate obiectele din interior au același aspect și aceeași senzație. Scopul este de a reduce drastic codificarea. În loc să scrieți toate numeroasele permutări pentru fiecare tip individual, puteți scrie o soluție universală.

Care sunt diferențele dintre încapsulare și abstracția datelor?

ENCAPSULARE - 1. Încapsularea ascunde datele (informații), în timp ce abstractizarea ascunde detaliile (ascunderea implementării). 2. Abstracția programării orientate pe obiect rezolvă probleme la nivel de proiectare. 3. Din motive de securitate, încapsularea implică ascunderea informațiilor interne sau mecanicii modului în care un obiect efectuează ceva. REZUMAT - 1. În timp ce încapsularea leagă împreună datele și metodele care operează pe ea, abstracția datelor este preocupată de expunerea interfeței cu utilizatorul în timp ce ascunde detaliile implementării. 2. Se rezolvă la nivel de implementare prin încapsulare. 3. În Java, abstracția datelor vă permite să vă concentrați asupra a ceea ce trebuie să includă obiectul informațional.

Care sunt caracteristicile distinctive dintre interfață și clasa abstractă?

Interfață - 1. Doar metodele abstracte se găsesc a fi parte a interfeței. 2. Sunt acceptate moșteniri multiple. 3. Nu poate oferi implementarea clasei abstracte. 4. Într-o interfață sunt permise numai metode abstracte publice. 5. Doar o variabilă finală publică statică poate fi utilizată în interfață. Clasa abstracte - 1. Abstractele, precum și metodele non-abstracte, pot fi găsite într-o clasă abstractă. 2. Moștenirile multiple nu sunt acceptate. 3. Este capabil să implementeze interfața. 4. Metodele publice protejate și abstracte sunt atât posibile într-o clasă abstractă. 5. Cu orice specificator de acces, o clasă abstractă poate avea variabile finale, statice sau finale.