Nyckelord: objektorienterad programmering, klasser, objekt, konstruktor, arv, interface
Vi ska i den här artikeln försöka ge en sammanfattning och överblick av de delar av objektorienterad programmering som vi har gått igenom i det här kapitlet.
Objektorienterad programmering, även känt som OOP, är en programmeringsmetod baserad på en hierarki av klasser och samarbetande objekt. Klasser och objekt utgör grunden när man utvecklar stora program eftersom ett program i själva verket består av flera små byggstenar (objekt) som tillsammans bygger upp programmet.
De delar vi har gått igenom i det här kapitlet är:
Vid det här laget har du säkert redan förstått varför objektorienterad programmering är så kraftfullt. Varje objekt (instans av klass) lagrar enbart information som är relevant för sitt eget användningsområde. Det gör att oönskad påverkan emellan två objekt är mycket liten. Du har i detta kapitel sett hur vi kan återanvända kod (arv) som medför möjligheten att göra mer generella klasser.
En klass i Java beskriver de attribut och egenskaper som ett objekt ska ha. Klassen fungerar som enmall som beskriver hur någonting är (attribut) och vad den gör (egenskaper).
Klassen specificerar vilka egenskaper och vilka attribut som ett objekt som skapas från den klassen måste ha. Genom att skapa flera klasser kan man strukturera hela programmet i flera mindre modeller som tillsammans utgör ett helt program. Det innebär att varje klass sköter “sin del” av programmet och är helt oberoende på vad andra klasser gör, vilket skapar objektorienterad programmering.
class KlassNamn { // Attribut - Ange en eller flera som klassen ska ha Datatyp namn; // Egenskaper - Definiera alla metoder som klassen ska ha void metodnamn{ // operation/operationer } }
Kom ihåg att programmets fil måste ha samma namn som klassen och att det är god syntax att klassnamnet börjar med stor bokstav. Vill du läsa mer om klasser i Java kan du göra det här.
Ett objekt är en instans av en klass och innehåller de attribut och egenskaper som klassen anger att varje objekt från den klassen ska ha. Varje objekt är oberoende av varandra, fastän de kommer från samma klass, vilket kallas för inkapsling (engelska: encapsulation). Ett objekt består av tillstånd och beteenden. Till exempel för en bil så skulle tillstånden kunna vara bilens färg eller märke, medans beteenden är något bilen kan utföra, som att köra och svänga.
Praxis när man instansierar ett objekt är att namnet på objektet börjar med liten bokstav.
Syntax för att skapa ett objekt
// Syntax för objekt KlassNamn objektNamn = new KlassNamn(datatyp parameter1, …);
Innanför parentesen så anger vi de inparametrar som konstruktorn behöver. Detta är alltså de attributen som objektet ska få. Om den konstruktor som klassen har inte kräver några inparametrar för att skapa ett objekt lämnar man helt enkelt parentesen tom. Vill du läsa mer om objekt i Java kan du göra det här.
När man har en klass som man vill skapa ett objekt från så anropar man den klassens konstruktor, så det är alltså med andra ord konstruktorn som används för att instansiera ett objekt från en klass. Vi skapar en konstruktor genom att ange klassens namn – eftersom en konstruktor alltid måste ha samma namn som klassen – följt av de inparametrar vi vill att konstruktorn ska ha. Vidare, det är viktigt att komma ihåg att en konstruktor inte kan returnera något. Avslutningsvis, nyckelordet this hänvisar till det aktuella objektet i en metod eller konstruktor. Vad det innebär är att om man använder this så tilldelar man klassvariablerna de värdena som kommer från konstruktorn.
Viktigt att komma ihåg att konstruktorn måste ha samma namn som klassen.
class KonstruktorEx { // Konstruktorn. namn1 och namn2 är inparametrarna av en viss datatyp KonstruktorEx(datatyp namn1, datatyp namn2){ // "this" syftar till nuvarande objektets klassvariabel this.namn1 = namn1; this.namn2 = namn2; // osv.. } }
Vill vi skapa en konstruktor utan några inparametrar så lämnar vi helt enkelt parentesen efter konstruktorns namn tom. Om du vill läsa mer om hur en konstruktor i Java fungerar och hur man använder den kan du göra det här.
Arv (engelska: inheritance) använder man i Java för att återanvända kod från andra klasser. När man arbetar med arv i Java brukar man dela in det i två typer av klasser. Det första är en så kallad subklass, eller child, som är en klass som ärver från en annan klass. Det andra är vad som kallas för en superklass, eller parent, och är den klass som arvet sker från.
Det som sker vid ett arv är att subklassen får samma uppsättning av instansvariabler och metoder som superklassen, men det är även möjligt att lägga till nya metoder och klassvariabler om så önskas.
För att skapa ett arv i Java använder man nyckelordet extends följt av namnet på den klass som du vill ärva ifrån. Nyckelordet extends anger att du skapar en ny klass som härrör från en befintlig klass.
class SubClassNamn extends SuperClassNamn { // Kod som tillhör klassen }
Avslutningsvis, vi använder nyckelordet super för att kalla på konstruktorn i superklassen och det är med hjälp av nyckelordet super som vi kan referera till variabler i superklassen från subklassen.
För att läsa mer om arv i Java, klicka här.
Ett interface i Java är ett sätt att förbestämma vilka egenskaper en klass ska ha och därmed blir interface ett sätt att fördefiniera en klass, så att alla klasser håller samma struktur. Ett interface är en helt abstrakt klass och metoderna i ett interface anger enbart vilka metoder som klassen ska ha, inte vad metoderna ska göra.
Skillnaden mellan ett interface och en klass är huvudsakligen att ett interface kan inte ha någon konstruktor medan en konstruktor är en av de centrala komponenterna i en klass, samt att alla metoder i ett interface är abstrakta.
Man skapar ett interface genom att använda det reserverade ordet interface.
interface NamnInterface { // Metoder tillhörande interface }
För att sedan skapa en klass från ett interface skriver man klassens namn följt av det reserverade ordet implements och slutligen namnet på det interface som klassen ska hämta sina egenskaper från.
interface NameInterface { // Metoder tillhörande interface } class NameOfClass implements NameInterface { // Kod tillhörande klassen }
Lämna gärna feedback med hjälp av stjärnorna nedan och hjälp oss att fortsätta göra sidan bättre.
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!
Låt oss avsluta det här kapitlet med att titta på några av de fördelarna som vi anser att objektorienterad programmering har
Avslutningsvis, för att läsa ännu mer om objektorienterad programmering i Java så finns det rikligt med information på Oracle hemsida.
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!