Sto lottando per definire i metodi in OOP. Attualmente mi sto esercitando in questo scenario: "Un ospedale ha iniziato lo sviluppo di un nuovo sistema per conservare i registri delle analisi effettuati dai pazienti e dal medico che li ha richiesti."
Ho definito quattro classi: paziente, dottore, analisi e ospedale.
- Paziente: rappresenta la persona che va all'ospedale. Può sapere quale analisi ha eseguito.
- Medico: rappresenta un professionista della medicina. Può sapere quale analisi ha richiesto.
- Analisi: rappresenta uno studio richiesto da un medico specifico per uno specifico paziente.
- Ospedale: tiene traccia di medici, pazienti e analisi.
Questo è il diagramma della classe uml

Oranonmisentoamioagioconquestodiagrammaperché:
- Sequalsiasimetodohaaccessoaunpaziente,potrebbeeseguire
joe.addAnalysis(a)mal'analisi"a" non viene mai aggiunta all'ospedale. Ciò genererebbe incoerenza. - Come sopra ma con dottore invece di paziente
Quindi nel mio secondo tentativo, ho rimosso i metodi addAnalysis() e getAllAnalysis() da Patient & %codice%. Ora Doctor ha
-
Hospital -
getPatientAnalysis(p: Patient): Analysis[0..*]
Ma in questo caso non sarei in grado di chiedere direttamente a un paziente la loro lista di analisi. Lo stesso vale per i medici.
Quindi la domanda è: il mio secondo tentativo è migliore? Se è così, allora cosa succede con "i pazienti sanno quali studi hanno fatto"?