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
- döda()
Objektdiagrammen ändras inte.