Komplett gjennomgang av pensum med forklaringer, formler, vanlige feil og eksamenstips.
TDT4100 Objektorientert programmering er et obligatorisk fag i første studieår for IT-studenter ved NTNU. Kurset gir deg det grunnleggende fundamentet i objektorientert programmering med Java, som du bygger videre på i alle senere programmeringsfag.
Denne studieguiden dekker de åtte sentrale temaene i kurset. Bruk den som supplement til forelesninger, øvinger og lærebok — den er designet for å hjelpe deg med å forstå sammenhengene og forberede deg effektivt til eksamen.
Grunnleggende OOP:
Klasse = mal/blueprint | Objekt = instans av en klasse | Felt = instansvariabel (data)
Metode = funksjon i en klasse | Konstruktør = initialiserer objekter | Referanse = peker til objekt på heapen
OOP-prinsipper:
Innkapsling = skjule intern tilstand bak metoder | Arv = subklasse overtar fra superklasse
Polymorfisme = mange former, dynamisk metodevalg | Abstraksjon = skjule kompleksitet bak grensesnitt
Java-nøkkelord:
private / protected / public = tilgangsmodifikatorer | static = tilhører klassen
final = kan ikke endres/arves/overstyres | abstract = ufullstendig, må implementeres
extends = arver fra klasse | implements = implementerer grensesnitt | super = referanse til superklasse
Feilhåndtering:
try-catch-finally = fange unntak | throw = kaste unntak | throws = deklarere at metode kan kaste
Checked = må håndteres (IOException) | Unchecked = trenger ikke deklareres (NullPointerException)
Grunnleggende byggesteiner i OOP: klasser, objekter, konstruktører, metoder, felt og minnemodellen.
Alt i Java er bygget rundt klasser og objekter. En klasse er en mal som beskriver data (felt) og oppførsel (metoder). Et objekt er en konkret instans av en klasse, opprettet med new.
Klasse vs. objekt:
Klasse = Blueprint/mal som definerer felt og metoder
Objekt = Konkret instans opprettet med new, lever på heapen
Referanse = Variabel som peker til et objekt (lever på stacken)
En konstruktør er en spesiell metode med samme navn som klassen og ingen returtype. Den kalles automatisk ved new og brukes til å initialisere objektets felt.
Regler for konstruktører:
Samme navn som klassen, ingen returtype
Kan ha parametere for å ta imot initialverdier
En klasse kan ha flere konstruktører (overloading)
Hvis du ikke definerer noen, lager Java en tom standardkonstruktør
Bruk this(...) for å kalle en annen konstruktør i samme klasse
public class Student {
private String name;
private int age;
// Konstruktør
public Student(String name, int age) {
this.name = name; // this skiller felt fra parameter
this.age = age;
}
// Getter
public String getName() { return name; }
// Setter med validering
public void setAge(int age) {
if (age < 0) throw new IllegalArgumentException("Ugyldig alder");
this.age = age;
}
@Override
public String toString() {
return name + " (" + age + " år)";
}
}
// Bruk:
Student s = new Student("Ola", 20); // Oppretter objekt
System.out.println(s); // Kaller toString(): "Ola (20 år)"
Stacken lagrer lokale variabler og metodekall. Heapen lagrer alle objekter opprettet med new. Referansevariabler på stacken peker til objekter på heapen.
Referanser vs. verdier:
Primitive typer (int, double, boolean): Verdien lagres direkte. Kopieres ved tilordning.
Referansetyper (alle klasser, arrays): Referansen kopieres. Begge variabler peker til samme objekt.
== sammenligner referanser (samme objekt?), .equals() sammenligner innhold.
static betyr at feltet/metoden tilhører klassen, ikke individuelle objekter. Statiske metoder kan kalles uten å opprette et objekt: Math.sqrt(4). De har ikke tilgang til this eller instansvariabler.
Nøkkelformler
Vanlige feil
Eksamenstips