Applicazione dell'etichetta "Genitore / figlio" sull'ereditarietà rispetto alla composizione

2

Mi sono appena imbattuto in un problema interessante con la denominazione.

Sto scrivendo test automatici per un mappatore Object-Relational.

Ciò implica l'utilizzo di classi super-generiche che esistono esclusivamente per l'esercizio di determinate relazioni.

Il mio test ha coinvolto prima la composizione: un oggetto conteneva un altro oggetto che conteneva una collezione di oggetti:

Entity => ParentComponent => Bag => ChildComponent.

Questa denominazione sembrava avere un senso: un genitore aveva molti figli.

Ma poi volevo espandere i miei test per una classe che eredita da Entity . L'ho chiamato istintivamente ChildEntity

  Entity => ParentComponent => Bag => ChildComponent 
     ^
     |
ChildEntity

Questo ora genera confusione! Sto usando l'etichetta Parent / Child per indicare inheritance e sto anche usando l'etichetta Parent / Child per indicare composition .

C'è qualche nomenclatura di etichettatura standard che posso usare per differenziare i due tipi di relazione?

    
posta Andrew Shepherd 25.02.2017 - 23:57
fonte

3 risposte

3

Il bambino ha torto in un contesto di ereditarietà perché non dice nulla sul tipo. Se modellassi un gatto non chiameresti la classe AnimalChild.

Quando parli di OO e spieghi il concetto o il luogo di una classe nel suo albero di ereditarietà puoi parlare di bambino. Quando si nomina la classe, il nome deve esprimere il suo scopo.

    
risposta data 26.02.2017 - 13:04
fonte
1

Nella composizione, discutiamo abbastanza spesso della questione della "proprietà" e la relazione di composizione è spesso denominata relazione "ha una". Quindi, credo che sarebbe abbastanza descrittivo nominare l'oggetto Proprietario / Di proprietà (non sono molto contento della parte di proprietà, ma non sono riuscito a trovare qualcosa di meglio per l'oggetto di proprietà del proprietario).

    
risposta data 26.02.2017 - 00:06
fonte
1

Secondo questo tipo , quando si utilizza la composizione, la classe contenitore viene chiamata "classe front-end" mentre le classi contenute sono "classi back-end".

Per quanto riguarda l'ereditarietà, non penso che il genitore / figlio sia comune, né corretto (un genitore e un bambino nel mondo reale sarebbero lo stesso tipo di organismo). Più comuni per l'ereditarietà sono i termini antenato / discendente, supertipo / sottotipo o superclasse / sottoclasse. La sottoclasse è anche comunemente usata come verbo, come in "per farlo X, sottoclasse e per sovrascrivere Y."

    
risposta data 26.02.2017 - 09:01
fonte