Inledning objektorienterad programmering: Klasser och Objekt


Nyckelord: objektorienterad programmering, OOP, klasser, objekt

Algoritmer, Flödesschema

Det här kapitlet kommer behandla ett av de viktigaste områdena inom programmering, nämligen vad som kallas för objektorienterad programmering. Vi kommer lära oss hur klasser och objekt fungerar som byggstenarna i större program och hur de olika delarna inom objektorienterad programmering hänger ihop.

Objektorienterad programmering

Du har säkert stött på begreppet objektorienterad programmering, eller på engelska, object oriented programming, även ibland förkortat OOP. Kortfattat kan man säga att objektorienterad programmering är en programmeringsmetod baserad på en hierarki av klasser och väldefinierade och samarbetande objekt.

Det är just det här som gör Java, och självklart andra objektorienterade programmeringsspråk, så kraftfulla. Vi kan bygga upp programmet som flera modeller (objekt) som sedan kan struktureras i klasser och kunna interagera med varandra.

Delar av objektorienterad programmering vi ska titta närmare på

Det här kapitlet består av fem artiklar där vi ska lära oss vad varje del fungerar med praktiska exempel, men det vi framförallt vill visa är hur de samverkar och tillsammans utgör det som kallas för just objektorienterad programmering.

Objektorienterad programmering klasser objekt konstruktor
Figur 1: Objektorienterad programmering Java

Intro till klasser och objekt i Java

Klasser och objekt utgör grunden när man programmerar stora program eftersom ett program i själva verket består av flera små byggstenar (objekt) som tillsammans bygger upp stora program. Klasser och objekt möjliggör att vi kan skapa abstraktion när vi programmerar, alltså att man hittar gemensamma drag hos problem och försöker undvika att programmera samma sak om och om igen.

Ett program är i själva verket flera små byggstenar (objekt) som tillsammans bygger upp stora program.

En klass i Java beskriver de attribut och egenskaper som ett objekt ska ha. Klassen fungerar som en mall som beskriver hur någonting är (attribut) och vad den gör (egenskaper). Man kan beskriva det som att klassen fungerar som en ritning för vad objektet ska ha för egenskaper och tillstånd.

Ett objekt är vad som kallas för en instans av en klass. Ett objekt innehåller de attribut och egenskaper som klassen anger att varje objekt från den klassen ska ha.

Enkelt förklarat så kan man beskriva det som att skillnaden mellan en klass och ett objekt är att en klass är en mall för objekt. Om vi tar ett exempel med en bil så är en klass den mall/ritning som beskriver vad bilen ska bestå av och vad bilen ska kunna utföra. Ett objekt är då en bil som är skapad utifrån den mallen, eller rättare sagt, av den klassen.

Exempel på att använda objektorienterad programmering

Tänk dig att vi ska programmera en katt. Som du känner till så har en katt en rad olika egenskaper, exempelvis att kunna klösa och springa. En katt har även vissa attribut, exempelvis ett namn och en färg. Som vi gick igenom ovan så fungerar klassen som en mall som beskriver hur någonting är (attribut) och vad den gör (egenskaper).

I detta exempel har alltså klassen katt två metoder: klösa och springa. Den har även två attribut: namn och färg. Vi har nu en mall av en katt och från denna mall kan vi skapa flera katter, det vill säga objekt av klassen katt. Man säger att man skapar en instans av klassen katt.

klasser objekt objektorienterad programmering

Figur 2: Exempel på en klass och objekt

Vi har alltså två objekt av klassen katt där ena objektet heter Tom och har vit päls, och den andra katten heter Findus och har brun päls. Båda objekten har egenskaperna att kunna klösa och springa.

Vad finns det för fördelar med objektorienterad programmering?

Om vi ska nämna några av de generella fördelarna vi anser att det finns så skulle det kunna vara:

  • Återanvända kod: Med hjälp av att klasser i Java kan ärva kod från andra klasser så kan vi återanvända kod. Många gånger vill man just återanvända kod från delar av programmet som man har kodat tidigare. Istället för att programmera liknande klasser flera gånger, kan man ärva kod från en annan klass som redan är skapad.
  • Flexibilitet: Tack vare att flera olika objekt kan använda samma funktioner så kan objekt i olika klasser använda samma metoder.  Till exempel, vi skapar en metod för att mäta distans så kan den metoden användas för en bil, men också för en människa som promenerar.
  • Enklare felsökning: När vi arbetar med objektorienterad programmering så blir det i de flesta fallen enklare att hitta var felet har uppstått eftersom objekt är fristående, och varje del av funktionalitet gör sin egen sak medan de lämnar de andra delarna ensamma. Till exempel, vi har ett problem med vårt objekt för en bil. Det är mest troligt att felet ligger i, eller kopplat till, klassen vi skapat för bilen.
  • Effektivare problemlösning: Tack vare att vi kan dela upp våra program i objekt och klasser så kan vi bryta ned problemet i mindre delar (objekt). Vi kan sedan lösa de mindre problemen, ett objekt i taget, som sedan tillsammans utgör lösningen för hela problemet

Sammanfattning: Introduktion till objektorienterad programmering

Objektorienterad programmering, även känt som OOP, är en programmeringsmetod baserad på en hierarki av klasser och väldefinierade och samarbetande objekt. Klasser och objekt utgör grunden när man programmerar stora program eftersom ett program i själva verket består av flera små byggstenar (objekt) som tillsammans bygger upp stora program.

Vanlig frågor och svar: Intro till objektorienterad programmering

Vad är det för skillnad mellan en klass och ett objekt?

Enkelt förklarat så kan man säga att skillnaden mellan en klass och ett objekt är att en klass är en mall för objekt. Det betyder att en klass i Java beskriver de attribut och egenskaper som ett objekt ska ha. Du kan tänka en klass som en ritning och ett objekt som något som är skapat från den ritningen.

Vilka fler programmeringsspråk är objektorienterade?

Det finns flertalet programmeringsspråk som precis som Java är objektorienterade. Exempelvis, Python, C++, Scala, med mera. På sidan för objektorienterad programmering på wikipedia kan du se en lista med de mest välkända programmeringsspråken som stödjer objektorientering.

Fungerar alla programmeringsspråken som stödjer objektorientering på samma sätt?

Själva grunden gällande tankegång och logiken bakom är samma för de olika programmeringsspråken. Men självklart så skiljer sig tillvägagångsättet för deklarering och rent praktiskt hur man skapar klasser och objekt.

Vad menas med abstraktion?

Allmänt så är abstraktion en tankeprocess vid vilken man tar fram det väsentliga och det gemensamma. Mer specifikt inom programmering så kan man säga att abstraktion är ett sätt att hitta gemensamma drag hos problem och försöker undvika att programmera samma sak om och om igen. En klass är en abstraktion av något begrepp ett program hanterar.

Vad tyckte du om sidan?

Lämna gärna feedback och hjälp oss göra sidan bättre

Feedback gör oss bättre!

Lämna gärna feedback om vad du tyckte om avsnittet!