Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Java

Abstraction Java expliquée : Simplifier le code et améliorer la lisibilité

L'abstraction, c'est traiter des idées plutôt que des événements. Exemple : pour envoyer un e-mail, vous tapez le contenu, l'adresse, cliquez "envoyer". Les détails complexes (protocoles, serveurs) sont cachés.

En POO, l'abstraction cache les détails d'implémentation, n'expose que la fonctionnalité. L'utilisateur sait quoi l'objet fait, pas comment.

En Java : classes abstraites et interfaces.

Classe abstraite

Classe déclarée avec le mot-clé abstract.

Exemple : classe abstraite Employee


public abstract class Employee {
    private String name;
    private String address;
    private int number;
    
    public Employee(String name, String address, int number) {
        System.out.println("Construction Employee");
        this.name = name;
        this.address = address;
        this.number = number;
    }
    
    public double computePay() {
        System.out.println("Dans Employee computePay");
        return 0.0;
    }
    
    public void mailCheck() {
        System.out.println("Envoi chèque à " + name + " " + address);
    }
    // autres méthodes et constructeur...
}

Tentative d'instanciation :


Employee e = new Employee("George W.", "Houston, TX", 43);  // ERREUR

Erreur : Employee is abstract; cannot be instantiated

Hériter d'une classe abstraite


public class Salary extends Employee {
    private double salary;
    
    public Salary(String name, String address, int number, double salary) {
        super(name, address, number);
        setSalary(salary);
    }
    
    @Override
    public void mailCheck() {
        System.out.println("Dans mailCheck de Salary");
        System.out.println("Envoi chèque à " + getName() + " avec salaire " + salary);
    }
    
    @Override
    public double computePay() {
        System.out.println("Calcul paie pour " + getName());
        return salary / 52;
    }
    // getters/setters...
}

On ne peut pas instancier Employee, mais on peut instancier Salary et accéder à tous les membres d'Employee :


public class AbstractDemo {
    public static void main(String[] args) {
        Salary s = new Salary("Mohd Mohtashim", "Ambehta, UP", 3, 3600.00);
        Employee e = new Salary("John Adams", "Boston, MA", 2, 2400.00);
        
        System.out.println("Appel mailCheck via Salary --");
        s.mailCheck();
        
        System.out.println("\nAppel mailCheck via Employee --");
        e.mailCheck();
    }
}

Résultat :


Construction Employee
Construction Employee
Appel mailCheck via Salary --
Dans mailCheck de Salary
Envoi chèque à Mohd Mohtashim avec salaire 3600.0

Appel mailCheck via Employee --
Dans mailCheck de Salary
Envoi chèque à John Adams avec salaire 2400.0

Méthodes abstraites

Méthode déclarée sans implémentation, à charge des sous-classes.

Exemple


public abstract class Employee {
    private String name;
    private String address;
    private int number;
    
    public abstract double computePay();  // méthode abstraite
    // reste de la classe...
}

Conséquences :

Note : Finalement, une classe concrète doit implémenter la méthode, sinon on a une hiérarchie de classes abstraites non instanciables.

Implémentation dans Salary


public class Salary extends Employee {
    private double salary;
    
    @Override
    public double computePay() {
        System.out.println("Calcul paie pour " + getName());
        return salary / 52;
    }
    // reste...
}

Java

  1. Comprendre le mot-clé final en Java : variables, méthodes et classes
  2. L'opérateur instanceof en Java : guide complet
  3. Classes et méthodes abstraites en Java : guide complet
  4. Comprendre les classes imbriquées statiques en Java : utilisation, différences et exemples
  5. Maîtriser les classes internes anonymes en Java : définition, syntaxe et exemples pratiques
  6. Le pattern Singleton en Java expliqué : implémentation et utilisation sûre
  7. Maîtriser la réflexion Java : inspection des classes, méthodes et champs à l'exécution
  8. Maîtriser Java ObjectOutputStream : Sérialisation, méthodes et exemples pratiques
  9. Maîtriser les génériques Java : Construire du code réutilisable et type-safe