Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305 Klass Object, instans av klass public/private Klassvariabler och klassmetoder 1
Array och ArrayList Arrayer och ArrayList är till för att innehålla en massa värde Eftersom alla värde har ett index så passar de bra med slingor. Man ska vara försiktig och inte missbruka arrayer för att hålla samman två värde. 2
Klass och instans (objekt) En klass är en mall för ett objekt t.ex. bil, konto Ett objekt är en instans av en klass t.ex. den röda bilen, mitt lönekonto att skapa objekt i java: kännetecken (oftast): new t.ex. Scanner stdin = new Scanner(... undantag: i java API den enda klass som inte behöver new för att skapa ett objekt är klassen String och wrapper klasser. t.ex. String namn = Vahid String namn = new String( Vahid ); 3
Instansvariabler och instansmetoder class Person { String name; byte age; String mailaddress; } Deklaration av instansvariabler public Person(String n, byte a,string m){ name=n; age=a; mailaddress=m; } public String getname(){ return name; } public byte getage(){ return age; } public String getmailaddress(){ return mailaddress; } Deklaration av konstruktör Deklaration av instansmetoder 4
2.16) Fördela följande till klasser och objekt a) En bok b) Boken Java från grunden c) Min kopia av Java från grunden d) Min hund e) Bilden av min hund medan han biter postmannen f) En bil g) En Chrysler a) b) c) d) e) f) g) 5
Referenser Alla variabler som används för att komma åt ett objekt är referenser. En referensvariabel innehåller inga värde däremot adressen till någon minnesutrymme där instansen befinner sig. exempel: String str = hej ; //str är en referens variabel som pekar på en instans av String. men int tal = 2; // tal är en variabel som har värdet 2. En referens kan endast referera (peka) till en instans åt gången alltså inte mer än en instans. En instans kan refereras (pekas) av många referenser (pekare). 6
Följande kan alltså aldrig hända refvar Ett objekt Ett annat Xobjekt 7
kod Minnesbild String str1; str1 = prgi05 ; str1 null String str2; str2 = str1; str2 null prgi05 int tal = 30; int tal2 = tal1; tal 30 tal2 30 8
Programkodens uppbyggnad Deklaration av klass { Deklaration av variabel1 (klassvariabler) Deklaration av variabel2 (instansvariabler) Flera instansvariabler eller klassvariabler kan deklareras här Deklaration av metode1 (){ deklaration av lokala variabler... } Deklaration av metode2 (){ deklaration av lokala variabler... } } Flera instansmetoder, klassmetoder och konstruktorer kan deklareras här 9
Variabler En variabel kan vara någon av följande: Klassvariabel Instansvariabel Lokalvariabel 10
Kännetecken för variabler Kännetecken för en klassvariabel är: 1. deklareras med nyckelordet static 2. deklareras alltid utanför alla metoder men inom klassen Kännetecken för en instansvariabel är: 1. deklareras INTE med nyckelordet static 2. deklareras alltid utanför alla metoder men inom klassen Kännetecken för en lokalvariabel är: 1. deklareras INTE nyckelordet static 2. deklareras alltid inom en metod eller som formell parameter 11
Variabler instansvariabler klassvariabler lokala variabler deklareras 1.utanför metoder 2. utan static 1.utanför metoder 2.med static 1.inuti en metod 2.utan static 12
Metoder En metod kan antingen vara en Klassmetod Instansmetod Konstruktor 13
Kännetecken för metoder Kännetecken för en klassmetod är att: 1. deklareras med nyckelordet static 2. har en returtyp Kännetecken för en instansmetod är att: 1. deklareras INTE med nyckelordet static 2. har en returtyp Kännetecken för en konstruktor är att: 1. deklareras INTE med nyckelordet static 2. har ingen returtyp och har samma namn som klassen. 14
Metod Klassmetod Instansmetod Konstruktor deklareras med static med returtyp utan static med returtyp utan static utan returtyp samma namn som klassen 15
public och private private globala variabler och metoder som man bara kommer åt i samma klass. private double pris; public globala variabler och metoder som man kommer åt även från andra klasser. public void reklam(); En väluppfostrad programmerare deklarerar alla sina instansvariabler som private! 16
Klassmetoder Normalt anropas alltid en metod via ett objekt (en instans av klassen). Color röd = new Color(255,0,0); Color mörkröd = röd.darker(); Om en metod deklareras med static kan den anropas direkt från klassen - utan att man behöver skapa något objekt. double x = Math.sqrt(17); En klassmetod kan använda sig av klassvariabler men inte instansvariabler. 17
Static när och varför? nokia PC för 5000 BMW P-HUS limpa 18
Static när och varför? nokia PC för 5000 BMW P-HUS limpa 19
Static när och varför? nokia PC för 5000 BMW P-HUS limpa 20
Static när och varför? 199 nokia 199 PC för 5000 199 BMW P-HUS 199 limpa 21