Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 26

Discussione: collezioni eterogenee

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    55

    collezioni eterogenee

    Salve ragazzi,
    ho iniziato a studiare le collezioni eterogenee e mi sembra di averle capite......mi sono messo a fare un esercizio per applicarle e mi sono perso.....in pratica l'esempio prende una collezioni di dipendenti e quindi deve stampare lo stipendio in funzione del loro lavoro. Penso che il main non sia proprio corretto...

    grazie bb

    ecco il codice.


    Codice PHP:
    public class Dipendente {
        
        
    //attributi
        
    public String nome;
        public 
    int stipendio;
        public 
    int matricola;
        public 
    String dataDiNascita;
        public 
    String dataDiAssunzione;
        

        public 
    void pagaDipendente(Dipendente dip) {
            if (
    dip instanceof Programmatore) {
            
    dip.stipendio 1200;
            }
            else if (
    dip instanceof Dirigente){
            
    dip.stipendio 3000;
            }
            else if (
    dip instanceof AgenteDiVendita) {
            
    dip.stipendio 1000;
            }
            
            
            
            }


    Codice PHP:

    public class Dirigente extends Dipendente {
        
        public 
    String orarioDiLavoro;


    Codice PHP:
    public class AgenteDiVendita extends Dipendente {
        
        public 
    String portafoglioClienti[];
        public 
    int provvigioni;
        


    Codice PHP:
    public class Programmatore extends Dipendente {

        public 
    String linguaggiConosciuti;
        public 
    int anniDiEsperienza;
        


    Codice PHP:
        public static void main(String[] args) {
            
    // TODO Auto-generated method stub

            
    Dipendente dip [] = new Dipendente[4];
            
    dip[0] = new Programmatore();
            
    dip[1] = new Dirigente();
            
    dip[2] = new Programmatore();
            
    dip[3] = new AgenteDiVendita();

            
    //dip[3].pagaDipendente(dip[3]);
            //System.out.println(dip[3].stipendio);
            
            
    for (Dipendente temp dip){
                
    temp.pagaDipendente(dip);
            }
        } 

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Non trovo sia proprio corretto ciò che fai, in quanto il Dipendente non dovrebbe conoscere Programmatore etc... quindi il fatto che viene svolto al suo interno non mi piace molto.

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Originariamente inviato da Patrick Jane
    Non trovo sia proprio corretto ciò che fai, in quanto il Dipendente non dovrebbe conoscere Programmatore etc... quindi il fatto che viene svolto al suo interno non mi piace molto.
    Concordo.
    Renderei astratto il metodo pagaDipendente() nella classe Dipendente, che poi andrà implementato (concretizzato) nelle sottoclassi.


    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

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    55
    ...anche io avevo un po lo stesso dubbio...., in pratica dovrei creare una nuova classe che contiene al suo interno solo il metodo public void pagaDipendente(Dipendente dip)

    ho capito bene?

    bb

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Originariamente inviato da blubossa
    in pratica dovrei creare una nuova classe che contiene al suo interno solo il metodo public void pagaDipendente(Dipendente dip)

    ho capito bene?
    Assolutamente no, rileggi quello che ho scritto.

    Renderei astratto il metodo pagaDipendente() nella classe Dipendente, che poi andrà implementato (concretizzato) nelle sottoclassi.
    Non ho mai parlato di creare nuove classi.
    Ho scritto di rendere astratto il metodo nella classe Dipendente (quindi, modificare la classe Dipendente in modo che essa sia stratta e che tale metodo non sia implementato, come hai fatto tu, ma sia astratto = abstract), quindi implementarlo nelle sottoclassi: ciascuna sottoclasse dovrà implementare il metodo pagaDipendente() nel modo corretto per lei.

    Vedi anche documentazione su classi e metodi astratti.

    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

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Sono d'accordo con la soluzione proposta da Lele.
    Magari si potrebbe anche evitare di utilizzare i campi di istanza pubblici, e fornire quindi delle interfacce per accedere ad essi (non parlo delle interface, ma dei metodi getter/setter).

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    55
    ...scusami ma non mi sono mai trovato in una situazione del genere e proprio non so come comportarmi....

    guardo la documentazione e provo a risolvere.

    grazie
    bb

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    Originariamente inviato da blubossa
    ...scusami ma non mi sono mai trovato in una situazione del genere e proprio non so come comportarmi....

    guardo la documentazione e provo a risolvere.

    grazie
    bb
    scusa getter/setter fanno parte delle basi della OOP, non devi trovarti in situazioni in cui è necessario usarli per sapere cosa sono e come si usano.

    Stai seguendo qualche testo?
    RTFM Read That F*** Manual!!!

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    55
    hai perfettamente ragione, non ho fatto l'incapsulamento solo per accorciare un po il codice e concentrarmi sulla questione delle collezioni eterogenee.
    Il problema è che non sono ancora riuscito a capire come affrontare questa situazione.

    bb

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    55
    ....ciao ragazzi,
    purtroppo non sono ancora riuscito a capire come risolvere la questione....
    spero in qualche altro vostro aiuto...

    grazie
    bb

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.