OOPS-Konzepte in Java – Beispiel für OOPS-Konzepte

Object-Oriented Programming-Konzepte sind sehr wichtig für die Programmierung. Ohne eine Vorstellung von den OOPS-Konzepten zu haben, werden Sie nicht in der Lage sein, Systeme im objektorientierten Programmiermodell zu entwerfen.

Was ist das objektorientierte Programmiermodell?

Das objektorientierte Programmiermodell dreht sich um das Konzept von Objekten. Was ist ein Objekt? Ein Objekt ist eine Instanz einer Klasse. Es enthält Eigenschaften und Funktionen. Sie sind wie Objekte in der realen Welt. Zum Beispiel sind Ihr Auto, Ihr Haus, Ihr Laptop usw. alles Objekte. Sie haben bestimmte Eigenschaften und Methoden, um Aktionen auszuführen. Was ist eine Klasse? Die Klasse definiert den Bauplan von Objekten. Sie definieren die Eigenschaften und Funktionalitäten der Objekte. Zum Beispiel ist Laptop eine Klasse und Ihr Laptop ist eine Instanz davon.

OOPS-Konzepte

Die Kern-OOPS-Konzepte sind:

  1. Abstraktion
  2. Enkapsulation
  3. Polymorphismus
  4. Vererbung
  5. Assoziation
  6. Agregation
  7. Komposition

Lassen Sie uns diese objektorientierten Programmierkonzepte Schritt für Schritt betrachten. Wir werden die Java-Programmiersprache für Codebeispiele verwenden, damit Sie wissen, wie Sie OOPS-Konzepte in Java implementieren können.

1. Abstraktion

Abstraktion ist das Konzept, interne Details zu verbergen und Dinge in einfachen Begriffen zu beschreiben. Zum Beispiel eine Methode, die zwei Ganzzahlen addiert. Die interne Verarbeitung der Methode wird vor der äußeren Welt verborgen. Es gibt viele Möglichkeiten, Abstraktion in objektorientierten Programmierungen zu erreichen, wie Kapselung und Vererbung. Ein Java-Programm ist ebenfalls ein gutes Beispiel für Abstraktion. Hier kümmert sich Java darum, einfache Anweisungen in Maschinensprache umzuwandeln und verbirgt die inneren Implementierungsdetails vor der äußeren Welt.

Weitere Informationen: Was ist Abstraktion in OOPS?

2. Kapselung

Encapsulation ist die Technik, die in der objektorientierten Programmierung zur Implementierung von Abstraktion verwendet wird. Encapsulation wird für die Beschränkung des Zugriffs auf Klassenmember und -methoden verwendet. Zugriffsmodifikator-Schlüsselwörter werden zur Encapsulation in der objektorientierten Programmierung verwendet. Zum Beispiel wird Encapsulation in Java mithilfe der Schlüsselwörter private, protected und public erreicht.

3. Polymorphismus

Polymorphismus ist das Konzept, bei dem ein Objekt sich in unterschiedlichen Situationen unterschiedlich verhält. Es gibt zwei Arten von Polymorphismus – Polymorphismus zur Compile-Zeit und Polymorphismus zur Laufzeit. Polymorphismus zur Compile-Zeit wird durch Methodenüberladung erreicht. Zum Beispiel können wir eine Klasse wie folgt haben.

public class Circle {

	public void draw(){
		System.out.println("Drwaing circle with default color Black and diameter 1 cm.");
	}
	
	public void draw(int diameter){
		System.out.println("Drwaing circle with default color Black and diameter"+diameter+" cm.");
	}
	
	public void draw(int diameter, String color){
		System.out.println("Drwaing circle with color"+color+" and diameter"+diameter+" cm.");
	}
}

Hier haben wir mehrere draw-Methoden, aber sie haben unterschiedliches Verhalten. Dies ist ein Fall von Methodenüberladung, weil alle Methoden denselben Namen haben und unterschiedliche Argumente haben. Hier wird der Compiler in der Lage sein, die Methode zur Kompilierungszeit zu identifizieren, daher wird es als Kompilierungszeit-Polymorphismus bezeichnet. Zur Laufzeit wird Polymorphismus implementiert, wenn zwischen Objekten eine „IST-EIN“ Beziehung besteht. Dies wird auch als Methodenüberschreibung bezeichnet, weil die Unterklasse die Methode der Oberklasse für den Laufzeit-Polymorphismus überschreiben muss. Wenn wir in Bezug auf die Oberklasse arbeiten, wird die tatsächliche Implementierungsklasse zur Laufzeit entschieden. Der Compiler kann nicht entscheiden, welche Klassenmethode aufgerufen wird. Diese Entscheidung wird zur Laufzeit getroffen, daher der Name Laufzeit-Polymorphismus oder dynamische Methodendispatch.

package com.journaldev.test;

public interface Shape {

	public void draw();
}
package com.journaldev.test;

public class Circle implements Shape{

	@Override
	public void draw(){
		System.out.println("Drwaing circle");
	}

}
package com.journaldev.test;

public class Square implements Shape {

	@Override
	public void draw() {
		System.out.println("Drawing Square");
	}

}

Shape ist die Oberklasse und es gibt zwei Unterklassen Circle und Square. Unten ist ein Beispiel für Laufzeit-Polymorphismus.

Shape sh = new Circle();
sh.draw();

Shape sh1 = getShape(); //some third party logic to determine shape
sh1.draw();

In den obigen Beispielen kennt der Java-Compiler die tatsächliche Implementierungsklasse von Shape, die zur Laufzeit verwendet wird, nicht, daher Laufzeit-Polymorphismus.

4. Vererbung

Vererbung ist das Konzept der objektorientierten Programmierung, bei dem ein Objekt auf einem anderen Objekt basiert. Vererbung ist der Mechanismus zur Wiederverwendung von Code. Das Objekt, das vererbt wird, wird als Superklasse bezeichnet, und das Objekt, das die Superklasse erbt, wird als Unterklasse bezeichnet. In Java verwenden wir das Schlüsselwort extends, um Vererbung zu implementieren. Nachfolgend finden Sie ein einfaches Beispiel für Vererbung in Java.

package com.journaldev.java.examples1;

class SuperClassA {

	public void foo(){
		System.out.println("SuperClassA");
	}
	
}

class SubClassB extends SuperClassA{
		
	public void bar(){
		System.out.println("SubClassB");
	}
	
}

public class Test {
	public static void main(String args[]){
		SubClassB a = new SubClassB();
		
		a.foo();
		a.bar();
	}
}

5. Assoziation

Assoziation ist das OOPS-Konzept zur Definition der Beziehung zwischen Objekten. Die Assoziation definiert die Multiplizität zwischen Objekten. Zum Beispiel Lehrer- und Schülerobjekte. Es besteht eine Eins-zu-Viele-Beziehung zwischen einem Lehrer und Schülern. Ebenso kann ein Student eine Eins-zu-Viele-Beziehung mit Lehrerobjekten haben. Allerdings sind sowohl Schüler- als auch Lehrerobjekte unabhängig voneinander.

Aggregation

Aggregation ist eine besondere Art von Assoziation. Bei Aggregation haben Objekte ihren eigenen Lebenszyklus, aber es gibt eine Eigentumsbeziehung. Immer wenn wir eine „HAT-EINE“ Beziehung zwischen Objekten und Eigentum haben, handelt es sich um eine Aggregatfall.

6. Komposition

Die Komposition ist ein besonderer Fall der Aggregation. Die Komposition ist eine restriktivere Form der Aggregation. Wenn das enthaltene Objekt in einer „HAS-A“-Beziehung nicht alleine existieren kann, handelt es sich um einen Fall von Komposition. Zum Beispiel hat ein Haus einen Raum. Hier kann der Raum nicht ohne das Haus existieren. Es wird gesagt, dass Komposition besser ist als Vererbung, weitere Informationen finden Sie unter Komposition vs. Vererbung.

Weitere Informationen: Komposition in Java

Das war eine schnelle Zusammenfassung der OOPS-Konzepte.

Sie können sich weitere Java-Beispielprogramme in unserem GitHub-Repository ansehen.

Referenzen: https://docs.oracle.com/javase/tutorial/java/concepts/

Source:
https://www.digitalocean.com/community/tutorials/oops-concepts-java-example