F2 - Intro till Java1 Föreläsning 2 - Intro till Java Sammanfattning av Lektion 1 (kap 2): Vad behövs för att kunna programmera? – DrJava ( t ex) – Java (installera först!) Reserverade ord ( t ex if, while...) Primitiva variabler ( t ex int, double, char, boolean ) Typomvandling Utskrifter och inläsning (Hur lagras information i datorn) Ev. Intro till Objektorienterad programmering (kap 3)
F2 - Intro till Java2 Vad behövs för att kunna programmera? Java = program som bl a översätter (för människan begripliga) instruktioner till datorspråk (javabyte kod/maskinkod): Kompilator +... Andra exempel: C++, Python, etc DrJava = en editor +...(~ordbehandlare) anpassad för programmering. Andra exempel: BlueJ, Eclipse, etc (IDE)
F2 - Intro till Java3 Vad är DrJava? DrJava är ett (gratis)program för att programmera i Java –Utvecklat vid Rice University, USA –DrJava är skrivet i Java Program för att programmera i kallas för IDE= Integrated Development Environment Med DrJava kan man –Skapa Javaprogram (definitions pane) –Testa javasatser (interactions pane) –Lista alla öppna filer (files pane)
F2 - Intro till Java4 Med kursboken följer en CD med många program (sk. javaklasser) för hantering av grafik, bilder, ljud, etc. DrJava använder i sin tur andra program som finns på datorn för att lösa sin uppgift –Javakompilatorn –Javainterpretatorn DrJava…
F2 - Intro till Java5 är ett programmeringsspråk högnivåspråk objektorienterat språk innehåller många hjälpprogram (klasser) Internet/Webben Grafik Användargränssnitt Standardprogram, t ex Math mm. är fritt kan användas på alla typer datorer Java
F2 - Intro till Java6 När java installeras på datorn får ni bl.a följande: Javakompilatorn Javainterpretatorn Många färdiga javaprogram, s k klasser som hör till språket Java, t.ex. Math, JoptionPane… I kursen kommer ni att använda javaprogram: De standardprogram som följer med Java t ex Math De specialprogram som följer med boken, t ex Turtle och World De program ni skriver själva Java…
F2 - Intro till Java7 Språket har strikta regler för hur det skall skrivas, dvs språkets grammatik, det kallas språkets syntax. Språket byggs upp av identifierare och reserverade ord som sätts ihop till satser. Identifierare är det som programmeraren själv hittar på namn för, t.ex. variabelnamn, Reserverade ord är de ord som finns inbyggda i språket. En sats är en instruktion. En sådan avslutas normalt med ett semikolon Ex: double xKoordinat = 18.4; Java…
F2 - Intro till Java8 Variabler Deklareras att vara av en specifik datatyp, tex int, double, char Har ett namn: börjar på _ eller bokstav En primitiv variabel kan innehålla ett värde, t.ex. ett heltal Vid deklarationen reserveras ett minnes- utrymme för variabelns värde. Variabelns namn är ett alias för adressen till minnesutrymmet.
Fö2 - Intro till Java och intro till OOP 9 Åtta primitiva datatyper Fyra heltalstyper (numeriska): byte, short, int, long Två flyttalstyper (numeriska) float, double En teckentyp: char En boolskt typ, sant eller falskt (default): boolean
Fö2 - Intro till Java och intro till OOP 10 Primitiva datatyperna byte, boolean 8 bits short int float long 8 bits double 8 bits char 8 bits
Fö2 - Intro till Java och intro till OOP 11 De numeriska datatyper TypMinnesutrymmeMin/Maxvärde byte8 bit-128 … 127 short … int … long64+/- 9 x float32 +/- 3.4 x 10 38, 7 siffrors nogr. double64+/- 1.7 x , 15 siffrors nogr.
Fö2 - Intro till Java och intro till OOP 12 Numeriska datatyper, några viktiga kom-i-håg Heltalsdivision int a = 2, b = 3, c = a/b; System.out.println(c); //Vad skrivs ut? System.out.println(7/4); //Vad skrivs ut? Modulusoperatorn % int x = 7, y = 3, z = x%y; System.out.println(z); //Vad skrivs ut? System.out.println(10%5); //Vad skrivs ut?
Fö2 - Intro till Java och intro till OOP 13 Numeriska datatyper, några viktiga kom-i-håg ++ och - - operatorerna x++; System.out.println(x); //Vad skrivs ut? Ändra en variabels värde OBS! Tilldelning int tal = 3; tal = tal + 2; //”Det nya värdet = det gamla + 2” tal += 2; //samma som ovan tal = tal * 5; tal *= 5; //samma som ovan
F2 - Intro till Java14 Typomvandling Heltal Flyttal per auto, eller med (double) (…) Flyttal Heltal –(int) (…) ger trunkering –(int) (… + 0.5) ger avrundning av tal>0 –Math.round(...) ger avrundning Char Heltal: (int) (…) Heltal Char: (char) (…) Flyttal String: Double.toString(…) String Flyttal: Double.parseDouble(…) String Heltal finns motsvarande…
F2 - Intro till Java15 Tecken En char -variabel lagrar ett enstaka tecken i två byte (speciellt för Java). Skrivs med apostrofer, t ex 'p'. Tecknet kodas först till ett heltal innan det lagras i minnet. T ex tecknet 'T' har den (decimala) koden 84, vilket binärt är Koden är unicode, se Koden för de 256 första tecknen överensstämmer med ASCII- koden ASCII Code - The extended ASCII table ASCII Code - The extended ASCII table Version 6.0: mer än tecken från världens alfabet, symboler,... System.out.println(“\u0041”); //A Ethiopic Extended-A
F2 - Intro till Java16 Klasserna String och Math En String-variable är inte inte en primitiv variabel String s = "Java"; String t = s + "programmering"; Jämför : char tkn = 'a'; En strängvariabel är en sk. objektvariabel. En sådan variabel refererar till många värden Math-klassen, anropa med klassens namn: double a1=Math.sin(x), a2=Math.sqrt(x); Doulbe a3=Math.pow(bas,exp), a3=Math.random();
F2 - Intro till Java17 Varför (1) deklarera och (2) ha många datatyper? 1. ”Säkerhet”: Bara använda variabler som är deklarerade Ex. stavfel: x1=4; x1=xl+8; 2. Värden man vill räkna med är av olika sorter –Bra då att ha variabler som matchar dessa. –Minnesutrymmet anpassas till värdena. –Beräkningarna anpassas till datatypen. –Snabbare beräkningar. –”Ordning och reda” –Men: flyttal kan inte alltid representeras exakt
F2 - Intro till Java18 Utskrifter i Java I terminalfönstret (I DrJava’s Interaction Pane): double O = bas*2 + höjd*2; System.out.println(“Omkrets: “ + O + ” m.”); I ett Popup-fönster: import javax.swing.*; String namn = “Anna”; JOptionPane.showMessageDialog(null,"Jag heter "+namn);
F2 - Intro till Java19 Inläsning i Java I terminalfönstret (I DrJava’s Interaction Pane): import java.util.Scanner; Scanner scan = new Scanner(System.in); int x = scan.nextInt(); double y = scan.nextDouble(); String s1 = scan.nextLine(); // hel rad String s2 = scan.next(); // ett ord I ett Popup-fönster: import javax.swing.*; String s; s = JOptionPane.showInputDialog("x?"); x = Integer.parseInt(s); I de kompletta föreläsningsanteckningarna finns bilder om hur datorn lagrar data
Fö2 - Intro till Java och intro till OOP 20 Att hitta klasser, egenskaper (instans- variabler) och metoder. Ett exempel. Det kommer bilar till en vägkorsning. Vid korsningen finns trafikljus som kan visa olika färg och kan ha svängpil. Trafikljuset kan slå om, det kan gå sönder. Bilarna har hastighet, riktning och position. Bilarna kan bromsa, gasa eller få motorstopp.. OOP
Fö2 - Intro till Java och intro till OOP 21 Övning OOP Hur många objekt finns i bild 1, och hur många olika typer av objekt, dvs hur många klasser, finns representerade i bild 1? Ange lämpligt namn på respektive klass. Vilka egenskaper kan klasserna beskrivas med (bild1)? Ange vilka metoder som kan vara lämpliga i respektive klass för att kunna rita bilderna 2 och 3, utgående från bild 1. Föreslå namn på metoderna. Bild 1Bild 2Bild 3
Fö2 - Intro till Java och intro till OOP 22 Intro till ObjektOrienterad Programmering (OOP) Klass vs objekt: En klass beskriver objektens egenskaper och metoder, mha ett språk, t ex Java, och sparat i en textfil, t ex Circle.java Klassen är en mall. Många objekt kan skapas från mallen. Ett objekt har egenskaper (inre tillstånd/eget minne) Ex Cirkel c har position och färg Kan kommunicera med (skicka meddelanden till) objekten via metoder för ändra objekten eller få veta deras egenskaper. Ex move(int step), changeColor(Color co) När ett program körs är objekten aktiva genom sina metoder. Ex c.move(50); //cirkel c rör sig