Une bonne information a été donnée, mais une chose que vous avez dit que peut-être vous source de confusion est ceci:
« Si j'ai Liste publique note = new Liste() puis des méthodes telles que ADD, REMOVE devient disponible pour la Personne dans Incident. "
Tout dépend de la façon dont vous concevez vos classes. Une chose que vous devriez penser est la façon dont ces données se rapportent les unes aux autres. Cela vous aidera à imaginer votre conception de classe.
Cela ressemble à ce qui suit:
- Un incident peut impliquer de nombreuses personnes
- Une personne peut créer beaucoup de notes
- Une note est le niveau et existe plus bas en raison d'un incident en cours de création et responsable (s) travaillant sur cet incident.
Incident 1 - nombre de personnes
Personne 1 - de nombreuses notes
Vous pouvez faire ce type de relation dans un certain nombre de façons. Une façon peut être de séparer les objets impliqués, puis de créer des objets joints.
Par exemple
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
}
Ces classes ne donnent pas de détails les uns aux autres, ils ne sont que repositories pour stocker ces informations. Vous relier ensuite ces classes les uns aux autres, par exemple
public class IncidentPersonnel {
List<Person> p;
//add methods to add a person to an incident
//add methods to remove a person from an incident
....
}
alors vous pouvez avoir une autre classe la manipulation du commentaires par le personnel
public class PersonnelNotes {
List<Note> n;
//other methods...
}
Vous pouvez aller plus loin avec cela, mais il peut compliquer les choses, mais je suis juste vous donner une autre idée de la façon de gérer cela.
Essayez de suivre the law of demeter for functions
Encapsulate tous vos objets, en plus, votre voisin peut vous parler, mais pas beaucoup d'autre ... Cela aidera à garder vos classes à couplage lâche et rend le processus de pensée un peu plus simple pour toi. Enfin, vous avez mentionné comment les opérations CRUD devraient fonctionner. Tout cela revient à votre DAL (Data Access Layer). Plutôt que renvoyer des lignes de données à partir d'une table, vous pouvez ensuite renvoyer un objet référencé avec tous ses attributs. Ajoute et supprime le travail de la même manière (en entrant ou en sortant un objet). Vous pouvez utiliser un ORM ou écrire votre propre DAL. Tout dépend de la façon dont vous voulez vous impliquer :).
Awesome question liée à la POO va certainement aider les autres +1! – JonH