Sammanfattning objektorienterad programmering


Nyckelord: objektorienterad programmering, klasser, objekt, konstruktor, arv, interface

Objektorienterad programmering klasser objekt konstruktor

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.

Vad är objektorienterad programmering?

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:

Objektorienterad programmering klasser objekt konstruktor
Figur 1: Objektorienterad programmering Java

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.

Klasser i Java

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.

Syntax: Deklarera en klass i Java

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.

Objekt i Java

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: Deklarera ett objekt i Java

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.

Konstruktor i Java

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.

Syntax: Deklarera en konstruktor i Java

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 i Java

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.

Syntax: Deklarera arv i Java

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  
}  

Nyckelordet super

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.

Interface i Java

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.

Syntax: Skapa ett interface i Java

Man skapar ett interface genom att använda det reserverade ordet interface.

interface NamnInterface {
    // Metoder tillhörande interface
}

Syntax: Skapa en klass från ett interface i Java

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 
}

Fördelar med Objektorienterad programmering

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

  • Återanvända kod. Med hjälp av Arv i Java kan vi återanvända kod från andra klasser. Många gånger vill man återanvända kod från klasser man redan har programmerat. Istället för att programmera liknande klasser flera gånger, kan man ärva kod från en annan klass.
  • Flexibilitet. Tack vare att olika objekt kan använda samma funktioner så kan objekt i olika klasser använda samma metoder.  Exempelvis, 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.  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. Har vi ett stort komplext problem kan vi bryta ned det i mindre delar och lösa dem var för sig.

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!