Modello di progettazione ruolo in uml

1

Nel mio diagramma delle classi UML, ho un'interfaccia chiamata Contract che implementa Staff . Esistono due tipi di Staffs : uno è partTime e l'altro è fullTime .

Significa che le due classi partTime e fullTime ereditano dalla classe Staff ? Più in generale, puoi ereditare una classe implementata?

    
posta karthi97 10.12.2017 - 19:38
fonte

1 risposta

6

Una classe può ereditare un'implementazione dell'interfaccia?

La realizzazione dell'interfaccia esprime che una classe X implementa un'interfaccia I . La classe X può quindi, come qualsiasi altra classe, essere ulteriormente specializzata lasciando che altre classi ereditino da esso.

Il tuo diagramma UML

Potresti quindi avere un'interfaccia Contract e avere diverse implementazioni come Freelancer o Staff . E naturalmente Staff potrebbe avere due specializzazione FullTime e PartTime come prevedi:

Tuttavia,ilparttimepotrebberichiedereun'ulteriorespecializzazione,adesempioametàgiornata,ungiornoallasettimana,duegiorniallasettimana,ecc...Ladomandaè:is-aStaffaFullTimeoaPartime?OhaunostaffaFullTimeoaPartTimepianificazioneoorariodilavoro?Inoltre,unliberoprofessionistanonavrebbeunaspecializzazionesimile?Ciòpotrebberendereilmodellodiclassemoltodensoerigido.

Laregoladelpollicedice

Prefer composition over inheritance

Quindi, se non sei sicuro al 100% che l'ereditarietà sia realmente necessaria, preferisci usare invece la composizione, in modo da avere un'associazione tra Staff e WorkSchedule .

La classe WorkSchedule potrebbe definire le proprietà che caratterizzano la pianificazione del lavoro in modo flessibile. Naturalmente, potrebbe essere ulteriormente specializzato se ritenuto utile.

    
risposta data 10.12.2017 - 22:53
fonte

Leggi altre domande sui tag