Interprétation des normes de visibilité (esp. Java vs UML)


Grâce à Google, il existe de nombreuses solutions légèrement différentes à cela, même si (pour moi) il semble que cela devrait être beaucoup plus facile de répondre. Ce sont les mots dont je m'inquiète en ce moment, tout en essayant d'acquérir des compétences UML'ing décentes :D...

"public, protégé, privé, paquet"

Permettez-moi d'abord d'essayer d'obtenir cela complet pour Java, car je me sens assez familier avec lui (corrigez-moi s'il vous plait, si j'ai fait du mal néanmoins!):

  1. Public
    • Membres de la même instance peut voir/utiliser ce
    • Membres d'une autre instance de la même classe peut voir/utiliser ce
    • Les membres de classes dérivées dans le même pkg peuvent voir / utiliser ce
    • Les membres de classes dérivées dans un autre pkg peuvent voir / utiliser ce
    • Les membres d'une autre classe dans le même pkg peuvent voir / utiliser ce
    • Membres d'une autre classe dans un autre pkg peut voir/utiliser ce
    • Toute autre chosepeut voir / utiliser ce
  2. Protégé
    • Membres de la même instance peut voir/utiliser ce
    • Membres d'une autre instance de la même classe peut voir/utiliser ce
    • Les membres de classes dérivées dans le même pkg peuvent voir / utiliser ce
    • Les membres de classes dérivées dans un autre pkg peuvent voir / utiliser ce
    • Membres d'une autre classe dans le même paquet ne peut pas voir / utiliser ce
    • Membres d'une autre classe dans un autre pkg ne voir/utiliser ce
    • Toute autre chose ne peut pas voir / utiliser ce
  3. Privé
    • Membres de la même instance peut voir/utiliser ce
    • Membres d'une autre instance de la même classe peut voir/utiliser ce
    • Les membres de classes dérivées dans le même pkg ne peuvent pas voir / utiliser ce
    • Membres des classes dérivées dans un autre pkg ne peut pas voir / utiliser ce
    • Les membres d'une autre classe dans le même pkg ne peuvent pas voir / utiliser ce
    • Membres d'une autre classe dans un autre pkg ne voir/utiliser ce
    • Toute autre chose ne peut pas voir / utiliser ce
  4. Paquet
    • Membres de la même instance peut voir/utiliser ce
    • Membres d'une autre instance de la même classe peut voir/utiliser ce
    • Membres des classes dérivées dans le même pkg peut voir/utiliser ce
    • Les membres de classes dérivées dans un autre pkg ne peuvent pas voir / utiliser ce
    • Les membres d'une autre classe dans le même pkg peuvent voir / utiliser ce
    • Membres d'une autre classe dans un autre pkg ne voir/utiliser ce
    • Toute autre chose ne peut pas voir / utiliser ce

Mes questions maintenant:

  1. En quoi cela diffère-t-il exactement de la norme UML?
  2. Où ai-je inclure des erreurs dans la liste supérieure, si je l'ai fait? Je ne suis pas dieu, donc il pourrait y en avoir un;)

Cordialement, et merci d'avance pour toute aide!

Author: LDericher, 2012-11-18

1 answers

De la norme UML. Visibilité:

Un élément public est visible par tous les éléments qui peuvent accéder au contenu de l'espace de noms qui le possède.

Un élément privé n'est visible qu'à l'intérieur de l'espace de noms qui le possède.

Un élément protégé est visible pour les éléments qui ont une relation de généralisation avec l'espace de noms qui le possède.

Un élément de paquet appartient à un espace de noms qui n'est pas un paquet et est visible par les éléments qui sont dans le même paquet que son espace de noms propriétaire. Seuls les éléments nommés qui ne sont pas détenus par les paquets peuvent être marqués comme ayant une visibilité sur les paquets. Tout élément marqué comme ayant une visibilité sur le paquet est visible par tous les éléments du paquet englobant le plus proche (étant donné que les autres éléments propriétaires ont une visibilité appropriée). En dehors du paquet englobant le plus proche, un élément marqué comme ayant une visibilité sur le paquet n'est pas visible.

Espace de noms:

Un espace de noms est un élément nommé qui peut propres autres éléments nommés.

Je pense que les définitions UML de privé, protégé, etc. sont assez similaires à ceux de Java.

 2
Author: vainolo, 2012-11-18 07:02:30