SMD091 Lektion 9 Inkapsling Lite repetition Grafik 1 2 Gränssnitt Definition och Implementation Sammansättning... Definition...är ofta det bästa sättet att använda funktionalitet i andra klasser. Ratt Motor Implementation...bygger på har en relationer mellan klasser. En bil har en ratt En bil har en motor En bil har en förare Bil ratt motor förare Förare 3 4 Arv att hitta nåt gemensamt! Arv är en public class Rectangle implements Shape { protected double height; protected double width; public Rectangle(double h, double w) { height = h; width = w; return 2.0 * (height + width); public double getheight( ) { return height; public double getwidth( ) { return width; public class Square extends Rectangle { public Square(double side) { super(side,side); return 4.0 * width; public interface Shape { public double getperimeter( ); public double getheight( ); public double getwidth( ); 5 6 1
Arv Arv public class Rectangle implements Shape { protected double height; protected double width; public Rectangle(double h, double w) { height = h; width = w; return 2.0 * (height + width); public double getheight( ) { return height; public double getwidth( ) { return width; public class Square extends Rectangle { public Square(double side) { super(side,side); return 4.0 * width; public interface Shape { public double getperimeter( ); public double getheight( ); public double getwidth( ); public class Rectangle implements Shape { protected double height; protected double width; public Rectangle(double h, double w) { height = h; width = w; return 2.0 * (height + width); public double getheight( ) { return height; public double getwidth( ) { return width; public class Square extends Rectangle { public Square(double side) { super(side,side); return 4.0 * width; public interface Shape { public double getperimeter( ); public double getheight( ); public double getwidth( ); 7 8...TYP, ba, då rå! Typen på referensvariabler Objekt av typen Rectangle har även typen Shape. Objekt av typen Circle har även typen Shape. Objekt av typen Square har även typen Rectangle och Shape! Shape Tidigare...samma eller senare typ... Typkedja 1: Shape Rectangle Square Typkedja 2: Shape Circle Rectangle Square Circle Senare Det referensvariabeln refererar till måste ha samma eller en senare typ än variabeln själv. 9 10 Grafik i Java Grafik i Java......är enkelt!...bygger på att sätta ihop grafiska objekt....följer ofta samma grundmönster: 1. Skapa grafiskt objekt 2. Placera det på rätt ställe 3. Registrera ett objekt för att få händelser 4. Ta hand om de händelser som kommer 11 12 2
Komponenter (arvsträd) Exempel Namn Component Container Button TextArea Label Window Lite senare skall vi: Skriva ett grafiskt program där man med fyra knappar lägger till namn i en lista. Dialog 13 14 Vad ligger i vad? frame textarea panel button1 button2 button3 button4 15 16 Hacka! Syrepaus 1. Skapa grafiska objekt 17 18 3
Att placera grafiska objekt... BorderLayout...kan vara stökigt....finns det hjälp för, sk LayoutManagers. North BorderLayout FlowLayout GridLayout GridbagLayout CardLayout mfl... West Center South East 19 20 BorderLayout FlowLayout Dessa minimeras. North West Center East Max 5 komponenter Default för! South Denna maximeras. 21 22 FlowLayout GridLayout Column 1 Column 2 Column 3 Component 4 Component 5 Component 6 Oändligt antal komponenter kan läggas in. De minimeras till storleken. 23 24 4
GridLayout GridBagLayout Column 1 Column 2 Column 3 gridx, gridwidth Row 0 Column 0 Column 1 Column 2 Comp 1 Component 2 Component 4 Component 5 Component 6 För ett fixt antal komponenter i ett rutnät. Alla komponenter får samma storlek: Storlek = samma som största komponenten gridy, gridheight Component 3 Component 4 Component 5 25 26 GridBagLayout CardLayout gridx, gridwidth Column 0 Column 1 Column 2 Row 0 Comp 1 Component 2 gridy, gridheight Component 3 Component 4 Component 5 Ungefär som GridLayout, men komponenterna kan använda flera rader eller kolumner. Överkurs!!! Layouts Layout number 1 27 28 CardLayout Layouts Layout number 1 En komponent syns i taget. Man byter dem emellan. 29 30 5
har BorderLayout som standard. Lägg som Center. (Maximeras!) har FlowLayout som standard. Komponenterna läggs in en efter en. Lägg som South. (Minimeras!) 31 32 Hacka! BorderLayout FlowLayout 2. Placera grafiska objekt 33 34 Control View Namn Button Registrera addactionlistener Ny Händelse Användaren gör nåt actionperformed Användaren klickar Ny Händelse Användaren gör nåt actionperformed Användaren klickar 35 36 6
Hacka! Denna vecka Gör klart lab 2! Skicka mig ett mail med länken till er kurssida! Börja projektet! Kom och fråga om det är nåt! 3 & 4. Händelser På onsdag några längre grafikexempel! 37 38 7