Föreläsning 5 Objekt Klasser Konstruktorer Metoder Minnesbilder av objekt
Klasser De primitiva datatyperna beskriver enkla värden. För att beskriva sammansatta data använder man klasser. En klass fungerar som en mall för objekt. Att skapa ett objekt kallas instansiering (objektet är en instans av klassen). Alla objekt ur klassen har samma metoder och variabler (men inte samma värden på variablerna).
Objekt Ett objekt har –variabler –metoder T ex har ett Rectangle-objekt –variabeln width –variabeln height –metod för att växa: grow() –metod för att hämta läget: getLocation()
Skapa objekt med new I satsen nedan skapas ett nytt objekt: Rectangle bred = new Rectangle(40,15); bred är en referensvariabel som håller reda på var i minnet objektet lagrats. bred Rectangle Rectangle-objekt width height int 40 15
Konstruktor En konstruktor används för att ge objektets variabler värden när objektet skapas. Konstruktorn är en metod som har samma namn som klassen. Rectangle bred = new Rectangle(40,15); En klass kan ha flera olika konstruktorer. Rectangle bred = new Rectangle(); Rectangle bred=new Rectangle(0,0,40,15);
Hur skriver man en egen klass? I klassen deklarerar man: –Variabler –Konstruktorer –Metoder Alla satser (t ex tilldelning, utskrift, beräkning) måste ligga inuti någon av metoderna, eller i konstruktorn.
Variabler i en klass Tre olika sorters variabler förekommer: Instansvariabler –Har olika värden i olika objekt (instanser) Klassvariabler –En gemensam variabel för alla objekt ur klassen –Deklareras med static Lokala variabler –Deklareras inuti metoder och existerar bara där
Exempel Två instansvariabler class Bil { String färg; double pris; En parameter och en lokal variabel double specialpris(int rabattprocent) { double rabattfaktor;
Deklarera en konstruktor Konstruktorn har samma namn som klassen. Efter namnet skrivs en parentes med formella parametrars typ och namn. Parametrarna brukar användas för att ge startvärden till klassens instansvariabler. Normalt består en konstruktor av tilldelningssatser som ger instansvariablerna värden.
Exempel Bil(String nyFärg, double nyPris) { färg = nyFärg; pris = nyPris; } // konstruktorn Bil
Deklarera en metod Metoddeklarationshuvud –static för klassmetod –Returvärdets typ/klass eller void –Metodens namn –Formella parametrars typ/klass och namn,inom () Metodens kropp, inom {} –Deklaration av lokala variabler –Satser –Retursats (ej för void-metod). Det värde som returneras måste vara av samma typ som angavs i början av huvudet.
Exempel double specialpris(int rabattprocent) { double rabattfaktor; rabattfaktor = 1.0-rabattprocent/100.0; return pris*rabattfaktor; } // metoden specialpris
class BerrasBegBilar { public static void main(String[] args) { Bil fiesta = new Bil("röd",33000); Bil citroen = new Bil("gul",20000); fiesta.reklam(); citroen.reklam(); }//metoden main } //Huvudklassen BerrasBegBilar class Bil { // Här deklareras instansvariabler och klassvariabler String färg; double pris; // Här deklareras konstruktorn Bil(String nyFärg, double nyPris) { färg = nyFärg; pris = nyPris; } // konstruktorn Bil // Här deklareras två metoder, reklam() och specialpris() void reklam() { System.out.println("En läckert " + färg + " bil"); System.out.println("som kostat " + pris); } // metoden reklam double specialpris(int rabattprocent) { double rabattfaktor = 1.0-rabattprocent/100.0; return pris*rabattfaktor; } // metoden specialpris } // klassen Bil
fiesta Bil Bil-objekt färg pris double String röd String-objekt