GK Explozive Skrevet 19. oktober 2011 Del Skrevet 19. oktober 2011 (endret) Hei sann! Jeg er nokså ny i java og hadde satt pris på en oppgave som jeg sliter med å få til. oppgaven er som følgende: Lag en klasse med navn Spiller som inneholder følgende instansvariabler: private String navn private String adresse private int postnummer private String poststed Klassen Spiller skal ha metodene public void settPersonalia(), samt hentemetodene public String hentNavn(), public String hentAdresse(), public int hentPostnummer() og public String hentPoststed(). Metoden settPersonalia() skal be brukeren oppgi navn, adresse, postnummer og poststed, og legge de innleste verdiene i de tilhørende variablene. Metoden trenger ikke sjekke at de innleste verdiene er av riktig type og format, du kan f.eks. anta at brukeren alltid oppgir et firesifret heltall som postnummer. De andre metodene skal returnere verdien som ligger i variabelen som svarer til metodenavnet. Klassen Spiller Instansvariabler: private String navn private String adresse private int postnummer private String poststed Instansmetoder: public void settPersonalia() public String hentNavn() public String hentAdresse() public int hentPostnummer() public String hentPoststed() Endret 19. oktober 2011 av Explozive Lenke til kommentar
TSP Skrevet 20. oktober 2011 Del Skrevet 20. oktober 2011 Er det noe spesifikt du lurer på? Det kan være lettere for oss og gi deg bedre læringsutbytte dersom vi vet hva du kan og ikke kan. Du bør endre emnetittelen din til noe mer beskrivende. Lenke til kommentar
GK Explozive Skrevet 20. oktober 2011 Forfatter Del Skrevet 20. oktober 2011 blir forvirret når de begynner med "public" og "private". Hva betyr det ? Lenke til kommentar
siDDis Skrevet 20. oktober 2011 Del Skrevet 20. oktober 2011 private betyr at man ikkje kan endre på denne variabelen utanfor klassen, men public betyr at den er tilgjengeleg for alle. Grunnen er fordi det er ønskeleg at operasjonar utanfor klassen ikkje skal ha direkte tilgang til variabelen. Om du har to variabler, birthdate og age så ynskjer du at dei skal vere konsistente. Dermed så har du i setBirthdate() metoden følgende: setBirthdate(Date date){ SimpleDateFormat sf = new SimpleDateFormat("yyyy"); Long thisYear = Long.parseLong(sf.format(new Date())); Long birthyear = Long.parseLong(sf.format(date)); this.age = thisYear - birthyear; this.birthdate = date; } Som du ser så krevje det to operasjonar for at både birthdate og age skal vere konsistende. Og då er det dumt at ein kan endre på variablane direkte 2 Lenke til kommentar
GK Explozive Skrevet 20. oktober 2011 Forfatter Del Skrevet 20. oktober 2011 ja ser poenget no. Takk for hjelpen, er det noen anbefalte nettsider hvor man kan lære seg java? Synes selv at jeg lærer mye av å se hva/hvordan andre løser problemstillinger... Lenke til kommentar
siDDis Skrevet 20. oktober 2011 Del Skrevet 20. oktober 2011 Kjøp ein god bok, for ditt nivå så er kanskje Head First Java ein god start Lenke til kommentar
MikkelRev Skrevet 20. oktober 2011 Del Skrevet 20. oktober 2011 javabok.no hvis du foretrekker å lese på norsk. Lenke til kommentar
Sono Juventino Skrevet 21. oktober 2011 Del Skrevet 21. oktober 2011 Kan sende deg noen foiler hvis du ønsker. Har Objekt-Orienter Java på høyskolen for tida. Send meg en Pm med mailadressen din i så fall. Stikker til utlandet i morgen og glemmer sikkert av dette. Lenke til kommentar
Mapster Skrevet 21. oktober 2011 Del Skrevet 21. oktober 2011 Hvis du hadde fulgt forelesningene til Dag og gjort tidligere oppgaver selv, så ville dette kanskje ikke vært så vanskelig. Dette har tross alt vært del av alle øvinger siden øving 3. Lenke til kommentar
srbz Skrevet 23. oktober 2011 Del Skrevet 23. oktober 2011 (endret) Innleveringsfristen for TS' oppgave er ute. Her har du en fiks ferdig løsning på oppgave 1: public class Spiller { /* * Deklarerer feltvariable. Disse variablene er private, og kan ikke kalles direkte * fra andre klasser. Det er det du har hent- og sett-metoder til lenger ned i kildekoden. */ private String navn; private String adresse; private int postnummer; private String poststed; /* * Metodene under er public istedenfor private. Dette innebærer at andre klasser kan * få tilgang til disse metodene. Klassen Spiller inneholder enn så lenge kun relevant * informasjon om selve spilleren, men om du senere skal ha en klasse for selve spillet, * der spillet er avhengig av å kunne hente eller endre spillerens personalia, kan * spillklassen gjøre dette ved hjelp av public-variablene. */ public void settPersonalia(String navn, String adresse, int postnummer, String poststed){ /* * "this" henviser til feltvariablene som allerede er deklarert. * Det innebærer altså her at du setter feltvariablene til verdiene som gis * i metodeparameterne. */ this.navn = navn; this.adresse = adresse; this.postnummer = postnummer; this.poststed = poststed; } public String hentNavn(){ return navn; } public String hentAdresse(){ return adresse; } public int hentPostnummer(){ return postnummer; } public String hentPoststed(){ return poststed; } } For å utdype siDDis sin forklaring en smule: Fordelen med å gjøre ting på denne måten er at du kan abstrahere arbeidsoppgavene, noe som kommer veldig godt med når man etterhvert lager store programmer, både for å gjøre ting oversiktlig og for å slippe svært mange linjer med kode. Se for deg at du skal skrive ut et ark fra en datamaskin. Istedenfor å sitte med en penn og gjenskape hver enkelt piksel på et ark, kan du sende en kommando (ekvivalent med å kalle en metode) til printeren (ekvivalent med en annen klasse), der du forteller printeren at den skal printe noe, og hva det er den skal printe (ekvivalent med metodeparametre). Printeren gjør "et eller annet" (ekvivalent med innholdet i metoden) som du ikke trenger å bry deg med, og gir deg til slutt resultatet (det ferdig skrevne arket). Selve metoden "print følgende ark:" er public, mens interne kretser osv. i skriveren er private i den forstand at du ikke har direkte tilgang på dem. For å gi et annet kodeeksempel: public class Temperatur { private static double konstantledd = 32; private static double stigningstall = 9/5; public static double konverterTilFahrenheit(double celsius){ return konstantledd + celsius * stigningstall; } } Her har du en klasse Temperatur som inneholder metoden konverterTilFahrenheit(). Denne metoden tar en double celsius som parameter, gjør noe med verdien (double er desimaltall i java) og returnerer et resultat (static metoder og variabler kommer du til etterhvert). Klassen Vaermelding bruker denne på følgende måte: public class Vaermelding { public static void main(String[] args) { double c = 20; double f = Temperatur.konverterTilFahrenheit(c); System.out.println("Temperatur i fahrenheit: " + f); } } Utskriften gir 52.0 Her trenger altså ikke værmeldingsklassen å vite hvordan man konverterer celsius til fahrenheit. Det er en egen klasse med en metode som gjør dette for den. Feltvariablene til klassen Temperatur er private, slik at andre klasser ikke kan se eller endre disse, noe de foreløpig uansett ikke har bruk for. På denne måten kan du hindre at du ved en feil får en annen klasse til å endre verdiene "konstantledd" eller "stigningstall" når det ikke er meningen. Feltvariablene til Temperatur burde vel egentlig vært final ettersom dette er faste verdier, men det får være en annen sak. Ellers: Følg rådet til Mapster, og gå på forelesningene. Møt også opp på gruppeøvinger dersom dere har flere igjen, gruppelederne er dyktige studenter som kan hjelpe deg når du sitter fast med noe. Sett deg gjerne også på faklaben på instituttet, og jobb helst sammen med andre. Dere får fort nyttige innspill fra "eavesdroppere" i periferien om dere først diskuterer noe høylytt der Endret 23. oktober 2011 av srbz 2 Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå