Diagramma di sequenza per la classe astratta e derivata

2

Ho un sacco di classi in cui una è una classe astratta. Traggo poche lezioni derivate da quella classe base astratta. Ad esempio,

class IBase{
public:
 *register(): bool*
 *update(): bool*
};

class Derived: public IBase{
 // implement register ()
 // implement update ()
};

class Derived2: public IBase{
 // implement register ()
 // implement update ()
};

mentre disegno il diagramma di sequenza, non sono sicuro, come rappresentare l'interazione tra classe astratta e classe derivata. Quali sono gli standard in merito?

Qualsiasi aiuto è molto apprezzato.

Grazie.

    
posta meAbab 30.10.2017 - 13:28
fonte

2 risposte

2

In un diagramma di sequenza , modellate le interazioni tra lifelines . Ogni linea di vita rappresenta un'istanza diversa di un tipo (ovvero un oggetto diverso).

Quindi in linea di principio dovresti rappresentare IBase , Derived e Derived2 nello stesso diagramma di sequenza, solo se c'erano molti oggetti diversi di questi tipi. Avresti quindi una linea di vita distinta per ogni oggetto. Le loro interazioni non dipendono dall'eredità tra i tipi, ma dai "messaggi" scambiati tra le istanze (ad esempio chiamate e ritorni delle funzioni).

Non mostreresti quindi l'interazione tra una classe derivata e la sua classe base in un diagramma di sequenza, perché entrambe le linee vita si riferirebbero in realtà allo stesso oggetto.

    
risposta data 31.10.2017 - 00:44
fonte
0

Ho spesso insegnato diagrammi di sequenza ed è comune per gli studenti pensare che una classe astratta sia tra il mittente e il destinatario di un messaggio, come un tipo di oggetto di classe intercettatore. In effetti, credo che i diagrammi di sequenza siano un ottimo modo per cogliere malintesi sul polimorfismo.

Per approfondire il commento di @ Walfrat, a volte è utile mostrare la prospettiva del design con la classe astratta e la prospettiva dei dettagli delle implementazioni. Tuttavia, ci vogliono due diagrammi per farlo.

Cito spesso il suo libro (perché molte delle domande con il tag UML sono coperto in esso!) ma Craig Larman lo affronta con l'esempio di Monopoli nel capitolo 25.

IllandedOn()èunachiamatapolimorficacheavràmolteimplementazioni,asecondadell'istanzadiSquarechericeveilmessaggio.Forsenonsiamointeressatiaidettaglidaquestaprospettiva.

Eccoalcunidiagramminellaprospettivadell'implementazionedellachiamatapolimorfica.SupponiamocheGoSquareeIncomeTaxSquaresianoentrambesottoclassidellaclasseSquareastratta:

    
risposta data 01.11.2017 - 22:36
fonte

Leggi altre domande sui tag