Lessen Java: Reeks 3. David Blinder Jan G. Cornelis

Vergelijkbare documenten
public Paneel() { knop = new JButton( Klik ); knop.addactionlistener( new KnopHandler() ); tekstvak = new JTextField(10); add(knop); add(tekstvak);

Swing.

Game of Life in Java


Modelleren en Programmeren

voegtoe: eerst methode bevat gebruiken, alleen toevoegen als bevat() false is

Een stoomcursus door Edgar de Graaf, november 2006

IMP Uitwerking week 13

Hst 1 Klassen en methoden

Tentamen Object Georiënteerd Programmeren TI januari 2013, Afdeling SCT, Faculteit EWI, TU Delft

Tentamen Object Georiënteerd Programmeren TI oktober 2014, Afdeling SCT, Faculteit EWI, TU Delft

Tentamen Inleiding Programmeren (IN1608WI), 2 februari 2012, , Technische Universiteit Delft, Faculteit EWI, Afdeling 2.

APPLICATIEBOUW 3E COLLEGE: OBJECT GEORIËNTEERD PROGRAMMEREN, METHODEN, PARAMETERS, SCOPE VAN VARIABELEN. Onderdeel van SmartProducts

Zelftest Programmeren in Java

Omschrijf bij ieder onderdeel van de methode de betekenis ervan. Java kent twee groepen van klassen die een GUI kunnen maken: awt en swing.

Wat is een grafische gebruikersinterface (GUI)?

Tentamen Imperatief Programmeren

Programmeren in Java 3

Technical Computing. Technical Computing Team emazing 1

Opdracht 7a. Applicatiebouw 2014/2015

10 Exception handling

Imperatief Programmeren, derde deeltentamen (INFOIMP) 4 november 2005

Ingebouwde klassen & methodes

Tentamen Objectgeorienteerd Programmeren IN1205 Voorbeeld

Kwis (3) class X { public void a() { System.out.println("x"); public static void main(string[] args) { X x = new X();

Voor het bepalen van de getalswaarde van een string is een standaardmethode beschikbaar: n = Integer.parseInt(s);

Tentamen Imperatief en Object-georiënteerd programmeren in Java voor CKI

1 Ontwerppatronen. 1.1 Het Command patroon

Deel 1 : Gesloten Boek

Modelleren en Programmeren

Overerving & Polymorfisme

Een topprogrammeur in het OO programmeren is Graig Larman. Hij bedacht de volgende zin:

Zelftest Inleiding Programmeren

Hoofdstuk 0. Van Python tot Java.

Programmeren in Java. De Java-GUI

Beginselen van programmeren Practicum 1 (Doolhof) : Oplossing

Modelleren en Programmeren

Teamhandleiding DOMjudge (versie 2.2.0muKP) 31 mei 2008

Programmeren 1 23 januari 2013 Prof. T. Schrijvers

DOMjudge teamhandleiding

Datatypes Een datatype is de sort van van een waarde van een variabele, veel gebruikte datatypes zijn: String, int, Bool, char en double.

Uitwerkingen Tweede deeltentamen Imperatief programmeren Vrijdag 15 oktober 2010, uur

NAAM: Programmeren 1 Examen 29/08/2012

Objectgericht programmeren 1.

Voorbeeldtentamen Inleiding programmeren (IN1608WI), Oktober 2003, , Technische Universiteit Delft, Faculteit EWI, Afdeling 2.

Modelleren en Programmeren

Programmeren in Java 3

Informatica. Deel II: les 1. Java versus Python. Jan Lemeire Informatica deel II februari mei Parallel Systems: Introduction

Programmeren in Java les 3

Java Objectgeoriënteerd ontwerpen en programmeren

eerste voorbeelden in Java

Informatica. Deel II: les 1. Java versus Python. Jan Lemeire Informatica deel II februari mei Parallel Systems: Introduction

Programmeren in C# Exceptions. Hoofdstuk 17

Vraag 1: Software Levenscyclus

Modelleren en Programmeren

Zo vind u hierin de volgende documentatie over de klasse Applet: +----java.awt.panel java.applet.applet

DOMjudge teamhandleiding

Universiteit van Amsterdam FNWI. Voorbeeld van tussentoets Inleiding programmeren

Vakgroep CW KAHO Sint-Lieven

Kleine cursus PHP5. Auteur: Raymond Moesker

Programmeren I. 26 augustus Algemene Richtlijnen. Richtlijnen Programmeren 1

Informatica. Leren programmeren met JAVA en NetBeans. Over JAVA en Rapid Application Development met NetBeans. Bert Van den Abbeele

Tentamen Objectgeorienteerd Programmeren TI februari Afdeling ST Faculteit EWI TU Delft

Programmeren (1) Examen NAAM:

Programmeren in Java 3

Visual Basic.NET. Visual Basic.NET. M. den Besten 0.3 VB. NET

Opdrachten herhalen. public void tekenscherm (object o, PEA pea) { int x; x = 1; zolang de voorwaarde geldig is

Design patterns.

BEGINNER JAVA Inhoudsopgave

Werkomgeving. Android Studio. Android - werkomgeving 1/6

Uitwerking Aanvullend tentamen Imperatief programmeren Woensdag 24 december 2014, uur

Uitwerking Tentamen Modelleren en Programmeren - versie 1 Woensdag 1 februari 2017, uur

Objectgericht programmeren 1.

APPLICATIEBOUW 6E COLLEGE: GEBRUIKERSINTERFACES, ANIMATIES & TIMERS, LEJOS DEEL 3. Onderdeel van SmartProducts

PO: Informatica Olympiade

Uitwerking Tweede deeltentamen Imperatief programmeren - versie 1 Vrijdag 21 oktober 2016, uur

Hoofdstuk 1: Inleiding. Hoofdstuk 2: Klassen en objecten Datahiding: afschermen van implementatiedetails. Naar de buitenwereld toe enkel interfaces.

Modelleren en Programmeren

Oefeningen Java Oplossingen

Abstracte klassen & Interfaces

1. Achtergrond. 1.1 Het M2M-Platform

NAAM: Programmeren 1 Examen 21/01/2011

Informatica. Objectgeörienteerd leren programmeren. Van de theorie met BlueJ tot een spelletje met Greenfoot... Bert Van den Abbeele

APPLICATIEBOUW 7E COLLEGE: DPU3, OEFENEN TOETS. Onderdeel van SmartProducts

Lessen Java: Reeks pag. 1

X. Grafische elementen

Uitwerking Tentamen Modelleren en Programmeren - versie 1 Woensdag 1 februari 2017, uur

Labo 1 Programmeren II

Transcriptie:

Lessen Java: Reeks 3 David Blinder Jan G. Cornelis

Vraag 0: Gebruik van de Debugger Syntax errors: fouten door verkeerd gebruik van Javacommandos code zal niet compileren. Locatie van de fout is bijna altijd duidelijk. Runtime errors: code is syntactisch correct, maar niet functioneel correct. Mogelijke gevolgen: Onmogelijke operatie: bv. deling door nul, toegang tot onbestaande geheugenlocatie. Oneindige lus: bv. while lus die nooit eindigt Foute resultaten: foute implementatie van een formule Voor het oplossen van runtime errors kun je gebruik maken van een tool om de bugs te detecteren: de debugger 2

Vraag 0: Debugger 1 2 3 4 Variabelen 1. Naar volgend breakpoint 2. Stop debugging 3. Stap in methode 4. Volgende lijn Call stack Breakpoints Code 3

Werken met GUIs Command line Interactieve vensters 4

Java swing library JFrame JPanel JPanel JPanel JPanel

Vraag 1: Lijnwaaier /2 Teken een lijnwaaier met N lijnen, ingegeven door de gebruiker. Maak nieuwe klasse LijnPaneel (JPanel)

Venster aanmaken import java.awt.event.*; import javax.swing.*; public class LijnPaneel extends JPanel implements ActionListener { public static void main(string[] args) { JFrame f = new JFrame(); f.setsize(500,500); f.setdefaultcloseoperation(jframe.exit_on_close); f.settitle("lijnen tekenen"); f.setlocation(100, 100); //standaard in de hoek van het scherm JPanel hoofdpaneel = new LijnPaneel(); f.add(hoofdpaneel); f.setvisible(true);

Lijnwaaier JTextField JLabel JButton

Veldjes aanmaken public class LijnPaneel extends JPanel implements ActionListener { private JTextField afstandveld; private JButton tekenknop; private int afstand = 1; public LijnPaneel() { afstandveld = new JTextField(4); tekenknop = new JButton("Teken de lijnen"); tekenknop.addactionlistener(this); this.add(new JLabel("Afstand tussen de lijnen")); this.add(afstandveld); this.add(tekenknop); public void actionperformed(actionevent e) { public void paintcomponent(graphics g) {

Fouten afhandelen Er kan veel mislopen in een programma, sommige dingen kan de programmeur niet altijd voorzien: Foute gebruikersinput Bestand niet beschikbaar of beschadigd Geheugen is op enz Manueel afhandelen van fouten is onpraktisch: deze kunnen overal in de code voorkomen. Geen optie: ERROR! ERROR! ERROR! 10

Fouten Afhandelen try { //Beschermde code catch(exceptiontype1 ex1) { //Catch blok catch(exceptiontype2 ex2) { //Catch blok catch(exceptiontype3 ex3) { //Catch blok finally { // het finally blok wordt altijd // uitgevoerd, ook na een return statement finally block is optioneel 11

Acties public void actionperformed(actionevent e) { try { int getal = Integer.parseInt(getalVeld.getText()); if (getal <= 0) Op dit punt wordt throw new ArithmeticException(); paintcomponent (onrechtstreeks) repaint(); opgeroepen catch(numberformatexception ex) { JOptionPane.showMessageDialog(null, "De input moet een getal zijn", "Foute ingave", JOptionPane.ERROR_MESSAGE); catch(arithmeticexception ex) { JOptionPane.showMessageDialog(null, "Het getal moet groter dan 0 zijn", "Foute ingave", JOptionPane.ERROR_MESSAGE);

Lijnwaaier /2 import java.awt.graphics; // Voorbeeld: public void paintcomponent(graphics g) { super.paintcomponent(g); g.drawline(0, 0, this.getwidth(), this.getheight()); public void actionperformed(actionevent e) { repaint();

Vraag 2: Botsende Ballen Opgave: maak een animatie met botsende ballen. Deel 1: teken alle ballen (statisch) op het scherm Deel 2: animaties voorzien

Vraag 2: Deel 1 Color: stelt kleur voor (met RGB coordinaten) Constructor: Color(int R, int G, int B) // geef waarde tussen 0 en 255 mee Graphics: methodes setcolor(color c) // kies kleur van penseel filloval(int x0, int y0, int w, int h),

Vraag 2: Deel 2 Klasse geschikt voor (periodisch) getimede fenomenen. timer = new Timer(); timer.schedule(task, 1000, 200); TimerTask object Delay vóór het starten van de Timer (in ms) Tijdsduur van periode van de timer (in ms) timer.cancel(); // stopt de Timer TimerTask object beschrijft wat er periodisch moet gebeuren.

TimerTask TimerTask bevat een methode run(), die beschrijft wat er gebeurt na elke periode van de Timer. We willen een TimerTask met een eigen implementatie van run() gebruik van een extensie (analoog met JPanel). Typische implementatie: public class MyTimerTask extends TimerTask { @Override public void run() { We gebruiken de klasse lokaal enkel in BalPaneel. Declareer de klasse daarom in BalPaneel zelf (niet in een apart bestand).

Vraag 3: Chatclient Opgave: een chatclient maken en verbinden op het netwerk. JTextArea JTextArea JScrollPane JTextField JScrollPane

Vraag 3: Chatclient JScrollPane(Component view, int vsbpolicy, int hsbpolicy) view: onderdeel dat wordt vervat met een scrollbar vsbpolicy/hsbpolicy: wanneer de scrollbar moet verschijnen. Voor vertical: o JScrollPane.VERTICAL_SCROLLBAR_ALWAYS o JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED o JScrollPane.VERTICAL_NEVER (idem voor horizontal) setlayout(layout object): wat er moet gebeuren wanneer er componenten toegevoegd worden met add(); GridLayout, BoxLayout, SpringLayout, Borderlayout add(obj, BorderLayout.WEST);

SimpleConnection Importeer de JAR-file SimpleConnection connection = new SimpleConnection(); public void connect(string host, int port) // verbindt naar een server (zie bord voor inputs) public void sendtext(string msg); // stuur een bericht naar de server public String readline(); // kijkt of de server een bericht stuurt en returnt dat als String

SimpleConnection SimpleConnection String readline() kan de volgende berichten teruggeven: SAY <naam> <bericht> betekent dat er iets gezegd werd ENTER <naam> betekent dat er een nieuwe gebruiker in de chatroom is binnengekomen LEAVE <naam> betekent dat er een gebruiker de chatroom heeft verlaten USERS <naam 1>,<naam 2>,,<naam N> geeft een lijst van de gebruikers die online zijn. Tip: gebruik de volgende functies van String: String[] split(string splitter) String substring(int beginindex) String substring(int beginindex, int endindex)