Hoofdstuk 12 Ontwerp van programma’s. Ontwerp van de GUI nStandaard in Applets: alle met add toegevoegde componenten komen naast elkaar (totdat de regel.

Slides:



Advertisements
Verwante presentaties
KINN 2010 •OOP •O Object •O Georiënteerd •P Programmeren.
Advertisements

Practica Computerlinguistiek Tekst en uitleg:
Van domeinklasse tot implementatie
automatische garbage collection klein object georiënteerd betrouwbaar
Hoofdstuk 10.2 Rekenmachine-casus.
Het type int Tekenen met Java operatoren
JAVA -- H101 Menu: enkel voor applicaties, niet voor applets soorten: hoofdmenu shortcut popupmenu MENU’S 1. Menu Hoofdmenu’s Shortcuts Popupmenu’s 2.
Klassen en objecten.
Modula vs Java MODULE Show; CONST PI = ; TYPE PointRc = RECORD x,y : INTEGER; speed : REAL; angle : REAL; END; VAR a,b : PointRc; BEGIN.
Hoofdstuk 2 Hallo, C# !.
‘Inleiding programmeren in Java’ Derde college Maandag 22 januari 2001 drs. F. de Vries.
Hoofdstuk 10 Overerving.
Hoofdstuk 8 Objecten en klassen.
Checked exceptions: FileNotFoundException, IOException, …
JAVA -- H51 CONSTRUCTOR –- COPY-CONSTRUCTOR 1Constructor: Dezelfde naam als de klasse Wordt uitgevoerd d.m.v. new Initialisatie van de (private) attributen.
JAVA1 H 1. KENNISMAKING MET JAVA EN DE ONTWIKKELOMGEVINGEN 1. ONTSTAANSGESCHIEDENIS VAN JAVA Java: ontworpen in 1990 door Sun Microsystems voor de programmering.
Oefeningen Hoofdstuk 3.
Consoletoepassing Variabelen Klassen
Algoritmiek Java GUIs, AWT en Swing API Overzicht te bestuderen stof, voorbeeldtentamen Hoorcollege 15 - Ma. 11 dec L.M. Bosveld-de Smet.
6.1 Inleiding HOOFDSTUK 6 METHODEN
LauwersCollege Buitenpost Java Applet programma dat op een website zichtbaar is Java Application programma dat zelfstandig werkt Javascript Scripttaal.
Opgave 1a: void nvoid staat in de header van een methode die geen resultaatwaarde heeft nde aanroep van een void-methode is dan een opdracht i.p.v. een.
Opgave 2a nMet een InputStream lees je bytes uit een binare file nMet een Reader lees je characters uit een tekstfile.
Hoofdstuk 9 Objecten en klassen.
Java GUI nJava is platform-onafhankelijk nLook&feel past zich aan aan het platform new FileDialog(……).show();
Arrays.
Herhaling Java-programmatie en geautomatiseerd testen (vervolg)
Hoofdstuk 5 Interactie. Controls Form Label Button Label TextBox.
Polymorfisme: inleiding Hello me, meet the real me…
Constructoren Genesis 1:1 Aarde a1 = new Aarde(“Adam”, “Eva”);
Hoofdstuk 11.3 Algoritmen: Zoeken in een netwerk.
tircms02-p les 1 Operating Systems practicum
Tircms03-p les 4 Klassen. Abstracte datatypes in C struct stack { char info[100]; int top; }; void reset(stack *s) { s->top = -1; } void push(stack *s,
JAVA: een platformonafhankelijke taal
Hoofdstuk 8.5 Subklassen. versie-management problematiek Voortborduren op eerder gedaan werk nEerste poging: “knip&plak” class Twee { int x, y; int oud.
Hoofdstuk 14.1 Algoritmen: Zoeken in een netwerk.
Hoofdstuk 10.3 Tekst-editor: MDI-interface Dialogen Files lezen Abstracte klassen.
Hoofdstuk 14.2 Algoritmen: Automatische taalherkenning.
Hoofdstuk 3 Methoden om te tekenen.
Hoofdstuk 11 Strings en arrays. TextArea en String class LetterTeller extends Applet { void init ( ) { invoer = new TextArea (5, 40); uitvoer = new TextField(40);
Hoofdstuk 7 Herhaling Nieuw!. while ( x
Hoofdstuk 8 Keuze verplicht…. Opdrachten voorwaardelijk uitvoeren opdracht wordt alleen uitgevoerd als voorwaarde geldt if (temperatuur
Programma zonder window commandline interface. Commandline programma public static void main (String [ ] params) { System. out. println (“Hoi allemaal!”);
Opgave 1a ncompiler: vertaalt broncode naar machine-uitvoerbare code ninterpreter: voert broncode direct uit.
Hoofdstuk 3 Tekenen en rekenen.
Java Objectgeoriënteerd Programmeren in Java met BlueJ
Java Objectgeoriënteerd Programmeren in Java met BlueJ Hoofdstuk 7 Polymorfie en overerving © 2014, Gertjan Laan, versie 2.
Java Objectgeoriënteerd Programmeren in Java met BlueJ Hoofdstuk 8: Gebruikersinterface © 2014, Gertjan Laan, versie 2.
Gelijkheid van Strings static bool Gelijk( string s, string t) { } int m = s.Length; int n = t.Length; for (i=0; i
Aangepaste timing nTheorie (16 colleges + 2 deeltentamens) nPraktijk (16 keer, 3 inleveropdrachten) college Tent. 1 Tent. 3 college prakt. 1 prakt. 3 prakt.
Opbouw van het Netwerk void Lees (string filenaam ) { while ( (regel=sr.ReadLine()) != null ) { string [] r = regel.Split(" ", StringSplitOptions.RemoveEmpty.
Eigen klassen maken A new way of thinking.. Wat? Zie voorbeeld. Zie voorbeeld.
GUI Graphical User Interface. Wat is een Graphical User Interface Mooi Gebruiksvriendelijk Veel denkwerk.
Java voor beginners Doel: Een spel maken in LWJGL Door: Jim van Leeuwen.
GUI & classes Een Gui in een class steken en het object gebruiken.
Windows-applicatie using System.Windows.Forms; using System.Drawing;
Objectgeoriënteerd Programmeren (2)
Aanroep van een methode voert opdrachten uit in de body daarvan
Voortborduren op eerder gedaan werk
Gameprogrammeren: Keuzeopdrachten
Windows-applicatie using System.Windows.Forms; using System.Drawing;
Tinpro015b-les 1 C++ voor C-kenners Voor Technische Informatica.
Gameprogrammeren: Tiles in Tick Tick
OOS Object geOrienteerd Software-ontwerp - 5
Voorbeeld: Simulatie van bewegende deeltjes
Voortborduren op eerder gedaan werk
Libraries, Platform Games
Opdrachten herhalen public void tekenScherm (object o, PEA pea)
Aanroep van een methode voert opdrachten uit in de body daarvan
Gameprogrammeren: Tiles en File I/O in Tick Tick
Transcript van de presentatie:

Hoofdstuk 12 Ontwerp van programma’s

Ontwerp van de GUI nStandaard in Applets: alle met add toegevoegde componenten komen naast elkaar (totdat de regel vol is)

Flow-layout this.add(new Button(“koe”)); this.add(new Button(“varken”)); this.add(new Button(“kortschildkever”)); this.add(new Button(“kip”)); this.add(new Button(“olifant”));

Grid-layout this.add(new Button(“koe”)); this.add(new Button(“varken”)); this.add(new Button(“kortschildkever”)); this.add(new Button(“kip”)); this.add(new Button(“olifant”)); this.setLayout( new GridLayout(2,3,5,5) ); rijenkolommen tussen- ruimte totale ruimte wordt eerlijk verdeeld

Border-layout this.add( new Button(“koe”), BorderLayout.NORTH ); this.add( new Button(“varken”), BorderLayout.WEST ); this.add( new Button(“kortschildkever”), BorderLayout.CENTER ); this.add( new Button(“kip”), BorderLayout.EAST ); this.add( new Button(“olifant”), BorderLayout.SOUTH ); this.setLayout( new BorderLayout( ) ); randen krijgen zoveel als ze nodig hebben de rest gaat naar het midden

Vrije layout b = new Button(“koe”)); b = new Button(“varken”)); b = new Button(“kortschildkever”)); this.setLayout( null ); geen Layout-manager vrije positionering van alle componenten b. setBounds(10,10,70,20); this.add(b); b. setBounds(25,50,50,30); this.add(b); b. setBounds(40,30,100,15); this.add(b);

Flow-layout this.add(new Button(“koe”)); this.add(new Button(“varken”)); this.add(new Button(“kortschildkever”)); this.add(new Button(“kip”)); this.add(new Button(“olifant”)); this.setLayout( new FlowLayout() );

Voorbeeldprogramma: Rekenmachine Twee aspecten: nUser-interface nWerking class Calc class Proc

Rekenmachine: User-interface BorderLayout nNorth: Label met resultaat nCenter: Panel met knoppen component met een eigen deel-layout GridLayout

Panel een Panel-object... n...is een Component (kan dus met add worden neergezet) n...is een Container (kan dus met add zelf dingen neerzetten) Component TextArea TextField Panel Window Applet Frame DialogFileDialog Button Canvas Label Scrollbar Text Component Container

Opbouw klasse Calc class Calc extends Applet implements ActionListener { public void init() { result = new Label(“0”, Label.RIGHT); knoppen = new Panel ( ); this. setLayout (new BorderLayout() ); knoppen. setLayout (new GridLayout(4,4,6,6) );

Calc’s methode init public void init() { result = new Label(“0”, Label.RIGHT); knoppen = new Panel ( ); this. setLayout (new BorderLayout() ); knoppen. setLayout (new GridLayout(4,4,6,6) ); this. add( result, BorderLayout.NORTH ); this. add( knoppen, BorderLayout.CENTER ); knoppen. add (knop); knop = new Button (opschrift); for (n=0; n<16; n++) { } opschrift = “789/456*123+0C=-”. substring(n,n+1); knop. addActionListener (this); Button knop; int n; String opschrift; Panel knoppen;

Opbouw klasse Calc class Calc extends Applet implements ActionListener { public void init() { result = new Label(“0”, Label.RIGHT); // en de rest van de Userinterface-opbouw proc = new Proc ( ); } Label result; Proc proc; objectvariabelen ook nodig in ActionPerformed

Calc’s methode actionPerformed class Calc extends Applet implements ActionListener { public void actionPerformed (actionEvent e) { Label result; Proc proc; e. getSource ( ) Button b; b = (Button) ( ); b. getLabel ( ) char c; c =. charAt (0) ; if (c==‘C’)proc.schoon(); else if (c==‘=’)proc.reken(); else if (c>=‘0’&&c<=‘9’)proc.cijfer(c- ‘0’); elseproc.operatie(c); proc. schermresult. setText ( );

Opbouw klasse Proc class Proc { void schoon ( ) {... } void reken ( ) {... } void cijfer (int n) {... } void operatie (char c){... } Proc ( ){ this. schoon(); } wat kan een Proc? wat is een Proc? long scherm;

Wat is een Proc? nwaarde op het scherm schermwaarde wordt tienmaal zo groot plus cijfer er lijkt niets te gebeuren... nhuidige waarde nvorige waarde nlaatst gebruikte operator

Opbouw klasse Proc class Proc { void schoon ( ) {... } void reken ( ) {... } void cijfer (int n) {... } void operatie (char c){... } Proc ( ){ this. schoon(); } wat kan een Proc? wat is een Proc? long scherm; long scherm, waarde, vorige; char op;

Proc’s methode cijfer class Proc { void cijfer (int n) { } long scherm, waarde, vorige; char op; waarde = 10*waarde + n; scherm = waarde;

Proc’s methode reken class Proc { void reken ( ) { } long scherm, waarde, vorige; char op; if (op==‘+’) if (op==‘-’) if (op==‘*’) if (op==‘/’) scherm = vorige; waarde = 0; vorige += waarde; vorige -= waarde; vorige *= waarde; vorige /= waarde;

Proc’s methode operatie class Proc { void operatie (char c) { } long scherm, waarde, vorige; char op; op = c; this. reken ( ); void schoon ( ) {waarde = 0; vorige = 0; scherm = 0; op = } ‘+’;

Testen van een reeks mogelijke waarden if (x==1) else if (x==2) else if (x==3) else if (x==4) else if (x==5) else if (x==6) else if (x==7) else this.een(); this.twee(); this.drie(); this.vier(); this.vijf(); this.zes(); this.zeven(); this.meer(); case 1: case 2: case 3: case 4: case 5: case 6: case 7: default: switch (x) { } break;

Applets vs. Applications Applet nCompileer met javac nInterpreteer met browser of appletviewer nOutput in window van de browser nAfmetingen in HTML-file nBeperkte rechten op lokale machine Application n Compileer met javac n Interpreteer met java n Maakt zelf een of meer windows n Afmetingen in java-file n Kan ook files gebruiken

Van Applet naar Application public class Hallo extends Applet {Button b; public void init ( ) { b = new Button(“hoi”); this.add(b); } public void paint (Graphics gr) { gr. drawString(“Hallo”, 10, 10); } Frame public static void main (String [] p) { } Hallo h; h = new Hallo( ); this. setSize(200,100); Hallo( ) h. setVisible(true); maak je eigen window!

Application met componenten default een BorderLayout public class Hallo extends Frame implements ActionListener {Button b; TextField t; public Hallo( ) { b = new Button(“hoi”); t = new TextField(9); this.add(b, BorderLayout.WEST ); this.add(t, BorderLayout.EAST ); b. addActionListener(this); this. setSize(300,200); } public void actionPerformed(ActionEvent e) { t. setText(“hallo”); } public static void main(String [] p) { Hallo h; h = new Hallo(); h.setVisible(true); }

Nieuwe mogelijkheden nIn een Application kun je gebruiken: uTitel van het window uMenu-regel met dropdown-menu’s uSluit-button op menu-kader uDialogen, bijv. om een filenaam te vragen uFiles op de lokale machine

Voorbeeld: Teksteditor TextField om de tekst te editten Label voor status-info MenuBar Menu MenuItem

Een menuregel maken MenuBar bar; Menu menu; MenuItem item; bar = new MenuBar ( ); this. setMenuBar (bar); menu = new Menu (“File”); bar. add (menu); item = new MenuItem (“Open”); menu. add(item); item. addActionListener (this); item = new MenuItem (“Save”); menu. add(item); item. addActionListener (this); menu = new Menu (“Edit”); item = new MenuItem (“Upper”); menu. add(item); item. addActionListener (this); bar. add(menu);

Window sluiten class Editor extends Frame implements ActionListener { close, WindowListener Editor ( ) { this. addWindowListener(this); // en andere initialisaties... } public void windowClosing (WindowEvent e) { System. exit (0); } public void windowClosed (WindowEvent e) { } public void windowOpened (WindowEvent e) { } public void windowActivated (WindowEvent e) { } public void windowDeactivated (WindowEvent e) { } public void windowIconified (WindowEvent e) { } public void windowDeiconified (WindowEvent e) { }

Listeners nActionListener uactionPerformed (ActionEvent e) nAdjustmentListener uadjustmentValueChanged (AdjustmentEvent e) nWindowListener uwindowClosing (WindowEvent e) + 6 andere nMouseListener umouseClicked (MouseEvent e) + 4 andere nKeyListener ukeyTyped (KeyEvent e) + 2 andere

Events waar? welke? ALT ingedrukt? welke actie? welke source? Action Event Object AWT Event Input Event Window Event Mouse Event Key Event Component Event Adjustment Event