Faire des généralisations en UML 2

Il est naturel de classer des objets dans des catégories et d'organiser des catégories en sous-catégories. Si vous cherchez un endroit pour vivre, vous vous trouvez classer un logement comme une maison, appartement, maison, condo, maison de maître, et ainsi de suite. Les maisons peuvent, à leur tour, être davantage organisés par styles tels que le ranch, split-level, coloniale, et saltbox. UML vous fournit avec la notation de capturer ces types de classifications - également connu comme la généralisation et la spécialisation - et de les utiliser en tant que modeleur et un programmeur.

Certains développeurs orientés objet iront de grands efforts pour sauver un peu de travail. Quand ils peuvent modéliser quelque chose une fois et de le réutiliser, ils sont intéressés. Si ils peuvent écrire une méthode (le code de programme pour une opération) pour une classe qu'une seule fois et l'utiliser plusieurs fois, puis les inscrire pour une productivité accrue. Si vous voulez vous faire gagner du temps en spécifiant les attributs et les opérations une fois, puis de les réutiliser plusieurs fois, lisez la suite.

Comme vous définissez des classes, vous pouvez remarquer que certaines classes ont les mêmes attributs ou les mêmes opérations. Lorsque tel est le cas, vous placez ces caractéristiques communes (attributs, opérations, etc.) dans une classe plus générique appelé superclasse. Les classes qui partagent les points communs sont connus comme sous-classes de la superclasse. Par exemple, la longueur de matériau enregistré sur une cassette vidéo, enregistrement audio, disque compact, ou un film de cinéma est un attribut de tous les quatre kindsof enregistré médias. Ces classes peuvent partager d'autres attributs ainsi, comme leurs dimensions physiques et la date chacun a été utilisé pour effectuer un enregistrement. Dans ce cas, la superclasse serait RecordedMedia, les sous-classes seraient Videotape, Audiotape, CompactDisc et MovieFilm, et certains attributs communs pourraient inclure recordedLength et totalLength.

Ce processus de recherche d'attributs semblables ou des opérations entre les classes est connu comme généralisation. Par exemple vous généralisez l'attribut RecordLength dans une classe plus générique appelé RecordedMedia. Le processus pour montrer une généralisation en UML est simple:

1. Identifier les sous-classes.

Localiser les classes qui ont les mêmes attributs et / ou des opérations. Ces classes sont vos sous-classes.




2. Créer une superclasse.

Fournir une superclasse pour contenir les attributs et / ou des opérations conjointes des sous-classes. Donnez la superclasse un nom qui catégorise toutes les sous-classes. Placer la superclasse-dessus des sous-classes dans le schéma rendre plus facile à lire mais pas obligatoire.)

3. Ajouter des caractéristiques communes à la superclasse.

Retirer les attributs et les opérations courantes des sous-classes et les placer (une fois) dans la superclasse.

4. Dessiner une relation de généralisation.

Vous dessinez une ligne de généralisation à partir de chaque sous-classe de la superclasse. Dans UML la ligne de généralisation est représentée comme une ligne continue avec une pointe creuse à la fin superclasse. En UML, une ligne à la pointe vide qui relie une sous-classe d'une superclasse est connu comme une relation de généralisation.

Après avoir créer une superclasse avec les caractéristiques communes telles que les attributs et les opérations, les sous-classes hériter ces caractéristiques de la superclasse. De cette façon, il suffit d'écrire les caractéristiques communes une fois dans la superclasse place de nombreuses fois dans chacune des sous-classes.

Vous pouvez dire si vous avez une généralisation en regardant la langue que vous (ou d'autres) d'utiliser pour décrire la relation entre les classes. Notez que dans la description de supports enregistrés et ses différents types comme les bandes vidéo plus tôt dans cette section, l'expression «quatre kindsof enregistré médias" est apparu. Si vous vous trouvez en utilisant des expressions telles que «genre de» ou «type de», alors les chances sont que vous avez une généralisation sur vos mains.

Dire que l'un de vos clients est préoccupé par garder la trace des matériaux dans une archive. Ce client a accumulé différente sortes de supports enregistrés comme les cassettes vidéo et audio. Comme modélisateurs, vous devez saisir les différences entre ces médias ainsi que leurs similitudes. Le schéma de la figure 1 montre les débuts de plusieurs généralisations, disposées dans un hiérarchie héritage.

Faire des généralisations en UML 2

Figure 1: Hiérarchie d'héritage simple.

Les développeurs utilisent la généralisation terme ou d'héritage pour désigner le même concept de la réutilisation des attributs et des opérations communes qui vous montrent dans une superclasse et la réutilisation des sous-classes. Généralisation se réfère à la notion de généraliser à partir de spécificités (les sous-classes) au générique (la superclasse). Inheritance se réfère à l'effet de généralisation sur les sous-classes.

Quand vous voyez un généralisation relations entre les classes, sa signification est très différent de celui d'une association relation entre les classes. Une association est en définitive une relation parmi d'autres objets - certains cas d'une classe ont une relation (lien) avec les instances de l'autre catégorie. Dans une relation de généralisation parmi les classes, la relation est vraiment sur les classes. Le mieux que vous pouvez dire est que un objet créé à partir d'une sous-classe contient toutes les caractéristiques de la sous-classe et de la superclasse.

Vous avez seulement un objet à partir d'une classe dans une relation de généralisation. Même si vous indiquez deux classes, la sous-classe et la superclasse, vous avez un seul objet qui est créé. Vous pouvez penser à un objet de la classe Videotape étant également un objet de la classe RecordedMedia raison de l'héritage. La figure 2 montre un objet créé à partir de la classe de Videotape avec tous ses attributs. (L'instance d'une classe est représentée comme un symbole d'objet.) Vous ne devez pas deux objets différents (un pour RecordedMedia et un pour les bandes vidéo), un seul objet. Lorsque le vtu83-1023 d'objet a été créé, les valeurs de tous ses attributs ont été fixés. L'enregistrement sur la bande est de 57 minutes. La longueur totale de la bande physique est de 60 minutes. La cassette est une cassette vidéo Umatic avec une hauteur de 10 pouces, une largeur de 7 pouces et une profondeur de 1,5 pouces. L'enregistrement est analogique, et un journal du contenu de la bande est attachée à la bande pour l'archiviste de référence.

Faire des généralisations en UML 2

Figure 2: Un exemple montrant tous hérité attributs.

Vous avez une seule instance définie par une sous-classe et sa super-classe. La sous-classe et la superclasse peuvent avoir une opération de constructeur (pour créer l'instance) et une opération de destructeur (pour détruire l'instance). Lorsque votre logiciel fonctionne, et que vous créez une instance de sous-groupe, le constructeur de la superclasse est exécuté en premier, suivi par le constructeur de la sous-classe. Quand vient le temps d'éliminer le cas que vous avez créé, le destructeur de la sous-classe est appelée en premier, suivi par le destructeur de la superclasse. Si les choses sont plus complexes parce que vous avez sous-classes de sous-classes, rappelez-vous juste: Constructeurs sont invoquées à partir du sommet de la hiérarchie de l'héritage pour les destructeurs À bas sont appelés dans l'ordre de la sous-classe la plus basse jusqu'à la plus haute superclasse.


» » » » Faire des généralisations en UML 2