Relation entre la classe de voiture et la classe de route-UML et code Java


J'essaie de comprendre la relation entre les classes dans le monde orienté objet, et je suis tombé sur divers termes comme:

Association , Aggregation, Composition, Dependency, Generalization, Realization, Using (et peut-être il ya plus à la liste, je rencontre bientôt).

Je suis tombé sur le diagramme UML suivant:

entrez la description de l'image ici

Ici, nous avons deux Classes différentes (et donc des objets), Car et Road, et le symbole du connecteur les reliant (et je crois que c'est le cas association dirigée symbole, selon MME Visio).

Cela signifie donc que les classes Car et Road ont une relation (association). J'ai quelques doutes à ce sujet pour comprendre cette relation:

1) Comment cette relation serait-elle traduite en classes Java? J'ai du mal à comprendre comment Car et Road auraient "du code" les reliant?

2) que signifient * et 0..1 dans ce diagramme? Habituellement, je les ai vus dans un Diagrammes Entité-relation (en DB).

Tout pointeur pour comprendre cela serait d'une grande aide.

Author: CuriousMind, 2016-05-19

4 answers

Un objet Car aurait une référence à un objet Road (en d'autres termes, une variable d'instance de type Road). Un objet routier aurait également une liste (ou une liste) d'objets de voiture. La première phrase représente le 0..1 relation entre les classes; notez que la référence peut être nulle (car est sur 0 routes) ou non (car est sur une route). La liste dans l'objet Route représente la relation * 0 0 ou plusieurs voitures sont sur la route.

 3
Author: arcy, 2016-05-19 18:36:10

1) est trop large pour répondre. UML et Java sont tous deux des langages formels avec des structures bien définies, mais il n'y a pas de moyen standardisé d'exprimer un concept UML particulier en Java ou vice versa. Ainsi, toute réponse serait opinion.

De plus, une association est une relation vaguement définie. UML en a beaucoup d'autres plus strictement définis (vous en avez énuméré quelques-uns), et ceux-ci sont plus faciles à traduire en code source.

Parce qu'il existe des relations plus strictement définies, la lecture correcte d'une relation d'association est le long des lignes de "ces deux choses sont liées d'une certaine manière, mais pas si serré que l'un contient l'autre, ou que l'on utilise l'autre, ou est dépendant de l'autre."Ces concepts ont tous leurs propres connecteurs, et le modélisateur a pris la décision consciente de ne pas les utiliser.

2) * signifie "nombre" et de 0..1 signifie "zéro ou un", qui est généralement de lire comme une "option". Ainsi, la relation drivesOn associe un nombre quelconque de Voitures avec une route en option.

, Vraisemblablement, cela devrait signifier qu'une voiture peut rouler sur une route, mais jamais plus d'une, et d'une route peut avoir n'importe quel nombre de voitures circulant sur elle.

, En termes de compréhension UML, c'est un très mauvais exemple, alors n'essayez pas de lire trop.

 1
Author: Uffe, 2016-05-20 15:02:49

Vos questions ont des réponses simples:

  1. Votre association unidirectionnelle plusieurs-à-un drivesOn est exprimée en (ou traduite en) Java sous la forme d'une propriété de référence à valeur unique de la manière suivante:

    class Car {
      int passengers;
      Road drivesOn;
    }
    
  2. Les symboles * et 0..1 représentent les multiplicités: * signifie beaucoup (ou unbounded) et 0..1 signifie au plus un, donc, votre modèle fait deux déclarations de multiplicité: (1) une voiture se déplace à la plupart d'une route, et (2) une route a beaucoup de voitures se déplaçant sur elle.

Un pointeur pour en savoir plus sur la signification des associations et des multiplicités et comment elles sont exprimées en Java est mon chapitre de livre Propriétés de référence et Associations unidirectionnelles.

 1
Author: Gerd Wagner, 2016-05-29 03:00:29

C'est comme si de nombreuses voitures pouvaient être associées à aucune route ou à une route maximale. En d'autres termes, de nombreuses voitures peuvent être conduites sur 1 route ou pas du tout sur une route

 0
Author: PeaceIsPearl, 2016-05-19 18:25:41