Wie implementiert man Datenabstraktion in Java?

Veröffentlicht: 2022-05-17

Abstraktion, Polymorphismus, Kapselung und Vererbung sind die vier Grundelemente der objektorientierten Programmierung. Eine davon, Datenabstraktion, wird im folgenden Artikel ausführlich besprochen. Wir werden auch lernen, wie man Datenabstraktion in Java durchführt.

Inhaltsverzeichnis

Was ist Datenabstraktion?

Datenabstraktion ist das charakteristische Merkmal, bei dem dem Benutzer nur die wichtigsten Details angezeigt werden. Der Benutzer wird über die trivialen oder unwesentlichen Details unbewusst gehalten. Beispielsweise wird ein Auto als Ganzes betrachtet und nicht als einzelne Teile. Die Praxis, nur die benötigten Attribute eines Elements zu identifizieren, während die irrelevanten Informationen verworfen werden, wird als Datenabstraktion bezeichnet.

Einfach ausgedrückt zeigt die Datenabstraktion dem Benutzer wichtige Elemente an, während unbedeutende Elemente verborgen bleiben.

Wir verwenden das Schlüsselwort „abstract“, um die Abstraktion mit Hilfe von Klassen und Schnittstellen zu implementieren. Wir können sowohl abstrakte als auch konkrete Methoden in abstrakten Klassen haben.

Was sind abstrakte Klassen?

In der objektorientierten Programmierung ist eine abstrakte Klasse eine Klasse, die eine oder mehrere abstrakte Methoden deklariert. Der einzige Unterschied zwischen abstrakten und regulären Java-Klassen besteht darin, dass abstrakte Klassen das Schlüsselwort abstract enthalten, während reguläre Java-Klassen dies nicht tun. Für die Deklaration einer abstrakten Klasse verwenden wir das Schlüsselwort abstract vor ihrem Klassennamen. In Klassen kann es sowohl abstrakte als auch konkrete Methoden geben. Abstrakte Methoden können jedoch nicht in regulären Klassen vorhanden sein. Eine Klasse mit mindestens einer abstrakten Methode wird als abstrakte Klasse bezeichnet.

Seine Syntax ist:

öffentliche abstrakte Klasse Name_of_Class

{

öffentliche Zusammenfassung Name_der_Methode();

}

Ein Beispiel für die Implementierung einer abstrakten Klasse ist:

//Abstrakte Klassenbenennung

abstrakte Klasse DemoClass

{

//Abstrakte Methodenbenennung

abstrakt void disp();

}

// mit der abstrakten Klasse fortfahren

öffentliche Klasse MainClass erweitert DemoClass

{

//Definieren des Methodenkörpers der abstrakten Klasse

ungültige Anzeige ()

{

System.out.println("Abstrakte Methode aufgerufen.");

}

public static void main(String[] args)

{

Hauptklasse obj = neue Hauptklasse ();

//Abstrakte Methode aufrufen

obj.display();

}

}

Punktweise aufzählen:

  • Eine Klasse muss als abstrakt definiert werden, wenn sie mindestens eine abstrakte Methode hat.
  • Eine als abstrakt deklarierte Klasse kann nicht instanziiert werden.
  • Sie müssen eine abstrakte Klasse von einer anderen Klasse erben und Implementierungen für ihre abstrakten Methoden bereitstellen, um sie verwenden zu können.
  • Sie müssen Implementierungen für alle abstrakten Methoden in einer abstrakten Klasse bereitstellen, wenn Sie sie erben.

Was sind abstrakte Methoden?

Eine abstrakte Methode hat nur die Methodendeklaration und keine Implementierung. Eine abstrakte Methode kann durch eine Methode ohne eigenen Körper dargestellt werden. Abstrakte Methoden müssen ausschließlich innerhalb abstrakter Klassen deklariert werden.

Wenn Sie möchten, dass eine Klasse eine Methode hat, die tatsächliche Implementierung dieser Methode jedoch von untergeordneten Klassen bestimmt wird, legen Sie die Methode in der übergeordneten Klasse als Abstract fest.

Vorteile der Datenabstraktion in der objektorientierten Programmierung

  • In der objektorientierten Programmierung reduziert die Abstraktion die Komplexität des Programmentwurfs und den Prozess seiner Implementierung in Software.
  • Der Hauptvorteil der Implementierung von Abstraktion in der Java-Programmierung besteht darin, dass Benutzer dann Klassen auf der Grundlage von Ähnlichkeiten wie Geschwistern leicht organisieren können und daher die Vererbung von Daten und die Migration von Daten einfach und durchführbar wird.
  • Erbschaft ist möglich. Zum Beispiel:

/* Dateiname : DemoAbstract.java */

öffentliche Klasse DemoAbstract {

public static void main(String [] args) {

/* Folgendes kann nicht geschrieben werden und löst Fehler aus */

Mitarbeiter e = neuer Mitarbeiter („Peter D.“, „Hartford, CT“, 35);

System.out.println(“\n Mitarbeiterreferenz verwenden und MailCheck aufrufen–“);

e.mailCheck();

}

}

Dies zeigt den folgenden Fehler:

Employee.java:46: Employee ist abstrakt; kann nicht instanziiert werden

Mitarbeiter e = neuer Mitarbeiter („Peter D.“, „Hartford, CT“, 35);

^

1 Fehler

Also verwenden wir die Verwendung der abstrakten Klasse wie folgt:

/* Dateiname : Mitarbeiter.java */

Angestellter der öffentlichen abstrakten Klasse {

private Zeichenfolge N;

private Zeichenfolge hinzufügen;

private int Num;

öffentlicher Angestellter (String N, String Add, int Num) {

System.out.println("Angestellten konstruieren");

this.name = N;

this.address = Hinzufügen;

this.number = Num;

}

public double compute_pay() {

System.out.println(“Innerhalb des Mitarbeiters compute_pay”);

Rückgabe 0,0;

}

public void Mailcheck() {

System.out.println(“Versand eines Schecks an ” + this.name + ” ” + this.address);

}

öffentlicher String toString() {

Rückgabe N + ” ” + Hinzufügen + ” ” + N;

}

öffentlicher String getName() {

gib N zurück;

}

öffentliche Zeichenfolge getAddress() {

zurück Hinzufügen;

}

public void setAddress(String neueAdresse) {

Hinzufügen = neueAdresse;

}

public int getNumber() {

Rückgabe Num;

}

}

Wann verwenden wir abstrakte Klassen oder abstrakte Methoden?

Wenn wir das allgemeine Beispiel „Formen“ betrachten, können wir uns vorstellen, dass es in Bezug auf ein computergestütztes Designsystem oder für eine Videospielsimulation verwendet wird. Der Grundtyp, auf den hier Bezug genommen wird, ist eine „Form“, wobei jede Form ihre eigenen Farbattribute, Größe usw. hat. Bestimmte Klassen von Formen – Kreis, Quadrat, Dreieck usw. – werden davon abgeleitet (geerbt), von denen jede eine ist kann zusätzliche einzigartige Eigenschaften und Verhaltensweisen haben. Bestimmte Formen können beispielsweise symmetrisch sein, andere nicht. Sowohl die Ähnlichkeiten als auch die deutlichen Unterschiede zwischen den Formen sind in der Typenhierarchie verkörpert.

Daher kann Form analog zu einer abstrakten Klasse sein, während die verschiedenen Arten von Formen als konkrete Klassen bezeichnet werden können.

Hier ist ein reales Szenario, um abstrakte Klassen zu erklären:

// Java-Programm zur Demonstration von Abstraktion

abstrakte Klassenform {

Saitenfarbe;

abstrakter doppelter Bereich ();

öffentlicher abstrakter String toString();

// abstrakte Klasse kann den Konstruktor haben

öffentliche Form (Farbe der Zeichenfolge)

{

System.out.println("Shape-Konstruktor aufgerufen");

this.colour = Farbe;

}

// Dies ist eine konkrete Methode

public String getColour() { Farbe zurückgeben; }

}

Klasse Kreis verlängert Form {

doppeltes r;

public Circle(String color, double(r)

{

// Shape-Konstruktor aufrufen

super(farbe);

System.out.println("Kreiskonstruktor aufgerufen");

dies.r = r;

}

@Double area überschreiben()

{

Rückgabe Math.PI * Math.pow(r, 2);

}

@Öffentlichen String überschreiben toString()

{

return „Kreisfarbe ist “ + super.getColor()

+ „und Fläche ist:“ + Fläche();

}

}

Klasse Rechteck erweitert Form {

doppelte Länge;

doppelte Breite;

public Rectangle(Stringfarbe, doppelte Länge,

doppelt breit)

{

// Shape-Konstruktor aufrufen

super(farbe);

System.out.println("Rectangle-Konstruktor aufgerufen");

this.length = Länge;

this.width = Breite;

}

@Override double area() { Rückgabelänge * Breite; }

@Öffentlichen String überschreiben toString()

{

return „Rechteckfarbe ist “ + super.getcolor()

+ „und Fläche ist:“ + Fläche();

}

}

öffentlicher Klassentest {

public static void main(String[] args)

{

Form s1 = neuer Kreis („Rot“, 2.2);

Form s2 = neues Rechteck („Gelb“, 2, 4);

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

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

}

}

Dieses Codesegment ist eine modifizierte Version des hier .

Ein Codeausschnitt eines Programms, in dem Datenabstraktion in Java verwendet wird:

// Abstraktion in Java

abstrakte Klasse ElecBill

{

// abstrakte Methode

abstrakter Float compBill();

}

Klasse Comm erweitert ElecBill

{

float compBill() {

Rückgabe 1,00 * 100;

}

}

Klasse Domestic erweitert ElecBill

{

float compBill() {

Rückgabe 0,50 * 75;

}

}

Fazit

Datenabstraktion ist ein wichtiger Aspekt der objektorientierten Programmierung. Für Sprachen wie Java spielen Abstraktion und andere OOP-Konzepte wie Vererbung, Kapselung und Polymorphismus eine entscheidende Rolle beim Schreiben effizienter Programme.

Wenn Sie OOPs eingehend lernen und erstklassige Programmierkenntnisse erwerben möchten, empfehlen wir Ihnen, sich der berufsbezogenen PG-Zertifizierung in Softwareentwicklung von upGrad anzuschließen, die Studenten dabei helfen soll, Kenntnisse in Java, OODAP, DSA, HTML5, CSS3 zu erwerben , JavaScript, MERN, AWS, SQL- und NoSQL-Datenbanken, Spring Boot usw. Der 5-monatige Kurs umfasst zwei Spezialisierungen – MERN-Stack-Spezialisierung und Cloud-Native-Spezialisierung und bietet Zugang zu upGrad 360°-Karriereberatungssitzungen.

Lernen Sie Softwareentwicklungskurse online von den besten Universitäten der Welt. Verdienen Sie Executive PG-Programme, Advanced Certificate-Programme oder Master-Programme, um Ihre Karriere zu beschleunigen.

Was ist Polymorphismus? Wie unterscheidet es sich von der Datenabstraktion?

Polymorphismus ist eine Verallgemeinerung, ähnlich der Datenabstraktion, tritt jedoch zur Laufzeit auf. Wenn es einen Mechanismus gibt, um auf eine Sammlung unterschiedlicher Objekttypen zuzugreifen, in der sie nicht voneinander zu unterscheiden sind, sind sie polymorph. Selbst wenn sie nicht identisch sind, haben alle darin enthaltenen Objekte das gleiche Aussehen und Gefühl. Das Ziel ist es, die Codierung drastisch zu verringern. Anstatt all die zahlreichen Permutationen für jeden einzelnen Typ zu schreiben, können Sie eine universelle Lösung schreiben.

Was sind die Unterschiede zwischen Kapselung und Datenabstraktion?

ENCAPSULATION - 1. Encapsulation verbirgt Daten (Informationen), wohingegen Abstraktion Details verbirgt (Implementation Hiding). 2. Die Abstraktion der objektorientierten Programmierung löst Probleme auf der Entwurfsebene. 3. Aus Sicherheitsgründen impliziert die Kapselung das Verbergen der internen Informationen oder Mechanismen, wie ein Objekt etwas ausführt. ABSTRAKTION - 1. Während die Kapselung Daten und Methoden, die darauf arbeiten, zusammenbindet, befasst sich die Datenabstraktion damit, die Benutzerschnittstelle freizulegen, während Implementierungsdetails verschleiert werden. 2. Es wird auf der Implementierungsebene durch Kapselung gelöst. 3. In Java ermöglicht Ihnen die Datenabstraktion, sich auf das zu konzentrieren, was das Informationsobjekt enthalten muss.

Was sind die Unterscheidungsmerkmale zwischen Schnittstelle und abstrakter Klasse?

Schnittstelle - 1. Nur abstrakte Methoden finden sich als Teil der Schnittstelle wieder. 2. Mehrfachvererbungen werden unterstützt. 3. Sie kann die Implementierung der abstrakten Klasse nicht anbieten. 4. In einer Schnittstelle sind nur öffentliche abstrakte Methoden erlaubt. 5. In der Schnittstelle kann nur eine öffentliche statische Endvariable verwendet werden. Abstrakte Klasse - 1. Abstrakte sowie nicht-abstrakte Methoden können in einer abstrakten Klasse gefunden werden. 2. Mehrfachvererbungen werden nicht unterstützt. 3. Es ist in der Lage, die Schnittstelle zu implementieren. 4. Geschützte und abstrakte öffentliche Methoden sind in einer abstrakten Klasse möglich. 5. Bei jedem Zugriffsbezeichner kann eine abstrakte Klasse finale, statische oder statische finale Variablen haben.