GRUNDKURS I PROGRAMMERING MED JAVA Frelsning 8 15

  • Slides: 15
Download presentation
GRUNDKURS I PROGRAMMERING MED JAVA Föreläsning 8 (15. 1. 2008) INNEHÅLL: -Att definiera egna

GRUNDKURS I PROGRAMMERING MED JAVA Föreläsning 8 (15. 1. 2008) INNEHÅLL: -Att definiera egna klasser i skilda filer -Instanser av klasser -Instansvariabler -Instansmetoder Jonny Karlsson 15. 1. 2008 1

Att definiera egna klasser i skilda filer Exempel: Vi vill definiera en biblioteksklass som

Att definiera egna klasser i skilda filer Exempel: Vi vill definiera en biblioteksklass som innehåller matematiska konstanter vilka vi vill komma åt från en annan klass class Konstanter //definierar en ny klass som heter Konstanter { static float pi = 3. 14; static float gravitation = 9. 8; } Denna klass sparas i en egenfil: konstanter. java Observera att denna fil behöver nödvändigtvis inte heta just konstanter. java eftersom den inte är en huvudklass och inte innehåller en huvudmetod (main) Jonny Karlsson 15. 1. 2008 2

Att definiera egna klasser i skilda filer Nästa steg är att kompilera ”biblioteksfilen” konstanter.

Att definiera egna klasser i skilda filer Nästa steg är att kompilera ”biblioteksfilen” konstanter. java vi får en fil klassfil: konstanter. class Nu är konstanterna i konstanter. class åtkomliga från vilken som helst annan klass vars klassfil finns lagrad i samma katalog som konstanter. class 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); } } Jonny Karlsson 15. 1. 2008 3

Instanser av klasser Man kan utnyttja klasser som samling av metoder och egenskaper =

Instanser av klasser Man kan utnyttja klasser som samling av metoder och egenskaper = biblioteksklasser (detta gick vi igenom förra gången). Man kan också använda klasser för att definiera en typ av objekt, t. ex. egenskaper hos en person, bil, båt osv. . . Ett objekt som hör till en viss klass kallas för en instans eller ett objekt av klassen. En instans eller ett objekt av en klass är i praktiken en variabel som är av typen en viss klass. Jonny Karlsson 15. 1. 2008 4

Instanser av klasser Exempel: String s; En ny variabel s deklareras ovan som är

Instanser av klasser Exempel: String s; En ny variabel s deklareras ovan som är av typen String är en klass som definierar strängar och s blir nu ett nytt objekt eller en instans av klassen String är ett exempel på en klass som finns färdigt definierad i Java. Jonny Karlsson 15. 1. 2008 5

Instanser av klasser Exempel 2: String s, s 2; Två nya variablerl s och

Instanser av klasser Exempel 2: String s, s 2; Två nya variablerl s och s 2 deklareras ovan som är av typen String. s och s 2 är nu två skilda objekt / instanser av klassen String. s och s 2 innehåller alla de egenskaper (variabler och metoder) som finns i klassen String s och s 2 är två enskilda variabler av typen String Jonny Karlsson 15. 1. 2008 6

Instansvariabler och instansmetoder En klass kan innehålla bl. a. klassvariabler, instansvariabler, klassmetoder och Instansmetoder.

Instansvariabler och instansmetoder En klass kan innehålla bl. a. klassvariabler, instansvariabler, klassmetoder och Instansmetoder. Förra gången jobbade vi med klasser som innehöll klassvariabler och klassmetoder Nu ska vi gå igenom instansvariabler och instansmetoder Jonny Karlsson 15. 1. 2008 7

Instansvariabler Exempel: Vi behöver ett program som hanterar olika egenskaper av en person. Dessa

Instansvariabler Exempel: Vi behöver ett program som hanterar olika egenskaper av en person. Dessa egenskaper kan för enkelhetens skull nu vara endast födelseår och namn. Då skulle vi deklarera en ny klass för människa med två instansvariabler födelseår (int) och namn (String): class Person { int fodelsear; String namn; } //definierar en ny klass som heter Person //instansvariabel Observera att variablerna fodelsear och namn INTE är statiska Jonny Karlsson 15. 1. 2008 8

Instansvariabler Att variablerna fodelsear och namn INTE är statiska betyder att det kan existera

Instansvariabler Att variablerna fodelsear och namn INTE är statiska betyder att det kan existera flera olika exemplar / kopior av dem som är totalt oberoende av varandra. Vi kan därför av klassen Person skapa flera olika instanser / objekt: Person p 1 = new Person(); //skapar ett nytt objekt p 1 av klassen Person p 2 = new Person(); //skapar ett nytt objekt p 2 av klassen Person p 1 och p 2 är nu objekt / instanser av klassen Person. I detta fall betyder det i praktiken att variablerna p 1 och p 2 innehåller två egenskaper: födelseår och namn Jonny Karlsson 15. 1. 2008 9

Instansvariabler Observera också att eftersom variablerna i klassen Person inte är statiska kan vi

Instansvariabler Observera också att eftersom variablerna i klassen Person inte är statiska kan vi inte komma åt dessa variabler direkt via klassnamnet på samma sätt som klassvariabler. Vi måste i stället skapa ett objekt / en instans av klassen Person och sen kommer vi åt instansvariablerna via objektet m. h. a punktnotation: Person p 1 = new Person(); //skapar ett nytt objekt p 1 av klassen Person p 2 = new Person(); //skapar ett nytt objekt p 2 av klassen Person p 1. fodelsear; p 1. namn; p 2. fodelsear; p 2. namn; Jonny Karlsson 15. 1. 2008 10

Instansvariabler public class program { public static void main(String args[ ]) { Person p

Instansvariabler public class program { public static void main(String args[ ]) { Person p 1 = new Person(); Person p 2 = new Person(); p 1. fodelsear = 1979; p 1. namn = ”Kalle”; p 2. fodelsear = 1983 p 2. namn = Ville; System. out. println(p 1. namn+” ar fodd ”+p 1. fodelsear+” och ”+p 2. namn+” ar fodd ”+p 2. fodelsear); } } class Person { int fodelsear; String namn; } //definierar en ny klass som heter Person //instansvariabel Jonny Karlsson 15. 1. 2008 11

Instansmetoder Som vi tidigare konstaterat, använder man instansvariabler för att beskriva eganskaper hos en

Instansmetoder Som vi tidigare konstaterat, använder man instansvariabler för att beskriva eganskaper hos en viss instans / ett visst objekt av en viss klass. Ett objekt/en instans av en klass har normalt inte endast olika tillstånd utan även ett visst beteende. M. a. o instanser av klasser kan ofta även utföra vissa operationer. Dessa operationer definieras som instansmetoder. En instansmetod är helt enkelt en helt vanlig metod som definieras inne i en klassdefinition. En metod definierad inne i en klass som inte är markerad som static, är en instansmetod. Jonny Karlsson 15. 1. 2008 12

Instansmetoder Exempel: Vi vill definiera en klass som innehåller egenskaper för en bil: märke

Instansmetoder Exempel: Vi vill definiera en klass som innehåller egenskaper för en bil: märke och Årsmodell. Vi vill också att ett objekt / en instans som skapas av klassen bil skall ha två beteenden: - Beteende 1 – Visa bilens märke och årsmodell - Beteende 2 – Be användaren mata in märke och årsmodell för en viss bil Jonny Karlsson 15. 1. 2008 13

Instansmetoder class Bil { int arsmodell; String marke; //instansvariabel void visa. Egenskaper() //instansmetod {

Instansmetoder class Bil { int arsmodell; String marke; //instansvariabel void visa. Egenskaper() //instansmetod { System. out. println(”Marke: ” + marke); System. out. println(”Arsmodell: ” + arsmodell); } void inmata. Egenskaper() //instansmetod { System. out. print(”Ge marke: ”); marke = input. read. String(); } } System. out. print(”Ge arsmodell: ”); arsmodell = input. read. Int(); Jonny Karlsson 15. 1. 2008 14

Instansmetoderna visa. Egenskaper och inmata. Egenskaper är nu alltså instansmetoder (inte statiska) som är

Instansmetoderna visa. Egenskaper och inmata. Egenskaper är nu alltså instansmetoder (inte statiska) som är till för att visa och mata ín märke och årsmodell för en VISS BIL. Dessa metoder kan därför inte anropas direkt via klassnamnet som klassmetoder utan Måste anropas via en instans / ett objekt av klassen Bil: Bil b 1 = new Bil(); Bil b 2 = new Bil(); b 1. inmata. Egenskaper(); b 2. inmata. Egenskaper(); b 1. visa. Egenskaper(); b 2. visa. Egenskaper(); Mera exempel hittar du på kurshemsidan under ”agenda och material”. Jonny Karlsson 15. 1. 2008 15