1 / 15

GRUNDKURS I PROGRAMMERING MED JAVA

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 . Att definiera egna klasser i skilda filer.

Télécharger la présentation

GRUNDKURS I PROGRAMMERING MED JAVA

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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

  2. 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

  3. 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

  4. 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

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

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

  7. 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

  8. 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 //definierar en ny klass som heter Person { int fodelsear; //instansvariabel String namn; //instansvariabel } Observera att variablerna fodelsear och namn INTE är statiska Jonny Karlsson 15.1.2008

  9. 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 p1 = new Person(); //skapar ett nytt objekt p1 av klassen Person Person p2 = new Person(); //skapar ett nytt objekt p2 av klassen Person p1 och p2 är nu objekt / instanser av klassen Person. I detta fall betyder det i praktiken att variablerna p1 och p2 innehåller två egenskaper: födelseår och namn Jonny Karlsson 15.1.2008

  10. 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 p1 = new Person(); //skapar ett nytt objekt p1 av klassen Person Person p2 = new Person(); //skapar ett nytt objekt p2 av klassen Person p1.fodelsear; p1.namn; p2.fodelsear; p2.namn; Jonny Karlsson 15.1.2008

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

  12. 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

  13. 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: • Beteende1 – Visa bilens märke och årsmodell • Beteende2 – Be användaren mata in märke och årsmodell för en viss bil Jonny Karlsson 15.1.2008

  14. Instansmetoder class Bil { int arsmodell; //instansvariabel String marke; //instansvariabel void visaEgenskaper() //instansmetod { System.out.println(”Marke: ” + marke); System.out.println(”Arsmodell: ” + arsmodell); } void inmataEgenskaper() //instansmetod { System.out.print(”Ge marke: ”); marke = input.readString(); System.out.print(”Ge arsmodell: ”); arsmodell = input.readInt(); } } Jonny Karlsson 15.1.2008

  15. Instansmetoder Instansmetoderna visaEgenskaper och inmataEgenskaper ä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 b1 = new Bil(); Bil b2 = new Bil(); b1.inmataEgenskaper(); b2.inmataEgenskaper(); b1.visaEgenskaper(); b2.visaEgenskaper(); Mera exempel hittar du på kurshemsidan under ”agenda och material”. Jonny Karlsson 15.1.2008

More Related