Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

HTML Comment
hiddentrue

Hvordan en klasse defineres:

  • Felt
  • Metoder
  • Konstruktør 

Hvordan en instans av en klasse opprettes:

  • Objektreferanse
Denne siden vil forsøke å forklare siden Objekter og klasser i Java-kontekst. Om man på forhånd har forstått den objektorienterte tankegangen, vil Java implementasjonenene være vesentlig lettere å forstå. Om man synes den objektorienterte tankegangen er vanskelig å forstå, vil det kanskje hjelpe å se den i Java-kontekst. 

Definere en klasse

En klasse består typisk av felt, metoder og konstruktør(er). Samspillet mellom disse definerer oppførsel og tilstand for objektet.

Felter og metoder

 

 

 

Code Block
languagejava
titleSimple class
public class MyDescriptiveAndConciseClassname {
	
}
  1. class - Dette betyr at "eieren" av innholdet i { } er en klasse.
  2. public - Dette definerer synligheten til klassen. Ofte jobber
    programmer med flere klasser, og noen ganger vil man at 
    klassene skal "vite" om hverandre, andre ganger ikke.
    Mer om synlighet, se Innkapsling og 
    Synlighetsmodifikatorer.
  3. MyDescriptiveAndConciseClassname - Navnet på klassen.
    Har her valgt et forholdsvis teit klassenavn, men dette er 
    bare for å illustrere at det kan være akkurat det man ønsker.
    I tillegg forteller navnet hva slags klassenavn man egentlig
    ønsker; beskrivende og konsise på en gang.


Dette er en klasse med fryktelig lite mening, men uansett;
en klasse.


Code Block
languagejava
titleClass with fields
public class Song {
 
	public String title;
	public Person artist;
	public String lyrics;

}
  1. Det er her valgt et kort og presist klassenavn, og man burde
    ikke være i tvil om hva denne klassen "representerer".
  2. Song-klassen har her tre felter.
    Et felt fungerer omtrent som en vanlig variabel, men i stedet
    for å deklareres i en funksjon, deklareres feltet i klassen.
    Felter kan sees på som klassens egenskaper.
    Det vil si at et felt opptrer som en global variabel i klassen.
Code Block
languagejava
titleClass with fields and methods
public class Song {
 
	private String title;
	public Person artist;
	public String lyrics;
 
	public String getTitle() {
		return title;
	}
 
	public void setTitle (String title) {
		this.title = title;
	}
 
	public int countWordInLyrics(String word) {
		// Code that finds the number of
		// occurrences of "word" in lyrics-field
	}
}
  1. Når man lager funksjoner i klasser pleier man å kalle
    funksjonene klassen metoder. Metodene er bygget opp på
    helt lik måte som en funksjon
  2. Her er det opprettet to metoder; getTitle() & setTitle(...) som
    henholdsvis returnerer og forandrer feltet title. Disse kalles
    gettere og settere, som kan leses mer om under Innkapsling.
  3. countWordInLyrics(...) er en metode som hverken returnerer
    eller forandrer noen av feltene i klassen, men utfører en
    beregning basert på verdiene til ett av feltene 

Anchor
konstruktør
constructor
konstruktør
constructor

Konstruktør 

En konstruktør er en spesiell metode som bare kalles når man oppretter en ny instans av en klasse, altså lager et nytt objekt. Dersom et objekt er avhengig av at felt x og y har verdier for at objektet skal ha en gyldig tilstand, gir en konstruktør muligheten til å si at disse feltene "oppgis" ved opprettelsen. Om man ikke har definert noen konstruktør (slik som over), vil Java sette inn en "tom", og denne kalles men utfører ingen forandring på objektets initielle tilstand. 

...

Legg merke til at dersom man er i en situasjon slik som Fig. 3. Om man forandrer objektet s1 refererer til, vil man også ha forandret objektet s2 refererer til, siden disse er samme objekt.