Objekt och klasser - Introduktion Objekt Ð Begreppet objekt Ð Hur klasser anvšnds fšr att skapa objekt Ð Fšr-definierade klasser Ð Metoder och parameteršverfšring Ð Definiera klasser Ð Modifierare Ð Statiska variabler och metoder Ð overloading Ett objekt har: Ð tillstœnd - egenskaper Ð beteen den - v ad det kan gšra, eller ut sšttas fšr Ett bankkonto Ð har konto numm er Ð har saldo Ð insšttningar till Ð uttag frœn 1 2 class Spar_Konto double saldo; public Spar_Konto(double start_saldo) saldo = start_saldo; }// constructor Spar_Konto public void ins(double belopp) saldo = saldo + belopp; Out.println(belopp + " insatt."); }// method ins É Spar_Konto 1 É public void uttag(double belopp) Spar_Konto 2 if (saldo >= belopp) saldo = saldo - belopp; Out.println(belopp + " uttaget."); } elseout.println(ósœ mycket kan man inte ta ut."); }// method uttag public double get_saldo() return saldo; }// method get_saldo } // class Spar_Konto 3 4 class Konton public static void main (String[] args)... Spar_Konto jan = new Spar_Konto (500.00); Spar_Konto eva = new Spar_Konto (1000.00); Out.println ("Jan's saldo: " + jan.get_saldo()); jan.ins (100.00); Out.println ("Jan's saldo: " + jan.get_saldo()); jan.uttag (75.00); Out.println ("Jan's saldo: " + jan.get_saldo()); Out.println ("Eva's saldo: " + eva.get_saldo()); eva.ins (700.00); Out.println ("Eva's saldo: " + eva.get_saldo()); eva.uttag (2000.00); Out.println ("Eva's saldo: " + eva.get_saldo()); eva.uttag (1299.62); Out.println ("Eva's saldo: " + eva.get_saldo()); } // method main } // class Konton Konton Kšrningen 5 6 1
Klasser En klass Šr en mall fšr ett objekt Modell/mšnster efter vilket objekt skapas En klass definierar metoder och information knutna till objekt Att skapa ett objekt kallas instantiering, Skapa Objekt Operatorn new skapar ett o bje kt frœn en klass: Spar_Konto eva = new Spar_Konto (1000.00); Initialiseras till det objekt som skapas av new Objektet genereras av aktuell konstruktor 7 8 Konstruktorer Speciell metod som anv. fšr att skapa objekt Samma namn som klassen Kan ta parametrar, som ofta initialiserar attribut i objektet Konstruktorn Spar_Konto : Spar_Konto eva = new Spar_Konto (1000.00); Initiering i tvœ steg: Objekt referenser Spar_Konto eva; eva = new Spar_Konto (1000.00); Éeller... Spar_Konto eva = new Spar_Konto (1000.00); Metoderna till existerande objekt nœs med punktoperatorn: jan.uttag (100.00); 9 10 Klassen String Klassen String TeckenstrŠngar Šr objekt av klassen String String namn = new String (ÓPippi LŒngstrump"); Alternativ fšr klassen String : String name = ÓPippi LŒngstrump"; Objekt av klassen String kan aldrig Šndras Enstaka tecken i en stršng nœs med index Fšrsta index = 0 Klassen String definieras i java.lang Bra metoder i klassen String Se Carpe_Diem.java (s.126) 11 12 2
HjŠlpmetoder till String String temp,namn; int lgd,index; namn = new String (ÓPippi LŒngstrump"); lgd = namn.length(); System.out.println(Ó3:e=Ó + namn.charat(2)); temp = namn.tolowercase(); index = namn.indexof(õœõ); if (temp.equals(namn)) System.out.println(ÓLika!Ó); if (temp == namn)... Klassen Random Klassen Random tillhandahœller en slumptalsgenerator Metoden nextint ger ett slumptal i všrdemšngden fšr datatypen int Skalas och skiftas Se Flip.java (s.130) 13 14 Uttryck Math.abs (rand.nextint()) % 6 + 1 Math.abs (rand.nextint()) % 10 + 1 Math.abs (rand.nextint()) % 101 Math.abs (rand.nextint()) % 11 + 20 Math.abs (rand.nextint()) % 11-5 Exempel VŠrden 1 to 6 1 to 10 0 to 100 20 to 30-5 to 5 Referenser En referens till ett objekt Šr en referens till objektets minnesadress Chess_Piece bishop1 = new Chess_Piece(); bishop1 All interaktion sker via referens variabel Tilldelning pœverkas 15 16 Tilldelning Referens tilldelning AllmŠnt tas en kopia av ett všrde och lagras i en variabel Fšr primitiva typer: num2 = num1; Fšre num1 num2 5 12 Efter num1 num2 5 5 Fšr objekt referenser, kopieras minnesadressen: bishop2 = bishop1; Fšre Efter bishop1 bishop2 bishop1 bishop2 17 18 3
Alias Garbage Collection TvŒ eller flera referenser till samma objekt kallas aliases Bara en kopia av objektet Allt som gšrs via en referens pœverkar alla alias Bra men anvšnds med eftertanke Om alla referenser tas bort kan objektet inte lšngre nœs Objektet oanvšndbart Automatisk garbage collection Programmerarens ansvar i andra sprœk 19 20 Syntax fšr metoder: Metoder retur-typ metod-namn ( parameter-lista ) } sats-lista int third_power (int number) int cube; cube = number * number * number; return cube; } // metod third_power Exempel 21 22 Metoder Kan innehœlla lokala deklarationer & exekverbara satser Lokalt deklarerade variabler Metoden third_power utan lokal variabler : int third_power (int number) return number * number * number; return - satsen I metod-huvudet anges returvšrdets typ Om inget všrde returneras anges void Satsen return anger vilket všrde som returneras Typreglerna mœste fšljas } // metod third_power 23 24 4
Programflšdet Metoden main anropas av systemet nšr bytecoden ges till interpretatorn terhoppet sker till anropsstšllet main metod1 metod2 Parametrar En metod kan ta noll eller flera parametrar Varje parameter specificeras med typ och namn formella parametrar metod1(); metod2(); aktuell parametrar 25 26 Parameteršverfšring Syntax : Definiera klasser Kopia av všrdet till den formella parametern BŒde primitiva typer och objektreferenser NŠr en referens šverfšrs blir den formella parametern ett alias fšr aktuell parameter Se Parameter_Passing.java class klass-namn deklarationer konstruktorer metoder } Attribut/variabler, konstruktorer och metoder kallas medlemmar 27 28 class Account Definiera klasser Konstruktorer int account_number; double balance; Account (int account, double initial) account_number = account; balance = initial; } // konstruktor Account En konstruktor : Ð Fšr att initialis era nytt objekt Ð Samma namn som klassen Ð Returnerar inget všrde, void anges inte void deposit (double belopp) balance = balance + belopp; } // metod deposit Bra att alltid definiera en konstruktor } // klass Account 29 30 5
Klasser och objekt Klassen definierar data typen fšr ett objekt, men lagrar inga všrden Varje objekt har eget minnesutrymme Variabler i en klass kallas instans variabler Alla metoder i en klass har tillgœng till attributen i klassen Metoder delas i klassen Klass int account_number double balance Klasser och objekt Objekt account_number 2908371 balance 573.21 account_number 4113787 balance 9211.84 31 32 Inkapsling Ett objekt ska klara sig sjšlv - all manipulation via metoderna Gšr det svœrt fšr ÓutanfšrstŒendeÓ OkŠnt fšr anvšndaren hur saker gšrs Ett sštt att abstrahera Objekten kan ses som svarta lœdor toms_savings deposit withdraw add_interest produce_statement Inkapsling anvšndare 33 34 Modifierare Modifierare Inkapsling gšrs med visibility modifiers En modifierare Šr ett reserverat ord final definierar konstant 3 modifierare: public, private och protected public : kan nœs šverallt ifrœn private : kan nœs inom klassen utan modifierare : kan nœs šverallt i paketet Appendix F 35 36 6
Modifierare Klasser och objekt Se Tunes.java AllmŠn regel : inga attribut public music Metoder som manipulerar objektet public Ð Kallas s ervice metoder add_cds print main HjŠlp metoder inte public 37 38 static Statiska attribut static - bœde attribut och metoder Associerar med klassen snarare Šn objektet Avsteg ifrœn objekts-tanken Normalt har varje objekt eget minnesutrymme static gšr variabeln gemensam fšr alla objekt i klassen private static int count; Kallas ibland klass variabler 39 40 Statiska metoder Metoder anropas via ett objekt Om metoden Šr statisk anropas den med klassnamnet Exempel : klassen Math i java.lang innehœller statiska matematiska operationer Math.abs (num) -- absolutbeloppet Math.sqrt (num) -- kvadratrot Statiska metoder main Šr statisk; anropas av systemet utan att nœgot objekt skapas Kan ej referera instansvariabler Kan referera statiska variabler eller lokala variabler Statiska metoder kallas ibland klass metoder Appendix O Math.random () -- slumptal i intervallet 0.0-1.0 41 42 7
Overloading println (String s) println Samma namn fšr flera metoder Signaturen baseras pœ parametrarnas antal, typ och ordning Signaturen mœste vara unik Returtypen Šr inte del av signaturen println (int i) println (double d) etc. System.out.println ("The total is:"); System.out.println (total); Olika versioner av metoden println 43 44 Flera konstruktorer verladdade metoder Account (int account) account_number = account; balance = 0.0; } // konstruktor Account Account (int account, double initial) account_number = account; balance = initial; } // konstruktor Account Se Purchase_Power.java Manager name "Jim" Stock_Item name "beans" product_buyer Purchase_Power jim bob beans franks Ett exempel Manager name "Bob" Stock_Item name "franks" product_buyer 45 46 StringTokenizer Klassen StringTokenizer delar in stršngar i tokens Tokens separeras av blank, tab, vagnretur och ÓnyradÓ Klassen StringTokenizer definieras i java.util Se Int_Reader.java (s.129) 47 8