Concepts OOPS en Java – Exemple de Concepts OOPS

Les concepts de programmation orientée objet sont très importants pour la programmation. Sans avoir une idée des concepts OOPS, vous ne serez pas en mesure de concevoir des systèmes dans le modèle de programmation orientée objet.

Qu’est-ce que le modèle de programmation orientée objet?

Le modèle de programmation orientée objet tourne autour du concept d’objets. Qu’est-ce qu’un objet? Un objet est une instance d’une classe. Il contient des propriétés et des fonctions. Ils sont comme des objets du monde réel. Par exemple, votre voiture, votre maison, votre ordinateur portable, etc. sont tous des objets. Ils ont des propriétés spécifiques et des méthodes pour effectuer certaines actions. Qu’est-ce qu’une classe? La classe définit le plan d’objets. Elle définit les propriétés et les fonctionnalités des objets. Par exemple, un ordinateur portable est une classe et votre ordinateur portable en est une instance.

Concepts OOPS

Les concepts OOPS fondamentaux sont :

  1. Abstraction
  2. Encapsulation
  3. Polymorphisme
  4. Héritage
  5. Association
  6. Agrégation
  7. Composition

Parlons de ces concepts de programmation orientée objet un par un. Nous utiliserons le langage de programmation Java pour les exemples de code afin que vous sachiez comment implémenter les concepts de POO en Java.

1. Abstraction

L’abstraction est le concept de masquer les détails internes et de décrire les choses de manière simple. Par exemple, une méthode qui ajoute deux entiers. Le traitement interne de la méthode est caché du monde extérieur. Il existe de nombreuses façons d’atteindre l’abstraction dans la programmation orientée objet, telles que l’encapsulation et l’héritage. Un programme Java est également un excellent exemple d’abstraction. Ici, Java se charge de convertir des instructions simples en langage machine et masque les détails de mise en œuvre internes du monde extérieur.

Lecture complémentaire : Qu’est-ce que l’abstraction en POO ?

2. Encapsulation

L’encapsulation est la technique utilisée pour mettre en œuvre l’abstraction en programmation orientée objet. L’encapsulation est utilisée pour limiter l’accès aux membres et méthodes de classe. Les mots-clés de modificateur d’accès sont utilisés pour l’encapsulation en programmation orientée objet. Par exemple, l’encapsulation en Java est réalisée en utilisant les mots-clés private, protected et public.

3. Polymorphisme

Le polymorphisme est le concept où un objet se comporte différemment dans différentes situations. Il existe deux types de polymorphisme – le polymorphisme au moment de la compilation et le polymorphisme au moment de l’exécution. Le polymorphisme au moment de la compilation est réalisé par surchargement de méthode. Par exemple, nous pouvons avoir une classe comme ci-dessous.

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.");
	}
}

Ici, nous avons plusieurs méthodes draw, mais elles ont un comportement différent. Il s’agit d’un cas de surcharge de méthode car toutes les méthodes ont le même nom mais des arguments différents. Le compilateur pourra identifier la méthode à invoquer au moment de la compilation, d’où le nom de polymorphisme au moment de la compilation. Le polymorphisme au moment de l’exécution est mis en œuvre lorsque nous avons une relation « IS-A » entre les objets. On l’appelle également substitution de méthode car la sous-classe doit remplacer la méthode de la superclasse pour le polymorphisme au moment de l’exécution. Si nous travaillons en termes de la superclasse, la classe d’implémentation réelle est décidée au moment de l’exécution. Le compilateur ne peut pas décider quelle classe de méthode sera invoquée. Cette décision est prise au moment de l’exécution, d’où le nom de polymorphisme au moment de l’exécution ou de répartition dynamique des méthodes.

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 est la superclasse et il y a deux sous-classes Circle et Square. Voici un exemple de polymorphisme au moment de l’exécution.

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

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

Dans les exemples ci-dessus, le compilateur Java ne connaît pas la classe d’implémentation réelle de Shape qui sera utilisée au moment de l’exécution, d’où le polymorphisme au moment de l’exécution.

4. Héritage

L’héritage est le concept de programmation orientée objet où un objet est basé sur un autre objet. L’héritage est le mécanisme de réutilisation du code. L’objet qui est hérité est appelé la superclasse et l’objet qui hérite de la superclasse est appelé une sous-classe. Nous utilisons le mot-clé extends en java pour implémenter l’héritage. Voici un exemple simple d’héritage en 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. Association

L’association est le concept de POO pour définir la relation entre les objets. L’association définit la multiplicité entre les objets. Par exemple, les objets Enseignant et Étudiant. Il y a une relation un-à-plusieurs entre un enseignant et des étudiants. De même, un étudiant peut avoir une relation un-à-plusieurs avec des objets enseignant. Cependant, les objets étudiant et enseignant sont indépendants l’un de l’autre.

Agrégation

L’agrégation est un type spécial d’association. Dans l’agrégation, les objets ont leur propre cycle de vie mais il y a une propriété. Chaque fois que nous avons une relation « A UN » entre les objets et la propriété, alors c’est un cas d’agrégation.

6. Composition

La composition est un cas spécial d’agrégation. La composition est une forme plus restrictive d’agrégation. Lorsque l’objet contenu dans la relation « A-UN » ne peut pas exister seul, alors il s’agit d’un cas de composition. Par exemple, une Maison a une Pièce. Ici, la pièce ne peut pas exister sans la maison. La composition est considérée comme meilleure que l’héritage, en savoir plus sur Composition vs Héritage.

Lecture complémentaire : Composition en Java

C’est tout pour un tour d’horizon rapide sur les concepts de POO.

Vous pouvez consulter d’autres exemples de programmes Java dans notre Dépôt GitHub.

Références : https://docs.oracle.com/javase/tutorial/java/concepts/

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