Avatar billede touel Nybegynder
23. december 2006 - 15:25 Der er 11 kommentarer og
1 løsning

Forstå type begrebet

Det er efterhånden lang tid siden at jeg har programmeret i java... anyway, her er mit spg :

Vi ved at i String navn, String selve typen og navn er variabel...

Hvis jeg nu laver en klasse som fx

Class Hus {}, og her under laver både variabler og en masse metoder.

Når jeg i en anden klasse nu skriver noget i stil:
Hus b = blablabla ().

Så var der noget med at blablabla () skulle returnere tilbage af type Hus, ellers kom der konverterings fejl.

Hvordan kunne man se at det der skal returnere noget tilbage af typen Hus nu også er det ????...

Noget simple kode eks, eller noget fra nettet vil være godt
Avatar billede arne_v Ekspert
23. december 2006 - 15:28 #1
Hus blablabla() {
  ...
}

returnerer et Hus

String blablabla() {
  ...
}

returnerer en String
Avatar billede touel Nybegynder
23. december 2006 - 15:31 #2
Hvorfor er det ønskværdigt at man skal returnere noget tilbage i Hus. Det er jo en klasse man selv har lavet ?
Avatar billede arne_v Ekspert
23. december 2006 - 15:44 #3
tja

hvis du har en Muremester klasse med en bygHus metode så skal den vel returnere et hus
Avatar billede touel Nybegynder
23. december 2006 - 16:06 #4
ok så du mener:

class Hus {}

class Muremester {}

public void bygHus () {}

så kan man vel sige

Hus b= bygning.byghus();
Avatar billede arne_v Ekspert
23. december 2006 - 16:11 #5
public void bygHus () {}

skal netop være

public Hus bygHus () {}
Avatar billede touel Nybegynder
23. december 2006 - 16:33 #6
ja ok det forstår jeg godt

men jeg mangler stadig et mere bredt svar på hvordan man kan se at man kan skrive ex Hus foran "public Hus bygHus()".

Er der nogle specielle grunde der skal være tilstede før man ved at man gør det som foroven....
Avatar billede arne_v Ekspert
23. december 2006 - 16:40 #7
hvis bygHus rent faktisk returnerer et Hus, så skal den naturligvis erklæres til at
gøre sådan
Avatar billede kalp Novice
23. december 2006 - 19:56 #8
toel >>

Du kan læse følgende, som jeg har skrevet... de er ikke perfekte da de blev skrevet der da jeg selv startede, men synes de er rimelig til at få en fornemmelse af hvordan det fungerer

http://www.eksperten.dk/artikler/600
http://www.eksperten.dk/artikler/608
Avatar billede kalp Novice
23. december 2006 - 19:57 #9
specielt artikel 2 forklare det du spørger om her.
Avatar billede touel Nybegynder
25. december 2006 - 16:05 #10
jeg har siddet og tygget på disse 2 klasser, men kan ikke se hvor
"public FacadeTeaCup makeACuppa()", skal have FacadeTeaCup som type......


public class FacadeCuppaMaker {
    boolean teaBagIsSteeped;
       
      public FacadeCuppaMaker() {
          System.out.println(
            "FacadeCuppaMaker ready to make you a cuppa!");
      }
     
      public FacadeTeaCup makeACuppa() {
          FacadeTeaCup cup = new FacadeTeaCup();
          FacadeTeaBag teaBag = new FacadeTeaBag();
          FacadeWater water = new FacadeWater();
          cup.addFacadeTeaBag(teaBag);
          water.boilFacadeWater();
          cup.addFacadeWater(water);
          cup.steepTeaBag();
          return cup;
      }
}
OG SÅ DEN ANDEN KLASSE...


import sun.security.krb5.internal.be;

public class FacadeTeaCup {
    boolean teaBagIsSteeped;
      FacadeWater facadeWater;
      FacadeTeaBag facadeTeaBag;
     
       
      public FacadeTeaCup() {
          setTeaBagIsSteeped(false);
          System.out.println("behold the beautiful new tea cup");
         
         
         
      }   
     
      public void setTeaBagIsSteeped(boolean isTeaBagSteeped) {
          teaBagIsSteeped = isTeaBagSteeped;
      }
      public boolean getTeaBagIsSteeped() {
          return teaBagIsSteeped;
      }
       
      public void addFacadeTeaBag(FacadeTeaBag facadeTeaBagIn) {
          facadeTeaBag = facadeTeaBagIn;
          System.out.println("the tea bag is in the tea cup");
      }
     
      public void addFacadeWater(FacadeWater facadeWaterIn) {
          facadeWater = facadeWaterIn;
          System.out.println("the water is in the tea cup"); 
      } 
     
      public void steepTeaBag() {
          if ( (facadeTeaBag != null) &&
                ( (facadeWater != null) &&
                  (facadeWater.getWaterIsBoiling()) )
              ) {
              System.out.println("the tea is steeping in the cup");
              setTeaBagIsSteeped(true);
          } else {
              System.out.println("the tea is not steeping in the cup");
              setTeaBagIsSteeped(false);
          }         
      }
     
      public String toString() {
          if (this.getTeaBagIsSteeped()) {
              return ("A nice cuppa tea!");
          } else {
              String tempString = new String("A cup with ");
              if (facadeWater != null) {
                    if (facadeWater.getWaterIsBoiling()) {
                        tempString = (tempString + "boiling water ");
                    } else {
                        tempString = (tempString + "cold water ");
                    }
              } else {
                    tempString = (tempString + "no water ");
              }
   
              if (facadeTeaBag != null) {
                    tempString = (tempString + "and a tea bag");
              } else {
                    tempString = (tempString + "and no tea bag");
              }
              return tempString;
          }
                           
      }


}
Avatar billede arne_v Ekspert
25. december 2006 - 17:23 #11
er det ulogisk at makeACup returnerer en TeaCup ?
Avatar billede touel Nybegynder
27. december 2006 - 13:38 #12
jeg dropper det... får umiddelbart ikke noget rigtigt ud af det
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester