Nyckelord: objektorienterad programmering, OOP, klasser, objekt
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.
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.
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: tydliga ansvarsområden kan göra fel lättare att lokalisera. Objekt kan dock dela referenser och påverka varandra, så ett fel kan också bero på samspelet mellan flera delar.
- 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
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.
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.
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.
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.