Quale sarebbe l'opzione migliore in questo scenario?

-1

Ho una dichiarazione. Conosco gli alti e bassi di Composizione ed Ereditarietà, ma non sono in grado di rendermi conto che quale sarebbe l'opzione migliore per lo scenario indicato.

SCENARIO:

Una società di software sta sviluppando un sito Web per un'università che utilizza un'eredità multipla tra le classi. Le classi includono Persona, Insegnante, Studente, GradStudent, GradTeachAsst.

Per alcuni motivi, il team di progettazione del progetto ha deciso di non utilizzare l'ereditarietà multipla per la classe GradTeachAsst e di fornire due alternative. Uno è usare Composizione e l'altro è una combinazione di Single Inheritance with Composition. Essendo uno sviluppatore software quale opzione sceglierai? Giustifica la tua risposta con buoni motivi.

CLASS-SCHEMA:

Secondo me, lo scenario migliore sarebbe scegliere il Composition . Ma non sto capendo le ragioni nella mia mente. Qualcuno può spiegarmi le solide ragioni?

    
posta Khubaib Khawar 27.07.2017 - 18:42
fonte

1 risposta

1

Come stai sottolineando, la soluzione di ereditarietà richiede l'introduzione di una gerarchia che ha un valore molto basso. In particolare l'uso dell'ereditarietà multipla perché qualcuno è sia un insegnante che uno studente laureato, è IMHO eccessivamente complesso. Che cosa succede se l'insegnante non è uno studente laureato, ma uno studente regolare - che richiede ancora un'altra classe; sottintendendo che in un dominio più sostanziale il risultato sarebbe un po 'un'esplosione di classi.

Avvicinandosi al modello dal punto di vista della persistenza, tale ereditarietà complica la persistenza, anche se offre poco o nessun valore. Il modello di persistenza è probabilmente semplice e fatto facilmente usando la composizione. Quindi, perché non seguirlo anche nel modello a oggetti.

Qui parlo a grandi linee a sostegno dell'uso della composizione per Studente con Persona e Insegnante con Persona, non solo per Insegnante di Studenti Grad. Con la composizione non c'è bisogno di classi aggiuntive per modellare una persona che ha un ruolo di insegnante oltre a seguire corsi. Per essere chiari, sarebbe strano scegliere l'ereditarietà per Studente e Insegnante, ma passare alla composizione per GradTeachAssist; mentre sarebbe naturale usare la composizione per tutti loro.

Eppure dal punto di vista logico, fondamentalmente, siamo (siamo una) persona, ma i ruoli che interpretiamo, ad es. come studente o insegnante sono effimeri; questi non sono permanenti è-una relazione, quindi la composizione sembra più appropriata.

    
risposta data 27.07.2017 - 18:55
fonte