Le proprietà comuni a una combinazione casuale di un'istanza Person
e Company
possono essere modellati utilizzando una "classe di associazione".
C'è una notazione per questo in UML e non è difficile creare un tale concetto in un linguaggio di programmazione estendibile.
L'idea è che qualsiasi coppia casuale di oggetti costituita da un Person
e da Company
abbia una relazione e che la relazione sia essa stessa un oggetto. Non è né Person
né Company
, ma i materiali associati alla connessione tra una particolare istanza Person
e Company
.
Quella roba (proprietà, metodi) costituisce una classe: la classe di associazione Person-Company
.
Ho fatto questo lavoro in Lisp prima, con alcune macro per definire una classe di associazione per una data coppia di classi, e una tabella hash globale debole per il mapping delle coppie di oggetti al loro oggetto di classe di associazione (in modo che per una determinata persona e è stato possibile recuperare l'associazione e quell'associazione andrebbe via quando questi oggetti diventeranno spazzatura).
Il collegamento effettivo tra determinate aziende e persone è semplice, utilizzando ad es. liste o altre strutture dati associative. Un oggetto persona può avere un elenco di società e viceversa. L'idea della classe di associazione affronta il problema di dove mettere le cose della persona-azienda. Ad esempio, ogni Person
ha un ruolo all'interno di un Company
(diciamo). Non è possibile avere una variabile role
in un Person
perché può avere molti ruoli con molte aziende. Di certo non possiamo avere un role
nella compagnia perché non è nemmeno una persona; ha persone ad esso associate che hanno ruoli. Il ruolo può entrare nell'associazione: problema risolto.
possibile duplicato del [modellazione padre-figlio Rapporti con le classi] (http://stackoverflow.com/questions/4089582/modelling- genitori-bambini-rapporti-con-classi) –