Hoofdstuk 1 //comment commentaar



Dovnload 201.19 Kb.
Datum23.08.2016
Grootte201.19 Kb.

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 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 methode

Programma 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
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> = waarde

Constante definiëren. (!): identifier in hoofdletters

Vb. final double TAX_RATE = 0.07;
<data type> = initiële waarde

Variabele definiëren. (!): identifier kleine letters

Vb. 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)

public (final)

(!): 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 MEMBERS

public method 1()

{ statements }

... (kan ook private)

public method n()

{ statements }

}//END CLASS

Output Methoden:
Io.writeInfo(“blablabla”)

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

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.NumberFormat

Numberformat 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.01

value = Math.floor(value*1000+.5)/1000 Afronden tot op 0.001

Verder: 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 Operations

Rational: Logical:

== (gelijk aan) ! NOT

!= (verschillend van) || OR

< (kleiner dan) && AND

<= (kleiner of gelijk aan)

> (groter dan)

>= (groter of gelijk aan
if Statement

opm.: 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 IF

else(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;

break;

default : default statements;

}//END SWITCH

voorbeeld p. 182-184

HOOFDSTUK 6


Pretest Loop
while(test expression)

{

statement 1;



...

statement n;

}//END WHILE
Posttest Loop
do

{

statement 1;



...

statement n;

}//END DO/WHILE

while(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 de

if(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

(parameter list)

public char ↓

private double data-types vermelden!

protected int...

{//BEGIN METHOD BODY



method statement;

...

method statement;



return

}//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
void (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

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

}//END BALANCE



HOOFDSTUK 8
UML

ClassName

–varabele:adt=beginwaarde

–CONSTANTE:adt=beginwaarde



+methodName()

+methodName(in inputvar:adt)

out

inout


+methiodname():adt

+methodName(in inputvar:adt)=adt



voor private

+ voor public

# voor protected


void zonder parameters

void met parameters

non-void zonder parameters

non-void met parameters


vb. p284

Constructors
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-304

winPercent = (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
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:

    • directe methode:

arrayName[index] = waarde;

    • via loop:

for(int index = 0; index < size; ++index)

arrayName[index] = io.readInt(“Geef integer”);




  • elementen kopiëren:

    • directe methode:

      • variabele = arrayName[index];

(!) variabele zelfde adt als array!

      • arrayName[i] = arrayName[j];

(!) enkel slot i wordt gewijzigd.

    • via loop: zie vb. p358



Tabellen van Objecten
ClassName arrayName[] = new ClassName[size]

for(int i=0; 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: p399

Overzicht listeners: p400

Overzicht GUI components: p405
import javax.swing.*; //FOR swing CLASSES

import java.awt.event.*; //FOR EVENT HANDLERS
//INHERITS AND CUSTOMIZES FRAME CLASS TO ADD DESIRED FEATURES

class SimpleFrame extends JFrame

{

//CONSTRUCTOR



public SimpleFrame(String title)

{ //CALL SUPERCLASS CONSTRUCTOR



super(title);
//ADD LISTENER

addWindowListener(new WindowHandler());

}//END SimpleFrame() CONSTRUCTOR

//WINDOW EVENT HANDLER CLASS



private 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 CLASS

public 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);

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


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):

//DECLARATIE



private JComboBox naamBox
In constructor:

//ARRAY VOOR INHOUD

String boxItems[] = {“Optie1”, “Optie2”, …}
//DEFINITIE

naamBox = new JComboBox(boxItems);


//IN CONTAINER

container.add(naamBox);


Geselecteerd item vinden:

naamBox.getSelectedItem());


Om selectie onmiddelijk te detecteren:

//LISTENER

naamBox.addActionListener(new BoxHandler());
//EVENT HANDLER

private class BoxHandler implements ActionListener

{

//PROCESS EVENT



public void actionPerformed(ActionEvent e)

{

//CHECK COMBOBOX EVENT



if (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 INHOUD

String listItems[] = {“Optie1”, “Optie2”, …}
//DEFINITIE

naamList = new JList(listItems);


//SET VISIBLE ITEMS

naamList.setVisibleRowCount(3);


//IN CONTAINER (met scrollbar)

container.add(new JScrollPane(naamList));


Geselecteerd item vinden:

//INDEX VD GESELECTEERDE OPTIES



int selectedIndices[] = naamList.getSelectedIndices();
//OPHALEN VD OPTIES

for (int i = 0; i < selectedIndices.lenght; ++i)

{

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



}//END FOR
Om selectie onmiddelijk te detecteren:

//LISTENER

naamList.addActionListener(new ListHandler());
//EVENT HANDLER

private class ListHandler implements ListSelectionListener

{

//PROCESS EVENT



public 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):

//DECLARATIE



private JCheckBox naamBox
In constructor:

//DEFINITIE

naamBox = new JCheckBox(“Optie");
//IN CONTAINER

container.add(naamBox);


Is box geselecteerd?

naamBox.isSelected() methode die true/false antwoord


Met een actionlistener: zie vb. p469-472

//LISTENER

CheckBoxHandler checkHanler = new CheckBoxHandler();

naamBox.addItemListener(new checkHandler());


//EVENT HANDLER

private class CheckBoxHandler()implements ItemListener

{

//PROCESS EVENT



public void itemStateChanged(ItemEvent e)

{

//CHECK COMBOBOX EVENT



if (e.getSource() instanceof JCheckBox)

{

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 BUTTONGROEP

ButtonGroup = naamGroep = new ButtonGroup();
//DEFINITIE KNOPKES

naamKnop = new JRadioButton(“Optie");


//KNOPPEN IN GROEP

naamGroep.add(naamKnop);


//IN CONTAINER

container.add(naamKnop);


Is box geselecteerd?

naamKnop.isSelected() methode die true/false antwoord


Met een actionlistener: slechts voor 1 knop/groep een listener maken!

//LISTENER

naamKnop.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-487

Stappen indien geen submenus:


  1. definieer een array voor de verschillende opties van hoofdmenu’s

private JMenuItem menuItems[];


  1. definieer hoofdmenu-object en stel sneltoets in ( in de constructor).

JMenu menuNaam = new JMenu(“Titel”);

menuNaam.setMnemonic(‘T’);




  1. definieer string voor de menu’s

String arrayNaam[] = {“Optie1”, “Optie2”,…}


  1. array-objecten initialiseren voor menu’s.

menuItems = new JMenuItem[arrayNaam.lenght];


  1. menu-items initialiseren, in menu teken en listeners op zetten.

for (int i = 0; i < arrayNaam.lenght; ++i)

{

menuItems[i] = new JMenuItem(arrayNaam[i]);



menuNaam.add(arrayNaam[i]);

menuItems[i].addActionlistener(new MenuHandler());

}//END FOR


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

JMenuBar bar = new JMenuBar();

bar.add(menuNaam);

setJMenuBar(bar)


  1. eventhandler:

//MENU HANDLER CLASS

private class MenuHandler()implements ActionListener

{

//PROCESS MENU EVENT



public void ActionPerformed(ActionEvent e)

{

//MENUITEMS ARRAY DOORLOPEN



for(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.483

Lettertypes: zie p.489-490



Overzicht 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;
In constructor:

//LAYOUT VD PANEL INSTELLEN

mgrObject = new CardLayout();

panelNaam = new JPanel();

panelNaam.setLayout(mgrObject);
//CARDS MAKEN

JPanel kaartNaam = new JPanel();

...

panelNaam.add(kaartNaam, “identifier”);


//CARD RANDOM ACCES MAKEN

mgrObject.addLayoutComponent(kaartNaam, “identifier”);


//CARDS IN CONTAINER

container.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 file

FileOutputStream: Openen binaire ouput stream naar file

DataInputStream: Lezen van binaire data van een stream

DataOutputStream: Schrijven binaire data naar een stroom

FileReader: Openen tekst stream voor input verbonden met file

FileWriter: Openen tekst stream voor output verbonden met file

BufferedReader: Voorziet input buffering

BufferedWriter: Voorziet output buffering

PrintWriter: Schrijven van tekst data naar output stream
Binaire Files Openen
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 OPVANGEN

catch(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
Schrijven: →WriteStudentFile: zie p.559
outFile.writeUTF(String); zie p560 voor niet-strings te schrijven

(!): moet binnen try/catch blok

mogelijke exceptions: NumberFormatException, IOException,…
Lezen: →ReadStudentFile: zie p.561
inFile.readUTF(); zie p562 voor niet-strings te lezen

(!): moet binnen try/catch blok

mogelijke exceptions: NullPointerException, EOFException,

NumberFormatException, IOException,…


Sluiten binaire files
Outputfile:

outFile.flush(); schrijft van buffer naar file


outFile.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-568

Eindresultaat readstudent: p.569-572



Tekstfiles 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

{

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 lijn

outFile.println(String); cursor neemt nieuwe lijn


(!): moet binnen try/catch blok

mogelijke exceptions: IOException,…


Lezen:
inFile.read(); leest één karakter

inFile.readLine(); leest één lijn

while((line = inFile.readLine()) != null);

leest tot er niets meer te lezen is

(!): moet binnen try/catch blok

mogelijke exceptions: NullPointerException, EOFException,

IOException,…

Sluiten tekstfiles

outFile.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");



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

{//CREATE A STATEMENT OBJECT FOR THE ALUMNI CONNECTION



Statement naamStmt =

naamConnection.createStatement();
//EXECUTE AN SQL STATEMENT TO RETURN A RESULT SET

naamResultset =

naamStmt.executeQuery("SELECT ... FROM ...;");
//LOOP THROUGH RESULTSET WITH NEXT

while(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:

DELETE


FROM [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)"

+ "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 verbinding

naamConnection.close();











De database wordt beschermd door het auteursrecht ©opleid.info 2017
stuur bericht

    Hoofdpagina