alcune informazioni di grande è stata data, ma una cosa che lei ha detto che potrebbe si essere fonte di confusione è questo:
"Se ho Elenco pubblico osserva = new Lista() quindi metodi come ADD, RIMUOVERE diventa disponibile a Persona all'interno di Incidente. "
Tutto dipende da come si progettano le classi. Una cosa che dovresti pensare è il modo in cui questi dati si correlano tra loro. Questo ti aiuterà a immaginare il tuo design di classe.
suona come il seguente:
- Un incidente può coinvolgere molte persone
- Una persona in grado di creare molte note
- Una nota è il livello più basso ed esiste a causa di un incidente in fase di creazione e di una responsabile (i) che lavora su quell'incidente.
Incidente 1 - molte persone
Persona 1 - molte note
Si può fare questo tipo di rapporto in un certo numero di modi. Un modo potrebbe essere quello di separare effettivamente gli oggetti coinvolti e quindi creare oggetti uniti.
Per esempio
public class Incident {
//insert incident fields here
//do not add person logic/notes logic
//probably contains only properties
}
public class Person {
//insert person fields
//private members with public properties
//do not embed any other logic
}
public class Comment {
//insert comment private fields
//add public properties
//follow the law of demeter
}
Queste classi non danno informazioni tra loro, sono solo repository per memorizzare queste informazioni. È quindi in relazione queste classi gli uni agli altri, per esempio
public class IncidentPersonnel {
List<Person> p;
//add methods to add a person to an incident
//add methods to remove a person from an incident
....
}
allora si può avere un'altra classe gestire la commentando da personale
public class PersonnelNotes {
List<Note> n;
//other methods...
}
Si può andare avanti con questo, ma potrebbe complicare le cose, ma io sono solo dandoti un'altra idea su come gestirlo.
cercare di seguire the law of demeter for functions
Includete tutte le oggetti, in aggiunta, il vostro vicino può parlare con te, ma non molto altro ... Questo vi aiuterà a tenere le classi loosely coupled e rende il processo di pensiero un po 'più semplice per te.
Infine, hai menzionato come le operazioni CRUD dovrebbero funzionare. Tutto torna al tuo DAL (Livello di accesso ai dati). Piuttosto, quindi, restituisci le righe di dati da una tabella, quindi puoi restituire un oggetto di riferimento con tutti i suoi attributi. Le funzioni di aggiunta e rimozione funzionano allo stesso modo (passando dentro o fuori un oggetto). È possibile utilizzare un ORM o scrivere il proprio DAL. Tutto dipende da quanto vuoi coinvolgere te stesso :).
La fantastica domanda relativa a OOP aiuterà sicuramente gli altri +1! – JonH