63 votes

Terminologie HAS-A, IS-A en langage orienté objet

Je lisais simplement le livre et il y avait les termes "HAS-A" et "IS-A". Quelqu'un sait-il ce qu'il veut dire précisément? J'ai essayé de chercher dans le livre, mais le livre fait 600 pages. Merci!

145voto

cletus Points 276888

C'est de la programmation orientée objet et UML terminologie, pas Java spécifiques. Il y a en fait trois cas, vous devriez être au courant:

  1. Une Maison est un Bâtiment (l'héritage);
  2. Une Maison a une Chambre (la composition);
  3. Une Maison a un occupant (agrégation).

La différence entre (2) et (3) est subtile, mais importante pour les différencier. Ensemble, ils sont des formes d' association. Quelle est la différence? Composition de l'objet enfant ne peut pas vivre en dehors du contexte de la société mère (détruire la maison et des chambres disparaître) alors que l'agrégation implique que l'enfant puisse exister sur son propre (détruire la maison et l'occupant va d'ailleurs).

54voto

Anon. Points 26829

Un Car a un Wheel .

Un Sparrow est un Bird .

Académiquement, les termes sont utilisés pour décider entre la composition et l'héritage.

15voto

akf Points 23518

Has-a signifie que la classe en question a un champ d'un type.

Is-a signifie que la classe s'étend à partir d'une superclasse ou implémente une interface. L'opérateur instanceof retournerait true s'il était testé par rapport à une classe dans ce cas.

6voto

Chris H Points 3534

Ce n'est pas java spécifique, c'est OO spécifiques.

EST-UN signifie que vous pouvez avoir une classe qui "est" quelque chose. Comme un étudiant "EST-UN" de la personne. Ce est utilisé pour décrire un objet d'une sous-classe d'une autre.

Parfois il n'y a pas une relation " EST-UN entre les deux classes, mais un "A-UN" est plus approprié. Exemple, un président "A-UN" de la jambe. ou plusieurs. cela s'appelle l'agrégation, par opposition à l'héritage.

Je ne vais pas entrer dans les détails d'utilisation de chaque, car il dépend de la façon dont les classes sont utilisées, et même si c'est connu il y a tellement de choses à considérer, une nouvelle question pour un cas spécifique serait plus approprié.

6voto

fastcodejava Points 22174

Est un = type spécial de voiture par exemple est un type spécial de véhicule.

A un = Il a physiquement quelque chose, par exemple la voiture a un moteur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X