Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære OOP-Prinsipper: Abstraksjon | Oop
Java OOP
course content

Kursinnhold

Java OOP

Java OOP

1. Hvordan Arbeide med IDE?
2. Oop
3. Interface

book
OOP-Prinsipper: Abstraksjon

Abstraksjon

Vi har nå kommet til det siste, men svært viktige prinsippet i OOP: Abstraksjon. Ordet "abstraksjon" høres ganske abstrakt ut, og kort fortalt sier dette prinsippet at vi bør avhenge av abstraksjon heller enn en spesifikk implementasjon. Dette kan virke komplisert nå. La oss starte med å se på definisjonen:

For eksempel har vi en klasse kalt Person, og mange ulike klasser er avledet fra denne. Person har ulike felt og metoder som er felles for alle klassene. Men når vi har en klasse kalt BasketballPlayer, blir egenskapen height avgjørende, mens for en klasse som Driver er height irrelevant og ikke viktig. Det er her abstraksjon kommer inn i bildet. Ved å arve fra en abstraksjon kan vi gjøre height-parameteren valgfri, slik at vi ikke trenger å bruke den der det ikke er nødvendig.

Dette kan virke komplisert, så la oss gå videre til et eksempel:

Car.java

Car.java

copy
123456789
public abstract class Car { String model; int year; int maxSpeed; String color; public abstract void move(); public abstract void stop(); }

Klassen Car representerer ikke noe spesifikt. Det finnes ikke bare en Car; det finnes sedaner, lastebiler, traktorer. Derfor benytter vi oss av abstraksjonen kalt Car. For å forenkle det ytterligere: Car er en mal som vi bruker for å lage spesifikke bilklasser.

Vær oppmerksom på syntaksen:

Dette er syntaksen for å erklære en abstrakt klasse. Merk også syntaksen for å erklære en abstrakt metode:

En abstrakt metode har ingen kropp; dette er dens hovedkarakteristikk. Subklasser av en abstrakt klasse vil overstyre denne abstrakte metoden for å definere sin egen implementasjon, ved bruk av polymorfisme.

La oss se nærmere på hva en abstrakt klasse er:

Merk at vi ikke kan opprette et objekt av en abstrakt klasse; det vil føre til en feil:

Abstrakte klasser frigjør oss fra å forholde oss til kun "objekter"; de gir oss en grunnleggende tilstand og atferd. Med bil-eksempelet bør hver bil ha en modell, produksjonsår, maksimal hastighet og farge. De skal også kunne bevege seg og stoppe. Det er alt; derfra designer du dine spesifikke klasser basert på denne abstrakte malen.

Regler for å lage en abstrakt klasse

  1. En abstrakt klasse er en klasse som inneholder minst én abstrakt metode. Du kan lage en abstrakt klasse uten abstrakte metoder, men da har den ingen hensikt. Du vil ikke kunne instansiere objekter av en abstrakt klasse;

  2. Abstrakte metoder kan kun eksistere innenfor en abstrakt klasse; du kan ikke lage abstrakte metoder utenfor en abstrakt klasse;

  3. Metoder i en abstrakt klasse kan være enten abstrakte metoder eller metoder med implementasjon;

  4. En klasse som arver fra en abstrakt klasse må overstyre alle abstrakte metoder;

  5. Du kan arve fra maksimalt én klasse (abstrakt eller ikke-abstrakt);

  6. En abstrakt klasse bør representere de felles egenskapene og atferden til sine arveklasser. Vi vil diskutere dette mer detaljert når vi studerer SOLID-prinsippene.

La oss se på et eksempel for å forstå hvordan subklasser skal overstyre abstrakte metoder ved å arve fra en abstrakt klasse, ved å bruke eksempelet med barneklassen Truck:

Her er koden fra skjermbildet, omskrevet for bedre lesbarhet og klarhet:

Car.java

Car.java

Truck.java

Truck.java

Main.java

Main.java

copy
123456789
public abstract class Car { String model; int year; int maxSpeed; String color; public abstract void move(); public abstract void stop(); }

La oss se nærmere på det som er skrevet ovenfor i detalj:

  • Første lysbilde: Vi oppretter en underklasse Truck som arver fra den abstrakte klassenCar. Vi ser at IDE-en ber oss implementere de påkrevde metodene;

  • Andre lysbilde: Vi overstyrer de nødvendige metodene. For eksempel skriver vi at Truck har startet å kjøre og deretter stoppet;

  • Tredje lysbilde: Vi oppretter et objekt i main-metoden. Legg merke til syntaksen som brukes: Car name = new Truck();. Vi begynner å opprette objektet gjennom abstraksjon og avslutter med en spesifikk implementasjon. Dette kalles komposisjon. Deretter tildeler vi verdier til feltene etter behov og kaller de overstyrte metodene.

Voilà! Hvis du forstår alt, har du lært hvordan du bruker en abstrakt klasse!

Sammendrag

Abstraksjon er sannsynligvis det mest utfordrende prinsippet innen OOP å forstå, og det er ganske sannsynlig at du ikke har fått med deg alt akkurat nå. Men ikke tro at du er alene om dette. Abstraksjon er et konsept som i starten er vanskelig for de fleste utviklere å forstå. Over tid vil du få en bedre forståelse av hvordan du kan arbeide effektivt med abstraksjon og abstrakte klasser. Abstraksjon er et avgjørende prinsipp fordi det gjør det mulig å gjøre programmene våre utvidbare og svært fleksible.

1. Hva er abstraksjon i objektorientert programmering?

2. Hvilke av følgende påstander om abstraksjon er riktige?

3. Hva er formålet med en abstrakt klasse i Java?

4. Hvordan bidrar abstraksjon til vedlikeholdbarhet av kode?

question mark

Hva er abstraksjon i objektorientert programmering?

Select the correct answer

question mark

Hvilke av følgende påstander om abstraksjon er riktige?

Select the correct answer

question mark

Hva er formålet med en abstrakt klasse i Java?

Select the correct answer

question mark

Hvordan bidrar abstraksjon til vedlikeholdbarhet av kode?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 2. Kapittel 7

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

course content

Kursinnhold

Java OOP

Java OOP

1. Hvordan Arbeide med IDE?
2. Oop
3. Interface

book
OOP-Prinsipper: Abstraksjon

Abstraksjon

Vi har nå kommet til det siste, men svært viktige prinsippet i OOP: Abstraksjon. Ordet "abstraksjon" høres ganske abstrakt ut, og kort fortalt sier dette prinsippet at vi bør avhenge av abstraksjon heller enn en spesifikk implementasjon. Dette kan virke komplisert nå. La oss starte med å se på definisjonen:

For eksempel har vi en klasse kalt Person, og mange ulike klasser er avledet fra denne. Person har ulike felt og metoder som er felles for alle klassene. Men når vi har en klasse kalt BasketballPlayer, blir egenskapen height avgjørende, mens for en klasse som Driver er height irrelevant og ikke viktig. Det er her abstraksjon kommer inn i bildet. Ved å arve fra en abstraksjon kan vi gjøre height-parameteren valgfri, slik at vi ikke trenger å bruke den der det ikke er nødvendig.

Dette kan virke komplisert, så la oss gå videre til et eksempel:

Car.java

Car.java

copy
123456789
public abstract class Car { String model; int year; int maxSpeed; String color; public abstract void move(); public abstract void stop(); }

Klassen Car representerer ikke noe spesifikt. Det finnes ikke bare en Car; det finnes sedaner, lastebiler, traktorer. Derfor benytter vi oss av abstraksjonen kalt Car. For å forenkle det ytterligere: Car er en mal som vi bruker for å lage spesifikke bilklasser.

Vær oppmerksom på syntaksen:

Dette er syntaksen for å erklære en abstrakt klasse. Merk også syntaksen for å erklære en abstrakt metode:

En abstrakt metode har ingen kropp; dette er dens hovedkarakteristikk. Subklasser av en abstrakt klasse vil overstyre denne abstrakte metoden for å definere sin egen implementasjon, ved bruk av polymorfisme.

La oss se nærmere på hva en abstrakt klasse er:

Merk at vi ikke kan opprette et objekt av en abstrakt klasse; det vil føre til en feil:

Abstrakte klasser frigjør oss fra å forholde oss til kun "objekter"; de gir oss en grunnleggende tilstand og atferd. Med bil-eksempelet bør hver bil ha en modell, produksjonsår, maksimal hastighet og farge. De skal også kunne bevege seg og stoppe. Det er alt; derfra designer du dine spesifikke klasser basert på denne abstrakte malen.

Regler for å lage en abstrakt klasse

  1. En abstrakt klasse er en klasse som inneholder minst én abstrakt metode. Du kan lage en abstrakt klasse uten abstrakte metoder, men da har den ingen hensikt. Du vil ikke kunne instansiere objekter av en abstrakt klasse;

  2. Abstrakte metoder kan kun eksistere innenfor en abstrakt klasse; du kan ikke lage abstrakte metoder utenfor en abstrakt klasse;

  3. Metoder i en abstrakt klasse kan være enten abstrakte metoder eller metoder med implementasjon;

  4. En klasse som arver fra en abstrakt klasse må overstyre alle abstrakte metoder;

  5. Du kan arve fra maksimalt én klasse (abstrakt eller ikke-abstrakt);

  6. En abstrakt klasse bør representere de felles egenskapene og atferden til sine arveklasser. Vi vil diskutere dette mer detaljert når vi studerer SOLID-prinsippene.

La oss se på et eksempel for å forstå hvordan subklasser skal overstyre abstrakte metoder ved å arve fra en abstrakt klasse, ved å bruke eksempelet med barneklassen Truck:

Her er koden fra skjermbildet, omskrevet for bedre lesbarhet og klarhet:

Car.java

Car.java

Truck.java

Truck.java

Main.java

Main.java

copy
123456789
public abstract class Car { String model; int year; int maxSpeed; String color; public abstract void move(); public abstract void stop(); }

La oss se nærmere på det som er skrevet ovenfor i detalj:

  • Første lysbilde: Vi oppretter en underklasse Truck som arver fra den abstrakte klassenCar. Vi ser at IDE-en ber oss implementere de påkrevde metodene;

  • Andre lysbilde: Vi overstyrer de nødvendige metodene. For eksempel skriver vi at Truck har startet å kjøre og deretter stoppet;

  • Tredje lysbilde: Vi oppretter et objekt i main-metoden. Legg merke til syntaksen som brukes: Car name = new Truck();. Vi begynner å opprette objektet gjennom abstraksjon og avslutter med en spesifikk implementasjon. Dette kalles komposisjon. Deretter tildeler vi verdier til feltene etter behov og kaller de overstyrte metodene.

Voilà! Hvis du forstår alt, har du lært hvordan du bruker en abstrakt klasse!

Sammendrag

Abstraksjon er sannsynligvis det mest utfordrende prinsippet innen OOP å forstå, og det er ganske sannsynlig at du ikke har fått med deg alt akkurat nå. Men ikke tro at du er alene om dette. Abstraksjon er et konsept som i starten er vanskelig for de fleste utviklere å forstå. Over tid vil du få en bedre forståelse av hvordan du kan arbeide effektivt med abstraksjon og abstrakte klasser. Abstraksjon er et avgjørende prinsipp fordi det gjør det mulig å gjøre programmene våre utvidbare og svært fleksible.

1. Hva er abstraksjon i objektorientert programmering?

2. Hvilke av følgende påstander om abstraksjon er riktige?

3. Hva er formålet med en abstrakt klasse i Java?

4. Hvordan bidrar abstraksjon til vedlikeholdbarhet av kode?

question mark

Hva er abstraksjon i objektorientert programmering?

Select the correct answer

question mark

Hvilke av følgende påstander om abstraksjon er riktige?

Select the correct answer

question mark

Hva er formålet med en abstrakt klasse i Java?

Select the correct answer

question mark

Hvordan bidrar abstraksjon til vedlikeholdbarhet av kode?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 2. Kapittel 7
some-alt