INTRODUKTION TILL
PROGRAMMERING
Föreläsning 7 (8.1.2008)
INNEHÅLL:
-Klasser
-Att definiera egna klasser
-Klassvariabler
-Klassmetoder
Jonny Karlsson 8.1.2008
1
Klasser
Alla java-källkodsfiler innehåller minst en klass.
Alla java-program vi hittils gjort i kursen har innehållit en huvudklass (som har samma
namn som namnet på källkodsfilen)
Klasser kan användas för att definiera en typ av objekt, t.ex egenskaper hos en person
(detta kommer vi in på senare i kursen),
Klasser kan också användas som en samling av metoder, t.ex. input klassen som vi i
denna kurs använt för att kunna läsa in olika värden från tangentbordet. Dessa typer av
Klasser brukar kallas för biblioteksklasser.
Jonny Karlsson 8.1.2008
2
Att skapa egna klasser
I Java finns en mängd fördefinierade klasser. Ett exempel på en fördefinierad klass är
klassen System som vi redan gång på gång i denna kurs utnyttjat för att kunna skriva ut
text på konsolfönstret.
Man kan i Java också vid behov skapa egna klasser. Klassen input är en ”egen”
biblioteksklass skapad av Kim Skön som senare en aning modifierats av Jonny
Karlsson!!!
En ny klass kan definieras i en skild källkodsfil eller i samma källkodsfil som
huvudklassen.
Klassen input är ett exempel på en klass som har definierats i en egen källkodsfil
(input.java).
Jonny Karlsson 8.1.2008
3
Att definiera egna klasser
Tillsvidare behandlar vi endast hur man definierar egna klasser i samma källkodsfil som
huvudklassen.
En egen klass i samma källkodsfil som huvudklassen deklareras enligt följande:
public class mittJavaProg
{
public static void main(String args[ ])
{
}
}
class Minklass
{
}
Observera att huvudklassen och endast huvudklassen skall vara ”public”.
Huvudklassens namn bör vara samma som källkodsfilens namn.
Jonny Karlsson 8.1.2008
4
Att definiera egna klasser
Vår tidigare definierade klass ”Minklass” var för enkelhetens skull en tom klass som
varken har några egenskaper eller utför några rutiner.
En klass kan innehålla bl.a. klassvariabler, klassmetoder, instansvariabler och
Instansmetoder.
Tillsvidare går vi endast igenom klassvariabler och klassmetoder.
Jonny Karlsson 8.1.2008
5
Klassvariabler
Exempel: Vi vill definiera en hög matematiska konstanter och samla ihop dessa i en
gemensam klass.
För enkelhetens skull vill vi nu endast skapa två konstanter: värdet för pi och jordens
dragningskraft.
Då skulle vi definiera en ny klass, Konstanter, som innehåller två klassvariabler: pi och
gravitation:
class Konstanter
//definierar en ny klass som heter Konstanter
{
static float pi = 3.14;
static float gravitation = 9.8;
}
Jonny Karlsson 8.1.2008
6
Klassvariabler
Observera nyckelordet static framför variablerna i klassen Konstanter.
Nyckelordet static berättar att variabeln skall vara statisk vilket betyder att det endast kan
förekomma en instans eller en ”kopia” av denna variabel (mera om instanser kommer
senare).
En statisk variabel brukar man kalla för klassvariabel.
En statisk variabel i en klass kommer man åt direkt via klassnamnet och m.h.a
punktnotation: klassnamn.variabelnamn.
Punktteknet som används här kallas i Java för syftningsoperator
Jonny Karlsson 8.1.2008
7
Klassvariabler
public class program
{
public static void main(String args[ ])
{
System.out.println(”Värdet för pi är: ” + Konstanter.pi);
System.out.println(”Värdet för pi gravitationen är: ” + Konstanter.gravitation);
}
}
class Konstanter
//definierar en ny klass som heter Konstanter
{
static float pi = 3.14;
static float gravitation = 9.8;
}
Jonny Karlsson 8.1.2008
8
Klassmetoder
Metoder kan liksom variabler vara markerade som static.
Att en metod är statisk betyder att det bara finns ett enda exemplar
av just denna metod (mera om detta senare).
En statisk metod kallas för klassmetod.
Jonny Karlsson 8.1.2008
9
Klassmetoder
Exempel: Vi vill programmera en mängd olika metoder som beräknar arean av olika typer
av geometriska figurer och samla alla dessa metoder i en biblioteksklass.
För enkelhetens skull gör vi nu endast 3 metoder: En metod som beräknar arean av en:
kvadrat
rektangel
Cirkel
Vi behöver då kanske en konstant för pi (klassvariabel) och så behöver vi tre k
lassmetoder: Se nästa sida 
Jonny Karlsson 8.1.2008
10
Klassmetoder
class FigurArea
{
static float pi = 3.14;
static float kvadrat(float bas)
{
return bas*bas;
}
static float rektangel(float bas, float hojd)
{
return bas*hojd;
}
static float cirkel(float radie)
{
return 2*pi*radie;
}
}
Jonny Karlsson 8.1.2008
11
Klassmetoder
En klassmetod kommer man från en annan klass åt på samma sätt som en klassvariabel
dvs. direkt via klassnamnet och m.h.a punktnotation: Klassnamn.metodNamn
...
...
System.out.println(”Arean för en cirkel med radien 4.5 ar ” + FigurArea.cirkel(4.5));
..
..
För ett enhetligt exempel se: exempelX
Jonny Karlsson 8.1.2008
12
Klassmetoder
Vi har nästan under hela kursens gång använt oss av klassmetoder utan att vi vetat om
det!!!
T.ex. Metoden readInt() som vi använt för att läsa in heltal från tangentbordet är en
klassmetod i klassen input. Därför har vi anropat den så här: input.readInt()
Studera källkoden för input klassen här.
Jonny Karlsson 8.1.2008
13