ࡱ> za`nxּfa( ~~za.Hy]_{`@U( f3f3zaJJDT&+>LB( |h(`` SF/ 0|DTimes New Roman6 0Wo 0DArialNew Roman6 0Wo 0" DComic Sans MSn6 0Wo 0B0DCourier NewSn6 0Wo 01@DSystem NewSn6 0Wo 0 ` .  @n?" dd@  @@``    9  ,*^ &       '),-./01234567'98>  !"#$% > $ $ $ $ $ $ $ r$`nxּfai r$.Hy]_{`@Uii r$JJDT&+>LBi  00e0e     A@ A1  8c8c     ?1 d0u0@Ty2 NP'p<'p@A)BCD|E?||@8, g4BdBd0ppp0 <4!d!d 0L7 g4KdKd0p0 p]<4BdBd 0L7 # ʚ;49ʚ;<4ddddЁ 0:2___PPT9/ 0? %O =~S*Frelsning 1 Introduktion till Java del a Grunder: Javas uppbyggnad, konstruera klass, kompilera, kra, lite syntax Ngot om IDEer: JBuilder(+b$e Av Bjrn Eiderbck Email: bjorne@nada.kth.se Adress: Rum 1641, 6tr NADA Osquars Backe 2 Tel: 7906277xFZ00  f)%Momentets upplggning och innehll...&Frelsningar och vningar: introduktion till Java P kursen 2D1360 ingr tv introduktionsfrelsningar och en vning om och med Java. Resten av kursen samlses med 2D1359. Mndag 3/9 kl 10-12 Java introduktion. Mndag 3/9 kl 13-15 Mer om Java, framfrallt via exempel. Tisdag 4/9 kl 15-17 Frsta frelsningen tillsammans med 2D1359. Onsdag 5/9 kl 8-10 Frelsning tillsammans med 2D1359. Onsdag 5/9 kl 10-12 Frberedelse infr introduktionslab (ej obligatorisk) i Java Onsdag 5/9 kl 13-15 Introduktionslab (ej obligatorisk) i Java3pZ{XZXZXZXZ&XZXZ-XZXZ$XZXZ=XZXZ*XZ2{  &  -$=*  YJava=Java r konstruerat p SUN Frsta versionen slpptes 1995 Starkt typat Dvs det gr att avgra typkompatibilitet av alla uttryck i programmet vid kompileringstillfllet. Virtuell maskin (VM) som gr det maskinoberoende En speciell VM per plattformstyp verbryggar olikheter i plattformarnas arkitektur Klassbibliotek sprkklasser, strnghantering, grafik, grnssnitt, fnster, Internet, hndelsehantering, processer, mngder, mm Bindning till WWW med applets och liknande Har ftt sin huvudsakliga spridning via Internet Syntax som C. Semantik och klasser mer som Smalltalk  b1Spg b1S  p  f>ZVirtuell maskin[Java: mitt frsta "program"Skapa en fil med namnet MyFirstProgram.java Skriv fljande kod i filen: import java.io.*; public class MyFirstProgram{ public static void main (String [] args){ System.out.println("Mitt frsta program!"); } }vH0[0[H     %       \... kompilera och krCKompilera >javac MyFirstProgram.java D genereras en krbar fil MyFirstProgram.class Kr genom att starta Javas virtuella maskin med program/klassnamnet som argument >java MyFirstProgram Mitt frsta program! Regeln r att klassens static void main-metod alltid exekveras d man startar den frn terminal p detta stt ZZZ,ZoZ Q+@ F    p]Ett "Javaprograms" strukturEn klass ser ut p fljande stt public class KlassNamn extends SuperKlassNamn{ attribut (instans- och klassvariabler) metoder (instans- och klassmetoder) konstruktrer }^!/Y!/YB                          ^Konstruera klassKlassnamn = filnamn En klass skall ha samma namn som den fil den placeras i Klassen Circle i filen Circle.java En fil kan innehlla flera klasser men bara en av dem kan vara deklarerad public, Det r den publika klassens namn som motsvarar filens Definition av klass, mall public class KlassNamn extends SuperKlassNamn{ Modifierare TypIvar1 ivar1; Modifierare MetodTyp metod1(TypArg1 arg1) {} public KlassNamn() {} }8u6/b8  J6  /b                 _Deklarera och instansieraDeklaration av instans KlassNamn variabelNamn; Instansiering variabelNamn = new KlassNamn(); alternativt, bde deklaration och instansiering p en gng KlassNamn variabelNamn = new KlassNamn();!@* @)    -       @     `Kompilera och kraIEnvironmentvariabel Fr bekvm hantering stt path (se systemdokumentation) s att kompilator, virtuell maskin och bibliotek enkelt hittas Plattformsberoende hur detta gr till Kompilera med javac filnamn javac KlassNamn.java om allt gr bra skapas d en fil med namnet KlassNamn.class Kr med java klassnamn java KlassNamn 6w&,w&,             ~-       M  z*Sammanfattning enkelt program: Hello World+*(+kpublic class Hello { public static void main(String[] args) { System.out.println("Hello World!"); } } 6kpZZk,6aTyperjI Java mste alla variabler och metoder deklareras med typ Typ variabel; Det finns primitiva typer som int, char, float och boolean int x; En variabel kan ges ett initialt vrde vid deklarationen int x = 10; Man kan ocks anvnda typer som r implementerade som vanliga klasser String course =  OOMPA-01";;;9 G;;9 G  6b Modifierare  )En modifierare kan anvndas fr att ange vilka objekt som kan accessa en klass eller dess medlemmar (dvs dess attribut eller metoder), mest grundlggande r: static indikerar att medlemmen r klassvariabel eller klassmetod public medlemmen r accessbar verallt dr dess klass r accessbar protected medlemmen endast accessbar i klassen, dess subklasser eller i aktuellt package (vi terkommer till package vid senare tillflle) private medlemmen endast accessbar i den klass som definierar den ingen modifierare accessbar av andra klasser i samma paket":< :):<   :)*cExempelpublic class BankAccount{ protected int balance = 0; public void deposit (int amount) { balance = balance + amount; } public void withdraw (int amount) { balance = balance - amount; } public int balance (){ return balance; } } BC*       $  A  2  " d...BankAccount account1, account2; int transfer; account1 = new BankAccount(); account2 = new BankAccount(); account1.deposit(200); account2.deposit(100); transfer = 75; account1.withdraw(transfer); account2.deposit(transfer); account2.balance(); // resultat 175 .L             iExempel: Klass Circle$8    // Klassdefinition (utan extends medfr subklass till Object) public class Circle { public double x, y; public double r; public double circumference(){ return 2 * 3.14 * r; } public double area(){ return 3.14 * r * r; } // fr att testa det hela skriver vi en static main-metod public static void main (String args[]) { //Vi deklarerar en temporr variabel Circle circle; // och instansierar circle = new Circle();                        j ... forts ...  //vi ndrar ngra vrden circle.x = 100; circle.y = 200; circle.r = 20; // vi gr ngra testutskrifter System.out.println("Cirkelns x-koordinat: " + circle.x + " och dess y-koordinat: " + circle.y); System.out.println("den har en radie ocks: " + circle.r); System.out.println( "metoden circumference ger omkretsen: " + circle.circumference()); System.out.println("och med area:" + circle.area() + " dess area"); } }"  7                %       $       2    #   k(... och s sparar vi, kompilerar och kr)(8     Spara Spara filen med samma namn som klassen med extension .java, dvs hr Circle.java Kompilera javac Circle.java Skapar en fil Circle.class Kr java CircleQ  +                        lExempel: Eka argument8     Skapa fil Echo.java (som ekar argumenten vid exekveringen) public class Echo { public static void main(String[] argv) { for(int i = 0; i < argv.length; i++) System.out.print(argv[i] + " "); System.out.print("\n"); } }B;  (    $ 8        "  + mIn- och utmatningZTextutmatning sker via klassen System System.out.println(...); Dr: System r en klass i java.lang out r en klassvariabel i System out r en instans av klassen PrintStream PrintStream har en instansmetod println som skriver ut text p terminalen Textinmatning sker ocks via klassen System char c = System.in.read() Inmatningen mste dock  fnga undantag try{char c = System.in.read()} catch(IOException e){//fel har intrffat}&,(I&3  #,           (       $   nLExempel:  program med teckeninmatning'package Tests; import java.io.*; class TestIO_1_1 { public static void main(String [] args) { for(;;){ int in; try {in = System.in.read();} catch(IOException e) {in = -1;} if ((char) in == '0') return; System.out.println(in); } } }$  )4 Do#Exempel: dialog med strnginmatning$package Tests; import java.io.*; class TestIO { public static void main(String [] args) throws IOException { System.out.println("TEST OF INTERACTION/1"); BufferedReader in = new BufferedReader( new InputStreamReader(System.in)); for(;;) { System.out.print(">"); String line = in.readLine(); if (line.equalsIgnoreCase("quit")) break; if (line.equalsIgnoreCase("help")) System.out.println("To quit: write 'quit'"); else System.out.println("\teko: " + line); } } }V:< %  L"/r,Java: lsa argumenten som ges via terminalen$ s"&  anvnd syntax I fregende exempel anvnde vi en for-loop Syntaxen r fljande: for(initialvrde; villkor; uppdatera) sats Andra loopkonstruktioner while-loop while(villkor) sats do-loop do sats while(villkor) Dr en sats antingen r enstaka sats som System.out.println( Test ); eller flera satser inom msvingar som { x += 10; System.out.println( X:  + x); }V,ZZ,ZZ ZZZZZSZ-Z++           '  -     "  &{En IDEEn IDE r en Integrated Development Environment som r en hel milj som kan ge std vid programutveckling Vi tittar kort p JBuilder, som finns (gratis) fr bde Unix, tex Sun Solaris, och Windowst(Java: exempel med bla villkor och modulo> uVillkorVillkor kan skrivas if (uttryck) sats eller if (uttryck) sats else sats Man kan ibland ocks anvnda ?: uttryck ? omSantVrde : annarsVrde Eventuellt switchar switch(heltal) { case vrde1 : sats1; break; case vrde2 : sats2; break; & default: satsN; }ZZZZ Z$ZZiZ$    h       SvJava: fler exempel, Fibonacci,  wJava: nnu fler exempelx)Java: exempel, iterativ fakultetsfunktion,y)Java: exempel, rekursiv fakultetsfunktion2/Lij'()*+,-./0126789:;<P ` 3` ̙33` 999MMM` f` f3` 3` 3333f` 3>?" dd@ |?" dd@  " @ `"  n?" dd@   @@``@n?" dd@  @@``PR    @ ` ` p>> % z (   L  c $?/_0 L  # `T  c $?T  c $?  ZT11 ?O8L 3 d*     Z11 ?O8  3 f*"  B  01?gol$ 0 0 0L   c $?X5B   01?hEl$ 0 0 0L   c $?U u*   B11?b!@l$ 0 0 0 Dprevious  $   B11?c]&l$ 0 0 0 >next   Z`1gֳgֳ? ?? 7`w 1 b Click to edit Master title style! V  # l01 1??x7` 1 RClick to edit Master text styles Second level Third level Fourth level Fifth level!    S     WG H0* ??OOMPAE-010903 aTimes New Roman  Z!11 ?PL` 1 f*"    3 r 11?? ` b*  C x+11??` rIntroduktion Java, del a N  6@޽h? ? 3  PIM992   #   @X (  L  c $?`  s *,/?Q >L  c $?L` L  c $?@`PL  c $?P`  ZHj 1 ?O8L / d*     Zj 1 ?O8  j  f*"      ZXj 1 ?OL` j  h*$  B   031?gol$ 0 0 0L   c $?X5$   BH@P1?c]&l$ 0 0 0 >next    NtCPgֳgֳ ?@@`h j  T Click to edit Master title style! ! L  # _T  c $?T  c $?1L  c $?`B  031?hEl$ 0 0 0L  c $?U u*  BhMP1?b!@l$ 0 0 0 Dprevious  N  6@޽h? ? 3 0 `$(  $ $ 0e ?8  e T*  $ 0$e z 8 e V* d $ c $ ?  e $ 0d  ;~ e RClick to edit Master text styles Second level Third level Fourth level Fifth level!    S $ 64d (?`  e T*  $ 6d (z ` d V* H $ 0g@ ? ̙33L d(  d d  f`$1 ??8  $ a OOMPAE 2001    d  fXe1 ?z 8 $ Z* 7 d # llrd1 ?(?`  e  Bjrn Eiderbck 2000-2001 0 d # lTa1 ?(z ` e Z* H d 0g@ ? ̙33 04(  ~  s *tbP  y  P r S 0cPd  P    fddP1?}e f OOMPA 2001*     H  0@޽h ? .S33f77  $(  r  S ia 7`w  a r  S N (  x  c $l`107`w  1 "  # lI11?pP,$D 0 Mkllkod"  # lM11? 00,$D  0 R java bytekod   =  S aA1?Zig zag  P ,$D  0 KPc VMV  C aA .1?Dark downward diagonalp \ P ,$D   0 LMac VMW  S laA (1?Large checker board (PP ,$D   0 MUnix VM   f1?`6 `,$D  0   3 rla1?RF X,$D  0 ;kompilera (javac)4"    fha1? ,$D   0 j$en virtuell maskin per plattformstyp%%%  @ TjJ?0 ,$D 0   TjJ?0 p ,$D 0   TjJ?0l ,$D  0   fa1?z ,$D 0 4 kr (java) H  0@޽h ?O    .S33f77 ) 0(  D@]5 x  c $oa07`w  a x  c $pax7` a H  0@޽h ? .S33f77 * 0( da\ x  c $ a07`w  a x  c $ax7` a H  0@޽h ? .S33f77 + @( |Ԇ!=( x  c $$007`w  0 x  c $0x7`q  0  z 0 @  {@,$D 0r   `1?0 @   f0G ^H)1?0 `Kallas ocks fr medlemmar   `tao? y,$D 0 H En metod modifierare returtyp funktionsnamn(argument){ programsatser }  .. IH  0@޽h ? .S33f77 , nf( tĆ|Ԇ x  c $T 007`w  0 x  c $ 0x7` 0   C xa1??i I  >4B   ĦaGـH EI]XJK]XLM]XN 1 ?@? ^  binstansvariabler +B   `GHHI\[JK\[LM\[N 1 ?@?   Ymetoder 1B   GHTIXJKXLMXN 1 ?@? !  _ konstruktrer  H  0@޽h ??0 .S33f77 - 0( 8tĆ x  c $(07`w   x  c $x7`  H  0@޽h ? .S33f77 . 0( 8t x  c $L07`w   x  c $x7`  H  0@޽h ? .S33f77+     k(  x  c $ 7`w   x  c $}>   ."  3 r,1 ??}0  Det mesta i Java tillhr klasser$! $ !"  3 rP1 ??k6 Alla program mste ha en main()  $  >  3 r81 ?? V7  $Spara i en fil med namnet Hello.java% 6 9  3 r1 ??, VT  Kompilera med javac Hello.java0  $  *  3 r<1 ?? %K "D skapas en binrfil Hello.class# $      3 rt@ 1 ??V > yKr med java Hello0 H  0@޽h ? 3 / 00( (8t x  c $I 07`w   x  c $K x7`   H  0@޽h ? .S33f77 0 @0( ̐(8 x  c $g 07`w   x  c $Dh x7`   H  0@޽h ? .S33f77 1 P0(  x  c $l  7`w   x  c $Hm x7`   H  0@޽h ? .S33f77 2 `0(  x  c $d  7`w   x  c $|e x7`   H  0@޽h ? .S33f77 6 H@p( 555x   C xP xaxa1 ? 7`w     C x xaxa1 ?x7`   H  0@޽h ? a( 7 H@ ( 555x5     C x8 xaxa1 ? 7`w      C x xaxa1 ?x7`   H   0@޽h ? a( 8 H@$( 555x5 $ $ C xH xaxa1 ? 7`w    $ C xhA xaxa1 ?x7`   H $ 0@޽h ? a( 9 JB(( h (v ( ( C x\0xaxa1 ? 7`w  0  ( C x0xaxa1 ?;`  0 - (  f GSH1?Xx ,$D 0 cforloopar ser ut som i ANSI-CC ( NX xaxa1 ? 2 ,$D 0 Kompilera javac Echo.java*  *   b ( NX xaxa1 ? 2,$D 0 Kr java Echo detta r input*F     H ( 0@޽h ?( a( : ,0( Th  ,x , c $  7`w   x , c $Ԣ x7`   H , 0@޽h ? .S33f77* ; 0R(  0x 0 c $  7`w   x 0 c $@ x7`    0 S ~` G mH1 ?? lHr anvnder vi paket ocks!H 0 0@޽h ?0 .S33f77 < 40( 555x5 4x 4 c $Ĵ  7`w   x 4 c $ x7`   H 4 0@޽h ? .S33f77  1)(  x  c $ȹ  7`w     3 rTд 1??TF5F  FXpublic class ShowArgs { public static void main(String[] args) { for(int i=0; i<args.length; i++) System.out.println("Arg " + i + " is  + args[i]); } } $` %  l  C xҴ 1??   pjava ShowArgs arg1 arg2 arg3   C x 1?? 2  i Testa med tex$  C x 1??jd Bmain"  C x 1??t Ffor-loop" H  0@޽h ? 3  nf(  x  c $/ 7`w  / x  c $/x7` /   C x 1??vC ?for   C x 1??v)= Awhile   C x0 1??v  >do H  0@޽h ? 3   $(  r  S X/ 7`w  / r  S /x7` / H  0@޽h ? 3w  '(  x  c $  7`w     C xT331??#( 4~public class FizzBuzz { public static void main(String[] args) { for(int i = 1; i <= 100; i++) { if (((i % 5) == 0) && ((i % 7) == 0)) System.out.print("fizzbuzz"); else if ((i % 5) == 0) System.out.print("fizz"); else if ((i % 7) == 0) System.out.print("buzz"); else System.out.print(i); System.out.print(" "); } System.out.println(); } }"~b $ X ,  C xV31?? s % r modulo*  H  0@޽h ? 3  0(  x  c $0Z3 7`w  3 x  c $Z3x7` 3 H  0@޽h ? 3\    (  x  c $A3 7`w  3   3 r$C31??C}  Bpublic class Fibonacci { public static void main(String[] args){ int current, prev = 1, prevprev = 0; for(int i = 0; i < 20; i++) { current = prev + prevprev; System.out.print(current + " "); prevprev = prev; prev = current; } System.out.println(); } } $   # & % ,H  0@޽h ? 3  6.0(  ~  s */ 7`w  /   3 r31??dK fpublic class Reverse { public static void main(String[] args) { // Loopa baklnges genom orden som ges som argument for(int i = args.length-1; i >= 0; i--) { // Loopa baklnges genom tecknen i varje argument for(int j=args[i].length()-1; j>=0; j--) { // Skriv ut tecken j i i:te argumentet. System.out.print(args[i].charAt(j)); } System.out.print(" "); } System.out.println(); } }fF441:'x9 (#( @ ,H  0@޽h ? 3a   @(  x  c $s3 7`w  3   C x31??9  Apublic class Factorial { public static int factorial(int x) { int fact = 1; for(int i = 2; i <= x; i++) fact *= i; return fact; } }P' JlH  0@޽h ? 3  P((  x  c $3 7`w  3 p  C x(31?? public class Factorial2 { public static long factorial(long x) { if (x == 1) return 1; else return x * factorial(x-1); } }lH  0@޽h ? 3 0 P0 ( t 0X 0 C $   e 0 S d$ ;~  e "H 0 0g@ ? ̙33 0 `4 ( I-6-9- 4X 4 C $   0 4 S 0$ ;~  0 "H 4 0g@ ? ̙33Y 0 pd ( )   dX d C $   0 d S p0$ ;~  0 "H d 0g@ ? ̙33Z 0 h (  hX h C $   P h S xzP$ ;~  P "H h 0g@ ? ̙33[ 0 l ( pp lX l C $   P l S P$ ;~  P "H l 0g@ ? ̙33\ 0 p ( 9 pX p C $   P p S P$ ;~  P "H p 0g@ ? ̙33] 0 t (  tX t C $   P t S P$ ;~  P "H t 0g@ ? ̙33^ 0 x (  xX x C $    x S D$ ;~   "H x 0g@ ? ̙33_ 0 | ( H55 |X | C $   8 | S ,8$ ;~  8 "H | 0g@ ? ̙33` 0  (  X  C $   8  S .8$ ;~  8 "H  0g@ ? ̙33a 0  (  X  C $   8  S 8$ ;~  8 "H  0g@ ? ̙33b 0  ( L3 X  C $   8  S l8$ ;~  8 "H  0g@ ? ̙33c 0  (  X  C $   8  S D8$ ;~  8 "H  0g@ ? ̙33d 0   ( x l X  C $   8  S 8$ ;~  8 "H  0g@ ? ̙33i 0 0 ( 5O2 X  C $   8  S 8$ ;~  8 "H  0g@ ? ̙33j 0 @ ( **> X  C $   9  S 8$ ;~  9 "H  0g@ ? ̙33k 0 P ( =i;i#< X  C $   9  S X%9$ ;~  9 "H  0g@ ? ̙33l 0 ` ( 340 X  C $   9  S Q9$ ;~  9 "H  0g@ ? ̙33m 0 p ( ,M X  C $   9  S e9$ ;~  9 "H  0g@ ? ̙33n 0  (  A& Ad X  C $   9  S 9$ ;~  9 "H  0g@ ? ̙33o 0  ( vv ! X  C $   9  S ĵ9$ ;~  9 "H  0g@ ? ̙33r ) ԗؔSi 0  ht|VNFf,$OG?7p/W ;h@x!P#(%'(*,`.8023nI@ 3"Oh+'0L px    , 8DLGRIPfbjorne6F:\Program Files\Microsoft Office\Templates\PIM99.potbjorner222Microsoft PowerPointoso@h@ YSL@$&@@'8|5Gy   K& &&#TNPP2OMi: & TNPP &&TNPP    --- !------ !------ !---qw@ LSwUSw0- --- !------ !@n------ !---&/& &1& &3-3- $--&--- !------- @Times New RomanLSwUSw0- . 2 next.&--- !------ !C}---&--- !---&73-3- $) )2--&--- !)-----,--  .2 <previous.--eu-- @Times New RomanLSwUSw0- .2  Frelsning 1   . .12 (Introduktion till Java del a     .@Times New RomanLSwUSw0- .K2 -Grunder: Javas uppbyggnad, konstruera klass,          . .12 )Akompilera, kra, lite syntax      . .+2 RDNgot om IDEer: JBuilder     .--y2s-- @Times New RomanLSwUSw0- ."2 Av Bjrn Eiderbck   .@Times New RomanLSwUSw0- .2 Email: .@Times New RomanLSwUSw0- ."2 bjorne@nada.kth.se       .@Times New RomanLSwUSw0- .2 Adress:  .@Times New RomanLSwUSw0- .2  Rum 1641, 6tr   . . 2 NADA. .2 6Osquars Backe 2e   . .2 N Tel: 7906277  .--t;A-- @BComic Sans MS LSwUSw0- .2 ep OOMPA 2001$ .--"System 0-&TNPP &՜.+,0     LA4 Paper (210x297 mm)rKTH E %Times New RomanArialComic Sans MS Courier NewSystemPIM99Frelsning 1 Introduktion till Java del a Grunder: Javas uppbyggnad, konstruera klass, kompilera, kra, lite syntax Ngot om IDEer: JBuilder&Momentets upplggning och innehll...JavaVirtuell maskinJava: mitt frsta "program"... kompilera och krEtt "Javaprograms" strukturKonstruera klassDeklarera och instansieraKompilera och kra+Sammanfattning enkelt program: Hello WorldTyper ModifierareExempel...Exempel: Klass Circle... forts ...)... och s sparar vi, kompilerar och krExempel: Eka argumentIn- och utmatning'Exempel: program med teckeninmatning$Exempel: dialog med strnginmatning-Java: lsa argumenten som ges via terminalen anvnd syntaxEn IDE)Java: exempel med bla villkor och moduloVillkorJava: fler exempel, FibonacciJava: nnu fler exempel*Java: exempel, iterativ fakultetsfunktion*Java: exempel, rekursiv fakultetsfunktion  Fonts UsedDesign Template Slide Titles_4?bjornebjorne  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Root EntrydO)PicturesCurrent UserSummaryInformation(|PowerPoint Document( 5DocumentSummaryInformation8