1503 Klasser och objekt

I programmering lagras den data som programmet arbetar med i datorns minne. I objektorienterad programmering grupperas data som hör ihop i objekt. En klass bestämmer vad som kan sparas i ett objekt och hur datan i objektet kan bearbetas.

Nedan följer ett exempel, där klassen heter Hjälte. Det är en hjälte i ett spel.

Varning! Egentligen ska man inte använda å, ä, och ö i kod, men det görs nedan för att den förklarande texten är på svenska.

Hjälten har ett namn och ett visst antal liv kvar. Detta kan illustreras i ett klassdiagram, se nedan. I den översta rutan finns klassens namn, Hjälte. I nästa ruta finns namn på den data som kan sparas i ett objekt. Dessa data kallas för fält.

Hjälte

  • namn
  • antalLiv

Klassen Hjälte beskrivs med kod. Vi återkommer till den senare.

Från klassen Hjälte kan man skapa objekt. Objekten är data för en hjälte som sparas i datorns minne. Objekten kan illustreras med hjälp av objektdiagram, se nedan.

hjälteEtt: Hjälte

  • namn "Ada Lovelace"
  • antalLiv 3

I objektdiagrammet ovan är hjälteEtt namnet på objektet i programkoden. Klassen heter hjälte. Fälten är namn och antalLiv. Fältet namn har värdet "Ada" och fältet antalLiv har värdet 3.

Nedan visas ett objekt till.

hjälteTvå: Hjälte

  • namn "Charles Babbage"
  • antalLiv 3

Koden för klassen Hjälte följer nedan.

public class Hjälte
{
  //fält
  private String namn;
  private int antalLiv;

  //konstruktor
  public Hjälte(String hjältensNamn)
  {
    //ge fälten värden
    namn = hjältensNamn;
    antalLiv = 3;
  }
}

Det som saknas i klassen är sätt att arbeta med den data som sparats i objekten i fälten. Låt oss lägga till en metod döda som minskar antal liv med ett. Koden för klassen blir då.

public class Hjälte
{
  //fält
  private String namn;
  private int antalLiv;

  //konstruktor
  public Hjälte(String hjältensNamn)
  {
    //ge fälten värden
    namn = hjältensNamn;
    antalLiv = 3;
  }
  //metoder
  public void döda()
  {
    //minska antal liv med 1
    antalLiv = antalLiv - 1;
    //antal liv kan blir 0 som minst
    if (antalLiv < 0)
    {
      antalLiv = 0;
    }
  }
}

Klassdiagrammet får nu ett nytt utseende.

Hjälte

  • namn
  • antalLiv
  1. döda()

Objektdiagrammen ändras inte.