TDDE10 TDDE11, 725G90/1 Objektorienterad programmering i Java, Föreläsning 1 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: • Kursinformation • Imperativa delen av Java • Hello World! 1 Kurspersonal • Kursledare: Erik Nilsson • Examinator: Torbjörn Jonsson • • • • • • • • Kursassistent : Rebecka Geijer Michaeli Labbhandledare : Magnus Nielsen Labbhandledare : Johan Frimodig Labbhandledare : Eric Petterson Labbhandledare : Gustav L'Estrade Labbhandledare : Christoffer Holm Labbhandledare : Viktor Olsson Labbhandledare : Simon Mehari • Kursadministratör: Madeleine Häger Dahlkvist 2 Kursinnehåll • • • • • (ca) 10 Föreläsningar (20h) 4 Lektioner (8h) 4+1 Laborationer (26h) Projektarbete (12h) (EJ TDDE11) Datortentamen 20h + 8h + 26h +12h = 66h schemalagd tid => mycket hemarbete! Kurslitteratur Objektorienterad Programmering och Java av Per Holm Java Direkt med Swing av Jan Skansholm 3 Kursöversikt Vecka Teoretiskt Praktiskt Kommentar 3 FÖ intro, 3x FÖ OOP Lab 0, Webtutorial (1 + 1 pass) 4 Lektion 1, FÖ Datastrukturer Lab 1 (3 pass) 5 FÖ Generics mm, Lektion 2 Lab 2 (3 pass) 6 FÖ Grafik, Lektion 3, FÖ Extra Lab 3 (1 pass) 7 2 x FÖ Proj (ej TDDE11) Lab 3 (2 pass) Kravspec. skrivs 8 LE Projekt (ej TDDE11) 2 Extrapass, Projekt Kravspec. OK => börja koda 9 Projekt 10 Projekt, Demo Reflektion skrivs. 4 Lite om laborationerna • Anmälan till grupp i Webreg Måste vara registrerad... Ni går i grupp A eller B Eclipse ThinLinc Muntlig demo i labsal Kodinlämning via skriptet sendlab Fusk... – • • • • • • 5 Nu till Java! • • • • Ett objektorienterat språk Ett av världens mest använda Senaste version 1.8 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 6 Imperativa delen av Java(1) Kodskelett procedure My_Program is begin -- Huvudprogram end My_Program; Källkodsfilen heter my_program.adb public class MyProgram { public static void main(String[] args) { // huvudprogram } } Källkodsfilen heter MyProgram.java 7 Imperativa delen av Deklaration och Java(2) tilldelning public class MyProgram { procedure My_Program is public static void main(String[] args) { x : Integer; // Deklaration och satser mixas y : Character := 'c'; int x; z : array(1..5) of Integer; x = 7; s : String(1..5) := "hello"; char y = 'c'; begin int[] a = new int[5]; // index 0..4 x := 7; String s = ”hello"; end My_Program; } } 8 Imperativa delen av Datatyper Java(3) Integer Float Boolean Character String int float, double boolean char String Record Array Class [], Inbyggda klasser t.ex ArrayList Primitiva Datatyper 9 Imperativa delen av Datatyper Java(4) i minnet... x: 1 d: b : TRUE c : 'f' 3.14 s: s innehåller en referens 'h''e' 'l' 'l' 'o' (en pekare). int x = 1; double d = 3.14; boolean b = true; char c = 'f'; Primitiva Datatyper String s ;= new String(”hello”); s är en variabel av klasstyp Just String går att tilldela på ett enklare sätt String s = ”hello”; I stort sätt alla övriga datatyper i java är av klasstyp! D.v.s. referenserna är överallt! 10 Imperativa delen av Java(5) Villkorssatser if a = 4 and b /= 3 and not Some_Bool_Func(c) then Do_Something; elsif a = 0 then Do_Something_Else; end if; if (a == 4 && b != 3 && !someBooleanMethod(c)) { doSomething(); } else if (a == 0) { doSomethingElse(); } 11 Imperativa delen av Java(6) Upprepning 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); if (i > 10) { break; } går också bra 12 Imperativa delen av Java(7) Upprepning for i in 1..10 loop Put(i); New_Line; end loop; for (int i = 0 ; i < 10 ; ++i ) { System.out.println(i); } Körs 1 gång, Villkor för om loopen Körs i slutet av innan första ”varvet”. skall fortsätta gå. varje ”varv”. 13 Imperativa delen av Operatorer Java(8) 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 x += 1; 14 Imperativa delen av Java(9) Underprogram function Sum(a, b : in Integer) return Integer is begin return a + b; end Sum; procedure Print(text : in String) is begin Put_Line(text); end Print; Procedurer och funktioner int sum(int a, int b) { return a+b; } Parametrar har alltid parametermod ”in” void print(String text) { ReturtypSystem.out.println(text); } metoder (funktioner) 15 Imperativa delen av Java(10) Exceptions raise Exception_Name; throw new ExceptionName(); throw new ExceptionName("message"); begin try { -- Kod som kastar exception // Kod som kastar exception exception when Exception_Name1 => Do_Something; when Exception_Name2 => Do_Something_Else; end } catch (ExceptionName1 e) { doSomething(); } catch (ExceptionName2 e) { doSomethingElse(); } Vi tittar närmre på exceptions senare... 16 Imperativa delen av Poster Java(11) type My_Record_Type is record V : Datatype; -- … end record; class My_Class { Datatype v; int someMethod() { // operationer på datat! } } Poster används för att samla data som hör ihop. Klasser används för att samla och metoder data som hör ihop. Underprogram som hanterar datat deklareras utanför posten. 17 Imperativa delen av Paket Java(12) package body Package_Name is package packagename; //... --... end Package_Name; Paket är för att samla ihop data med underprogram i en separat ”modul”. Paket är för att samla klasser som hör ihop. Klasser ligger på egna filer. Paket är alltså mappar. Adas paket är mer som mina klasser. 18