| 
					
							
        
    
        
						
			 | 
			
			
					    
					
        
         
          
         
	
            | Hjælp til state-identifikation af objektie~ Fra : news.cybercity.dk | 
  Dato :  05-05-06 18:23 |  
  |   
            Sidder lige og nørkler med et problem:
 
 Jeg har oprettet et Object[][] field og indsat nye objekter fra klassen 
 punkt.java. Jeg har benyttet mig af et state-pattern, og sætter derfor det 
 nye objekt til at være i forskellige states. Til dette benyttes en abstrakt 
 klasse PunktState og derunder forskellige state-klasser. Jeg er ret sikker 
 på at mit state-pattern fungerer hensigtsmæssigt.
 
 Når jeg senere skal identificere objekterne i fieldet, har jeg problemer med 
 at finde ud af hvilken state de er i. Jeg har prøvet at bruge "instanceof" 
 operatoren, men den kan kun undersøge hvilken klasse, som objekterne er 
 fra - i dette tilfælde altså "Punkt".
 
 Jeg sidder og prøver at få den til at udskrive mit field, så jeg kan få 
 overblik over det. Forslag til hvordan jeg kan skelne mellem de forskellige 
 punkt-states, så jeg kan få dem udskrevet som forskellige bogstaver, 
 modtages med kyshånd.
 
     public void printField(){
         for (int i = 0; i < numberOfRows; i++){
             for (int j = 0; j < numberOfColumns; j++){
                 if(field[i][j] == null){System.out.print('.');}
                 if(field[i][j] instanceof Punkt){System.out.print('H');}
             }
             System.out.println(' ');
         }
 
     }
 
 På forhånd tak! 
 
 
  
            
             |   |   
            
        
 
            
         
           Thorbjørn Ravn Ander~ (05-05-2006) 
         
	
            | Kommentar Fra : Thorbjørn Ravn Ander~ | 
  Dato :  05-05-06 19:04 |  
  |   
            "news.cybercity.dk" <minmail@ok.com> writes:
 
 > Jeg sidder og prøver at få den til at udskrive mit field, så jeg kan få 
 > overblik over det. Forslag til hvordan jeg kan skelne mellem de forskellige 
 > punkt-states, så jeg kan få dem udskrevet som forskellige bogstaver, 
 > modtages med kyshånd.
 
 Lav en toString() metode som printer det ud du skal bruge.  Så kan du
 udskrive hvert objekt direkte for sig.
 
 -- 
   Thorbjørn Ravn Andersen
 
  
            
             |   |   
            
        
 
            
         
           Janus (06-05-2006) 
         
	
            | Kommentar Fra : Janus | 
  Dato :  06-05-06 03:57 |  
  |   
            Thorbjørn Ravn Andersen wrote:
 > "news.cybercity.dk" <minmail@ok.com> writes:
 > 
 >> Jeg sidder og prøver at få den til at udskrive mit field, så jeg kan få 
 >> overblik over det. Forslag til hvordan jeg kan skelne mellem de forskellige 
 >> punkt-states, så jeg kan få dem udskrevet som forskellige bogstaver, 
 >> modtages med kyshånd.
 > 
 > Lav en toString() metode som printer det ud du skal bruge.  Så kan du
 > udskrive hvert objekt direkte for sig.
 > 
 
 -og hvis du sidder og undrer dig over, hvad Thorbjørn mon mener, så er det:
 
 I din klasse PunktState overskriver du metoden toString() med noget i 
 stil med:
 
 public String toString() {
     String str = "I am " + this.getIdentifier() + ", and my state is " + 
 this.getState();
     return str;
 }
 
 Så kan du gennemløbe dine fields som du gør i dit eget eksempel, men i 
 den dobbelte for-løkke blot skrive:
     System.out.println(field[i][j]);
 
 Java _er_ nu et dejligt sprog.
 
 
 Vh Janus
  
            
             |   |   
            
        
 
            
         
            Karsten Lyng (07-05-2006) 
         
	
            | Kommentar Fra : Karsten Lyng | 
  Dato :  07-05-06 02:24 |  
  |   
            Tak for de brugbare svar. Jeg sidder nu imidlertid med et nyt problem.
 
 Hvordan kan jeg tilgå mit field fra en anden klasse? Jeg vil gerne kunne 
 lave forespørgelser på hvilke objekter der ligger i en given position. 
 
 
  
            
             |   |   
            
        
 
            
         
             Janus (08-05-2006) 
         
	
            | Kommentar Fra : Janus | 
  Dato :  08-05-06 11:51 |  
  |   
            Karsten Lyng wrote:
 > Tak for de brugbare svar. Jeg sidder nu imidlertid med et nyt problem.
 > 
 > Hvordan kan jeg tilgå mit field fra en anden klasse? Jeg vil gerne kunne 
 > lave forespørgelser på hvilke objekter der ligger i en given position. 
 > 
 > 
 
 Normalvis laver man en get-metode i den klasse, der indeholder dit 
 field[][]: public Object[][] getField() { return field; }
 
 Så giver du den anden klasse en reference til den klasse, der indeholder 
 dit field. Eksempelvis
 
 public class MyClassWithField {
    private Object[][] field;
    ...
    public Object[][] getField() {
      return field;
    }
 ....
 }
 
 
 public class MyClassThatWantsToAccessField {
    private Object[][] field;
    ...
    public void setField(Object[][] field) {
      this.field = field;
      // do stuff with field
    }
 ....
 }
 
 
 Og så noget i stil med:
 
 MyClassWithField c1 = new MyClassWithField();
 MyClassThatWantsToAccessField c2 = new MyClassThatWantsToAccessField();
 c2.setField(c1.getField());
 
 
 Vh Janus
  
            
             |   |   
            
        
 
    
 
					
					 
			 | 
			
				
        
			 |