Upload
derek-alexander
View
51
Download
0
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
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
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.
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).
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.
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. .
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;
}}
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
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;
}}
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.
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
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;}}
} }
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
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. .