Toon posts:

[java] PinAutomaat

Pagina: 1
Acties:
  • 126 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
ff vraagie, hoop dat iemand met eindelijk uit de brand kan helpen!!! :)

ik ben dus een pinautomaat in Java aan het maken. Alleen nu lukt het me niet, om tekst op het scherm te krijgen.
En deze tekst mag pas op het scherm komen, nadat in een door mijzelf gemaakte klasse, via een if-statement iets is gecontroleerd.

Ik heb nu zoiets dit:
-----------------------------------------------------------------------
class Rekening
{ private int nummer;
private int pincode;
private int bedrag;
private int saldo;
String foutmelding;

Rekening(int nummer, int pincode, int bedrag)
{ this.nummer = nummer;
this.pincode = pincode;
this.bedrag = bedrag;
this.foutmelding = foutmelding;
saldo = (1000);
}

void toon (Graphics g, int x, int y)
{
if ( pincode != 0001 || nummer != 5951666)
{
foutmelding = "Pincode of banknummer niet correct ingevoerd!";
g.drawString("" + this.foutmelding, x, y);
}
}
}

Dat controleren enzo, is opzich wel goed... ik krijg alleen die tekst niet op het scherm... ik heb dat nu zo gedaan, butien de klasse:

public void paint(Graphics g)
{
een.toon(g, 20, 200);
}

----------------------------------------------------------------------

Nu, hopen dat er IEMAND is die het weet... anders wordt ik heel droevig :'(
thx alvast _/-\o_

  • Nielsz
  • Registratie: Maart 2001
  • Niet online
Nou ben ik een n00b, maar ik snap toch niet dat je voor elke text die je voor kan stellen, een eigen functie gaat maken? 8)7
code:
1
2
3
4
5
6
7
void toon (Graphics g, string s, int x, int y)
{
if ( pincode != 0001 || nummer != 5951666)
{
g.drawString(s, x, y);
}
}

Verder snap ik ook niet waarom je this.foutmelding doet, terwijl je de regel erboven this. er niet boven zet. Doe het dan allebei wel, of allebei niet.
En test eerst eens met een statische text, dus gewoon
g.drawstring("woei",10,30);

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Hier je code even wat beter leesbaar
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class Rekening { 
        private int nummer;     
        private int pincode;
        private int bedrag;
        private int saldo;
        
        String foutmelding;

        Rekening( int nummer, int pincode, int bedrag) { 
                this.nummer = nummer;
                this.pincode = pincode;
                this.bedrag = bedrag;
                this.foutmelding = foutmelding;
                saldo = (1000);
        }

         void toon (Graphics g, int x, int y) {

                 if ( pincode != 0001 || nummer != 5951666) {
                        foutmelding = "Pincode of banknummer niet correct ingevoerd!";
                        g.drawString("" + this.foutmelding, x, y);
                }
        }
}

Hier wat commentaar op je classes: Zie het opbouwend :)
1) Waarom is de String foutmelding niet private?
2) Waarom zorg je ervoor dat de String foutmelding binnen de hele classes beschikbaar is, terwijl je hem alleen in toon() nodig hebt
3) Waarom haken om 1000 in saldo = (1000);
4) Je class is niet meer te wijzigen. Wat nou als de pincode gewijzigd moet worden?
5) Je maakt je class erg inflexibel door hard te checken op een pincode en op een nummer (wtf doet die eigenlijk? is dat een rekening nummer?)
Beter is het misschien om een pinautomaat anders te bekijken:
Je kunt misschien beter in het object rekening het juiste rekeningnummer en de daarbijbehorende pincode in variabeles opslaan.

Dan als je wilt controleren of iemand wel een juiste pincode heeft ingevuld kun je gewoon hetvoldoende doen
Java:
1
2
3
4
5
6
7
// Maak een rekening met een nummer en een pincode
//
Rekening rekening = new Rekening( 5951666, 0001 );

// Controleer op de ingegeven pincode
//
rekening.controleer( ingegevenPincode );


6) Om er voor te zorgen dat je later de pincode kunt wijzigen, kun je methodes maken waarin je al je klassevariabelen kunt wijzigen en opvragen. Deze kun je ook intern gebruiken. Als je niet wil dat men een klassevariabele van buiten kan wijzigen (zoals rekeningnummer) dan kun je die methode private maken.
Binnen deze methodes kun je controleren of de ingevoerde waarde wel geldig is.

7) toon( ) heeft geen access modifier, dat betekend dat ie class access heeft. Dit wil je vaak niet.

Meer code:
Java:
1
2
3
        public void paint(Graphics g) {
                een.toon(g, 20, 200);
        }

8 ) Hoort dit niet in een appletklasse te staan :?
9) Gebruik normale variabele namen. Een is niet duidelijk over 3 dagen :)

  • Nielsz
  • Registratie: Maart 2001
  • Niet online
Glimi schreef op 31 oktober 2002 @ 14:47:
Als iedereen even een momentje heeft. Hier ben ik wel even mee bezig ;)
:o

Verwijderd

Laat me raden... jij doet Hogere Informatica op de Hogeschool van Amsterdam?

  • roelio
  • Registratie: Februari 2001
  • Niet online

roelio

fruitig, en fris.

Of aan de NHL in Leeuwarden :)

AMD Phenom II X4 // 8 GB DDR2 // SAMSUNG 830 SSD // 840 EVO SSD // Daar is Sinterklaas alweer!!


  • Nielsz
  • Registratie: Maart 2001
  • Niet online
HIO Utrecht?

  • B4tman_DH
  • Registratie: Oktober 1999
  • Laatst online: 00:16

B4tman_DH

To the Bat.....

Volgens mij doet ie het voor zichzelf :D

Verwijderd

Topicstarter
hzm thx Nielsz.... maar wat je zei doet ie idd ook niet... kan dat hier aan liggen ofzo.. dit staat er inder, buiten de klasse:

---------------------------------------------------------
class OkHandler implements ActionListener
{
public void actionPerformed( ActionEvent e )
{
String getalNummerInvoer = rekeningNummerVak.getText();
int invoer1 = Integer.parseInt( getalNummerInvoer );

String getalPinInvoer = pinCodeVak.getText();
int invoer2 = Integer.parseInt( getalPinInvoer );

een = new Rekening(invoer1, invoer2);
}
}

public void paint(Graphics g)
{
een.toon(g, 20, 200);
}
--------------------------------------------------------

dat ie die een.toon dinges niet ziet, omdat ie een nieuwe Rekening aan maakt in de OkHandler..... ?? :)
zou echt niet wetne hoe t anders moet... heb al van alles geprobeerd... maar nog niet de juiste dus ;)

Verwijderd

Jah het is weer overduidelijk; een eerstejaars informaticus. :O
Probeer het hier eens mee. Compleet met inlog-functie en opneem functie.

class Rekening
{
private int nummer=0;
private int pincode;
private int saldo;

public Rekening()
{
nummer = nummer++;
pincode = 0001;
saldo = 1000;
}

public Rekening(int nummer, int pincode, int bedrag)
{
this.nummer = nummer;
this.pincode = pincode;
this.saldo = saldo;
}
public void toon()
{
System.out.println("Uw rekeningnummer is "+ nummer);
System.out.println("Uw saldo bedraagt " +saldo);
}
public void opnemen(int debet)
{
if (this.login())
{
saldo = saldo - debet;
System.out.println("U heeft " + debet +" opgenomen");
System.out.println("Uw huidige saldo is " +saldo);
}

}
public boolean login()
{
Systemout.println("Geef uw pincode op");
int i=MyInput.read.Int();
if ( i == this.pincode)
{
return true;
}
else
{
return false;
}
}


public static void main(String[] args)
{
Rekening rekening = new Rekening();
rekening.toon();
rekening.opnemen(400);
rekening.toon();
}
}

  • Nielsz
  • Registratie: Maart 2001
  • Niet online
Verwijderd schreef op 31 oktober 2002 @ 15:13:
Jah het is weer overduidelijk; een eerstejaars informaticus. :O
Tja. Iedereen moet beginnen natuurlijk. Jouw code is ook niet helemaal flex imo, dus je hoeft nog niet te gapen ;)

Verwijderd

Topicstarter
whooo... nou mensen een hoop nuttige reply zie ik al!! :*)
denk dat t NU toch ECHT WEL moet lukken...hoop ik... maar ik denk wel dat jullie allemaal zo goed zijn, dat t geen probleem moet zijn ;)

en zo niet, dan posten we t wel weer ffies ...
thx iig allemaal :D

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 29-08 03:21

.oisyn

Moderator Devschuur®

Demotivational Speaker

volgende keer mag je er wel bijzeggen dat het huiswerk is hoor (staat ook in de FAQ) ;)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • whoami
  • Registratie: December 2000
  • Laatst online: 19:34
[nohtml]
Verwijderd schreef op 31 oktober 2002 @ 15:13:
Jah het is weer overduidelijk; een eerstejaars informaticus. :O
Probeer het hier eens mee. Compleet met inlog-functie en opneem functie.
Dan hoef jij eigenlijk niet zo te reageren, en met zomaar een lap code te posten help je hem misschien wel om het werkend te krijgen, maar dan leert de TS er uiteindelijk niets van.

https://fgheysels.github.io/


Verwijderd

Topicstarter
oke, t werkt dus nog niet... en opzich zijn die oplossingen misschien wel goed, maar ze werken bij mij niet.. dus er zit ergens nog iets fout. en als ik DAT goed heb dan ben ik jullie eeuwig dankbaar....

dus hier maar ff mn hele code ;)
-----------------------------------------------------------------------
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import javax.swing.*;


class Rekening
{
private int nummer;
private int pincode;
private int saldo;

String foutmelding;

Rekening( int nummer, int pincode)
{
this.nummer = nummer;
this.pincode = pincode;
this.foutmelding = foutmelding;
saldo = (1000);
}

void toon (Graphics g, int x, int y)
{
if ( pincode != 0001 || nummer != 5951666)
{
System.out.println("Pincode of banknummer niet correct ingevoerd!"+ nummer);
g.drawString("" + this.foutmelding, x, y);
}
}
}


public class Opdracht6e__ extends Applet
{
Label uwRekeningnummer, uwPincode, uwSaldo, opneemBedrag, opMerking;
TextField rekeningNummerVak, pinCodeVak, bedragVak;
Button ok, opnemen;

Rekening een;

public void init()
{
setLayout( null );

//Labels
uwRekeningnummer = new Label("Rekeningnummer");
uwRekeningnummer.setBounds( 20, 20, 110, 20);
uwPincode = new Label("Uw Pincode");
uwPincode.setBounds( 20, 50, 110, 20);
uwSaldo = new Label("Uw Saldo");
uwSaldo.setBounds( 20, 100, 110, 20);
opneemBedrag = new Label("Opneembedrag:");
opneemBedrag.setBounds(20, 130, 110, 20);
opMerking = new Label();
opMerking.setForeground( Color.red );
opMerking.setText("Opmerking denk....!!(@*&^%");
opMerking.setBounds(20, 250, 150, 20);
opMerking.setVisible( false );
add(opMerking);
add(uwRekeningnummer);
add(uwPincode);
add(uwSaldo);
add(opneemBedrag);

//TextFields
rekeningNummerVak = new TextField("");
rekeningNummerVak.setBounds( 140, 20, 80, 20);
pinCodeVak = new TextField("");
pinCodeVak.setBounds( 140, 50, 50, 20);
bedragVak = new TextField("");
bedragVak.setBounds( 140, 130, 50, 20);
add(rekeningNummerVak);
add(pinCodeVak);
add(bedragVak);

//Buttons
ok = new Button("OK");
ok.setBounds( 260, 50, 30, 20 );
ok.addActionListener( new OkHandler() );
opnemen = new Button("Opnemen");
opnemen.setBounds( 260, 130, 70, 20 );
add(ok);
add(opnemen);
}

class OkHandler implements ActionListener
{
public void actionPerformed( ActionEvent e )
{
String getalNummerInvoer = rekeningNummerVak.getText();
int invoer1 = Integer.parseInt( getalNummerInvoer );

String getalPinInvoer = pinCodeVak.getText();
int invoer2 = Integer.parseInt( getalPinInvoer );

een = new Rekening(invoer1, invoer2);
}
}

public void paint(Graphics g)
{
een.toon(g, 20, 200);
}
}

-----------------------------------------------------------------------

hoop dat nu btje duidelijk is wat t probleem is.
En de opdracht is dus gewoon:
Klasse Rekening, met als attributen: het nummer, het saldo en de pincode (deze attributen zijn private).
Maak een geschikte constructor voor de klasse. Geef de klasse verschillende methoden: een waarmee je kunt controleren of de pincode juist is, een waarmee je kunt controleren of het saldo hoog genoeg is, een waarmee je het saldo kunt verlagen.
Alleen de rekeningnummers 5951666, 5951667 en 5951668 zijn toegestaan.
Als het rekeningsnummer bekend is, de bijbehorende pincode juist is en het saldovoldoende hoog is mag het bedrag opgenomen worden en moet het saldo van die rekening verlaagd worden. Zo niet dan moet er een foutmelding op het scherm komen.

zooooooooooo.... nou, laatste hoop... :)
denk dat t zo wel helemaal duidelijk moet zijn, wat de bedoeling is, en hoe en wat enzo...

  • HunterPro
  • Registratie: Juni 2001
  • Niet online
mag ik je verzoeken van de [code=java] tags gebruik te maken? :)

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
:) Jij krijgt nu gewoon een nullpointer exception.

Als je Applet opgestart wordt, dan wordt gelijk init() uitgevoerd. In de init worden alle knoppen en labels en whatever gemaakt.
Dan levert de browser het Graphics object en roept paint ( Graphics g ) aan. Probleem is echter dat _nog_niemand_ op de knop gedrukt heeft en dus je nog geen new Rekening( ) hebt kunnen uitvoeren. Je probeert dus toon( ) aan te roepen op geheugen waar nog geen object in zit :)

Een hack hiervoor:
Java:
1
2
3
4
5
6
public void paint( Graphics g ) {

   if( een != null ) {
      een.toon( g, 10, 20 );
   }
}


Doet hij het dan? Nope :) Zodra men namelijk op de knop gedrukt heeft, heb in een (wat een kutnaam!) nu wel een object zitten, maar paint( ) is allang aangeroepen! Dus je string komt niet meer op het scherm. Je moet je applet dus de opdracht geven paint( ) opnieuw uit te voeren

Quick hack:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class OkHandler implements ActionListener {

   public void actionPerformed( ActionEvent e ) {

      String getalNummerInvoer = rekeningNummerVak.getText();
      int invoer1 = Integer.parseInt( getalNummerInvoer );

      String getalPinInvoer = pinCodeVak.getText();
      int invoer2 = Integer.parseInt( getalPinInvoer );

      een = new Rekening(invoer1, invoer2);
      
      // Roep de repaint() methode aan van Applet
      //
      repaint()
   }
}


Als je code werkt na die hacks, moet je even gaan kijken naar je model. Zoals ik in mijn eerste reply vertelde is dit model nogal inflexibel en ab!so!luut! niet herbruikbaar.

Verwijderd

Topicstarter
yeah Glimi!! aan jou heb ik wat!! thx :)
ik ben echt dooooooooommm (ik zeg t zelf maar ff).. zit gewoon uren te kloten, en dat omdat ik alleen repaint(); vergeet neer te planten...

sjeezzz 8)7 :X }:O |:(

maar ik kan nu text op t scherm krijgen idd... en ga nu ff aan die andere punten werken die je in je eerste post vermelde.
nou... kan ik rustig weer verder... :)

  • dog4life
  • Registratie: Juli 2001
  • Niet online
Euhm, ligt het aan mij, of is TyKe speciaal geregistreerd om deze vraag te stellen? En dan is 't zelfs nog hw... Maagoed

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 29-08 22:51

D2k

dog4life schreef op 31 oktober 2002 @ 18:38:
Euhm, ligt het aan mij, of is TyKe speciaal geregistreerd om deze vraag te stellen? En dan is 't zelfs nog hw... Maagoed

who died and made you king?
niet mee bemoeien daar zijn wij voor

Doet iets met Cloud (MS/IBM)


Verwijderd

Topicstarter
erm... ik ben al veel langer lid... maar was onder een andere naam, maar die ben ik dus vergeten, en mn password ook, en dat email adres waar ik me toen mee had geregistreerd heb ik nie meer...
mn username was: frankentike ofzo.... maar ik poste idd nooit hier, 4x ofzo.
en nu kwam GoT weer mooi van pas... erg?? :)

  • dog4life
  • Registratie: Juli 2001
  • Niet online
[no flame intended]

Mag ik toch wel melding van maken? Was al gedaan, oke, maar niet dat hij net geregistreerd was....

[/no flame intended]

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Verwijderd schreef op 31 oktober 2002 @ 18:32:
(..)
maar ik kan nu text op t scherm krijgen idd... en ga nu ff aan die andere punten werken die je in je eerste post vermelde.
nou... kan ik rustig weer verder... :)
Als je daar vragen over hebt, moet je die hier maar stellen :) Want ik heb ze nogal snel opgeschreven.

Verwijderd

Topicstarter
Glimi schreef op 31 oktober 2002 @ 19:50:
[...]

Als je daar vragen over hebt, moet je die hier maar stellen :) Want ik heb ze nogal snel opgeschreven.
eh nou... die text werkt nu opzich wel... maar zoals je al zei, die klasse shit klopt geen reet van, omdat ik dus 3 rekeningnummers er in moet hebben.
er zijn namelijk 3 nummers mogelijk, met 4 pincodes... 1tje lukt wel... maar als je er 3 kan invoeren, die alledrie een bepaald saldo hebben...

zou je me daar ook mee kunnen helpen?? :) :) :)

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Verwijderd schreef op 31 oktober 2002 @ 20:01:
eh nou... die text werkt nu opzich wel... maar zoals je al zei, die klasse shit klopt geen reet van, omdat ik dus 3 rekeningnummers er in moet hebben.
er zijn namelijk 3 nummers mogelijk, met 4 pincodes... 1tje lukt wel... maar als je er 3 kan invoeren, die alledrie een bepaald saldo hebben...

zou je me daar ook mee kunnen helpen?? :) :) :)
Ja dat kan ik :) en ik wil het ook nog ;)

Wat jij wilt is dus een klasse waarbij het rekening nummer, pincode en het saldo niet vast staat: maw rekeningnummer, pincode en saldo zijn variabelen van de klasse:

Java:
1
2
3
4
5
6
7
8
9
public class Rekening {

   private int rekeningNummer;
   private int pincode;
   private int saldo;

   // Hier komt zo nog wel wat meer
   //
}


We willen deze Rekening dus laten initaliseren met een bepaalde rekeningnummer, bepaalde pincode en een bepaald saldo. Daarom gaan we een constructor aanmaken waarin alle waardes netjes geset worden, zoals we ze opgeven.

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class Rekening {

   private int rekeningNummer;
   private int pincode;
   private int saldo;

   public Rekening( int rekeningNummer, int pincode, int saldo ) {
      
      this.rekeningNummer = rekeningNummer;
      this.pincode                = pincode;
      this.saldo                    = saldo;
   }

   // Hier komt zo nog wel wat meer
   //
}

We hebben overal this voor gegooid omdat de naam van het argument hetzelfde is als de naam in de klasse (het is noueenmaal een goede naam 8) )

Verder wil je dat iemand een bedrag kan afschrijven. Hiervoor moet dus het saldo gewijzigd worden. Daarom gaan we onze Rekeningclass uitbreiden een methode "neemGeldOp" geven. We moeten natuurlijk wel weten hoeveel geld er af moet, dus dat wordt onze parameter

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class Rekening {

   private int rekeningNummer;
   private int pincode;
   private int saldo;

   public Rekening( int rekeningNummer, int pincode, int saldo ) {
      
      this.rekeningNummer = rekeningNummer;
      this.pincode                = pincode;
      this.saldo                    = saldo;
   }

   public void neemGeldOp( int amount ) {

      saldo -= amount;
   }

   // Hier komt zo nog wel wat meer
   //
}


Probleem is nu alleen dat we nog geen pincode check doen bij het opnemen. Maar let op. Een pincode check kan mislukken en dat er dus _geen_ geld opgenomen mag worden. We moeten dan ook vertellen dat het niet gelukt is. Dit gaan we doen door de methode een boolean te laten returnen

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public class Rekening {

   private int rekeningNummer;
   private int pincode;
   private int saldo;

   public Rekening( int rekeningNummer, int pincode, int saldo ) {
      
      this.rekeningNummer = rekeningNummer;
      this.pincode                = pincode;
      this.saldo                    = saldo;
   }

   public void neemGeldOp( int amount, int pincode ) {

      boolean gelukt = false;
      if( pincode == this.pincode ){
         
         saldo -= amount;
         gelukt = true;
      }

      return gelukt;
   }

   // Hier komt zo nog wel wat meer
   //
}


Verder moesten we ook nog het rekeningnummer en het saldo kunnen opvragen van buitenaf. De pincode willen we natuurlijk niet voor iedereen beschikbaar maken, dus die methode maken we wel, maar alleen voor gebruik binnen de classe zelf (we maken hem dus private)

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
public class Rekening {

   private int rekeningNummer;
   private int pincode;
   private int saldo;

   public Rekening( int rekeningNummer, int pincode, int saldo ) {
      
      this.rekeningNummer = rekeningNummer;
      this.pincode                = pincode;
      this.saldo                    = saldo;
   }

   public void neemGeldOp( int amount, int pincode ) {

      boolean gelukt = false;
      if( pincode == this.pincode ){
         
         saldo -= amount;
         gelukt = true;
      }

      return gelukt;
   }

   public int getRekeningNummer( ) {
      return rekeningNummer;
   }

   public int getSaldo( ) {
      return saldo;
   }

   private int getPincode() {
      return pincode
   }
}


Als je nu goed kijkt zie je dat we nergens controleren of het saldo niet onder 0 is als men wat wil opnemen.
Dit kunnen we natuurlijk opnemen in de "neemGeldOp" methode, maar waarom controleren we het dan niet in de constructor?? Daarom gaan we voor elke variabele die we hebben een 2 methodes maken. 1 waarmee we de methode opvragen en 1 waarmee we hem gaan veranderen. Dan hoeven we de controles alleen op die plekken in te bouwen.

We gaan nu dus overal waar we een klasse variabele opvragen deze vervangen voor "get<naamVariabele>()" en als we hem wijzigen voor "set<naamVariabele>()"

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
public class Rekening {

   private int rekeningNummer;
   private int pincode;
   private int saldo;

   public Rekening( int rekeningNummer, int pincode, int saldo ) {
      
      setRekeningNummer( rekeningNummer );
      setPincode( pincode );
      // Als het saldo niet gezet kan worden (onder de 0) bij het aanmaken van de Rekening
      // Dan is de bank lief en heeft de persoon automatisch 
      // een saldo van 0
      if( !setSaldo( saldo ) {
         setSaldo( 0 );
      }
   }

   public void neemGeldOp( int amount, int pincode ) {

      boolean gelukt = false;
      if( pincode == getPincode()){
         
         gelukt =setSaldo( getSaldo() - amount );         
      }

      return gelukt;
   }

   public int getRekeningNummer( ) {
      return rekeningNummer;
   }

   public int getSaldo( ) {
      return saldo;
   }

   private int getPincode() {
      return pincode
   }

   private void setRekeningNummer( int rekeningNummer ) {
   
      // We kennen geen negatieve rekeningNummers
      // 
      if( rekeningNummer < 0 ) {

         throw new IllegalArgumentException( "rekeningNummer kan niet negatief zijn!" );
      }

      this.rekeningNummer = rekeningNummer;    
   }

   private void setPincode( int pincode ) {

      //Alleen 4 cijfers als pincode
      //
      if( pincode < 0 || pincode > 9999 ) {

         throw new IllegalArgumentException( "Pincode mag max 4 cijfers zijn!" );
      }
      
      this.pincode = pincode;
   }

   private boolean setSaldo( int saldo ) {

      //controle of het saldo niet onder de 0 zit
      // 
      if( saldo < 0 ) {

         return false;
      }

      this.saldo = saldo;
      return true;
   }
}


En dan is ie klaar ! (ik heb btw neits getest maar ff snel opgeschreven )
Nog even wat uitleg. Als een set<bla>() niet kan omdat niet aan de condities (bijv pincode geen 4 cijfers ed) voldoet, dan gooi je meestal een Exception Een exception is geeft aan dat er iets fout gegaan is en beindigt het programma als hij niet opgevangen wordt: vul voor de grap maar eens een pincode van -302 in. Je zult zien dat hij eruit klapt

Ik heb als uitzondering gekozen om setSaldo() geen Exception te laten gooien, maar een boolean te laten returnen als het niet lukt. Dit komt omdat het nog wel eens voorkomt dat een saldo onder de 0 komt ( studenten he ;) ) en om dan het programma te beïndigen is neit helemaal hoe het hoort. Dit kan ik dus afvangen door de Exception op te vangen, maar dat is net ff een stap te ver voor je denk ik :)

Probeer dit rustig op je in te laten werken. Als je iets niet snapt even rustig te kijken. Iets te kloten, nog iets te zoeken op bijv www.google.com of http://search.java.sun.com, evt nog even kijken bij de tutorials van op java.sun.com.
Snap je het dan nog niet, vraag het gerust :)

Verwijderd

Zeker Turing, of niet??? Ik had echt een coole gemaakt toen! Beste van de klas :D 5 VWO zeker???

  • Expander
  • Registratie: Februari 2001
  • Niet online
Tss.. Als je echt het boek had gelezen, zou je al begrip hebben van klassen. Dan zie je ook veel sneller waar ze heen willen met die vraag en dan is het antwoord heel simpel..

Oh, volgens mij kom ik wat flamerig over.. Iig bovenstaande denk ik dan als ik dit lees..

Expanding the inexpandable


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

*snapt er echt geen hout meer van*
Pagina: 1