ࡱ> )q(`` SF/ 0|DTimes New Roman]<0Wo 0DArialNew Roman]<0Wo 0" DComic Sans MSn]<0Wo 0B0DCourierns MSn]<0Wo 0 1@DCourier NewSn]<0Wo 01 ` .  @n?" dd@  @@``   X (J'  ,*^   Vlmnopqr   7.?       U   00e0e     A@ A1  8c8c     ?1 d0u0@Ty2 NP'p<'p@A)BCD|E?||@8! " , g4BdBd0^ppp0 <4!d!d 0L^<g4/d/d0^p0 p]<4BdBd 0L^<@ ʚ;2Nʚ;<4ddddЁ 0:2___PPT9/ 0? %O =]*  :Exempel: lampa$;$& Light1, Javakodpublic class Light1 { protected boolean isOn; public void turnOn() {isOn = true;} public void turnOff() {isOn = false;} public boolean isOn() {return isOn;} public void toggle() {isOn = !isOn();} public static void main (String args[]) { Light1 light; light = new Light1(); System.out.println(light.isOn()); //ska ge false light.toggle(); System.out.println(light.isOn()); // ska ge true } }&Z<$Exempel: lampa2, med start i on-lge$=... Light2, JavakodPpublic class Light2 { // defultvrde fr isOn kan anges vid deklarationen protected boolean isOn = true; // medlemsmetoderna som frut... public static void main (String args[]) { Light2 light; light = new Light2(); System.out.println(light2.isOn()); //true light.toggle(); System.out.println(light.isOn()); //false } }2QLQ> Klassvariabel F// Klassvariabel anges med static public class Circle { klassvariabel public static double defaultR = 5; vi kan anvnda klassvariabeln fr att tex initiera instanvariabler public double x = 0, y = 0, r = defaultR; konstant (som ej kan ndras) med final public static final double PI = 3.14159265358979323846; }9%C,'E$C+'C     "      A        Q ?Exempel: Light3ypublic class Light3 { /* statisk/klass variabel som delas av alla instanser */ private static boolean defaultOnValue = false; protected boolean isOn = defaultOnValue; //... metoderna som frut public static void main (String args[]) { Light3 light; light = new Light3(); System.out.println(light.isOn()); light.toggle(); System.out.println(light.isOn()); } }rz8Zz@ Konstruktor En konstruktr r en speciell rutin som instansierar en klass I Java har en konstruktor samma namn som klassen Exempel: konstruktorn fr klassen Circle heter Circle() och objekt av klassen skapas med hjlp av den p fljande stt Circle c1 = new Circle(); En konstruktr skrivs p samma stt som en metod public Circle() { } Observera att i Java anges inget returvrde fr en konstruktor utan detta r alltid (underfrsttt) en instans av aktuell klass Detta gr ocks att vi syntaktiskt kan skilja p konstruktorer och andra metoder>1Q>"#@ 1  QL *  %! -9A& konstruktor Skriver vi ingen konstruktor fr klassen s  lter Java oss nd anvnda en konstruktor utan argument fr klassen Det finns dock vissa undantag som vi diskuterar nedan under diskussion om flera konstruktorer Varfr skriva egen konstruktor? Jo, vi vill kontrollera hur ett objekt skapas och se till att dom rtta initieringarna grsLs_ \s_ \! A +!B>Exempel: konstruktor fr Circle som initierar instansvariabler2?6Om vi definierar fljande konstruktor public Circle (){ x = 10; y = 20; r = (x + y) / 2; } Instansierar Circle c = new Circle(); S fr c.x vrdet 10, c.y vrdet 20 och c.r vrdet 15 i samband med instansieringen&Z8Z ZZTZ%&  (    :  CPseudovariabeln this$Fr att referera aktuell instans s kan psedouvariabeln this anvndas Om vi tex vill skicka aktuellt objekt som argument vid en viss medelandesndning gr vi i stil med fljande mottagare.meddelande(this); exempelvis vid utmatning p terminalen System.out.println(this) Om vi explicit vill frtydliga att ett meddelande skickas till aktuellt objekt kan vi skriva this.meddelande(); Vi kan ocks explicit referera objketets instansvariabler, tex this.rFZlZx'xx]ZZ?ZZFl&]   ?V8    &  +   #DFlera konstruktorerMan kan skapa flera konstruktorer fr en viss klass Konstruktrerna skiljer sig t genom olika signatur, dvs olika antal argument eller olika typ p argumenten Tex r fljande olika (samtidiga) konstruktorer mjliga public Klass() {} public Klass(T a) {} public Klass(X a) {} public Klass(A a, B b) {} public Klass(A a, C c) {} Vilken konstruktor som anvnds beror p vilka argument som ges vid instansieringenPZqZSZqR"?   . E*& Flera konstruktorer8    // Klassdefinition med flera konstruktorer public class Circle { // ... attribut som tidigare ... Argumenten kan ha samma namn som instansvariablerna public Circle (double x, double y, double r){ // men d mste vi referera instansvariablerna mha this.IVAR this.x = x; this.y = y; this.r = r;} definition av en konstruktor som tar en annan cirkel som argument public Circle(Circle c){x = c.x; y = c.y; r = c.r;} olika typer av argument ger olika metoder (verlagring) public Circle(double r){this.r = r;} ... }2c4B78,c4,=B8           # 6    A         A        . F*Exempel: Light4 (med def av konstruktorer)+++public class Light4 { /* medlemsmetoderna som frut */ // Vi definierar "egna" konstruktorer public Light4() {isOn = false;} public Light4(boolean bool) {isOn = bool;} public static void main (String args[]) { Light4 light1 = new Light4(); Light4 light2 = new Light4(true); System.out.println("Lampa 1: " + light1.isOn() + ", Lampa 2: " + light2.isOn()); light1.toggle(); light2.toggle(); System.out.println("Lampa 1: " + light1.isOn() + ", Lampa 2: " + light2.isOn()); } }Z!&MIGnKonstruktionen this(& ) fr att anropa annan konstruktor28!$  Ibland har man flera konstruktrer i en klass I mnga fall vill man d anropa en konstruktor frn en annan tex skulle Light4() kunna utnyttja Light4(boolean bool)i fregende exempel Fredelen r att man bttre isolerar ett visst beteende till ett stlle. Om man senare behver ndra ngot s grs det p s f stllen som mjligt I java kan man gra detta genom att anvnda konstruktionen this(& ), tex skulle vi kunna skriva om public Light4() p fljande stt: public Light4() {this(false);} Rtt konstruktor anropas beroende av antal argument och deras typ. OBSERVERA! this(& ) kan bara anvndas en gng per konstruktor och mste st frst!k k ; N@r   ,  + J2Exempel: Light5 (en konstruktor anvnder en annan)(3"3xpublic class Light5 { /* & */ public Light5() {this(false);} public Light5(boolean isOn) {this.isOn = isOn;} public static void main (String args[]) { Light5 light1 = new Light5(); Light5 light2 = new Light5(true); System.out.println("Lampa 1: " + light1.isOn() + ", Lampa 2: " + light2.isOn()); light1.toggle(); light2.toggle(); System.out.println("Lampa 1: " + light1.isOn() + ", Lampa 2: " + light2.isOn()); } }rQHK Exempel: Bookdpublic class Book { protected String title, author, isbn; public Book(String name, String author, String isbn) { title = name; this.author = author; this.isbn = isbn;} public Book(String name) {this(name, "");} public Book(String name, String author){ this(name, author, ""); } public String toString() {return "Titel: " + title + " Frf: " + author + " ISBN: " + isbn;} public static void main (String args[]) { Book book1 = new Book("XXX with Java", "Budd"); Book book2 = new Book("Y Undistilled"); System.out.println("Bok 1: " + book1); System.out.println("Bok 2: " + book2); } }eZ;GeL3Konstruktrer: ngra saker man br vara medveten om436  pSkriver man en egen konstruktr som tar argument kan man inte lngre anvnda den frn brjan givna konstruktren utan argument, dvs skriver man public Klass(Typ t) {} S kan man inte instansiera p fljande stt Klass k = new Klass(); Om man fortfarande vill anvnda en konstruktr utan argument s mste man explicit implementera en sdan i stil med public Klass() {}-t-t  V %  (   M..."Observera att om en superklass implementerar en konstruktr med argument men ingen utan s kan inte heller subklasser anvnda  defaultkonstruktren utan argument, utan mste om dom s nskar explicit implementera en konstruktr utan argument Det finns ett problem till och det r att en subklass konstruktr implicit anropar super-klassens konstruktr om inte this(& ) eller super(& ) explicit anvnds@j   0     N"Inkludera klasser frn andra filer##  // inkludera kod frn bibliotek med import import java.awt.Point; public class Figure { /* med protected kan variabeln enbart lsas av instanser eller instanser av subklasser */ protected Point position = new Point(10, 20); // fast vi kan ge en publik inspektor public Point position() {return position;} // en annan metod kan anropa direkt public int x() {return position().x;} // eller med this.MEDDELANDE public int y() {return this.position().y;}+SMI      0 J ?    3     !    ! Otesta  public static void main (String args[]) { //Vi deklarerar en temporr variabel Figure f = new Figure(); System.out.println("pos: " + f.position() + " x: " + f.x() + " y: " + f.y()); } } Resultat pos: java.awt.Point[x=10,y=20] x: 10 y: 20` ,  +          &           dJavaexempel : Enkellnkad lista   3/* en enkellnkad lista med metoder fr att underska om objektet r sist, stoppa in lnk samt ge avstnd till slutet */ class LinkableObject{ public LinkableObject link; public Object value; public String toString() {return value.toString();} public LinkableObject() {this(null);} public LinkableObject(Object value) { link = null; this.value = value;} public boolean atEnd(){return link == null;} public void insert(LinkableObject next) { link = next;} public int distanceToEnd(){ return atEnd() ? 0 : 1 + link.distanceToEnd(); } }$43:.  #  J-    e & testMpublic class LinkableTestB{ public static void main (String args[]) { LinkableObject root = new LinkableObject("ROOT"); LinkableObject current; current = root; for(int i=1; i < 5; i++) { // Fr att kunna anvnda en int som ett Object // konstruerar vi en Integer LinkableObject newLinkable = new LinkableObject(new Integer(i)); current.insert(newLinkable); current = newLinkable;} current = root; while(current != null) { System.out.println( current + " distance to end: " + current.distanceToEnd()); current = current.link;} } } 0MZZM: Af Javaexempel : Dubbellnkad lista.! (  class DoubleLinkableObject{ public DoubleLinkableObject next, prev; public Object value; public String toString() {return value.toString();} public DoubleLinkableObject() {this(null);} public DoubleLinkableObject(Object value){ next = prev = this; this.value = value; } public void insert(DoubleLinkableObject aDoubleLinkableObject) { this.next.prev = aDoubleLinkableObject; aDoubleLinkableObject.next = this.next; aDoubleLinkableObject.prev = this; next = aDoubleLinkableObject;} public int distanceTo(DoubleLinkableObject aDoubleLinkableObject){ return this == aDoubleLinkableObject ? 0 : 1 + next.distanceTo(aDoubleLinkableObject);} public int length(){return 1 + next.distanceTo(this);} }2Z ?  6* *    g& public class DoubleLinkableTest{ public static void main (String args[]) { DoubleLinkableObject root = new DoubleLinkableObject("ROOT"); DoubleLinkableObject current; current = root; for(int i=1; i < 5; i++) { // Fr att kunna anvnda en int som ett Object // konstruerar vi en Integer DoubleLinkableObject newLinkable = new DoubleLinkableObject(new Integer( i)); current.insert(newLinkable); current = newLinkable; } current = root.next; while(current != root) { System.out.println(current + " distance to root: " + current.distanceTo(root)); current = current.next;} System.out.println( "length: " + root.length()); } }>ZPv6 "  "  & '  F0 2##hIntroduktion till arvVi implementerar fljande/iP ` 3` ̙33` 999MMM` f` f3` 3` 3333f` 3>?" dd@ |?" dd@  " @ `"  n?" dd@   @@``PR    @ ` ` p>> (  Z  c $?"/_0Z  # "`T  c $?T  c $?  Zh*<1 ?"O8L < j*      Z0<1 ?"O8  < b*"   B  01?"gol$ 0 0 0Z   c $?"X5B   01?"hEl$ 0 0 0Z   c $?"U uN   B <1?"b!@l$ 0 0 0 Zprevious    H   B@<1?"c]&l$ 0 0 0 Tnext    Zt<gֳgֳ? ??" 7`w < f Click to edit Master title style!  d  # l< 1??"x7` < RClick to edit Master text styles Second level Third level Fourth level Fifth level!    S  Z<1 ?"PL` < b*"     3 rD<1??" ` ^* .  C x9<1??"` xIntroduktion Java, del b       WG H0* ??OOMPAE-010903 bTimes New Roman"N  6@޽h? ? 3 ip00ovntemplate:     @t (  Z  c $?"`  s *(8?"Q >Z  c $?"L` Z  c $?"@`PZ  c $?"P`  Z 01 ?"O8L 8 j*      ZL01 ?"O8  8 b*"      Z$01 ?"OL` 0 d*$   B   031?"gol$ 0 0 0Z   c $?"X5H   B01?"c]&l$ 0 0 0 Tnext     Nd0gֳgֳ ?"@@`h 0 X Click to edit Master title style!! Z  # "_T  c $?T  c $?1Z  c $?"`B  031?"hEl$ 0 0 0Z  c $?"U uN  B01?"b!@l$ 0 0 0 Zprevious    N  6@޽h? ? 3 0 `$(  $ $ 0ПP ?8  P T*  $ 0 P z 8 P V* d $ c $ ?  P $ 0HP  ;~ P RClick to edit Master text styles Second level Third level Fourth level Fifth level!    S $ 6ԹP (?`  P T*  $ 6HP (z ` P V* H $ 0g@ ? ̙33D  d(  d d  f@+;1 ??8  < a OOMPAE 2001    d  fdZ<1 ?z 8 < Z* / d # l$P1 ?(?`  < { Bjrn Eiderbck 2000-2001 (  d # lP1 ?(z ` < Z* H d 0g@ ? ̙33  0 (     fT01?}e f OOMPA 2001*     B  Nl0gֳgֳ ?n  F Mer om Java bla this och konstruktorer ngot super- och subklasser0G  1 G  N/gֳgֳ ? *Frelsning 2 Introduktion till Java del b$+* (+r  S 0 @@`h 0 H  0@޽h ? .S33f77   Z R  @ (  @~ @ s *< 7`w  <  @ Z <1?  HLight1& @ Zt<1?  v# isOn : boolean,O @ Z1?  c+ turnOn() : void + turnOff() : void + isOn() : boolean + toggle() : void + main(String []) : void 0dJd @  fo?pH 2on @  f$o?pH 3off| @ To?0 g2  @ Zg ? (  @  BCDE(Fo? '(81  @   q(  @  BCDE(Fo? '(81  @   9  @ # lXfo?Y~S >toggle  @ # lfo?fi >toggleH @ 0@޽h ?  @@@ .S33f77   D<(  D~ D s *a07`w  a ~ D s *ax7` a H D 0@޽h ? .S33f77q  ! H(  H~ H s * < 7`w  <  H  f<o? ` 2on H  f<o?  ` 3off| H@ To?p)X2 H Zg ?X( H  BCDE(Fo? '(81  @    ( H  BCDE(Fo? '(81  @    x Q  H # lL<o?q. 1 k  >toggle  H # lh<o?   >toggleH H 0@޽h ? HHH .S33f77   L<(  L~ L s *H<07`w  < ~ L s *<x7` < H L 0@޽h ? .S33f77   TLP( @ P P S ~<xaxa1 ? 7`w  <  P S ~<xaxa1 ?x7` < H P 0@޽h ? a(   T<( @ T~ T s *<07`w  < ~ T s *T<x7` < H T 0@޽h ? .S33f77   X<(  X~ X s *< 7`w  < ~ X s *<x7` < H X 0@޽h ? .S33f77   \<(  \~ \ s *4< 7`w  < ~ \ s *<x7` < H \ 0@޽h ? .S33f77   `N( ! `~ ` s *<"7`v  <  ` s *`N;7` <   H ` 0@޽h ? .S33f77    d<( @޽h d~ d s *a; 7`w  ; ~ d s *Hb;x7` ; H d 0@޽h ? .S33f77   0h<(  h~ h s *f; 7`w  ; ~ h s *|g;x7` ; H h 0@޽h ? .S33f77   TL@l( <~< | l l S ~@o;xaxa1 ? 7`w  ;  l S ~o;xaxa1 ?x7` ; H l 0@޽h ? a(   Pp<( 33 p~ p s *~;07`w  ; ~ p s *;x7` ; H p 0@޽h ? .S33f77   `t<(  t~ t s *H;=7`  ; ~ t s *;7`. ; H t 0@޽h ? .S33f77   p<( ||d|| ~  s *;07`w  ; ~  s *;x7` ; H  0@޽h ? .S33f77    J( d|||d| ~  s *;07`w  ;   s *);x7` ; lH  0@޽h ? .S33f77    <( / b  ~  s *807`w  8 ~  s *8x7` 8 H  0@޽h ? .S33f77   <(  ~  s *; 7`w  ; ~  s *t;x7` ; H  0@޽h ? .S33f77   qi(    S ~`;xaxa1 ? 7`w  ;   S ~;xaxa1 ?x7` ; "   f;1?g Uimportera Point"   B0 CDE(F1? 0 0 DpSS# @   $? oH  0@޽h ? a(   TL( ;\   S ~;xaxa1 ? 7`w  ;   S ~;xaxa1 ?x7` ; H  0@޽h ? a(   <( @Ԯ|_ ~  s *;07`w  ; ~  s *p;x7` ; H  0@޽h ? .S33f77   <( @Ԯ|TɈ ~  s *;}7`w  ; ~  s *t;x7` ; H  0@޽h ? .S33f77   B( @Ԯ|Tɏ ~  s *;07`w  ;    0x;` ; H  0@޽h ? .S33f77   <(  ~  s *T;7`w  ; ~  s *;x7` ; H  0@޽h ? .S33f77h    (   r   S d9 7`w  9 r   S  9x7`T 9    Z91? fPerson&   Z91? Z name phone     Z91?R T  fSurfer&   ZD91?T  `email webaddressB   S ~GH0*1 ??. V U H   0@޽h ? 3 0 P0 ( t 0X 0 C $   P 0 S P$ ;~  P "H 0 0g@ ? ̙33r*Sәi704"` @!01q#"Oh+'0 px  0 < H T`hGRIPfbjorneTC:\WINDOWS\Profiles\bjorne\Application Data\Microsoft\Templates\ip00ovntemplate.potbjorneO252Microsoft PowerPointjor@@ei@$&@{5GNy  1& &&#TNPP2OMi & TNPP &&TNPP    --- !------ !------ !---qw@x LSwUSw0- --- !------ !@n------ !---&/& &1& &3-3- $--&--- !------- @Times New RomanLSwUSw0- . 2 next.&--- !------ !C}---&--- !---&73-3- $) )2--&--- !)-----,--  .2 <previous.--t;A-- @BComic Sans MS LSwUSw0- .2 ep OOMPA 2001$ .--%-- @Times New RomanLSwUSw0- .2 L Mer om Java#  . . 2 |bla   .@1Courier@x LSwUSw0- . 2 |(this.@Times New RomanLSwUSw0- .!2 |och konstruktorer   . .2  ngot super . . 2 - . .2 och subklasser  .--u--  .2  Frelsning 2   . .12 (Introduktion till Java del b     .--1-- --"System 0-&TNPP &՜.+,0     \A4 Paper (210x297 mm)lKTHS  Times New RomanArialComic Sans MSCourier Courier Newip00ovntemplate Exempel: lampa Light1, Javakod%Exempel: lampa2, med start i on-lge... Light2, JavakodKlassvariabelExempel: Light3 Konstruktor konstruktor?Exempel: konstruktor fr Circle som initierar instansvariablerPseudovariabeln thisFlera konstruktorer Flera konstruktorer+Exempel: Light4 (med def av konstruktorer)8Konstruktionen this() fr att anropa annan konstruktor3Exempel: Light5 (en konstruktor anvnder en annan)Exempel: Book4Konstruktrer: ngra saker man br vara medveten om...#Inkludera klasser frn andra filertesta Javaexempel : Enkellnkad lista test!Javaexempel : Dubbellnkad listaIntroduktion till arv  Fonts UsedDesign Template Slide Titles_?bjornebjorne  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxy{|}~Root EntrydO)Current UserSummaryInformation(zPowerPoint Document(DocumentSummaryInformation8