L'abstraction dans Java

Qu'est-ce que l'abstraction dans Java?

Abstraction est le concept de programmation orientée objet qui « affiche » uniquement les attributs essentiels et « cache » les informations inutiles. Le but principal de l'abstraction est de cacher les détails inutiles aux utilisateurs. L'abstraction consiste à sélectionner des données dans un pool plus large pour n'afficher que les détails pertinents de l'objet à l'utilisateur. Cela permet de réduire la complexité et les efforts de programmation. C'est l'un des concepts les plus importants de la programmation orientée objet.

Cliquez sur here. si la vidéo n'est pas accessible

Étudions l'abstraction dans les POO avec un exemple :

Supposons que vous souhaitiez créer une application bancaire et que l’on vous demande de collecter toutes les informations sur votre client. Il y a des chances que vous obteniez les informations suivantes sur le client

L'abstraction dans Java
L'abstraction dans Java

Cependant, toutes les informations ci-dessus ne sont pas nécessaires pour créer une demande bancaire. Vous devez donc sélectionner uniquement les informations utiles pour votre application bancaire de cette piscine. Les données telles que le nom, l'adresse, les informations fiscales, etc. ont du sens pour une application bancaire qui est un exemple d'abstraction dans les POO

L'abstraction dans Java

Puisque nous avons récupéré/supprimé/sélectionné les informations client dans un pool plus grand, le processus est appelé Abstraction dans Oops. Cependant, les mêmes informations une fois extraites peuvent être utilisées pour une large gamme d'applications. Par exemple, vous pouvez utiliser les mêmes données pour une demande d'admission à un hôpital, une demande de portail d'emploi, une base de données gouvernementale, etc. avec peu ou pas de modifications. Par conséquent, elles deviennent vos données de base. C'est un avantage de l'abstraction dans les OOP.

Différence entre abstraction et encapsulation

Abstraction Encapsulation
L'abstraction dans la programmation orientée objet résout les problèmes au niveau de la conception. L'encapsulation le résout au niveau de la mise en œuvre.
L'abstraction en programmation consiste à masquer les détails indésirables tout en affichant les informations les plus essentielles. L'encapsulation signifie lier le code et les données en une seule unité.
Abstraction des données dans Java permet de se concentrer sur ce que l'objet informationnel doit contenir Encapsulation signifie cacher les détails internes ou les mécanismes de la façon dont un objet fait quelque chose pour des raisons de sécurité.

Différence entre la classe abstraite et l'interface

Classe abstraite Interface
Une classe abstraite peut avoir des méthodes abstraites et non abstraites. L'interface ne peut avoir que des méthodes abstraites.
Il ne prend pas en charge les héritages multiples. Il prend en charge les héritages multiples.
Il peut assurer la mise en œuvre de l'interface. Il ne peut pas fournir l’implémentation de la classe abstraite.
Une classe abstraite peut avoir des méthodes publiques protégées et abstraites. Une interface ne peut avoir que des méthodes abstraites publiques.
Une classe abstraite peut avoir une variable finale, statique ou statique avec n'importe quel spécificateur d'accès. L'interface ne peut avoir qu'une variable finale statique publique.

Qu'est-ce qu'une classe abstraite ?

COURS ABSTRAIT est un type de classe dans Java, qui déclarent une ou plusieurs méthodes abstraites. Ces classes peuvent avoir des méthodes abstraites ainsi que des méthodes concrètes. Une classe normale ne peut pas avoir de méthodes abstraites. Une classe abstraite est une classe qui contient au moins une méthode abstraite. Nous pouvons comprendre le concept par le exemple de forme en java.

Considérez la hiérarchie de classes suivante composée d'une classe Shape héritée de trois classes Rectangle, Cercle et Triangle. La classe Shape est créée pour économiser les attributs et méthodes communs partagés par les trois classes Rectangle, Cercle et Triangle. calculateArea() est l’une de ces méthodes partagée par les trois classes enfants et présente dans la classe Shape.

Classe abstraite dans Java

Exemple d'abstraction de forme

Supposons maintenant que vous écriviez du code pour créer des objets pour les classes décrites ci-dessus. Observons comment ces les objets ressembleront à un monde pratique. Un objet de la classe rectangle donnera un rectangle, une forme que l'on observe si couramment dans la vie de tous les jours.

Classe abstraite

Un objet de la classe triangle donnera un triangle, encore une fois une forme courante au quotidien.

Classe abstraite

Mais à quoi ressemblerait un objet de Class Shape dans un monde pratique ??

Classe abstraite

Si vous observez que la classe Shape sert dans notre objectif d'atteindre héritage et le polymorphisme. Mais il n’a pas été construit pour être instancié. Ces classes peuvent être étiquetées Abstract. Une classe Java abstraite ne peut pas être instanciée.

syntaxe:

abstract class Shape{
	// code
}

Il est possible que vous ne étiquetiez PAS la classe Shape comme abstraite, puis que vous l'instanciiez. Mais un tel objet n’aura aucune utilité dans votre code et ouvrira une porte à des erreurs potentielles. Ce n’est donc pas souhaitable.

Que sont les méthodes abstraites dans Java?

MÉTHODE ABSTRAITE in Java, est une méthode qui n'a que la définition de la méthode mais ne contient pas d'implémentation. Une méthode sans corps est appelée méthode abstraite. Il doit être déclaré dans une classe abstraite. La méthode abstraite ne sera jamais définitive car la classe abstraite doit implémenter toutes les méthodes abstraites.

Comme nous le savons tous, la formule de calcul de l’aire d’un rectangle, d’un cercle et d’un triangle est différente. La méthode calculateArea() devra être remplacée par les classes héritières. Cela n'a aucun sens de le définir dans la classe Shape, mais nous devons nous assurer que toutes les classes héritières disposent de la méthode.

De telles méthodes peuvent être étiquetées abstrait.

syntaxe:

abstract public void calculateArea();

Pour une méthode abstraite, aucune implémentation n’est requise. Seule la signature de la méthode est définie.

Exemple de code d'abstraction

abstract class Shape{  
  abstract void calculateArea();  
}  
 class guru99 extends Shape{  
void calculateArea(){System.out.println("Area of Shape");}  
public static void main(String args[]){  
 Shape obj = new guru99();  
 obj.calculateArea();
}  
}

Avantages de l'abstraction

  • Le principal avantage de l’utilisation d’une abstraction dans Programmation est qu'il vous permet de regrouper plusieurs classes liées en tant que frères et sœurs.
  • L'abstraction dans la programmation orientée objet contribue à réduire la complexité du processus de conception et de mise en œuvre des logiciels.

Mot-clé final dans Java

Le dernier modificateur s'applique aux classes, méthodes et variables. La signification de final varie d'un contexte à l'autre, mais l'idée essentielle est la même.

  • Une classe finale ne peut pas être héritée
  • Une variable finale devient une constante et sa valeur ne peut pas être modifiée.
  • Une méthode finale ne peut pas être remplacée. Ceci est fait pour des raisons de sécurité et ces méthodes sont utilisées à des fins d'optimisation.

Exemple :- Pour apprendre les mots-clés abstraits et finaux

Étape 1) Copiez le code suivant dans un éditeur.

abstract class Shape{
   final int b = 20;
   public void display(){
     System.out.println("This is display method");
   }
   abstract public void calculateArea();
}

public class Rectangle extends Shape{
   public static void main(String args[]){
      Rectangle obj = new Rectangle();
      obj.display();
     //obj.b=200;
  }
  //public void calculateArea(){}
}

Étape 2) Enregistrez, compilez et exécutez le code.

Étape 3) Erreur =? La méthode abstraite n'est pas implémentée dans la classe Rectangle. Pour résoudre le problème, décommentez la ligne 15.

Étape 4) Décommentez la ligne n°13. Enregistrez et compilez le code.

Étape 5) Erreur = ? la variable b est finale

Quand utiliser les méthodes abstraites et les classes abstraites ?

Les méthodes abstraites sont principalement déclarées lorsque deux ou plusieurs sous-classes font également la même chose de différentes manières à travers des implémentations différentes. Il étend également la même classe Abstract et propose différentes implémentations des méthodes abstraites.

Les classes abstraites aident à décrire les types génériques de comportements et la hiérarchie des classes de programmation orientée objet. Il décrit également les sous-classes pour offrir des détails d'implémentation de la classe abstraite.

Résumé :

  • L'abstraction en programmation est le processus de sélection d'ensembles de données importants pour un Exlcusion dans votre logiciel et en laissant de côté les plus insignifiants.
  • Une fois que vous avez modélisé votre objet à l'aide de l'abstraction de données dans Java, le même ensemble de données pourrait être utilisé dans différentes applications.