Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Scorporare classe

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    88

    Scorporare classe

    Salve a tutti avrei un dubbio vorrei prendere i metodi distribuisci carte pc ,player e mano e metterli in un altra classe però senza dover creare problemi con visibilità come potrei fare? Magari si potrebbe usare l'ereditearietà?

    codice:
    public class MazzoDiCarte{
                Carta mazzo[];
                Regole regola=new Regole();
                private final int DIM_MAZZO=40;
                private int next_carta;
                private Random num_casuale=new Random();
                private int conta=0;
                String semi[]={"Bastoni","Spade","Denari","Coppe"};
                String valori[]={"Asso","Due","Tre","Quattro","Cinque","Sei","Sette",
                                     "Donna","Cavallo","Re"};
                Carta pc;
                Carta[] player;
                Carta briscola;
                                              
                 public void setMazzoDiCarte(){               
                    mazzo= new Carta[DIM_MAZZO];                       
                                                              
                    for(int j=0;j<4;j++){                    
                      
                        String s=semi[j];                     
                      
                        for(int i=0;i<10;i++){ 
                        
                            Carta temp= new Carta();     
                          
                            String v=valori[i];                
                            temp.setCarta(v,s);             
                            mazzo[conta]=temp;             
                            conta++;                        
                                           } 
                                       }
                                   }
                    
                 
                 
                  public void mescolaMazzo(){                     
                      
                       for(int prima=0;prima<mazzo.length;prima++){          
                           
                           Carta temp=new Carta();                  
                           
                           int seconda=num_casuale.nextInt(DIM_MAZZO);           
                          
                           temp= mazzo[prima];                                 
                            
                           mazzo[prima]=mazzo[seconda];                    
                                                                           
                           mazzo[seconda]=temp;                       
                                        }
                                      }
                        
                    public void mostramazzo(){
                   
                    for(int i=0; i<mazzo.length;i++){
                    
                    System.out.println((i+1)+mazzo[i].toString());
                                           }
                                      }
    
    
        public void distribuisciCartePc(){
                         
                        pc= new Carta(); 
                        
                        pc=mazzo[0];
           
        }
    
                    public void distribuisciCartePlayer(){
                          player= new Carta[3]; 
                          
                          int k=0;
                          
                          
                          for(int i=1; i<4; i++){
                          
                              player[k]=mazzo[i];
                                                             
                          k++;
                          } 
                          
       
                    }
                    
                  public void distribuisciBriscola(){
                          
                          briscola= new Carta(); 
                                    
                          briscola=mazzo[4];
                                        
                    }      
                  
                  public void mano(){
                           Scanner scanner=new Scanner(System.in);
                           
                           int scelta,
                               next=4,
                               contamano=1,
                               s=0;
    
                           
                           while(contamano<21){
                           System.out.println(mazzo);
    
                           System.out.println("Mano "+(contamano));
                           System.out.println();
                           
                           if(contamano<18 || contamano==18){
                               
                           System.out.println("Il pc tira:"+ pc.toString());
                           System.out.println();
                           System.out.println("La Briscola è:"+ briscola.toString());
                           System.out.println();
                           System.out.println("Le tue carte:");
                           System.out.println();
                           for(int i=0;i<3;i++){
                                              System.out.println((i+1)+player[i].toString());
                           }
                           System.out.println();
                           }
                           
       
                           
                           
                          
                  }
    
    
    }

  2. #2
    Utente di HTML.it L'avatar di yuno
    Registrato dal
    Apr 2010
    Messaggi
    62
    Ciao, allora di solito si sceglie di estendere una classe, quando la classe che ti serve è effettivamente una classe del tipo superclasse, altrimenti e sempre meglio usare la delegazione (cioè creare una classe completamente indipendente che contiene all'interno un attributo con la classe di cui si vuole utilizzare qualche metodo), questo per tenere il SW libero per futuri miglioramenti.
    Alla fine sono giusti entrabi i casi, ma dipende quello che devi fare, praticamente se tu vuoi passare entrabi gli oggetti come se fossero lo stesso ad una terza classe che interagisce tramite gli stessi metodi ma che fanno cose un po differenti, ti conviene estendere se li vuoi usare disaccoppiati puoi semplicemente inserire un oggetto "MazzoDiCarte" all'interno della nuova classe lanci i metodi che ti servono e ne prendi i valori. Spero di essere stato chiaro e di aiuto

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    88
    Il mio unico dubbio è se si dovessero creare problemi di visibilità perchè il sorgente è terminato

  4. #4
    Utente di HTML.it L'avatar di yuno
    Registrato dal
    Apr 2010
    Messaggi
    62
    bhe per la visibilità hai messo alcune variabili private che sia che estendi sia che deleghi non vedi
    quindi o metti i get delle variabili che ti interessano oppure cambi la visibilità da private a protected ed estendi riscrivendo solo i metodi che ti interessa riscrivere che probabilimente è la cosa + elegante.

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    88
    Dici di fare un'altra classe quindi normalmente ?

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.