


Explication détaillée des différences entre les dépendances, les associations, les agrégations et les combinaisons en Java
Cet article présente principalement la différence entre la dépendance-association-agrégation-combinaison Java. La dépendance est plus facile à distinguer. Ce qui suit est une introduction très détaillée pour ceux qui sont intéressés. regardez ensemble
Tout d'abord, jetez un œil aux définitions de ces quatre relations dans le livre :
La relation de dépendance est le lien entre les classes. Une relation de dépendance indique qu'une classe dépend de la définition d'une autre classe. Par exemple, une personne (Person) peut acheter une voiture (car) et une maison (House). La classe Person dépend de la définition des classes Car et House, car la classe Person fait référence à Car et House. Contrairement à l'association, il n'y a pas d'attributs de type Car et House dans la classe Person. Les instances de Car et House sont passées dans la méthode buy() en tant que paramètres. De manière générale, les dépendances se reflètent dans le langage Java sous forme de variables locales, de paramètres formels de méthodes ou d'appels à des méthodes statiques.
La relation d'association (Association) est une connexion entre les classes, qui permet à une classe de connaître les attributs et les méthodes d'une autre classe. Les associations peuvent être bidirectionnelles ou unidirectionnelles. Dans le langage Java, les relations d'association sont généralement implémentées à l'aide de variables membres.
La relation d'agrégation est un type de relation d'association et est une relation d'association forte. L'agrégation est la relation entre un tout et un individu. Par exemple, la relation entre la catégorie automobile et la catégorie moteur, la catégorie pneu et d’autres catégories de pièces est la relation entre le tout et l’individu. Comme les relations d'association, les relations d'agrégation sont également implémentées via des variables d'instance. Or, les deux classes impliquées dans la relation d'association sont au même niveau, tandis que dans la relation d'agrégation, les deux classes sont à des niveaux inégaux, l'une représentant le tout et l'autre représentant la partie.
La relation de composition est un type de relation d'association et est une relation plus forte que la relation d'agrégation. Cela nécessite que l'objet représentant le tout dans une relation d'agrégation ordinaire soit responsable de représenter le cycle de vie d'une partie de l'objet, et la relation de combinaison ne peut pas être partagée. L'objet représentant le tout doit être responsable du maintien en vie de l'objet partiel et, dans certains cas, de l'anéantissement de l'objet responsable de la partie. Un objet représentant un tout peut transmettre un objet représentant une partie à un autre objet, qui est responsable du cycle de vie de cet objet. Autrement dit, l'objet représentant la pièce ne peut être combiné qu'avec un seul objet à chaque instant, et ce dernier est exclusivement responsable du cycle de vie. Les pièces ont le même cycle de vie que l’ensemble.
- Extrait de "Programmation orientée objet Java"
Le degré de couplage des relations ci-dessus augmente en séquence (le concept de degré de couplage sera discuté en détail plus tard , vous pouvez le comprendre temporairement ici. C'est le degré d'impact sur les autres classes lorsqu'une classe change. Plus l'impact est faible, plus le couplage est faible. Plus l'impact est grand, plus le couplage est fort.) Nous savons déjà grâce à la définition que la dépendance est en fait une association relativement faible, l'agrégation est une association relativement forte et la combinaison est une association plus forte, donc si nous les distinguons en général, en fait, ces quatre relations sont toutes des relations liées.
La dépendance est facile à distinguer. C'est le couplage le plus faible. En Java, elle s'exprime sous forme de variables locales, de paramètres formels de méthodes, ou d'appels à des méthodes statiques, comme dans l'exemple suivant : Le Driver. La classe dépend de la classe Car et les trois méthodes de Driver démontrent trois formes différentes de dépendance.
class Car { public static void run(){ System.out.println("汽车在奔跑"); } } class Driver { //使用形参方式发生依赖关系 public void drive1(Car car){ car.run(); } //使用局部变量发生依赖关系 public void drive2(){ Car car = new Car(); car.run(); } //使用静态变量发生依赖关系 public void drive3(){ Car.run(); } }
Les relations d'association sont généralement implémentées en Java à l'aide de variables membres, et parfois sous la forme de paramètres de méthode. Toujours en utilisant les exemples Driver et Car, le formulaire de paramètre de méthode peut être utilisé pour exprimer des dépendances ou des associations. Après tout, nous ne pouvons pas exprimer la sémantique de manière trop précise dans le programme. Dans cet exemple, les variables membres sont utilisées pour exprimer ce sens : la voiture est ma propre voiture, et je "possède" cette voiture. Utilisez les paramètres de la méthode pour exprimer : la voiture n’est pas à moi, je suis juste un conducteur, je conduis la voiture que les autres me donnent et j’utilise cette voiture.
class Driver { //使用成员变量形式实现关联 Car mycar; public void drive(){ mycar.run(); } ... //使用方法参数形式实现关联 public void drive(Car car){ car.run(); } }
La relation d'agrégation est une relation d'association relativement forte, qui est généralement implémentée sous la forme de variables membres en Java. Il existe une relation entre le tout et les parties entre les objets. Par exemple, dans l'exemple ci-dessus
class Driver { //使用成员变量形式实现聚合关系 Car mycar; public void drive(){ mycar.run(); } }
Si la sémantique suivante est donnée au code ci-dessus : la voiture est une voiture privée et fait partie de la propriété du conducteur. Le même code représente alors une relation d’agrégation. Les relations d'agrégation utilisent généralement la méthode setter pour attribuer des valeurs aux variables membres.
Supposons que la sémantique suivante soit donnée : une voiture est une propriété indispensable pour un conducteur. Pour devenir conducteur, vous devez d'abord avoir une voiture. Si la voiture a disparu, le conducteur ne le fera pas. veux vivre. Et si le conducteur cesse d’être conducteur, la voiture sera détruite et personne d’autre ne pourra l’utiliser. Cela signifie une relation combinée. De manière générale, afin d'exprimer la relation de combinaison, les constructeurs sont souvent utilisés pour atteindre l'objectif d'initialisation. Par exemple, dans l'exemple ci-dessus, un constructeur avec Car comme paramètre est ajouté
<🎜. >
public Driver(Car car){ mycar = car; }
所以,关联、聚合、组合只能配合语义,结合上下文才能够判断出来,而只给出一段代码让我们判断是关联,聚合,还是组合关系,则是无法判断的。
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Guide de la racine carrée en Java. Nous discutons ici du fonctionnement de Square Root en Java avec un exemple et son implémentation de code respectivement.

Guide du nombre parfait en Java. Nous discutons ici de la définition, comment vérifier le nombre parfait en Java ?, des exemples d'implémentation de code.

Guide du générateur de nombres aléatoires en Java. Nous discutons ici des fonctions en Java avec des exemples et de deux générateurs différents avec d'autres exemples.

Guide de Weka en Java. Nous discutons ici de l'introduction, de la façon d'utiliser Weka Java, du type de plate-forme et des avantages avec des exemples.

Guide du numéro Armstrong en Java. Nous discutons ici d'une introduction au numéro d'Armstrong en Java ainsi que d'une partie du code.

Guide du nombre de Smith en Java. Nous discutons ici de la définition, comment vérifier le numéro Smith en Java ? exemple avec implémentation de code.

Dans cet article, nous avons conservé les questions d'entretien Java Spring les plus posées avec leurs réponses détaillées. Pour que vous puissiez réussir l'interview.

Java 8 présente l'API Stream, fournissant un moyen puissant et expressif de traiter les collections de données. Cependant, une question courante lors de l'utilisation du flux est: comment se casser ou revenir d'une opération FOREAK? Les boucles traditionnelles permettent une interruption ou un retour précoce, mais la méthode Foreach de Stream ne prend pas directement en charge cette méthode. Cet article expliquera les raisons et explorera des méthodes alternatives pour la mise en œuvre de terminaison prématurée dans les systèmes de traitement de flux. Lire plus approfondie: Améliorations de l'API Java Stream Comprendre le flux Forach La méthode foreach est une opération terminale qui effectue une opération sur chaque élément du flux. Son intention de conception est
