Kap 14 øvelse 1 + 2 (Et forslag til løsning) + et spørgsmål

Her kan du diskutere opgaverne til Java serien og evt. dele dine egne løsningsforslag med andre.
Besvar
Henrik Halle
Entusiast
Entusiast
Indlæg: 38
Tilmeldt: 4. maj 2014, 09:22

Kap 14 øvelse 1 + 2 (Et forslag til løsning) + et spørgsmål

Indlæg af Henrik Halle » 11. maj 2014, 08:21

I min linje et står der package kap14; Det går der ikke på videoen, har det nogen betydning?
I spørgsmål 3 står der at man skal tilføje implementeringer til metoder. Er det ikke præcis hvad jeg gør med set og get som i spørgsmål 2?
Eller er der her tale om de særlige forhold når man har en .m og en .h fil?

Opgave 1

Kode: Vælg alt

package kap14;

public class Bog {

	// instanser
	
	int sidetal;
	double pris;
	
	// metoder
	
	void setSidetal(int sidetal) {
	this.sidetal=sidetal;	
	}
	
	void setPris(double pris) {
		this.pris= pris;
	}
	
	int getSidetal(){
		return sidetal;
	}
	
	double getPris(){
		return pris;
	}
	
}



Opgave 2

Kode: Vælg alt

package kap14;

public class Bil {
// Instanser
	double pris;
	boolean erAntik;
	int antalGear;

// set metoder med 1 variabel 
	void setPris(double pris) {
		this.pris=pris;}
	
	void seterAntik(boolean erAntik){
		this.erAntik=erAntik;}
	
	void setantalGear(int antalGear){
		this.antalGear=antalGear;}
// get metoder der ikke tager en variabel
	
	double getpris(){
		return pris;}
	
	boolean geterAntik(){
		return erAntik;}
	
	int getantalGear(){
		return antalGear;}
	
	
}


cristian
Moderator
Moderator
Indlæg: 882
Tilmeldt: 26. sep 2011, 21:31
Kontakt:

Re: Kap 14 øvelse 1 + 2 (Et forslag til løsning) + et spørgs

Indlæg af cristian » 11. maj 2014, 14:06

I min linje et står der package kap14; Det går der ikke på videoen, har det nogen betydning?
Nej, det er bare hvilken pakke din klasse tilhører.

Du skal lige rette din kode i opgave 2, sådan så din bracket kommer ned på en ny linje.
Det ikke en direkte fejl for kompileren, men der gør det svært for øjnene at følge.
I spørgsmål 3 står der at man skal tilføje implementeringer til metoder. Er det ikke præcis hvad jeg gør med set og get som i spørgsmål 2?
Forstår ikke lige hvad du mener.

Jeg har ikke selv lavet disse opgaver, men det kan være jeg løber igennem Java sektionen på nemprogrammering. For at se hvad det er for noget da jeg selv bruger Java
hvis jeg bruger noget som helst OOP.

Men din opgave 2 ser lidt underlig ud. Du har en klasse der hedder bil, så jeg ville gå ud fra at dette er en "factory" klasse.
Men du har ingen konstruktør til at lave et objekt og ingen get / set metoder til værdier du burde give til eventuelle konstruktører.

seerex
Entusiast
Entusiast
Indlæg: 37
Tilmeldt: 17. apr 2014, 17:23

Re: Kap 14 øvelse 1 + 2 (Et forslag til løsning) + et spørgs

Indlæg af seerex » 11. maj 2014, 17:30

Som Cristian siger, har din "package" ingen betydning.

Angående implementationen, så er det som du selv fremsiger, kun noget der er relevant når man har filerne opdelt i .h og .m. Beklager misforståelsen på det punkt. .h og .m filer, er nemlig når man har delt sin klasse op i 2, hvori den ene kun indeholder "metode-hovedet" og den anden indeholder implementationen. Jeg genbrugte noget information fra de samme slides som jeg brugte fra Objective-C serien, så jeg beklager de er kommet med der, bare ignorer det og betragt øvelsen som løst :)

Og Cristian: Og der er skam en constructor, den er bare default. :) Men det er også fordi, at så vidt jeg kan huske bliver constructors først introduceret i en senere video, så derfor er den der ikke endnu. Den bliver tilføjet i en senere øvelse.

cristian
Moderator
Moderator
Indlæg: 882
Tilmeldt: 26. sep 2011, 21:31
Kontakt:

Re: Kap 14 øvelse 1 + 2 (Et forslag til løsning) + et spørgs

Indlæg af cristian » 11. maj 2014, 18:13

Og Cristian: Og der er skam en constructor, den er bare default
Det jo bare fjollet.
8.8.9 Default Constructor
If a class contains no constructor declarations, then a default constructor that takes no parameters is automatically provided...
Men i opgave 1 og 2 ligner det så at i prøver og kalde this.X=something for at oprette et objekt af klassen...
Hvilket jeg er i tvivl om hvorvidt overhoved ville virke...

da i ender op med

Kode: Vælg alt

package kap14;

public class Bog {
   
}
og

Kode: Vælg alt

package kap14;

public class Bil {
   
}
Hvilket er tomme konstruktører der ikke tager værdier....
Som så igen bare kalder sin super klasse....

seerex
Entusiast
Entusiast
Indlæg: 37
Tilmeldt: 17. apr 2014, 17:23

Re: Kap 14 øvelse 1 + 2 (Et forslag til løsning) + et spørgs

Indlæg af seerex » 11. maj 2014, 18:45

cristian skrev:Det jo bare fjollet.
Hvor henne er det fjollet? Man kan sagtens komme ud for situationer, hvor man bare vil benytte en default constructor, så det er skam bestemt ikke "fjollet". Nu går jeg ud fra at du mener "fjollet" fordi du ikke lige syntes det giver mening i den kontekst, men det kan jeg forsikre dig det gør når man prøver at lære nogen programmering! Man skal opdele læringen over flere skridt, og ikke bare smide det hele i hovedet på én gang.

this.x = something laver da ikke noget objekt? Der ved jeg altså ikke lige hvad du mener. this er en "reference" og altså ikke rigtig en reference, men en slags keyword der gør at vi specifikt kan tilgå instansvariabler inde i objektet. Det er nødvendigt når vi har parameter i en metode, som hedder det samme. Så kan ikke lige se hvad du er utilfreds over?

cristian
Moderator
Moderator
Indlæg: 882
Tilmeldt: 26. sep 2011, 21:31
Kontakt:

Re: Kap 14 øvelse 1 + 2 (Et forslag til løsning) + et spørgs

Indlæg af cristian » 11. maj 2014, 19:21

Man kan sagtens komme ud for situationer, hvor man bare vil benytte en default constructor
Ville du give mig et eksempel på hvornår du ville komme ud for sådan noget?
fordi du ikke lige syntes det giver mening i den kontekst
Det ikke fordi jeg ikke syntes det giver mening. Det giver bare ikke mening.
Man skal opdele læringen over flere skridt, og ikke bare smide det hele i hovedet på én gang.
Bestemt.
this.x = something laver da ikke noget objekt?
Nej, i gør f.eks.

Kode: Vælg alt

this.pris=pris;
}
Og det var det jeg prøvede at vise jer.
men en slags keyword der gør at vi specifikt kan tilgå instansvariabler inde i objektet
man behøver ikke at bruge this når man opretter et objekt. Det er bare en mulighed man har der er nemmere end alternativet.

seerex
Entusiast
Entusiast
Indlæg: 37
Tilmeldt: 17. apr 2014, 17:23

Re: Kap 14 øvelse 1 + 2 (Et forslag til løsning) + et spørgs

Indlæg af seerex » 11. maj 2014, 19:40

cristian skrev:Ville du give mig et eksempel på hvornår du ville komme ud for sådan noget?
Gerne - Står du med en klasse, som har en masse default-implementationer af sin datakerne, kan det være gavnligt at benytte en default konstruktor, hvis klasse allerede selv ved hvad dens datakerne skal bestå af. Det kan også bruges til at få en "clean slate", altså lave et objekt du ligesom kan tilpasse hen ad vejen, via set-metoder, så du ikke behøver stå med alt informationen med det samme. Naturligvis kunne man bare override de instansvariabler man satte under initialiseringen med sin constructor, men det er bare dumt.
cristian skrev:Det ikke fordi jeg ikke syntes det giver mening. Det giver bare ikke mening.
Så jo, det giver god mening nogen gange at bibeholde sin default constructor.
cristian skrev:man behøver ikke at bruge this når man opretter et objekt. Det er bare en mulighed man har der er nemmere end alternativet.
Undskyld men nu er det dig der ingen mening giver? this opretter på ingen måde et objekt, på nogen måde. Det har intet med oprettelsen af et objekt at gøre. Når vi har en klasse:

Kode: Vælg alt

class number {
   int x;

   public void setX( int x ) {
      [b]this[/b].x = x;
   }
}
Der bruger vi this, fordi vi siger "her mener jeg altså x som der er i min (det objekt som modtager beskedens) datakerne. Hvis vi ikke bruger this.x, så sætter vi bare parameteren x til sin egen værdi, og det hjælper os ikke meget. Når parameteren har samme navn, som en instansvariabler slører den for tilgangen, og det er netop derfor vi har this. this er altså en tilgang til objektet selv (det objekt man lige nu kommunikere med), og har altså ikke noget med oprettelsen af en instans at gøre?

cristian
Moderator
Moderator
Indlæg: 882
Tilmeldt: 26. sep 2011, 21:31
Kontakt:

Re: Kap 14 øvelse 1 + 2 (Et forslag til løsning) + et spørgs

Indlæg af cristian » 11. maj 2014, 20:35

this opretter på ingen måde et objekt, på nogen måde.
Har jeg heller ikke sagt at den gør ;)

seerex
Entusiast
Entusiast
Indlæg: 37
Tilmeldt: 17. apr 2014, 17:23

Re: Kap 14 øvelse 1 + 2 (Et forslag til løsning) + et spørgs

Indlæg af seerex » 11. maj 2014, 20:43

cristian skrev:Har jeg heller ikke sagt at den gør
Så har jeg læst forkert, beklager :) Men der var åbenbart tvivl fra din side i forhold til hensigten og meningen med this nøgleordet i forbindelse med ovenstående øvelse, jeg misforstod så bare lige hvad det var, men under alle omstændigheder skulle hensigten og meningen med det gerne være fremlagt klart nu :)

Besvar