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"?