Hjælp til java, spørgsmål.

Tags:    java

Hej,

Skal til eksamen her om 1 uge tid i softwareudvikling, hvor jeg har og sammen med andre programmeret et matadorspil, som vi skal op og forsvare sammen og enkeltvis.

Til det har jeg lidt spørgsmål jeg er ret uklart hvordan jeg skal forklare dem.

toString metode: hvad gør denne metode helt korrekt?

eksempel:

public String toString()
{
return super.toString()+ "Price: \t" + pris;

String builder, har vi brugt i vores program, ikke mig der har implementeret det, men, hvis man bliver spurgt om hvad det er og bruges til, hvad skal der så siges?

eksempel: (lidt af koden)

StringBuilder sb = new StringBuilder();
sb.append("INSERT INTO feltstatus (id, ejer, huse) VALUES ");

Konstruktør:

Hvad gør den helt præcist, andet end at vidergive værdier som bruges i de andre klasser?

eksempel (på kode)

public Chance(int felt, int bonus, String navn) {
super(felt, bonus, navn);

Den der super? hvad skal jeg sige til den?



Håber i kan hjælpe, på forhånd tak.



2 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 15 karma
Sorter efter stemmer Sorter efter dato
toString() er en metode der findes på alle Java objekter. Det du gør i jeres eksempel er at overskrive metoden således i kan styre hvad den skal gøre.

Formålet med toString() er at kunne tage et objekt og sige du nu gerne vil have det repræsenteret i form af en String værdi. Dette bruges ved hvis du ønsker at udskrive objektet til skærmen med fx:

System.out.println(mitObjekt).

println kan her se at mitObjekt ikke er en String så derfor forsøger den at køre mitObjekt.toString() for at få fat i en String den kan udskive.

I jeres eksempel har i:

String toString() {
return super.toString()+ "Price: \t" + pris;
}

For at forstå hvad der præcist sker er det nødvendigt at forstå hvad super gør. Generelt er der to begreber her:

* this
Peger på klassen selv. Det vil sige this.toString() peger på den toString() du har inde i filen.

* super
Peger på klasen ovenover i klassehierarkiet. Dette betyder at hvis din klasse fx extender (nedarver) en anden klasse så vil super her pege på den klasse du extender fra.

Så i dette tilfælde kalder du toString() metoden først på den klasse du har extended fra, tager resultatet af dette og udvider resultatet med prisen således den komme med.

--------------------------------
StringBuilder bruges til at bygge Strings med (som navnet antyder). Hvis den String du skal lave består af flere delelementer er det ofte grimt at lave:

String s = "Mit navn er: ";
s = s + "Jacob";
s = s + " og jeg er: ";
s = s + "25 år gammel.";

I stedet vil man her bruge en StringBuilder:

StringBuilder sb = new StringBuilder();

sb.append("Mit navn er Jacob");
sb.append(" og jeg er: ");
sb.append("25 år gammel.");

String result = sb.toString();

Det skal siges i dette tilfælde giver det ikke meget mening men det giver væsentligt meget mening hvis din String skal opbygges af mere kompliceret kode. Fordelen er også her at performencemæssigt sikre du dig at Java ikke forsøger at oprette unødvendigt mange String objekter. Mit råd er typisk at bruge en StrinbBuilder hvis antallet af Strenge der skal sættes sammen kan ændre sig når programmet kører.

--------------------------------
Konstruktør / Constructor

Formålet med denne er at bygge objektet. Se din klasse som en arbejdstegning og objekter som værende produkter bygget ud fra denne arbejdstegning.

En klasse definerer derfor hvad for nogle variabler og metoder der skal være på hvert objekt der oprettes. Ved at bruge en Konstruktør kan du definere hvilke informationer du skal have for at kunne bygge objektet samt lave kode der køres ved objektoprettelsen.

I dit tilfælde:

public Chance(int felt, int bonus, String navn) {
super(felt, bonus, navn);
}

Sker der ikke så meget. Du siger ganske enkelt at for at oprette et Chance objekt så skal programmøren komme med to int's og en String. Din konstruktør vil så tage disse og kalde super() metoden som her vil pege på den klasse du nedarver fra og kalde dens konstruktør som sikkert gør noget med disse variabler (fx bruger dem til at sætte nogle værdier inde i klassen).



Mange tak for dit hurtige svar.. god hjælp!



t