„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Abstraktion in der objektorientierten Programmierung

Abstraktion in der objektorientierten Programmierung

Veröffentlicht am 01.11.2024
Durchsuche:822

Abstração em Programação Orientada a Objetos

Was ist Abstraktion?

Abstraktion ist eines der Grundprinzipien der objektorientierten Programmierung (OOP), das sich auf die Fähigkeit eines Systems bezieht, komplexe Implementierungsdetails zu verbergen und nur wesentliche Funktionalitäten anzuzeigen. Das Ziel der Abstraktion besteht darin, die Interaktion mit komplexen Objekten zu vereinfachen, indem es Benutzern ermöglicht, sich auf das zu konzentrieren, was ein Objekt tut, und nicht darauf, wie es es tut.

In der Praxis wird Abstraktion durch die Verwendung von abstrakten Klassen und Schnittstellen erreicht, die Verhaltensweisen definieren, die von Unterklassen oder konkreten Klassen implementiert werden müssen.

Warum Abstraktion verwenden?

Abstraktion bietet mehrere Vorteile:

  • Einfachheit: Verbirgt Komplexität und ermöglicht Benutzern eine einfachere und intuitivere Interaktion mit Objekten.
  • Code-Wiederverwendung: Klassen und Schnittstellen können in verschiedenen Kontexten wiederverwendet werden, was die Konsistenz fördert.
  • Wartbarkeit: Änderungen an Implementierungsdetails wirken sich nicht auf Code aus, der die Abstraktion verwendet, solange die öffentliche Schnittstelle gleich bleibt.

Beispiele für Abstraktion in Java

1. Verwendung abstrakter Klassen

Mit abstrakten Klassen können Sie Methoden ohne Implementierung (abstrakte Methoden) und konkrete Methoden definieren, die von Unterklassen verwendet werden können. Lassen Sie uns ein Beispiel mit einer abstrakten Klasse namens „Shape“ und den Unterklassen „Circle“ und „Rechteck“ erstellen.

// Classe abstrata
public abstract class Forma {
    // Método abstrato
    public abstract double calcularArea();

    // Método concreto
    public void imprimirArea() {
        System.out.println("A área é: "   calcularArea());
    }
}
// Subclasse Circulo
public class Circulo extends Forma {
    private double raio;

    public Circulo(double raio) {
        this.raio = raio;
    }

    // Implementando o método calcularArea
    @Override
    public double calcularArea() {
        return Math.PI * raio * raio;
    }
}
// Subclasse Retangulo
public class Retangulo extends Forma {
    private double largura;
    private double altura;

    public Retangulo(double largura, double altura) {
        this.largura = largura;
        this.altura = altura;
    }

    // Implementando o método calcularArea
    @Override
    public double calcularArea() {
        return largura * altura;
    }
}

Verwenden von Klassen

public class Main {
    public static void main(String[] args) {
        Forma circulo = new Circulo(5);
        Forma retangulo = new Retangulo(4, 6);

        // Imprimindo áreas
        circulo.imprimirArea();  // Saída: A área é: 78.53981633974483
        retangulo.imprimirArea(); // Saída: A área é: 24.0
    }
}

Erwartete Ausgabe:

A área é: 78.53981633974483
A área é: 24.0

2. Verwendung von Schnittstellen

Schnittstellen sind eine weitere Möglichkeit, Abstraktion zu implementieren. Sie definieren Methoden, die die Klassen, die sie implementieren, bereitstellen müssen, stellen jedoch keine Standardimplementierung bereit.

// Interface
public interface Forma {
    double calcularArea();
    void imprimirArea();
}
// Classe Circulo implementando a interface
public class Circulo implements Forma {
    private double raio;

    public Circulo(double raio) {
        this.raio = raio;
    }

    @Override
    public double calcularArea() {
        return Math.PI * raio * raio;
    }

    @Override
    public void imprimirArea() {
        System.out.println("A área do círculo é: "   calcularArea());
    }
}
// Classe Retangulo implementando a interface
public class Retangulo implements Forma {
    private double largura;
    private double altura;

    public Retangulo(double largura, double altura) {
        this.largura = largura;
        this.altura = altura;
    }

    @Override
    public double calcularArea() {
        return largura * altura;
    }

    @Override
    public void imprimirArea() {
        System.out.println("A área do retângulo é: "   calcularArea());
    }
}

Verwenden von Klassen

public class Main {
    public static void main(String[] args) {
        Forma circulo = new Circulo(5);
        Forma retangulo = new Retangulo(4, 6);

        // Imprimindo áreas
        circulo.imprimirArea();  // Saída: A área do círculo é: 78.53981633974483
        retangulo.imprimirArea(); // Saída: A área do retângulo é: 24.0
    }
}

Erwartete Ausgabe:

A área do círculo é: 78.53981633974483
A área do retângulo é: 24.0

Abschließende Überlegungen

Abstraktion ist ein grundlegendes Konzept in der objektorientierten Programmierung, das dabei hilft, einfachere, wiederverwendbare und leichter zu wartende Systeme zu erstellen. Durch die Verwendung abstrakter Klassen und Schnittstellen können Entwickler die Komplexität der Implementierung verbergen und Benutzern und anderen Teilen des Systems eine intuitive Interaktion mit Objekten ermöglichen. Das Verstehen und Anwenden der Abstraktion ist für eine effektive objektorientierte Softwareentwicklung von entscheidender Bedeutung.

Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/emanoelcarvalho/abstracao-em-programacao-orientada-a-objetos-5bb4?1 Bei Verstößen wenden Sie sich bitte an [email protected], um ihn zu löschen
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3