TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 1 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: • Kursinformation • Imperativa delen av Java • Introduktion till objektorientering • Hello World! 1 Kurspersonal • Kursledare: Erik Nilsson • Examinator: Torbjörn Jonsson • • • • • • Labbhandledare : Rebecka Geijer Michaeli (I, Ii) Labbhandledare : Magnus Nielsen (SVP) Labbhandledare : Christopher Omberg (SVP) Labbhandledare : Sam Le (I, Ii) Labbhandledare : Johan Frimodig (I, Ii) Labbhandledare :Tore Risinger (I, Ii) • Kursadministratör: Madeleine Häger Dahlkvist 2 Kursinnehåll • • • • (ca) 11 Föreläsningar (22h) 5 Lektioner (10h) 5 Laborationer (52h) Datortentamen.. Datastrukturer och algoritmer Java 24h + 10h + 52h = 86h schemalagd tid Kurslitteratur Data Structures and Algorithms in Java av Michael T. Goodrich och Roberto Tamassia Java Direkt med Swing av Jan Skansholm 3 725G82 (SVP) • 2 HP Extra! • => Problemlösning med Java, intro nu i början av kursen • 3 Föreläsningar/Lektioner • (ca) 10 laborationer • Obligatorisk dugga (minst 3 tillfällen, start v. 5) • Eventuellt kommer det gå att dugga tidigare • Omtenta i annan kurs krockar med labpass för grupp B (4/3) => välj grupp A i första hand. Innan vi börjar.. 5 Labbarbetet 2014: Innan vi börjar.. Labbarbetet 2015: 6 Varde Java! • • • • Ett objektorienterat språk Ett av världens mest använda Senaste version 1.8 (vi kommer använda 1.7) Körs av Java Virtual Machine ”JVM”, ej av operativsystemet • + Samma program kan köras på Windows, Mac, UNIX.. • - Lite långsammare än jämförbara språk 7 Imperativa delen av Java(1) Kodskelett i Ada procedure My_Program is begin -- Code goes here end My_Program; Kodskelett i Java public class MyProgram { public static void main(String[] args) { // Code goes here } } 8 Imperativa delen av Java(3) Deklaration och tilldelning i Ada procedure My_Program is x : Integer; y : Character := 'c'; z : array(1..5 ) of Integer; s : String(1..5) := "hello"; begin x := 7; end My_Program; Deklaration och tilldelning i Java public class MyProgram { public static void main(String[] args) { // Variables may be declared // (almost) anywhere in the code int x; char y = 'c'; int[] a = new int[5]; // 0..4 String s = ”hello"; x = 7; } } 9 Imperativa delen av Java(2) Primitiva datatyper Datatyp Storlek(bits) Största negativa värde Största positiva värde byte 8 -128 127 short 16 -32,768 32,767 int 32 -2,147,483,648 2,147,483,647 long 64 -9,223,372,036, 854,775,808 9,223,372,036,854, 775,808 Datatyp Storlek(bits) Minsta värde Största värde float 32 +- 3.403823e-45 +-3.403823e+38 double 64 +-4.940655e-324 +-4.940655e+308 Datatyp Storlek(bits) Minsta värde Största värde char 16 (!) 0 65,536 boolean (1) false Notera: String finns inbyggt in Java, men är inte en primitiv true 10 Imperativa delen av Java(5) Villkorssatser i Ada if a = 4 and b /= 3 and not Some_Bool_Func(c) then Do_Something; elsif a = 0 then Do_Something_Else; end if; Villkorssatser i Java if (a == 4 && b != 3 && !someBooleanMethod(c)) { doSomething(); } else if (a == 0) { doSomethingElse(); } 11 Imperativa delen av Java(4) Operatorer Operator Betydelse && Logiskt AND || Logiskt OR ! Logiskt NOT +, -, *, / Aritmetiska operatorer % Rest vid heltalsdivision (eng. Remainder) <, <=, !=, >=, > Jämförelseoperatorer ++x, x++, --i, i-- Pre- och postinkrementering/dekrementering Operator Betydelse |, &, ^ Binär OR, AND och XOR << Binär vänsterskift >> Binär högerskift 12 Imperativa delen av Java(6) Upprepning i Ada Upprepning i Java while i < 10 loop i := Do_Something; end loop; while (i < 10) { i = doSomething(); } loop i := Do_Something; exit when i > 10; end loop; do { i = doSomething(); } while (i <= 10); for i in 1..10 loop Put(i); New_Line; end loop; for (int i = 0; i < 10; ++i) { System.out.println(i); } if (i > 10) { break; } går också bra 13 Imperativa delen av Java(7) Funktioner och procedurer i Ada function Sum(a, b : in Integer) return Integer is begin return a + b; end Sum; Metoder i Java int sum(int a, int b) { return a+b; } procedure Print(text : in String) is void print(String text) { begin System.out.println(text); Put_Line(text); } end Print; 14 Imperativa delen av Java(8) Exceptions i Ada raise Exception_Name; begin --code that raises exception --here exception when Exception_Name1 => Do_Something; when Exception_Name2 => Do_Something_Else; end Exceptions i Java throw new ExceptionName(); throw new ExceptionName("message"); try { // Code that throws exceptions here } catch (ExceptionName1 e) { doSomething(); } catch (ExceptionName2 e) { doSomethingElse(); } 15 Imperativa delen av Java(9) Paket i Ada Paket i Java package body Package_Name is package packagename; --... end Package_Name; //... 16 Objektorienterad programmering 17 Introduktion till OOP(1) Fallstudie: Boll Slutsatser: • Attribut (en. field) Information/egenskaper • Metoder (en. method) Vad den kan göra 18 Introduktion till OOP(2) Fallstudie: DVD-spelare Slutsatser: • Attribut (en. field) Information/egenskaper • Metoder (en. method) Vad den kan göra • Objekt kapslar in sin implementation, visar upp ett gränssnitt 19 Introduktion till OOP(3) Fallstudie: DVD-spelare + TV Visa upp den här filmen! Slutsatser: • Attribut (en. field) Information/egenskaper • Metoder (en. method) Vad den kan göra • Objekt kapslar in sin implementation, visar upp ett gränssnitt • Objekt samarbetar! 20 Introduktion till OOP(4) Fallstudie: Kia Cee’d SW många objekt Slutsatser: • Objekt kan vara lika varandra, men är ändå inte samma objekt • Objekt som verkar vara likadana hör ändå ihop på något sätt.. 21 Klasser • Beskriver en typ av objekt class KiaCeedSW{ Color color; int modelYear; String licensePlate; boolean isBeingRepaired; ... boolean canDrive() { if (isBeingRepaired) { return false; } else { return true; } } } Klass Beskrivs av Instantierar Objekt 22 Hello World! Ett komplett, objektorienterat program skrivet i Java class Human { int age = 20; void sayHello() { System.out.println(”Hello world!"); } public static void main(String[] args) { Human david = new Human(); david.sayHello(); } } 23 I know Java! Show me! 24