Gå til innhold

Hva er dette? metoder,kons,attri?


Anbefalte innlegg

Videoannonse
Annonse
Hei!

Lurte på om noen kunne si meg enkelt forklart hva dette er; (må ikke gå i surr :p)

 

- metoder:

- konstruktører:

- attributter:

 

sleng gjerne med et eksempel :)

7691055[/snapback]

 

 

Om du kjenner til funksjoner fra tidligere, så er en metode akkurat det samme. Funksjoner kalles for metoder i objektorienterte språk.

 

En funksjon kan være av typen privat eller public. Public betyr at funksjonen er tilgjengelig for bruk utenfor klassen, mens private funksjoner kun kan brukes innenfor klassen de ble deklarert i.

 

En kontruktør brukes for å opprette et objekt av en klasse. Du kan ha flere konstruktører for en klasse. I konstruktøren kan man for eksempel si at ved opprettelsen av objektet skal variabel lys alltid være false. I mitt eksempel gjøres ingenting.

 

Attributter på objekter er feltvariabler som defineres i klassen. I mitt eksempel er det en variabel av typen boolean som er satt til false. Metoden jeg har laget setter denne variablen til true.

 

Dette ble kanskje litt inneviklet, men spør gjerne mer...

 

 

Her er koden jeg har brukt:

 

class Bil {
private boolean lys=false;

public Bil() {

}

public void slaaPaaLys() {
 this.lys=true;
 return true;
}	



}

Endret av haingodegamle
Lenke til kommentar
Hei!

Lurte på om noen kunne si meg enkelt forklart hva dette er; (må ikke gå i surr :p)

 

- metoder:

- konstruktører:

- attributter:

 

sleng gjerne med et eksempel :)

7691055[/snapback]

 

Det du egentlig spør om er "hva er klasser og objekter" slik jeg tolker spørsmålet ditt. Derfor svarer jeg på det - og når du forstår det forstår du også hva metoder, konstruktør og attributter er.

 

Alt det svare nedenfor/ovenfor sier er riktig, men jeg har noen utfyllende kommentarer.

 

Et objekt er en "ting" fra den virkelige verden (både konkrete og abstrakte) vi har lyst å programmere. Eksempel på dette kan være en bil, en person, en kakeoppskrift eller nesten hva som helst. For at vi skal kunne konkretisere disse i et (java)program må vi opprette en klasse for dette.

 

En klasse er en mal/oppskrift for hvordan objektene våre kommer til å være, mens objektet er konkretiseringen av klassen. Forholdet mellom disse kan beskrives som pepperkakeformer vs pepperkakemenn/damer/griser/bukker osv, hvor da formen tilsvarer klassen og kakemennene/damene/[..] er objektene laget av formen (klassen). Når vi skal lage en klasse velger vi ut noen egenskaper disse objektene skal ha. Eksempelet nedenfor/ovenfor (en bil) sier at bilen har lykter (og dermed lys). I tillegg kan bilen ha et registreringsnummer, en eier, en farge. Så kan man tenke at en bil har jo en rekke andre egenskaper, feks antall sylindre, motorkraft, med eller uten servo, men hvis ikke disse er viktige for papplikasjonen vår gir vi bare beng i å ha de med i programmet.

 

Et objekt kjennetegnes ved flere ting, nemlig tilstand og oppførsel. Tilstand viser til egenskapene ved objektet, og dette tilsvarer attributtene. Eksempelvis kan kakemenn ha en form, en farge og pynt. Formen kan være gris, dame, tre, bukk osv, fargen lysbrun, brun, svart (eller andre) og pynt kan være ja/nei.

 

Oppførsel til objektene beskrives ved hjelp av metoder. Nå er en kakemann et dårlig eksempel på oppførsel, siden kakemenner gjør lite annet enn å bli spist og bli stekt, men en bil feks kan gå forover, rygge, tute, skru på/av lys mfl. Igjen - bilen kan gjøre flere ting, feks kjøre tom for bensin eller fylles av personer/bagasje, men hvis ikke dette er viktig i programmet gir vi beng i dette også.

 

Dermed har vi beskrevet både attributter (tilstand) og oppførsel (metoder) og så til sist kommer konstruktøren. En konstruktør er - som person over/under sier - en spesiell metode for å opprette objekter, for kakemenn-eksempelet vil det si å lage kakemenner/damer/griser av kakeformen... hvor alle har samme initielle tilstand. Konstruktører kommer i flere varianter. Man har en implisitt standardkonstruktør, som er en konstruktør som ikke tar parameter og som ikke har metodekropp (innhold i metoden). En konstruktør kan overlastes (dvs komme i flere varianter). Man kan ha en konstruktør som tar parameter og/eller setter standardverdier på objektene. Har man en ikke-standardkonstruktør og ønsker å ha en konstruktør som bare setter av plass til objektet i minnet må man opprette en eksplisitt standardkonstruktør. Hvis en ikke gjør det kan en bare bruke den overlastede konstruktøren til å opprette objekter.

 

 

Vet ikke om dette ble overkill - og kanskje det ikke var det du spurte etter heller.

Men her er det iallfall.

Lenke til kommentar
Her er koden jeg har brukt:

 

public/abstract class Bil { 
private boolean lys=false; <-- attributter
private String farge;

public Bil() {} <-- eksplisitt standardkonstruktør
public Bil(boolean lys){ <-- overlastet kontruktør
 this.lys = lys;
 farge = "hvit";
}
public Bil(String f){<-- enda en overlastet konstruktør
 farge = f;
 lys = false;
}

public void slaaPaaLys() {<-- metode (endret litt, siden void-metoder ikke kan returnere noe
   this.lys=true;
}

 
public boolean harPaaLys(){
 return lys;
}
public void lakkerOmBil(String f){
 farge = f;
}
}

 

Metodesignatur = adgangsmodifikator returtype metodenavn og parameter

Eks

public void lakkerOmBil(String f)

Endret av CruellaDeVille
Lenke til kommentar

Konstruktør er veldig enkelt forklart metoden som kjøres når et objekt opprettes av klassen..for eksempel;

 

class test{

public int test(int input){
gjør noe;
return noe;
}
}

 

og objektet som opprettes:

test testObj = new test(5);

 

eller noe i den dur..konstruktøren må hete det samme som klassen!

Endret av Thomas`
Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...