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 Ð bet een den - vad det kan gšra, eller utsšttas fšr Ett bankkonto Ð har konto nummer Ð har saldo Ð insšttningar till Ð uttag frœn 1 2 SparKonto.java 1 public class SparKonto double saldo; public SparKonto(double startsaldo) saldo = startsaldo; }// constructor SparKonto public void ins(double belopp) saldo = saldo + belopp; Out.println(belopp + " insatt."); }// method ins É É public void uttag(double belopp) SparKonto.java 2 if (saldo >= belopp) saldo = saldo - belopp; Out.println(belopp + " uttaget."); } elseout.println(ósœ mycket kan man inte ta ut."); }// method uttag public double getsaldo() return saldo; }// method getsaldo } // class SparKonto 3 4 class Konton public static void main (String[] args) Konton.java SparKonto jan = new SparKonto (00.00); SparKonto eva = new SparKonto (1000.00); Kšrningen... Out.println ("Jan's saldo: " + jan.getsaldo()); jan.ins (100.00); Out.println ("Jan's saldo: " + jan.getsaldo()); jan.uttag (7.00); Out.println ("Jan's saldo: " + jan.getsaldo()); Out.println ("Eva's saldo: " + eva.getsaldo()); eva.ins (700.00); Out.println ("Eva's saldo: " + eva.getsaldo()); eva.uttag (2000.00); Out.println ("Eva's saldo: " + eva.getsaldo()); eva.uttag (1299.62); Out.println ("Eva's saldo: " + eva.getsaldo()); } // method main } // class Konton 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 objekt frœn en klass: SparKonto eva = new SparKonto (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 SparKonto : SparKonto eva = new SparKonto (1000.00); Initiering i tvœ steg: Objekt referenser SparKonto eva; eva = new SparKonto (1000.00); Éeller... SparKonto eva = new SparKonto (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 nextint všrdemšngden fšr datatypen int Slumptalsfrš i konstruktorn Random slump = new Random(); eller egetfröavtypenlong Random slump = new Random(xx); int kast = Math.abs (slump.nextint()) % 6 + 1 13 14 RŠtt talomrœde Ut tryck VŠrden Math.abs (slump.nextint()) % 10 + 1 1 to 10 Math.abs (slump.nextint()) % 101 0 to 100 Math.abs (slump.nextint()) % 11 + 20 20 to 30 Math.abs (slump.nextint()) % 11 - - to 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 1 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 Efter num1 num2 12 num1 num2 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 alias 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 lokala 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 2 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 initialisera 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
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 73.21 account_number 4113787 balance 9211.84 31 32 Inkapsling 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 Abstraktion Objekten kan ses som svarta lœdor eva ins uttag getsaldo... 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 protected : kan nœs šverallt i paketet private : kan nœs inom klassen utan modifierare : kan nœs šverallt i paketet Appendix F 3 36 6
Modifierare Klasser och objekt Se Tunes.java AllmŠn regel : inga attribut public music Metoder som manipulerar objektet public Ð Kallas service met oder 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 In.readFloat() Ð egendefinierad statisk metod 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 Out.println () Ð egendefinierad statisk metod 41 42 7
Overloading println (String s) println Samma namn fšr flera metoder Signaturen = 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 public SparKonto(double startsaldo) saldo = startsaldo; }// konstruktor SparKonto verlagrade metoder public SparKonto(int kontonr, double startsaldo) kontonummer = kontonr; saldo = startsaldo; }// konstruktor SparKonto 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 4 46 this StringTokenizer Objektet kan referera till sig sjšlv Skicka sig sjšlv som parameter t.ex. product_buyer.order_stock(this) 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 48 8