Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    21

    [JAVA] relazione tra classi

    Ciao a tutti!
    Devo fare un progetto in java che rispecchi un ospedale. Ho usato il pattern composite per gestire i reparti che sono fatti da altri reparti. Poi nella consegna del progetto c'è scritto: "Il paziente ha una cartella clinica, associata al suo ricovero fino alle dimissioni." Quindi io creo una classe paziente e una cartellaClinica in questo modo:
    codice:
    public class cartellaClinica {
    	private paziente paziente;
    	String diagnosi;
    	String data;
    
    	cartellaClinica(String diag, String dataAccesso) {
    		diagnosi = diag;
    		data = dataAccesso;
    	}
    
    	public paziente getPaziente() {
    		return paziente;
    	}
    
    	public void setPaziente(paziente paziente) {
    		this.paziente = paziente;
    	}
    
    	public void print() {
    		System.out.println("diagnosi: " + diagnosi);
    		System.out.println("data: " + data);
    	}
    
    }
    codice:
    public class paziente {
    String nome;
    private cartellaClinica cartella;
    
    	paziente(String nomeNuovo, String diagnosi, String data){
    	nome=nomeNuovo;
    	cartella=new cartellaClinica(diagnosi, data);
    	cartella.setPaziente(this);
    }
    public void setcartella(cartellaClinica cartellaDiagnosi){
    	cartella=cartellaDiagnosi;
    	
    }
    
    public void print(){
    	System.out.println("nome: "+nome);
    	cartella.print();
    }
    
    }
    Poi nella classe reparto ho un array di oggetti di tipo paziente e per aggiungerli in questo array e per stamparli uso questi metodi nella classe reparto
    codice:
    public void addPaziente(paziente pazienteNuovo) {
    		listaPazienti.add(pazienteNuovo);
    	}
    
    	public void removePaziente(paziente pazienteElim) {
    		listaPazienti.remove(pazienteElim);
    	}
    
    	public void printCartelleCliniche() {
    		System.out
    				.println("Lista delle cartelle cliniche del reparto: " + nome);
    		for (paziente paziente : listaPazienti) {
    			paziente.print();
    		}
    	}
    Secondo voi quello che ho fatto è giusto ( perchè funzionare funziona) oppure si può fare in un modo più elegante? Grazie mille come sempre e se non avete capito scrivete pure!!

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328

    Moderazione

    Java ha un forum dedicato.
    Ho spostato la discussione.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3

    Re: [JAVA] relazione tra classi

    Originariamente inviato da ittaglia
    Ciao a tutti!
    Devo fare un progetto in java che rispecchi un ospedale. Ho usato il pattern composite per gestire i reparti che sono fatti da altri reparti. Poi nella consegna del progetto c'è scritto: "Il paziente ha una cartella clinica, associata al suo ricovero fino alle dimissioni." Quindi io creo una classe paziente e una cartellaClinica in questo modo:
    codice:
    public class cartellaClinica {
    	private paziente paziente;
    	String diagnosi;
    	String data;
    
    	cartellaClinica(String diag, String dataAccesso) {
    		diagnosi = diag;
    		data = dataAccesso;
    	}
    
    	public paziente getPaziente() {
    		return paziente;
    	}
    
    	public void setPaziente(paziente paziente) {
    		this.paziente = paziente;
    	}
    
    	public void print() {
    		System.out.println("diagnosi: " + diagnosi);
    		System.out.println("data: " + data);
    	}
    
    }
    codice:
    public class paziente {
    String nome;
    private cartellaClinica cartella;
    
    	paziente(String nomeNuovo, String diagnosi, String data){
    	nome=nomeNuovo;
    	cartella=new cartellaClinica(diagnosi, data);
    	cartella.setPaziente(this);
    }
    public void setcartella(cartellaClinica cartellaDiagnosi){
    	cartella=cartellaDiagnosi;
    	
    }
    
    public void print(){
    	System.out.println("nome: "+nome);
    	cartella.print();
    }
    
    }
    Poi nella classe reparto ho un array di oggetti di tipo paziente e per aggiungerli in questo array e per stamparli uso questi metodi nella classe reparto
    codice:
    public void addPaziente(paziente pazienteNuovo) {
    		listaPazienti.add(pazienteNuovo);
    	}
    
    	public void removePaziente(paziente pazienteElim) {
    		listaPazienti.remove(pazienteElim);
    	}
    
    	public void printCartelleCliniche() {
    		System.out
    				.println("Lista delle cartelle cliniche del reparto: " + nome);
    		for (paziente paziente : listaPazienti) {
    			paziente.print();
    		}
    	}
    Secondo voi quello che ho fatto è giusto ( perchè funzionare funziona) oppure si può fare in un modo più elegante? Grazie mille come sempre e se non avete capito scrivete pure!!
    Per come hai disposto le classi CartellaClinica e Paziente sembra che esse sono in relazione di aggregazione e non di composizione (sono due cose apparentemente uguali, ma non lo sono). Non conosco le specifiche del tuo progetto quindi non saprei dirti se la cosa è corretta o meno.

    Ti consiglio fermamente di nominare le classi con la prima lettera maiuscola e le restanti minuscole altrimenti potresti confondere i suoi oggetti con metodi (questo è uno dei concetti Bean), dunque dovresti avere
    codice:
    public class Paziente { ... }
    Per quanto riguarda la classe Reparto, io la immaginerei come un dizionario, ovvero un insieme di coppie (paziente, cartellaClinica).

    Per quanto riguarda invece le date io userei una classe apposita.

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157

    Re: Re: [JAVA] relazione tra classi

    Originariamente inviato da VincenzoTheBest
    Per quanto riguarda la classe Reparto, io la immaginerei come un dizionario, ovvero un insieme di coppie (paziente, cartellaClinica).
    in java può benissimo usare Map (interfaccia) e HashMap (implementazione)

    codice:
    Map<Paziente, CartellaClinica> map = new HashMap<Paziente, CartellaClinica>();
    facendo ovviamente in modo che si possa identificare in modo univoco un oggetto di tipo Paziente (cioè deve implementare in modo opportuno i metodi equals e hashcode)

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    21
    Innanzi tutto grazie mille per le vostre risposte!!
    Allora io ho creato una lista in questo modo per i pazienti nella classe reparto
    codice:
    private List<paziente> listaPazienti = new ArrayList<paziente>();
    Premetto che la soluzione che usa il map non ce l'hanno spiegata... quindi non so se usarla.
    Quindi quello che mi consigliate voi è di avere un array doppio? tipo
    codice:
    private List<paziente><cartellaClinica> listaPazienti = new ArrayList<paziente><cartellaClinica>();
    E poi lo rimetto nella classe reparto ( dato che i pazienti sono associati a reparti)
    Giusto? Se ho sbagliato qualcosa dite pure!!
    Grazie ancora per i consigli

  6. #6
    Originariamente inviato da ittaglia
    codice:
    private List<paziente><cartellaClinica> listaPazienti = new ArrayList<paziente><cartellaClinica>();
    Sintatticamente è errato.

    A questo punto dovresti crearti una struttura di questo genere:
    codice:
    public class CoppiaPCC{
      private Paziente paziente;
      private CartellaClinica cartella;
    
     public CoppiaPCC(Paziente p, CartellaClinica c){
      paziente = p;
      cartella = c;
     }
    
     //...metodi
     
    }
    E quindi nella classe Reparto avresti il seguente campo:
    codice:
    private List<CoppiaPCC> reparto = new ArrayList<CoppiaPCC>();
    Teoricamente ci può stare di avere una lista di coppie, ma concettualmente non è il massimo.

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    21
    Ho capito! Grazie mille per la spiegazione.. adesso provo ad implementarlo e sento anche i miei amici che devono fare il progetto con me se si può applicare questa soluzione
    Grazie ancora!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.