13
Jonny Karlsson 8.1.2008 Jonny Karlsson 8.1.2008 1 INTRODUKTION TILL INTRODUKTION TILL PROGRAMMERING PROGRAMMERING Föreläsning 7 (8.1.2008) Föreläsning 7 (8.1.2008) INNEHÅLL: INNEHÅLL: - Klasser Klasser - Att definiera egna klasser Att definiera egna klasser - Klassvariabler Klassvariabler - Klassmetoder Klassmetoder

INTRODUKTION TILL PROGRAMMERING

Embed Size (px)

DESCRIPTION

INTRODUKTION TILL PROGRAMMERING. Föreläsning 7 (8.1.2008) INNEHÅLL: Klasser Att definiera egna klasser Klassvariabler Klassmetoder. 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 - PowerPoint PPT Presentation

Citation preview

Page 1: INTRODUKTION TILL PROGRAMMERING

Jonny Karlsson 8.1.2008Jonny Karlsson 8.1.2008 11

INTRODUKTION TILL INTRODUKTION TILL PROGRAMMERINGPROGRAMMERING

Föreläsning 7 (8.1.2008)Föreläsning 7 (8.1.2008)

INNEHÅLL:INNEHÅLL:-KlasserKlasser-Att definiera egna klasserAtt definiera egna klasser-KlassvariablerKlassvariabler-KlassmetoderKlassmetoder

Page 2: INTRODUKTION TILL PROGRAMMERING

22 Jonny Karlsson 8.1.2008Jonny Karlsson 8.1.2008

KlasserKlasser

Alla java-källkodsfiler innehåller minst en klass. 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 Alla java-program vi hittils gjort i kursen har innehållit en huvudklass (som har samma namn som namnet på källkodsfilen) namn som namnet på källkodsfilen)

Klasser kan användas för att definiera en typ av objekt, t.ex egenskaper hos en person 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),(detta kommer vi in på senare i kursen),

Klasser kan också användas som en samling av metoder, t.ex. Klasser kan också användas som en samling av metoder, t.ex. inputinput klassen som vi i klassen som vi i denna kurs använt för att kunna läsa in olika värden från tangentbordet. Dessa typer av 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 Klasser brukar kallas för biblioteksklasser. biblioteksklasser.

Page 3: INTRODUKTION TILL PROGRAMMERING

33 Jonny Karlsson 8.1.2008Jonny Karlsson 8.1.2008

Att skapa egna klasserAtt skapa egna klasserI Java finns en mängd fördefinierade klasser. Ett exempel på en fördefinierad klass ärI Java finns en mängd fördefinierade klasser. Ett exempel på en fördefinierad klass ärklassen klassen System System som vi redan gång på gång i denna kurs utnyttjat för att kunna skriva ut som vi redan gång på gång i denna kurs utnyttjat för att kunna skriva ut text på konsolfönstret. text på konsolfönstret.

Man kan i Java också vid behov skapa egna klasser. Klassen Man kan i Java också vid behov skapa egna klasser. Klassen input input är en ”egen” är en ”egen” biblioteksklass skapad av Kim Skön som senare en aning modifierats av Jonny biblioteksklass skapad av Kim Skön som senare en aning modifierats av Jonny Karlsson!!!Karlsson!!!

En ny klass kan definieras i en skild källkodsfil eller i samma källkodsfil som En ny klass kan definieras i en skild källkodsfil eller i samma källkodsfil som huvudklassen.huvudklassen.

Klassen Klassen inputinput är ett exempel på en klass som har definierats i en egen källkodsfil är ett exempel på en klass som har definierats i en egen källkodsfil (input.java). (input.java).

Page 4: INTRODUKTION TILL PROGRAMMERING

44 Jonny Karlsson 8.1.2008Jonny Karlsson 8.1.2008

Att definiera egna klasserAtt definiera egna klasserTillsvidare behandlar vi endast hur man definierar egna klasser i samma källkodsfil som Tillsvidare behandlar vi endast hur man definierar egna klasser i samma källkodsfil som huvudklassen.huvudklassen.

En egen klass i samma källkodsfil som huvudklassen deklareras enligt följande:En egen klass i samma källkodsfil som huvudklassen deklareras enligt följande:

public class mittJavaProgpublic class mittJavaProg{{

public static void main(String args[ ])public static void main(String args[ ]){{}}

}}

class Minklassclass Minklass{{}}

Observera att huvudklassen och endast huvudklassen skall vara ”public”. Observera att huvudklassen och endast huvudklassen skall vara ”public”. Huvudklassens namn bör vara samma som källkodsfilens namn.Huvudklassens namn bör vara samma som källkodsfilens namn.

Page 5: INTRODUKTION TILL PROGRAMMERING

55 Jonny Karlsson 8.1.2008Jonny Karlsson 8.1.2008

Att definiera egna klasserAtt definiera egna klasser

Vår tidigare definierade klass ”Minklass” var för enkelhetens skull en tom klass som 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. varken har några egenskaper eller utför några rutiner.

En klass kan innehålla bl.a. En klass kan innehålla bl.a. klassvariablerklassvariabler,, klassmetoder klassmetoder,, instansvariabler instansvariabler ochoch Instansmetoder.Instansmetoder.

Tillsvidare går vi endast igenom Tillsvidare går vi endast igenom klassvariablerklassvariabler och och klassmetoderklassmetoder. .

Page 6: INTRODUKTION TILL PROGRAMMERING

66 Jonny Karlsson 8.1.2008Jonny Karlsson 8.1.2008

KlassvariablerKlassvariablerExempel: Vi vill definiera en hög matematiska konstanter och samla ihop dessa i en Exempel: Vi vill definiera en hög matematiska konstanter och samla ihop dessa i en gemensam klass. gemensam klass.

För enkelhetens skull vill vi nu endast skapa två konstanter: värdet för pi och jordens För enkelhetens skull vill vi nu endast skapa två konstanter: värdet för pi och jordens dragningskraft. dragningskraft.

Då skulle vi definiera en ny klass, Då skulle vi definiera en ny klass, KonstanterKonstanter, som innehåller två , som innehåller två klassvariablerklassvariabler: : pipi och och gravitation:gravitation:

class Konstanterclass Konstanter //definierar en ny klass som heter Konstanter//definierar en ny klass som heter Konstanter{{

static float pi = 3.14;static float pi = 3.14;static float gravitation = 9.8;static float gravitation = 9.8;

}}

Page 7: INTRODUKTION TILL PROGRAMMERING

77 Jonny Karlsson 8.1.2008Jonny Karlsson 8.1.2008

KlassvariablerKlassvariablerObservera nyckelordet Observera nyckelordet static static framför variablerna i klassen framför variablerna i klassen Konstanter. Konstanter.

Nyckelordet static berättar att variabeln skall vara statisk vilket betyder att det endast kan Nyckelordet static berättar att variabeln skall vara statisk vilket betyder att det endast kan förekomma en förekomma en instans instans eller en ”kopia” av denna variabel (mera om instanser kommer eller en ”kopia” av denna variabel (mera om instanser kommer senare). senare).

En statisk variabel brukar man kalla för En statisk variabel brukar man kalla för klassvariabel.klassvariabel.

En statisk variabel i en klass kommer man åt direkt via klassnamnet och m.h.a En statisk variabel i en klass kommer man åt direkt via klassnamnet och m.h.a punktnotation: punktnotation: klassnamn.variabelnamn. klassnamn.variabelnamn.

Punktteknet som används här kallas i Java för Punktteknet som används här kallas i Java för syftningsoperatorsyftningsoperator

Page 8: INTRODUKTION TILL PROGRAMMERING

88 Jonny Karlsson 8.1.2008Jonny Karlsson 8.1.2008

KlassvariablerKlassvariabler

public class programpublic class program{{

public static void main(String args[ ])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 är: ” + Konstanter.pi);System.out.println(”Värdet för pi gravitationen är: ” + Konstanter.gravitation);System.out.println(”Värdet för pi gravitationen är: ” + Konstanter.gravitation);}}

}}

class Konstanterclass Konstanter //definierar en ny klass som heter Konstanter//definierar en ny klass som heter Konstanter{{

static float pi = 3.14;static float pi = 3.14;static float gravitation = 9.8;static float gravitation = 9.8;

}}

Page 9: INTRODUKTION TILL PROGRAMMERING

99 Jonny Karlsson 8.1.2008Jonny Karlsson 8.1.2008

KlassmetoderKlassmetoderMetoder kan liksom variabler vara markerade som Metoder kan liksom variabler vara markerade som static. static.

Att en metod är statisk betyder att det bara finns ett enda exemplar Att en metod är statisk betyder att det bara finns ett enda exemplar av just denna metod (mera om detta senare). av just denna metod (mera om detta senare).

En statisk metod kallas för En statisk metod kallas för klassmetod. klassmetod.

Page 10: INTRODUKTION TILL PROGRAMMERING

1010 Jonny Karlsson 8.1.2008Jonny Karlsson 8.1.2008

KlassmetoderKlassmetoder

Exempel: Vi vill programmera en mängd olika metoder som beräknar arean av olika typer 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. 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:För enkelhetens skull gör vi nu endast 3 metoder: En metod som beräknar arean av en:kvadratkvadratrektangelrektangelCirkelCirkel

Vi behöver då kanske en konstant för pi (klassvariabel) och så behöver vi tre kVi behöver då kanske en konstant för pi (klassvariabel) och så behöver vi tre klassmetoder: Se nästa sida lassmetoder: Se nästa sida

Page 11: INTRODUKTION TILL PROGRAMMERING

1111 Jonny Karlsson 8.1.2008Jonny Karlsson 8.1.2008

KlassmetoderKlassmetoderclass FigurAreaclass FigurArea{{

static float pi = 3.14;static float pi = 3.14;

static float kvadrat(float bas)static float kvadrat(float bas){{return bas*bas;return bas*bas;}}

static float rektangel(float bas, float hojd)static float rektangel(float bas, float hojd){{return bas*hojd;return bas*hojd;}}

static float cirkel(float radie)static float cirkel(float radie){{return 2*pi*radie;return 2*pi*radie;}}

} }

Page 12: INTRODUKTION TILL PROGRAMMERING

1212 Jonny Karlsson 8.1.2008Jonny Karlsson 8.1.2008

KlassmetoderKlassmetoderEn klassmetod kommer man från en annan klass åt på samma sätt som en klassvariabel 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 dvs. direkt via klassnamnet och m.h.a punktnotationpunktnotation: Klassnamn.metodNamn: Klassnamn.metodNamn

......

......System.out.println(”Arean för en cirkel med radien 4.5 ar ” + FigurArea.cirkel(4.5));System.out.println(”Arean för en cirkel med radien 4.5 ar ” + FigurArea.cirkel(4.5));........

För ett enhetligt exempel se: exempelXFör ett enhetligt exempel se: exempelX

Page 13: INTRODUKTION TILL PROGRAMMERING

1313 Jonny Karlsson 8.1.2008Jonny Karlsson 8.1.2008

KlassmetoderKlassmetoderVi har nästan under hela kursens gång använt oss av klassmetoder utan att vi vetat om Vi har nästan under hela kursens gång använt oss av klassmetoder utan att vi vetat om det!!!det!!!

T.ex. Metoden T.ex. Metoden readInt()readInt() som vi använt för att läsa in heltal från tangentbordet är en som vi använt för att läsa in heltal från tangentbordet är en klassmetod i klassen klassmetod i klassen inputinput. Därför har vi anropat den så här: . Därför har vi anropat den så här: input.readInt()input.readInt()

Studera källkoden för input klassen Studera källkoden för input klassen härhär. .