Interpretazione delle norme di visibilità (es. Java vs UML)


Attraverso Google, ci sono molte soluzioni leggermente diverse a questo, anche se (per me) sembra che dovrebbe essere molto più facile rispondere. Queste sono le parole di cui mi preoccupo in questo momento, mentre cerco di acquisire abilità UML'ing decenti: D...

"pubblico, protetto, privato, pacchetto"

Fammi prima provare a completarlo per Java, perché mi sento abbastanza familiare con esso (correggimi per favore, se ho fatto del male tuttavia!):

  1. Pubblico
    • I membri della stessa istanza possono vedere / usare questo
    • I membri di un'altra istanza della stessa classe possono vedere / usare questo
    • I membri di classi derivate nello stesso pkg possono vedere / usare questo
    • I membri di classi derivate in un altro pkg possono vedere / usare questo
    • I membri di un'altra classe nello stesso pkg possono vedere / usare questo
    • Membri di un'altra classe in un altro pkg può vedere / usare questo
    • Qualsiasi altra cosa può vedere / usare questo
  2. Protetto
    • I membri della stessa istanza possono vedere / usare questo
    • I membri di un'altra istanza della stessa classe possono vedere / usare questo
    • I membri di classi derivate nello stesso pkg possono vedere / usare questo
    • I membri di classi derivate in un altro pkg possono vedere / usare questo
    • Membri di un'altra classe nello stesso pkg non può vedere / usare questo
    • I membri di un'altra classe in un altro pkg non possono vedere / usare questo
    • Qualsiasi altra cosa non può vedere / usare questo
  3. Privato
    • I membri della stessa istanza possono vedere / usare questo
    • I membri di un'altra istanza della stessa classe possono vedere / usare questo
    • I membri di classi derivate nello stesso pkg non possono vedere / usare questo
    • Membri di classi derivate in un altro pkg non può vedere / usare questo
    • I membri di un'altra classe nello stesso pkg non possono vedere / usare questo
    • I membri di un'altra classe in un altro pkg non possono vedere / usare questo
    • Qualsiasi altra cosa non può vedere / usare questo
  4. Pacchetto
    • I membri della stessa istanza possono vedere / usare questo
    • I membri di un'altra istanza della stessa classe possono vedere / usare questo
    • Membri di classi derivate nello stesso pkg può vedere / usare questo
    • I membri di classi derivate in un altro pkg non possono vedere / usare questo
    • I membri di un'altra classe nello stesso pkg possono vedere / usare questo
    • I membri di un'altra classe in un altro pkg non possono vedere / usare questo
    • Qualsiasi altra cosa non può vedere / usare questo

Le mie domande ora:

  1. In che modo esattamente questo differisce dallo standard UML?
  2. Dove ho fatto includere errori nella lista superiore, se l'ho fatto? Io non sono dio, quindi ci potrebbe essere uno;)

Cordiali saluti, e grazie in anticipo per qualsiasi aiuto!

Author: LDericher, 2012-11-18

1 answers

Dallo standard UML. Visibilità:

Un elemento pubblico è visibile a tutti gli elementi che possono accedere al contenuto dello spazio dei nomi che lo possiede.

Un elemento privato è visibile solo all'interno dello spazio dei nomi che lo possiede.

Un elemento protetto è visibile agli elementi che hanno una relazione di generalizzazione con lo spazio dei nomi che lo possiede.

Un elemento del pacchetto è di proprietà di uno spazio dei nomi che non è un pacchetto ed è visibile agli elementi lo stesso pacchetto del suo spazio dei nomi proprietario. Solo gli elementi con nome che non sono di proprietà dei pacchetti possono essere contrassegnati come aventi visibilità del pacchetto. Qualsiasi elemento contrassegnato come avente visibilità del pacchetto è visibile a tutti gli elementi all'interno del pacchetto di chiusura più vicino (dato che altri elementi proprietari hanno visibilità adeguata). Al di fuori del pacchetto di chiusura più vicino, un elemento contrassegnato come con visibilità del pacchetto non è visibile.

Spazio dei nomi:

Uno spazio dei nomi è un elemento denominato che può possedere altri elementi con nome.

Penso che le definizioni UML di privato, protetto, ecc. sono abbastanza simili a quelli di Java.

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