Gruppövning Applikationsprogramering Klassuppdelning Loose Coupling Model View Controller Inversion of Control Layout med Swing JSplitPane Mouse-over Events.

Slides:



Advertisements
Liknande presentationer
1 2I1049 Föreläsning 8 KTH-MI Peter Mozelius Grafiska gränssnitt, Java interface och händelsehantering.
Advertisements

Array Skriv ett program som frågar följande: ”Hur många tal vill du mata in?” användaren matat in ett tal t.ex n. då frågar programmet n ggr följande.
Metoder i java Det finns två typer av metoder i java
Övning5 Så här ska man tänka när man löser uppgift 1 på tentan lite grafik, så här söker man genom en lista så här läser man från en fil i java lösa uppgift.
Programmeringsteknik för K och Media
Swing Grafik delen i Java kallas för Swing. Swing är stort; ca 800 klasser i 16 paket. Swing är en utveckling av AWT (Abstarct Window Toolkit). AWT var.
Programkodens uppbyggnad
1 ITK:P1 Föreläsning 4 Grafiska gränssnitt och händelsehantering DSV Peter Mozelius.
Föreläsning 2 Primitiva datatyper Variabler och konstanter Tilldelning Inläsning Operatorer Villkorssatsen if Slingor: while och for.
1 ITK:P1 Föreläsning 6 Layoutmodeller i Java DSV Marie Olsson.
i olika programmeringsspråk
Objektorienterad programmering i Java
OOP F4:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 4 Metoder klass-metoder instans-metoder.
int res2=Math.max(tal1,tal2);
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
Programmeringsteknik för Media1 & K1
OOP F6:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 6 Mer om klasser och objekt Hantera många objekt ArrayList toString() – metoden.
OOP F3:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 3 Iteration Många variabler av samma sort – Arrayer.
Föreläsning 5, Kapitel 5 Använda Java-bibliotek för att få avancerad funktionalitet Kursbok: “Objects First with Java - A Practical Introduction using.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
1 ITK:P1 Föreläsning 8 Multimedia för spelkonstruktion DSV Peter Mozelius.
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Next previous GRIP 2000 Föreläsning 4 Innehåll Inmatningstyper Modeller för interaktiva applikationer Observer MVC Lyssnare Pluggbara komponenter Exempel.
TILLÄMPAD DATALOGI (TILDA) Övning 3
Föreläsning 12 Om slutprovet. Repetition –deklaration av variabler –skapande av objekt (instansiering) –Vektorer och Vector-klassen –Klasser –Instans-/klassvariabler.
1. Ett problem/uppgift.
Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305
0. Kod, Klassdiagram och Sekvensdiagram import java.awt.event.*; import javax.swing.*; import java.awt.*; public class TwoThreads implements ActionListener.
Föreläsning 13 Appletprogram/fristående grafiska program Arv Rita linjer, rektanglar mm Skriva text, byta färg Appletprogram & HTML Grafiska användargränssnitt.
Class VattenKraft{ public static void main(String[] args){ int num=150; int i, totflöde, maxflöde; int[] fall = new int[num]; //vattenflödet i vattenfallen.
Föreläsning 9 Arv kap 8.1 Interface kap 9.2 Grafiska användargränssnitt (GUI) kap 10.
7. Delegerare och notifierare
TILLÄMPAD DATALOGI (TILDA) Övningsgrupp 2 Marcus Hjelm
TILLÄMPAD DATALOGI (TILDA) Övning 1 Marcus Hjelm
OOP F5:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 5 Klasser och objekt Skapa objekt - new Referenser Konstruktorer Inkapsling.
Övning2 programmeringsteknik och Matlab 2D1312/ 2D1305
Övning 3. Repetition Metoder class RepetitionMetoder { public static void main(String [] args) double längd = 2.0; double bredd = 1.0; double area =
TILLÄMPAD DATALOGI (TILDA) Övning 2
TILLÄMPAD DATALOGI (TILDA) Övning 2
Föreläsning 7 programmeringsteknik och Matlab 2D1312/2D1305 Metoddeklaration och parametrar Arrayer och ArrayList.
1 Föreläsning 2 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
OOP&M - teori1 OOP del III–vecka 15 Mer NetBeans MouseEvent Graphics Threads TIJ Chapter 14 Menus sid Drawing File Dialogs
Föreläsning4 Repetition slingor Metoder. while-sats består av följande delar: 1. while 2. Villkor-sats (condition) 3. uttryck (statement) while-sats int.
1 Föreläsning 4 Metoder & parametrar Array API och klassen ArrayList.
Arv, abstrakta klasser och gränssnitt
DA7351 Programmering 1 Skapa och placera en komponent i en container Layoutmanagers Applet Händelser och lyssnare Föreläsning 15.
Denna pristävling pågår mellan den 21 augusti och den 25 september
Länkade listor á la C/C++
RMI Av: Josefina & Sarah DS04.
Från databas till Excel
Föreläsning 3: Booleans, if, switch
Föreläsning 15: Exceptions & lite swing, gränssnitt
Föreläsning 4: for, while, do-while
Föreläsning 11: Rekursion
Föreläsning 14: Grafik & mera händelsehantering
Föreläsning 13: Swing (GUI), händelser, timer
Föreläsning 8: Exempel och problemlösning
Föreläsning 12: Exempel och problemlösning
Innehåll: Arrays Arraylists For loops For-each loops
Föreläsning 2: Typer, klasser, tilldelning
Föreläsning 9: Arv och UML
Föreläsning 5: Att använda klasser & objekt
Repetitionsföreläsning 2: Quiz & problemlösning med swing
Lite 3D-lajbans i Photoshop
Kan du begreppen? Para ihop rätt begrepp med rätt beskrivning. Algoritm Precis Program Är ett annat ord för exakt, tydlig eller noggrant. Är klara och.
Algoritmer och datastrukturer, förel. 1
Linkedinexpert Salesnavigator .png .png text text
Repetitionsföreläsning 1: Lite rekursion & problemlösning
ÅP / Lektion 4 Problemlösning
Instruktioner för tävlingsledare
Presentationens avskrift:

Gruppövning Applikationsprogramering Klassuppdelning Loose Coupling Model View Controller Inversion of Control Layout med Swing JSplitPane Mouse-over Events

Klassupdelning Vad vinner vi på att dela upp koden? Läsbarhet Återandvändbara modeuler Separat testning och utväcling av komponenter Hur delar vi upp koden? Loose Coupling Design Patterns

Loose Coupling Dåligt med Tight Coupling Ändringar i en modul får konsekvenser i andra moduler Svårt att testa en modul i taget Interfaces Små gränssnitt som gör en uppgift väl Om inte gränssnittet ändras behöver inte andra moduler ändras En klass kan implementera många gränssnitt

Typer av Gränssnitt Callback interface Delegate { void call(T t); } Callforth? Finns det bra namn? interface Set { void add(T t); boolean has(T t); void remove(T t); }

Model View Controler En model som inehåller programmets data En vy som ritar upp programmet gränssnitt En controller som tar event från båda parter och beslutar vilka komandon som ska köras

MVC Exempel interface View{//GUI void registerTextCallback(Delegate calback); void displayResults(String result); }interface Model{//Backend String calculateResult(Strnig input); }class Controller{ public static void main(String[] args){ View v=...;Model m=...;//some stuf to create objects v.registerTextCallback(new Delegate { public call(String t){ v.displayResults(m.calculateResults(t)); }}); } }//end main,end class

MVC-Exempelförklaring Varför en Controller? En händelse i View kan orsaka flera händelser i Model Om View inte behöver veta vad som händer när en knapp trycks på blir det enklare att skriva Översättning av typer En String från View översätts till en Integer Slippa leta i View om man vill byta Model

Slutsats MVC Vad vinner vi på MVC? Modularitet Lättare att byta ut delar Tydlig uppdelning mellan gränssnitts kod och program logik

Inversion of Control Ett sätt att hålla koll på vilka resurser en class kan använda Får mig att tänka på Pure-Functions Idé En klass använder endast de object som den fått via sin konstructor och methoder.

Inversion of Control Vad är det bra för? Det gör att vi kan vara säkra på att klassen inte ändrar globalt data (om vi är konsekventa) Vi får möjlighet att ändra vilka object klassen använder Tex peka om utdata ström för VISSA instancer Om vi har mer koll över vilken data som används blir trådsäker kod enklare

Swing Layout JSplitPane exempel //Create a split pane with the two scroll panes splitPane = new JsplitPane( JSplitPane.HORIZONTAL_SPLIT, listScrollPane, pictureScrollPane); splitPane.setOneTouchExpandable(true); splitPane.setDividerLocation(150); //Provide minimum sizes for the two components Dimension minimumSize = new Dimension(100, 50); listScrollPane.setMinimumSize(minimumSize); pictureScrollPane.setMinimumSize(minimumSize);

Oläsligt Mouse over Exempel public class Test {// private MouseMotionListener listener = new MouseMotionAdapter() { private int oldIx = -1; public void mouseMoved( MouseEvent e ) { JTabbedPane tp = (JTabbedPane)e.getSource(); int ix = tp.indexAtLocation( e.getX(), e.getY() ); if ( ix == oldIx )return; oldIx = ix; if ( ix == -1 )return; System.out.println("You're over tab " + ix ); } }; private void createAndShowGUI() { JTabbedPane tabbedPane = new JTabbedPane(); tabbedPane.addMouseMotionListener( listener ); tabbedPane.addTab( "Tab 1", new JPanel() ); tabbedPane.addTab( "Tab 2", new JPanel() ); JFrame frame = new JFrame("Test"); frame.setDefaultCloseOperation( JFrame.DISPOSE_ON_CLOSE ); frame.getContentPane().add( tabbedPane ); frame.pack(); frame.setVisible(true); } public static final void main( String args[] ) { new Test().createAndShowGUI(); }