Qu'est-ce que la composition en Java avec des exemples

Publié: 2021-04-09

Java est un langage polyvalent qui prend en charge la programmation orientée objet et la réutilisation du code en établissant des relations entre deux classes. Il existe deux types de relations ou d'associations en Java utilisées pour réutiliser un code et réduire la duplicité d'une classe à une autre.

Ces relations sont IS-A (Héritage) et HAS-A (Association). Bien qu'il existe un couplage étroit entre les classes IS-A, les classes HAS-A sont faiblement couplées et plus préférables pour les programmeurs.

La relation HAS-A est divisée en deux types, à savoir l'agrégation et la composition en Java . Cet article est basé sur le concept de composition POO. Nous verrons de nombreux exemples réels de la façon dont la composition est codée et des avantages obtenus lors de sa mise en œuvre.

Table des matières

Une brève narration des associations ou des relations en Java

Dans la programmation orientée objet, les objets sont liés les uns aux autres et utilisent les fonctionnalités communes entre eux. C'est là que viennent les sujets d'héritage, d'association, d'agrégation et de composition dans les programmes Java .

Héritage (IS-A) et Association (HAS-A) en Java

1. Héritage (IS-A)

Une relation IS-A signifie qu'un objet est un type d'un autre. Il est implémenté à l'aide des mots clés 'extends' et 'implements'.

Exemple : Ordinateur portable HP IS-A

2. Association (HAS-A)

Une relation HAS-A signifie qu'une classe a une relation avec une autre classe. Par exemple, la classe A détient la référence de la classe B et peut accéder à toutes les propriétés de la classe B.

Exemple : corps humain HAS-A Heart

La source

La source

3. Agrégation Vs Composition

La relation Has-A ou Association peut être divisée en agrégation et composition. Une classe de conteneur d'agrégation et une classe référencée peuvent avoir une existence indépendante. Une classe de référence de composition ne peut pas exister si la classe de conteneur est détruite.

Prenons un exemple pour comprendre l'agrégation et la composition. Une voiture a ses pièces, par exemple, des moteurs, des roues, un lecteur de musique, etc. La voiture ne peut pas fonctionner sans moteur ni roues, mais peut fonctionner sans lecteur de musique. Ici, le moteur et la voiture ont une relation de composition, et la voiture et le lecteur de musique ont une relation d'agrégation. Dans le cas de l'agrégation, un objet peut exister sans faire partie de l'objet principal.

La source

Composition en Java

Une composition en Java entre deux objets associés entre eux existe lorsqu'il existe une relation forte entre une classe et une autre. Les autres classes ne peuvent pas exister sans la classe propriétaire ou parent. Par exemple, la classe A 'Humain' est une composition de Cœur et poumons . Lorsque l'objet humain meurt, il n'existe plus de parties.

La composition est une forme restreinte d'agrégation. Dans Composition, une classe inclut une autre classe et en dépend, de sorte qu'elle ne peut pas exister fonctionnellement sans une autre classe.

Implémentation de la composition en Java

La relation entre le moteur et la voiture est implémentée à l'aide des classes Java comme ci-dessous. En Java, le mot clé 'final' est utilisé pour représenter la composition. En effet, l'objet 'Owner' s'attend à ce qu'un objet part soit disponible et fonctionne en le rendant 'final' .

Voiture de classe publique {

moteur final privé Engine ;

Voiture publique (){

moteur = nouveau moteur();

}

}

moteur de classe {

type de chaîne privée ;

}

Prenons un autre exemple qui illustre à la fois l'héritage et la composition.

La source

Dans ce programme, la classe Honda est une Voiture et s'étend de la classe Voiture. Le moteur de voiture Object est utilisé dans la classe Honda.

class CarEngine {

public void StartEngine(){

System.out.println(" Le moteur de la voiture a démarré .");

}

public void stopEngine(){

System.out.println(" Le moteur de la voiture s'est arrêté .");

}

}

voiture de classe {

couleur de chaîne privée ;

privé int maxi_Speed ;

public void carDetails(){

System.out.println(“Car Colour= “+colour + “; Maximum Speed= ” + maxi_Speed);

}

//Définition de la couleur de la voiture

public void setColour(Couleur de la chaîne) {

this.couleur = couleur;

}

//Définition de la vitesse maximale de la voiture

public void setMaxiSpeed(int maxi_Speed) {

this.maxi_Speed ​​= maxi_Speed ;

}

}

la classe Honda étend la voiture{

public void HondaStart(){

CarEngine Honda_Engine = new CarEngine(); //composition

Honda_Engine.startEngine();

}

}

classe publique principale {

public static void main(String[] args) {

Honda HondaJazz = nouvelle Honda();

HondaJazz.setColour(“Noir”);

HondaJazz.setMaxSpeed(160);

HondaJazz.carDetails();

HondaJazz.HondaStart();

}

}

Sortir:

Couleur de la voiture = Noir ; Vitesse maximale = 160

Le moteur de la voiture a démarré.

La sortie est dérivée à l'aide de la composition et montre les détails de la voiture Honda Jazz.

Dénotations d'association UML

Les relations d'association, d'agrégation et de composition en Java entre les classes A et B sont représentées comme suit dans les diagrammes UML :

Association : A—->B

Composition : A—–<remplie>B

Agrégation : A—–<>B

Obtenez des diplômes en génie logiciel en ligne dans les meilleures universités du monde. Gagnez des programmes Executive PG, des programmes de certificat avancés ou des programmes de maîtrise pour accélérer votre carrière.

Avantages de la composition en Java

L'utilisation de la technique de conception de composition en Java offre les avantages suivants :

  1. Il est toujours possible de « préférer la composition d'objets à l'héritage de classes ». Les classes réalisent le polymorphisme et la réutilisation du code par composition.
  2. La composition est flexible, vous pouvez modifier l'implémentation de la classe au moment de l'exécution en modifiant l'objet inclus et modifier son comportement.
  3. Une conception basée sur la composition a un nombre moindre de classes.
  4. LA relation "HAS-A" entre les classes est sémantiquement correcte que la relation "IS-A".
  5. La composition en Java offre une meilleure testabilité des classes, ce qui est particulièrement utile dans le développement piloté par les tests.
  6. Il est possible d'obtenir des « héritages multiples » dans les langues en composant plusieurs objets en un seul.
  7. Dans la composition, il n'y a pas de conflit entre les méthodes ou les noms de propriété.

Conclusion

La composition en Java offre de nombreux avantages lors de la programmation et est l'une des méthodes de conception privilégiées. Dans cet article, nous avons essayé de vous faire comprendre ce concept important avec des exemples concrets et du code pratique. La composition offre de la flexibilité et un code robuste. Sa fonction de réutilisation du code permet d'éviter la duplication de code et d'atteindre la rentabilité. Cela en fait l'une des méthodes les plus utilisées dans divers programmes.

Apprenez la composition en Java avec le Master of Science d'upGrad dans un cours d'informatique qui vise à vous faire apprendre et améliorer vos compétences en développement de logiciels.

Admissibilité

Baccalauréat AB avec 50 % ou notes équivalentes. Aucune expérience initiale de codage n'est nécessaire.

Tarification

Les frais du programme commencent à Rs.13, 095/mois pour les résidents indiens et 5999 USD pour les résidents internationaux.

Décrochez le job de vos rêves

Postuler pour un Master of Science en Machine Learning & AI