HOOFDSTUK 1 - Samenvattingen€¦ · Web view2009/04/02  · HOOFDSTUK 2 Levenscyclus v/e...

28
Informatica II – Overzicht Java Code by: Nirves HOOFDSTUK 1 //COMMENT Commentaar /************ BLOCK COMMENT Geblokt commentaar ************/ (!) Volgende commentaar moet zeker aanwezig zijn: -Aan het begin: naam van de programmeur, datum waarop het programma werd geschreven, datum van de laatste aanpassingen, programmeur van de laatste wijzigingen; doel van het programma (probleemstelling, gebruikte algoritmes); -Bij de declaratie van constanten en variabelen: betekenis en doel?; -Toelichting per onderdeel v/h programma; -De belangrijkste procedures (zeker main()) toelichten; -Wanneer een programmablok gesloten wordt met “}”, steeds vermelden wat je afsluit; (!) Commentaar toevoegen tijdens het programmeren, niet erna. import packagename.classname; Importeren van externe klassen. (!) “*“ kan men gebruiken als wildcard om alle klassen uit een zeker pakket te halen, bvb. “import javax.swing.*importeert alle klassen uit het “swing” pakket. public class C lassName Declaratie v/e klasse { begin klasse (kan ook private of protected) beëindig klasse } (!) De naam van het .java-bestand moet hetzelfde zijn als de classname van de publieke klasse! (!) Klassenamen steeds met een hoofdletter laten beginnen! public static void main(String args[]) { begin methode Declaratie v/e methode Programma instructie 1; (zie h7) Programma instructie 2; 1

Transcript of HOOFDSTUK 1 - Samenvattingen€¦ · Web view2009/04/02  · HOOFDSTUK 2 Levenscyclus v/e...

Page 1: HOOFDSTUK 1 - Samenvattingen€¦ · Web view2009/04/02  · HOOFDSTUK 2 Levenscyclus v/e programma: Probleem definiëren (IPO-schema) Oplossing plannen (methodes, klassendiagramma)

Informatica II – Overzicht Java Code by: Nirves

HOOFDSTUK 1

//COMMENT Commentaar

/************BLOCK COMMENT Geblokt commentaar************/

(!) Volgende commentaar moet zeker aanwezig zijn:- Aan het begin: naam van de programmeur, datum waarop het

programma werd geschreven, datum van de laatste aanpassingen, programmeur van de laatste wijzigingen; doel van het programma (probleemstelling, gebruikte algoritmes);

- Bij de declaratie van constanten en variabelen: betekenis en doel?;- Toelichting per onderdeel v/h programma;- De belangrijkste procedures (zeker main()) toelichten;- Wanneer een programmablok gesloten wordt met “}”, steeds

vermelden wat je afsluit;(!) Commentaar toevoegen tijdens het programmeren, niet erna.

import packagename.classname; Importeren van externeklassen.

(!) “*“ kan men gebruiken als wildcard om alle klassen uit een zeker pakket te halen, bvb. “import javax.swing.*” importeert alle klassen uit het “swing” pakket.

public class ClassName Declaratie v/e klasse{ begin klasse (kan ook private of protected) beëindig klasse }

(!) De naam van het .java-bestand moet hetzelfde zijn als de classname van de publieke klasse!(!) Klassenamen steeds met een hoofdletter laten beginnen!

public static void main(String args[]){ begin methode Declaratie v/e methodeProgramma instructie 1; (zie h7)Programma instructie 2;

…Beëindig methode }

(!) Programma-instructies scheiden met puntkomma’s!(!) Argumenten vermelden, kan ook leeg zijn (main())(!) Methode-namen steeds met kleine letter!

HOOFDSTUK 2

1

Page 2: HOOFDSTUK 1 - Samenvattingen€¦ · Web view2009/04/02  · HOOFDSTUK 2 Levenscyclus v/e programma: Probleem definiëren (IPO-schema) Oplossing plannen (methodes, klassendiagramma)

Informatica II – Overzicht Java Code by: Nirves

Levenscyclus v/e programma:- Probleem definiëren (IPO-schema)- Oplossing plannen (methodes, klassendiagramma)- Stapsgewijze verfijning (pseudo-code)- Coderen (java-code, commentaar niet vergeten!)- Testen, debuggen (syntax,logic en run-time errors opsporen)

HOOFDSTUK 3

Data members definëren:

final <data type> <IDENTIFIER> = waardeConstante definiëren. (!): identifier in hoofdlettersVb. final double TAX_RATE = 0.07;

<data type> <identifier> = initiële waardeVariabele definiëren. (!): identifier kleine lettersVb. int startingValue = 5;

Data types: byte, short, int, long, float, double, char, String, boolean.

(!):chars: enkele aanhalingstekens (‘ ‘). Strings: dubbele aanhalingstekens (“ “).

Binnen een klasse:private (final) <data type> <identifier>public (final) <data type> <identifier>

(!): Meestal variabelen private en methodes public (zie verder).

Class Declaration Format

class Classname{ //DATA MEMBERS

private variable 1;... (kan ook protected)private variable n;

//METHOD MEMBERSpublic method 1(){ statements }... (kan ook private)public method n(){ statements }

}//END CLASSOutput Methoden:

Io.writeInfo(“blablabla”)System.out.println(“blablabla”) (!):nieuwe lijn na blablabla

2

Page 3: HOOFDSTUK 1 - Samenvattingen€¦ · Web view2009/04/02  · HOOFDSTUK 2 Levenscyclus v/e programma: Probleem definiëren (IPO-schema) Oplossing plannen (methodes, klassendiagramma)

Informatica II – Overzicht Java Code by: Nirves

System.out.print(“blablabla”) (!):geen nieuwe lijn

\n nieuwe lijn (opm: backslash!)\\ backslash\’ enkel aanhalingsteken\” dubbel aanhalingsteken\b backspace\r carriage return\t horizontale tab

import java.text.NumberFormatNumberformat currency = Numberformat.getCurrencyInstance();currency.format(getal)→ Formateren van een getal als “$ #,###.##”

Vb. io.writeInfo(“De winst bedraagt: “ + currency.format(winst));

Intput Methoden:

io.readInt(“blablabla?”)io.readDouble(“blablabla?”)io.readChar(“blablabla?”)io.readString(“blablabla?”)io.readBool(“blablabla?”)

Vb. value = io.readDouble(“Geef een waarde in”);

Standaard Methoden:

Wiskundige: zie kaft boek, vb. Math.sqrt() Tekst: zie kaft boek, vb.:

int stringLenght = 0;String teacher = “Grace Hopper”;stringLenght = teacher.lenght()

(!): Java is case-sensitive: s.Lenght ≠ s.lenght

HOOFDSTUK 4

value = Math.floor(value*100+.5)/100 Afronden tot op 0.01value = Math.floor(value*1000+.5)/1000 Afronden tot op 0.001Verder: wiskundige shit, zie toepassingen p.135 e.v.

Naam bestand = naam publieke klasse bij uitvoerend deel public class Bestandsnaam {

Naam klasse begin (class Xxxxx) = naam item in de main()Xxxxx item = new Xxxxx();item.getData; ...

HOOFDSTUK 5

Boolean OperationsRational: Logical:

3

Page 4: HOOFDSTUK 1 - Samenvattingen€¦ · Web view2009/04/02  · HOOFDSTUK 2 Levenscyclus v/e programma: Probleem definiëren (IPO-schema) Oplossing plannen (methodes, klassendiagramma)

Informatica II – Overzicht Java Code by: Nirves

== (gelijk aan) ! NOT!= (verschillend van) || OR< (kleiner dan) && AND<= (kleiner of gelijk aan)> (groter dan)>= (groter of gelijk aan

if Statementopm.: om strings te vgl:

if(test expression) if(s1.compareTo(s2) < 0) { {

statement 1; statement 1;... ...

statement n; statement n;}//END IF }//END IF

if/else Statement

if(test expression) {

statement 1;...statement n;

}//END IFelse(test expression) {

statement 1;...statement n;

}//END ELSE

Switch Statement (zie p. 175 ivm. break)

switch(selector value){

case value1 : case 1 statements;break;

case value2 : case 2 statements;break;

...case valueN : case N statements;

<optioneel> break;default : default statements;

}//END SWITCH voorbeeld p. 182-184

HOOFDSTUK 6

Pretest Loop

while(test expression)

{statement 1;...

4

Page 5: HOOFDSTUK 1 - Samenvattingen€¦ · Web view2009/04/02  · HOOFDSTUK 2 Levenscyclus v/e programma: Probleem definiëren (IPO-schema) Oplossing plannen (methodes, klassendiagramma)

Informatica II – Overzicht Java Code by: Nirves

statement n; }//END WHILE

Posttest Loop

do

{statement 1;...statement n;

}//END DO/WHILEwhile(test expression)

Fixed Repitition

for(int count=initial_value; count_test_expression; ++count/--count){

statement 1;...statement n;

}//END FOR

vb. for(int i = 1; i < 11; ++count) (loopt 10x)vbn. p.212-218

Een loop verlaten

while(test expression) {

statement;... break haalt u meteen uit deif(test expresiion) loop, naar de volgende lijn

break; na “end while”. vb. p220.... statement;

}//END WHILE

for(int count=initial_value; count_test_expression; ++count/--count){

statement;... continue slaat slechts 1 loop if(test expresiion) over en doet verder met de for-

continue; structuur. vb. p221....statement;

}//END FOR

HOOFDSTUK 7

Non-Void Methods: sturen 1 enkele waarde terug

//METHOD HEADER vb. p236<modifier> <return type> <method_name>(parameter list)

5

Page 6: HOOFDSTUK 1 - Samenvattingen€¦ · Web view2009/04/02  · HOOFDSTUK 2 Levenscyclus v/e programma: Probleem definiëren (IPO-schema) Oplossing plannen (methodes, klassendiagramma)

Informatica II – Overzicht Java Code by: Nirves

public char ↓private double data-types vermelden!protected int...{//BEGIN METHOD BODY

<lokale variabelen declareren>method statement;...method statement;return <single value>

}//END METHOD BODY geen data-types vermelden! ↑

- Aanroepen: object_name.method_name(arguments)vb. double grossPay = 0.0;

grossPay = myPay.returnGrossPay(8.0,32);-of-

system.out.println(myPay.returnGrossPay(8.0,32));-of-

StaugIO io = new StaugIO();io.writeNumber(myPay.returnGrossPay(8.0,32));

Void Methods: sturen geen waarde terug

<modifier> void <method_name>(parameter list)

vb. public void displayHeading(){

System.out.println(“\tNAME\tSTREET ADRESS\tCITY”);System.our.println(“\t____\t_____________\t____”);

}//END DISPLAYHEADING

- Aanroepen: myObject.displayHeading();- Om binnen een void-method de controle terug aan het programma te geven zet je “return;” (bvb. binnen een if). vb. p250.

Overzicht klasse: p251

Methoden Overladen

- Verschillende methodenn met zelfde naam maar verschillende parameters (aantal of datatypes). De methode doet andere bewerkingen afhankelijk van de ingelezen argumenten.- vb. p253.

Recursie

vb. public double balance(int n){

if(n == 0)return deposit;

else

6

Page 7: HOOFDSTUK 1 - Samenvattingen€¦ · Web view2009/04/02  · HOOFDSTUK 2 Levenscyclus v/e programma: Probleem definiëren (IPO-schema) Oplossing plannen (methodes, klassendiagramma)

Informatica II – Overzicht Java Code by: Nirves

return (1 + rate / 12 / 100) * balance(n - 1 );}//END BALANCE

HOOFDSTUK 8

UML

– voor private+ voor public# voor protected

void zonder parametersvoid met parameters

non-void zonder parametersnon-void met parameters

vb. p284Constructors

public ClassName(parameters) geen return-type, ook niet void; enkele om waarden te initialiseren of bestanden te openen; naam constructor = naam klasse!

vb. public SavingsAccount(double bal) { balance = bal; }//END SavingsAccount()

aanroepen: SavingsAccount myAccount = new SavingsAccount(1000.00);

kan overladen worden wanneer een parameter v/e methode (dus ook bij contructors)

dezelfde naam heeft als een private member: this gebruiken. this.naam verwijst dan naar de private member.(vb. p393)

vb. p300-304winPercent = (double)wins/(wins + losses) * 100; //CAST

→ zet de data tijdelijk om in double ipv int (wat 0 zou geven).

Packages: zie p.307 ev.

package naamVanDePackage (kleine letter!)public class NaamVanDeKlasse (Hoofdletter!){ inhoud van de klasse }

HOOFDSTUK 9

ClassName

–varabele:adt=beginwaarde–CONSTANTE:adt=beginwaarde

+methodName()+methodName(in inputvar:adt)

outinout

+methiodname():adt+methodName(in inputvar:adt)=adt

7

Page 8: HOOFDSTUK 1 - Samenvattingen€¦ · Web view2009/04/02  · HOOFDSTUK 2 Levenscyclus v/e programma: Probleem definiëren (IPO-schema) Oplossing plannen (methodes, klassendiagramma)

Informatica II – Overzicht Java Code by: Nirves

Building a Class Family

- Superklasse op de normale manier maken als onderdeel van een package, data member moeten protected (ipv. private).

- Subklasse:class subclass_name extends superclass_name{

Subclass data members...Subclass method members...

}//END CLASS

- Binnen de constructor: super(argumenten); → roept de constructor v/d superklasse op en vult argumenten in bij

parameters.

- Importeren van de package in het programma met de main(): import.packageName.*;

Polymorfisme en dynamic binding

- Als nooit objecten van een superklasse mogen gemaakt worden: public abstract class ClassName

- Als een methode algemeen in voor alle subklassen maar de statements erin verschillen per subklasse (vb. weeklyPay() op p339), dan declareer je ze in de superklasse als abstract, met enkel de header (zie vb. p339).

HOOFDSTUK 10

1-Dimensionale Tabel

declaratie : adt arrayName[] = new adt[size];(!) De table begint bij 0, dus de hoogst mogelijke index zal gelijk zijn aan (SIZE-1)!

initialisatie : adt arrayName[] = {waarde1,waarde2,…,waardeN};(!) Bij char: ‘waarde’, bij String: “waarde”

elementen invoeren :o directe methode:

arrayName[index] = waarde;o via loop:

for(int index = 0; index < size; ++index) arrayName[index] = io.readInt(“Geef integer”);

8

Page 9: HOOFDSTUK 1 - Samenvattingen€¦ · Web view2009/04/02  · HOOFDSTUK 2 Levenscyclus v/e programma: Probleem definiëren (IPO-schema) Oplossing plannen (methodes, klassendiagramma)

Informatica II – Overzicht Java Code by: Nirves

elementen kopiëren : o directe methode:

variabele = arrayName[index];(!) variabele zelfde adt als array!

arrayName[i] = arrayName[j];(!) enkel slot i wordt gewijzigd.

o via loop: zie vb. p358 Tabellen van Objecten

ClassName arrayName[] = new ClassName[size]for(int i=0; i<size; ++i){

arrayName[i] = new Classname()arrayName[i].methodName[]...

}//END FOR→ zie vb. p366

Tabellen doorgeven aan een methode

public void methodName(adt array[]) (vierkante haakjes!)

methodName(name) (bij oproepen methode via argument: geen [ ])

(!) De array zelf wordt gewijzigd in de methode! Om dit te voorkomen werk je met een tijdelijke array (zie p370).

Individuele waarden doorgeven:public void methodName(arrayName[i])

Sorteeralgoritmes: zie p.372 e.v.

HOOFDSTUK 11

JFrame

Overzicht events: p399Overzicht listeners: p400Overzicht GUI components: p405

import javax.swing.*; //FOR swing CLASSESimport java.awt.event.*; //FOR EVENT HANDLERS

9

Page 10: HOOFDSTUK 1 - Samenvattingen€¦ · Web view2009/04/02  · HOOFDSTUK 2 Levenscyclus v/e programma: Probleem definiëren (IPO-schema) Oplossing plannen (methodes, klassendiagramma)

Informatica II – Overzicht Java Code by: Nirves

//INHERITS AND CUSTOMIZES FRAME CLASS TO ADD DESIRED FEATURESclass SimpleFrame extends JFrame{

//CONSTRUCTORpublic SimpleFrame(String title){ //CALL SUPERCLASS CONSTRUCTOR

super(title);

//ADD LISTENERaddWindowListener(new WindowHandler());

}//END SimpleFrame() CONSTRUCTOR

//WINDOW EVENT HANDLER CLASSprivate class WindowHandler extends WindowAdapter{

public void windowClosing(WindowEvent e){

System.exit(0);}//END windowClosing()

}//END WindowHandler CLASS}//END SimpleFrame CLASS

//APPLICATION CLASS TO TEST SimpleFrame CLASSpublic class FrameTest{

public static void main(String[] args){//DEFINE FRAME OBJECT

SimpleFrame window = new SimpleFrame(“Frametitle”); //SET FRAME SIZE

window.setSize(500,300);//MAKE FRAME VISIBLE

window.show();}//END main()

}//END FrameSet

Containers en Buttons (vb. p406-407)

1. Importeer awt (bovenaan)import java.awt.*;

2. Declareer object (in class, vóór constructor)private JButton button;

2. Maak container voor GUI componenten (in constructor)Container container = getContentPane();

3. Maak GUI componenten (in constructor) en voeg toe aan container (in constructor)

button = new Jbutton("Tekst");container.add(button);

10

Page 11: HOOFDSTUK 1 - Samenvattingen€¦ · Web view2009/04/02  · HOOFDSTUK 2 Levenscyclus v/e programma: Probleem definiëren (IPO-schema) Oplossing plannen (methodes, klassendiagramma)

Informatica II – Overzicht Java Code by: Nirves

4. Listener toevoegen (in constructor)button.addActionListener(newButtonHandler());

5. Maak eventhandler class (in class, ná constructor) private class ButtonHandler implements ActionListener

{ public void actionPerformed(ActionEvent e)

{ JOptionPane.showOptionDialog (null,“boodschap”,“Frametitel”,optionPane.INFORMATION_MESSAGE);

}//END actionPerformed}//END ButtonHandler CLASS

6. Applicatie: zelfde als boven

JOptionPane klasse (p409)

JOptionPane.showMessageDialog(null,“boodschap”, “Frametitel”,optionPane.INFORMATION_MESSAGE);

JOptionPane.showInputDialog("Geef tekst in");

Tooltips en sneltoetsen

button.setToolTipText("Tekst voor de tooltip");button.setMnemonic(‘karakter’);

Layout managers en Panels (p412)

Statements toevoegen aan de constructor.FlowLayout: container.setLayout(new FlowLayout(...));

FlowLayout() → centered, gaps = 5 pxl FlowLayout(int alignment) FlowLayout(int alignment, int hGap, int vGap)

vb.container.setLayout(new FlowLayout(FlowLayout.LEFT, 10, 20));

Meer knoppen: vb. p414

GridLayout: GridLayout() → 1 rij GridLayout(int rows, int cols) GridlLayout(int rows, int cols, int hGap, int vGap)

vb. container.setLayout(new GridLayout(2,3,10,10));

BorderLayout: BorderLayout() BorderLayout(int hGap, int vGap)

vb. container.setLayout(new BorderLayout(10,10))→ objecten een plaats geven bij het toevoegen aan de container:

container.add(nameLabel,“Plaats”);“Plaats” = North, East, South, West, Center

11

Page 12: HOOFDSTUK 1 - Samenvattingen€¦ · Web view2009/04/02  · HOOFDSTUK 2 Levenscyclus v/e programma: Probleem definiëren (IPO-schema) Oplossing plannen (methodes, klassendiagramma)

Informatica II – Overzicht Java Code by: Nirves

Eigen Layout Maken (zie vb. p422-423)

container.setLayout(null);

button.setLocation(int x ,int y);button.setSize(int l ,int h);

JPanel: zie vb. p424-426

JLabel: JLabel nameLabel = new JLabel("text");nameLable.setForeground(Color.black);container.add(nameLabel);zie vb. p429

JTextField & JTextArea: constructors p. 431, vb. p. 432-434

* panel.add(new JScrollPane(textArea);* textArea.setText(“__________”); textAre.append(“___: ” textField.getText()); * new String(passwordField.getPassword)

Text Events: vb. p436-438

HOOFDSTUK 12

Combobox (JComboBox) om slechts 1 item aan te duiden

In klasse (bovenaan)://DECLARATIEprivate JComboBox naamBox

In constructor://ARRAY VOOR INHOUDString boxItems[] = {“Optie1”, “Optie2”, …}

//DEFINITIEnaamBox = new JComboBox(boxItems);

12

Page 13: HOOFDSTUK 1 - Samenvattingen€¦ · Web view2009/04/02  · HOOFDSTUK 2 Levenscyclus v/e programma: Probleem definiëren (IPO-schema) Oplossing plannen (methodes, klassendiagramma)

Informatica II – Overzicht Java Code by: Nirves

//IN CONTAINERcontainer.add(naamBox);

Geselecteerd item vinden: naamBox.getSelectedItem());

Om selectie onmiddelijk te detecteren://LISTENERnaamBox.addActionListener(new BoxHandler());

//EVENT HANDLERprivate class BoxHandler implements ActionListener{

//PROCESS EVENTpublic void actionPerformed(ActionEvent e){

//CHECK COMBOBOX EVENTif (e.getSource() == naamBox){

...}//END IF

}//END actionPerformed()}//END BoxHandler

Vbn. p.455-459

Listbox (JList) om meerdere items aan te duiden

In klasse (bovenaan):private JList naamList

In constructor://ARRAY VOOR INHOUDString listItems[] = {“Optie1”, “Optie2”, …}

//DEFINITIEnaamList = new JList(listItems);

//SET VISIBLE ITEMSnaamList.setVisibleRowCount(3);

//IN CONTAINER (met scrollbar)container.add(new JScrollPane(naamList));

Geselecteerd item vinden: //INDEX VD GESELECTEERDE OPTIESint selectedIndices[] = naamList.getSelectedIndices();

//OPHALEN VD OPTIESfor (int i = 0; i < selectedIndices.lenght; ++i)

13

Page 14: HOOFDSTUK 1 - Samenvattingen€¦ · Web view2009/04/02  · HOOFDSTUK 2 Levenscyclus v/e programma: Probleem definiëren (IPO-schema) Oplossing plannen (methodes, klassendiagramma)

Informatica II – Overzicht Java Code by: Nirves

{...listItems[selectedIndices[i]]...;

}//END FOR

Om selectie onmiddelijk te detecteren://LISTENERnaamList.addActionListener(new ListHandler());

//EVENT HANDLERprivate class ListHandler implements ListSelectionListener{

//PROCESS EVENTpublic void valueChanged(ListSelectionEvent e){

...zie hierboven...}//END valueChanged()

}//END ListHandler

vbn. p.461-468

Checkbox (JCheckBox) om meerdere items aan te duiden

In klasse (bovenaan)://DECLARATIEprivate JCheckBox naamBox

In constructor://DEFINITIEnaamBox = new JCheckBox(“Optie");

//IN CONTAINERcontainer.add(naamBox);

Is box geselecteerd? naamBox.isSelected() methode die true/false antwoord

Met een actionlistener: zie vb. p469-472//LISTENERCheckBoxHandler checkHanler = new CheckBoxHandler();naamBox.addItemListener(new checkHandler());

//EVENT HANDLERprivate class CheckBoxHandler()implements ItemListener{

//PROCESS EVENTpublic void itemStateChanged(ItemEvent e){

//CHECK COMBOBOX EVENTif (e.getSource() instanceof JCheckBox){

14

Page 15: HOOFDSTUK 1 - Samenvattingen€¦ · Web view2009/04/02  · HOOFDSTUK 2 Levenscyclus v/e programma: Probleem definiëren (IPO-schema) Oplossing plannen (methodes, klassendiagramma)

Informatica II – Overzicht Java Code by: Nirves

if (naamBox.isSelected()){...}//END IF

}//END IF}//END itemStateChanged()

}//END BoxHandler

Radiobox (JRadioButton) om slechts 1 item aan te duiden

In klasse (bovenaan):private JRadioButton naam

In constructor://MAAK BUTTONGROEPButtonGroup = naamGroep = new ButtonGroup();

//DEFINITIE KNOPKESnaamKnop = new JRadioButton(“Optie");

//KNOPPEN IN GROEPnaamGroep.add(naamKnop);

//IN CONTAINERcontainer.add(naamKnop);

Is box geselecteerd? naamKnop.isSelected() methode die true/false antwoord

Met een actionlistener: slechts voor 1 knop/groep een listener maken!//LISTENERnaamKnop.addItemListener(new RadioButtonHandler());

→verder analoog aan checkbox (met if-structuur), vb. p474-475(Sub)Menu’s (JMenu, JMenuItem, JMenuBar)

zie vbn. p478-479 en 484-487Stappen indien geen submenus:

1. definieer een array voor de verschillende opties van hoofdmenu’s private JMenuItem menuItems[];

2. definieer hoofdmenu-object en stel sneltoets in ( in de constructor).JMenu menuNaam = new JMenu(“Titel”); menuNaam.setMnemonic(‘T’);

3. definieer string voor de menu’sString arrayNaam[] = {“Optie1”, “Optie2”,…}

4. array-objecten initialiseren voor menu’s.menuItems = new JMenuItem[arrayNaam.lenght];

5. menu-items initialiseren, in menu teken en listeners op zetten.for (int i = 0; i < arrayNaam.lenght; ++i)

15

Page 16: HOOFDSTUK 1 - Samenvattingen€¦ · Web view2009/04/02  · HOOFDSTUK 2 Levenscyclus v/e programma: Probleem definiëren (IPO-schema) Oplossing plannen (methodes, klassendiagramma)

Informatica II – Overzicht Java Code by: Nirves

{menuItems[i] = new JMenuItem(arrayNaam[i]);menuNaam.add(arrayNaam[i]);menuItems[i].addActionlistener(new MenuHandler());}//END FOR

6. menubar definiëren, menu toevoegen en bar gereedzetten (menu mag nooit in een container!).

JMenuBar bar = new JMenuBar();bar.add(menuNaam);setJMenuBar(bar)

7. eventhandler://MENU HANDLER CLASSprivate class MenuHandler()implements ActionListener{

//PROCESS MENU EVENTpublic void ActionPerformed(ActionEvent e){

//MENUITEMS ARRAY DOORLOPENfor(int i = 0; i < menuItems.lenght; ++i){

if (e.getSource() == menuItems[i]){...}//END IF

}//END IF}//END actionPerformed()

}//END MenuHandler

Met submenu’s: zie p.484-488

Kleuren: zie p.483Lettertypes: zie p.489-490Overzicht gebruikte Methodes: p.491

Meer Layout Managers

BoxLayout (zie vb. p.492-495)

Box naamVanDeBox = Box.createHorizontalBox();Box naamVanDeBox = Box.createVerticalBox();naamVanDeBox.add(areaNaam);naamVanDeBox.add(naamVanAndereBox);conatiner.add(naamVanDeBox);

CardLayout (zie vb. p.495-503)

Voor constructor:private CardLayout mgrObject;private JPanel panelNaam;

16

Page 17: HOOFDSTUK 1 - Samenvattingen€¦ · Web view2009/04/02  · HOOFDSTUK 2 Levenscyclus v/e programma: Probleem definiëren (IPO-schema) Oplossing plannen (methodes, klassendiagramma)

Informatica II – Overzicht Java Code by: Nirves

In constructor://LAYOUT VD PANEL INSTELLENmgrObject = new CardLayout();panelNaam = new JPanel();panelNaam.setLayout(mgrObject);

//CARDS MAKENJPanel kaartNaam = new JPanel();...panelNaam.add(kaartNaam, “identifier”);

//CARD RANDOM ACCES MAKENmgrObject.addLayoutComponent(kaartNaam, “identifier”);

//CARDS IN CONTAINERcontainer.add(panelNaam, “Center”);

Methoden binnen eventhandler:mgrObject.first(panelNaam);mgrObject.last(panelNaam);mgrObject.next(panelNaam);mgrObject.previous(panelNaam);mgrObject.show(panelNaam);

HOOFDSTUK 14

File Streams

via java.io package:

FileInputStream: Openen binaire input stream naar fileFileOutputStream: Openen binaire ouput stream naar fileDataInputStream: Lezen van binaire data van een streamDataOutputStream: Schrijven binaire data naar een stroomFileReader: Openen tekst stream voor input verbonden met fileFileWriter: Openen tekst stream voor output verbonden met fileBufferedReader: Voorziet input buffering BufferedWriter: Voorziet output bufferingPrintWriter: Schrijven van tekst data naar output stream

Binaire Files Openen

17

Page 18: HOOFDSTUK 1 - Samenvattingen€¦ · Web view2009/04/02  · HOOFDSTUK 2 Levenscyclus v/e programma: Probleem definiëren (IPO-schema) Oplossing plannen (methodes, klassendiagramma)

Informatica II – Overzicht Java Code by: Nirves

public void openInputFile(vb.dat){

FileInputStream in = new FileInputStream(vb.dat)DataInputStream inFile = new DataInputStream(in);

}//END openInputFile

public void openOutputFile(vb.dat){ FileOutputStream out = new FileOutputStream(vb.dat);

DataOutputStream outFile = new DataOutputStream(out);}//END openOutputFile

verkorte schrijfwijze mogelijk:public void openOutputFile(vb.dat){ DataOutputStream outFile =

new DataOutputStream(new FileOutputStream(vb.dat)); }//END openOutputFile

public void openInputFile(vb.dat) {

DataInputStream inFile = new DataInputStream(new FileInputStream(s));

}//END openInputFile

Exception Handling

try{ //Statements that might throw exceptions }catch(ExceptionClass exceptionObject){ //Statements to handle exceptions }finally{ //Statements that will always execute }public void openOutputFile(vb.dat){//PROBEREN FILE TE OPENEN

try{

DataOutputStream outFile = new DataOutputStream(new FileOutputStream(s));

textArea.setText(“File Open”)}//END try();

//FOUT OPVANGENcatch(IOException io){

textArea.setText(“\n\nFile not Found Error\n” + io.toString());

}//END catch()}//END openOutputFile

→Fouten die java kan herkennen: zie p.555

Schrijven/Lezen van en naar binaries

18

Page 19: HOOFDSTUK 1 - Samenvattingen€¦ · Web view2009/04/02  · HOOFDSTUK 2 Levenscyclus v/e programma: Probleem definiëren (IPO-schema) Oplossing plannen (methodes, klassendiagramma)

Informatica II – Overzicht Java Code by: Nirves

Schrijven: →WriteStudentFile: zie p.559

outFile.writeUTF(String); zie p560 voor niet-strings te schrijven→(!): moet binnen try/catch blokmogelijke exceptions: NumberFormatException, IOException,…

Lezen: →ReadStudentFile: zie p.561

inFile.readUTF(); zie p562 voor niet-strings te lezen→(!): moet binnen try/catch blokmogelijke exceptions: NullPointerException, EOFException, NumberFormatException, IOException,…

Sluiten binaire files

Outputfile:outFile.flush(); schrijft van buffer naar fileoutFile.close(); sluit file→(!): moet binnen try/catch blok

mogelijke exceptions: NullPointerException, IOException,…

Inputfile:inFile.close(); sluit file→(!): moet binnen try/catch blok

mogelijke exceptions: NullPointerException, IOException,…

Eindresultaat writestudent: p.564-568Eindresultaat readstudent: p.569-572Tekstfiles openen

public void openOutputTextFile(vb.txt){

try{

PrintWriter outFile = new PrintWriter((new BufferedWriter(new FileWriter(vb.txt))));

fileNameField.setText(“File Open”)}catch(IOException io){

textArea.setText(“\n\nFile not Found Error\n” + io.toString());

}}//END openOutputTextFile

public void openInputTextFile(vb.txt){

try{

19

Page 20: HOOFDSTUK 1 - Samenvattingen€¦ · Web view2009/04/02  · HOOFDSTUK 2 Levenscyclus v/e programma: Probleem definiëren (IPO-schema) Oplossing plannen (methodes, klassendiagramma)

Informatica II – Overzicht Java Code by: Nirves

BufferedReader inFile = new BufferedReader(new FileReader(vb.txt));

fileNameField.setText(“File Open”)}catch(IOException io){...}

}

Schrijven/Lezen van en naar tekstfiles

Schrijven:

outFile.print(String); cursor blijft op zelfde lijnoutFile.println(String); cursor neemt nieuwe lijn

→(!): moet binnen try/catch blokmogelijke exceptions: IOException,…

Lezen:

inFile.read(); leest één karakterinFile.readLine(); leest één lijnwhile((line = inFile.readLine()) != null);

leest tot er niets meer te lezen is→(!): moet binnen try/catch blokmogelijke exceptions: NullPointerException, EOFException, IOException,…

Sluiten tekstfilesoutFile.flush();outFile.close();inFile.close();

vb.writestudent: p.578-582 vb.readstudent: p.582-586

JDBC

Stap1: Laden van een driver → via java.sql package

private void loadDriver(){//TRY LOADING SUN DRIVER

try {//LOAD SUN DRIVER Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); }//END try

//DRIVER NOT FOUND, REPORT ERROR catch (ClassNotFoundException err)

{ System.out.println("Could not load driver");

20

Page 21: HOOFDSTUK 1 - Samenvattingen€¦ · Web view2009/04/02  · HOOFDSTUK 2 Levenscyclus v/e programma: Probleem definiëren (IPO-schema) Oplossing plannen (methodes, klassendiagramma)

Informatica II – Overzicht Java Code by: Nirves

System.exit(1); }//END catch}//END loadDriver()

Stap2: DB-verbinding → via getConnection-methode

private void connectDatabase(){ try {//CONNECT TO DATABASE String dir = System.getProperty("user.dir"); String dbFile = “vb.mdb"; String protocol ="jdbc"; String subProtocol = "odbc"; String subName =

"Driver={Microsoft Access Driver (*.mdb)}; DBQ=" + dir + "/" + dbFile;

String URL = protocol + ":" + subProtocol + ":" + subName; naamConnection = DriverManager.getConnection(URL); }//END try

catch(SQLException error) { System.err.println("Error connecting to database: " + error.toString()); }//END catch }//END connectDatabase()

Stap3: Database-operaties: → via Statement-klasse

Definiëren Statement object voor een bepaalde connectie:Statement naamStmt = naamConnection.createStatement();

Zoekmethodes: executeQuery()Niet-zoekmethodes: ExecuteUpdate()

Volgende lijn: next() (resultaat is true/false)

Result Set methodes: getBoolean(int kolomIndex) getBoolean(String kolomNaam)getDouble(int kolomIndex) getDouble(String kolomNaam)getFloat(int kolomIndex) getFloat(String kolomNaam)getInt(int kolomIndex) getInt(String kolomNaam)getString(int kolomIndex) getString(String kolomNaam)

→ Records ophalen:

public void readRecord(){//TRY TO READ DB

try

21

Page 22: HOOFDSTUK 1 - Samenvattingen€¦ · Web view2009/04/02  · HOOFDSTUK 2 Levenscyclus v/e programma: Probleem definiëren (IPO-schema) Oplossing plannen (methodes, klassendiagramma)

Informatica II – Overzicht Java Code by: Nirves

{//CREATE A STATEMENT OBJECT FOR THE ALUMNI CONNECTIONStatement naamStmt =

naamConnection.createStatement();

//EXECUTE AN SQL STATEMENT TO RETURN A RESULT SET naamResultset =

naamStmt.executeQuery("SELECT ... FROM ...;");

//LOOP THROUGH RESULTSET WITH NEXTwhile(naamResultset.next())

{...bewerkingen hier...

naamResultset.getString("kolomNaam");...

}//END while }//END try

catch (SQLException error) { System.err.println("Error reading database names"); }//END catch}//readRecord()

→ toevoegen record:INSERT INTO [tabelnaam] ([kolomnaam1], [kolomnaam2], …)VALUES ([value1], [value2], …)

→ wijzigen record:UPDATE [tabelnaam]SET [kolomnaam1] = [waarde1], [kolomnaam2] = [waarde2], …WHERE [criteria]

→ verwijderen record:DELETEFROM [tabelnaam]WHERE [criteria]

public void writeStudentRecord() { //TRY TO WRITE STUDENT RECORD TO FILE try {

Statement studentStatement = studentConnection.createStatement();

String name = nameField.getText(); String number = numberField.getText(); String GPA = gpaField.getText(); String insertSql =

"INSERT INTO Student(studentNumber,name, GPA)"

22

Page 23: HOOFDSTUK 1 - Samenvattingen€¦ · Web view2009/04/02  · HOOFDSTUK 2 Levenscyclus v/e programma: Probleem definiëren (IPO-schema) Oplossing plannen (methodes, klassendiagramma)

Informatica II – Overzicht Java Code by: Nirves

+ "VALUES (“ + number + "," + name + "," + GPA + ")"; studentStatement.executeUpdate(insertSql);

int selectedIndices[] = majorsList.getSelectedIndices();

//WRITE LIST ITEMS TO FILE for (int i = 0; i < selectedIndices.length; ++i) { Statement studentMajorStatement =

studentConnection.createStatement();

String insertSql2= "INSERT INTO StudentMajor(studentNumber, Major)" + "VALUES(" + number + "," + listItems[selectedIndices[i]] + ")";

studentMajorStatement.executeUpdate(insertSql2);

}//END FOR }//END try() TO WRITE RECORD

//CATCH NUMBER FORMAT EXCEPTION FOR GPA FIELD catch (NumberFormatException nfe) { studentArea.append("\n\nWRITE FILE ERROR\n" + "MAKE SURE GPA IS CORRECT\n" + nfe.toString()); }//END NumberFormatcatch()

//CATCH ANY EXCEPTIONS WRITING TO FILE catch (SQLException io) { studentArea.append("\nWRITE FILE ERROR\n"

+ io.toString()); } //END IO catch()

//CLEAR TEXT FIELDS numberField.setText(""); nameField.setText(""); gpaField.setText("");

}//writeStudentRecord

Stap4: Sluiten van de verbindingnaamConnection.close();

23