Toon posts:

[JAVA] Probleem met uitlezen uit Vector

Pagina: 1 2 Laatste
Acties:
  • 1.128 views sinds 30-01-2008
  • Reageer

  • NetForce1
  • Registratie: November 2001
  • Nu online

NetForce1

(inspiratie == 0) -> true

De variabele bank is dus null, waar komt die vandaan?

[ Voor 24% gewijzigd door NetForce1 op 16-04-2007 11:18 ]

De wereld ligt aan je voeten. Je moet alleen diep genoeg willen bukken...
"Wie geen fouten maakt maakt meestal niets!"


  • Marcj
  • Registratie: November 2000
  • Laatst online: 01-12 16:59
Een NullPointerException op die regel kan alleen zijn dat bank null is. Dus heb je bank wel aangemaakt en geinitialiseerd?

  • SPee
  • Registratie: Oktober 2001
  • Laatst online: 03:20
Als je denkt dat de variabele 'bank' die je in je main functie hebt aangemaakt, daarmee aanroept, dan heb je het mis.
Het zijn aparte objecten.
Een object in een ene klasse, is niet hetzelfde als in een andere klasse en hebben dus ook niet automatisch dezelfde waarde. Dit moet je explicitiet toevoegen, bv. door het mee te geven als variabele in je constructor.

b.v.
code:
1
2
3
4
public BankGui(Bank b){
  this.bank = b;
  // andere code die in je public BankGUI() staat.
}

let the past be the past.


Verwijderd

Topicstarter
Ik neem aan dat er met de bank over de bank klasse wordt gesproken? En ja die is aangemaakt en gecompileerd.

Ik kom er niet echt uit, ik zal even de benodigde code hiervoor uploadeden:
http://www.wikiupload.com/download_page.php?id=127476

Is niet echt netjes zo om de allemaal code te dumpen, maar ik hoop dat iemand mij kan helpen hiermee.

  • BalusC
  • Registratie: Oktober 2000
  • Niet online

BalusC

Carpe diem

Woojikooji: als je niet bekend bent met de termen en nullpointers, dan is het handiger om eerst eens wat tutorials te doornemen. Een "bank variabele" is absoluut niet hetzelfde als een "bank klasse" ;)

Verwijderd

Topicstarter
Thnx, ik snap wel wat er met de bank variabele wordt bedoel, namelijk private Bank bank :p maar niet echt met de vragen of die is aangemaakt en geinitialiseerd :D want ik dacht dat die al is aangemaakt, in de desbtreffende code?

[ Voor 23% gewijzigd door Verwijderd op 16-04-2007 11:48 ]


  • NetForce1
  • Registratie: November 2001
  • Nu online

NetForce1

(inspiratie == 0) -> true

Initialiseren is een waarde toekennnen aan die variabele, bijv. Bank bank = new Bank(); Of wat Spee zegt. Maar een tutorial doornemen kan zeker geen kwaad ;)

De wereld ligt aan je voeten. Je moet alleen diep genoeg willen bukken...
"Wie geen fouten maakt maakt meestal niets!"


  • BalusC
  • Registratie: Oktober 2000
  • Niet online

BalusC

Carpe diem

Verwijderd schreef op maandag 16 april 2007 @ 11:46:
maar niet echt met de vragen of die is aangemaakt en geinitialiseerd :D want ik dacht dat die al is aangemaakt, in de desbtreffende code?
Klik eens op het linkje dat ik jou heb gegeven en volg de linkjes daarin :)

Verwijderd

Topicstarter
Hehe ik heb maar eens ff 5 minuten de tijd genomen om duidelijk door te nemen wat er precies moet gebeuren mbv die links.

Met het toevoegen van
Java:
1
Bank bank = new Bank("De Hogeschoolbank");


komt er geen foutmelding.

Ik ben nu alweer een stap verder maar nu komt er te staan dat er geen klanten zijn :p En dat terwijl er al klanten zijn :p

En is het niet mogelijk om Bank bank = new Bank("De Hogeschoolbank"); gewoon in main te schrijven zoals die dat nu al is en dit in de andere klassen te laden, want als we de naam ervan veranderen moet die overal worden veranderd.

  • NetForce1
  • Registratie: November 2001
  • Nu online

NetForce1

(inspiratie == 0) -> true

Jazeker, dan moet je de variable bank aan je gui doorgeven, dit kan bijv. via de constructor zoals hier aangegeven: SPee in "[JAVA] Probleem met uitlezen uit Vector"

De wereld ligt aan je voeten. Je moet alleen diep genoeg willen bukken...
"Wie geen fouten maakt maakt meestal niets!"


Verwijderd

Topicstarter
Ok bedankt, nu maar uitzoeken waarom die de data uit de bestand niet haalt, en ik moet ook nog een manier bedenken om de data in de bestand te kunnen bewerken en toevoegen :/ Gaan nog 3 lange dagen worden denk ik.. (donderdag namelijk een presentatie hiervan :o )

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 07:54

Janoz

Moderator Devschuur®

!litemod

Als jij dat stukje code in je gui hebt staan (Bank bank - new Bank("blaat");) dan is het natuurlijk logisch dat deze leeg is. Je hebt op dat moment namelijk 2 banken. De ene bank zit in je hoofdklasse (de variabele bank daar) en de andere bank zit in je gui klasse. Je hebt immers 2x een nieuwe bank gemaakt. Wil je dat dat dezelfde bank is dan zul je op 1 of andere manier de bank uit je hoofdklasse door moeten geven aan de guiklasse. Dit kun je doen op de manier die SPee aangeeft.

Verder ben ik het volledig met BalusC eens. Je mist enkele zeer belangrijke basisbeginselen. Op deze manier aanmodderen levert je alleen maar meer problemen op. Probeer eerst eens onder de knie te krijgen wat een variabele is, wat een object is en wat een class is, en dan vooral ook wat het verschil hiertussen is.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • NetForce1
  • Registratie: November 2001
  • Nu online

NetForce1

(inspiratie == 0) -> true

Misschien is serializen wel handig dan, of is dat niet toegestaan?

De wereld ligt aan je voeten. Je moet alleen diep genoeg willen bukken...
"Wie geen fouten maakt maakt meestal niets!"


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 07:54

Janoz

Moderator Devschuur®

!litemod

Voor iemand die op dit moment bezig is het verschil tussen een class en een object uit te vogelen lijkt me het serializen nog redelijke rocketsience. Het lijkt me dan ook niet handig om daar gelijk al over te beginnen.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Topicstarter
Bedankt voor alle hulp tot zover, zodra we deze project afhebben, ga ik alles goed opnieuw doornemen. Ik heb het meer door elkaar heen allemaal geleerd wat helemaal niet goed is geweest blijkt maar weer eens.

Ik heb net met de docent naar mijn code gekeken en ik ben eruit gekomen en wat jullie zeiden was helemaal waar maar ik wist niet echt precies hoe ik dat moest verhelpen dus hebben we er even naar gekeken en we kwamen eruit.

Bank wordt in de klasse bank aangemaakt en opgehaald in de andere klassen (Main en KlantBeheerGui oa) mbv
Java:
1
Bank bank = Bank.getInstance();

  • NetForce1
  • Registratie: November 2001
  • Nu online

NetForce1

(inspiratie == 0) -> true

Janoz schreef op maandag 16 april 2007 @ 13:13:
Voor iemand die op dit moment bezig is het verschil tussen een class en een object uit te vogelen lijkt me het serializen nog redelijke rocketsience. Het lijkt me dan ook niet handig om daar gelijk al over te beginnen.
Dat is misschien wel waar, maar het moet sowieso weggeschreven worden volgens de opdracht, en dat is misschien nog wel moeilijker. Dit is gewoon een kwestie van bijna letterlijk de codevoorbeeltjes volgen. Maar zelf wegschrijven is in deze fase wel veel leerzamer natuurlijk.

De wereld ligt aan je voeten. Je moet alleen diep genoeg willen bukken...
"Wie geen fouten maakt maakt meestal niets!"


  • Confusion
  • Registratie: April 2001
  • Laatst online: 01-03-2024

Confusion

Fallen from grace

momania schreef op vrijdag 13 april 2007 @ 20:21:
Want? Je weet dat Vector ook gewoon onderdeel van het collections framework [..]
Het is wel een vreemde eend in de bijt, waarvan het niet vreemd zou zijn als'ie ooit nog deprecated wordt.

Wie trösten wir uns, die Mörder aller Mörder?


Verwijderd

Topicstarter
Ik probeer nu hetzelfde code ongeveer in een andere klasse te halen om de hoogste klantnummer eruit te halen en er 1 bij op te tellen.

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
        Bank bank = Bank.getInstance();

        int knr = bank.klantTeller();
        if (klanten == null || klanten.isEmpty()) {
          int i = 1;
        } else {
          for (i=0; i<knr; i++) {
              i = knr + 1;
          }
          return i;
        }

        tf6.setText(i);


E:\Project\gui\KlantToevoegenGui.java:72: cannot return a value from method whose result type is void
return i;
^
E:\Project\gui\KlantToevoegenGui.java:75: setText(java.lang.String) in javax.swing.text.JTextComponent cannot be applied to (int)
tf6.setText(i);

Tweede error gaat neem ik aan over dat setText alleen een String variabele kan ophalen en geen int? Dus dan moet ik het omzetten naar een String variabele.

Verwijderd

Topicstarter
Tweede foutmelding heb ik snel verholpen:
Java:
1
2
        String knrString = Integer.toString(i);
        tf6.setText(knrString);

  • BalusC
  • Registratie: Oktober 2000
  • Niet online

BalusC

Carpe diem

De eerste is ook vrij duidelijk:
cannot return a value from method whose result type is void
Dit betekent letterlijk: "je kunt een void methode geen waarde laten retourneren".

Nogmaals, lees de Java Tutorial gewoon op je gemak geheel door. Je bent bij de 'Elementen' blijven steken. Daar staat het nota-bene op ;)

Verwijderd

Topicstarter
Ik ben inderdaad niet echt netjes bezig :/

"Er kunnen methoden zijn die helemaal niet antwoorden, dan moet je als element type void invullen."

Inmiddels verholpen, maar ik krijg op het scherm de nummer 0 te zien. Ik denk zelf dat er wat mis gaat bij het converteren van String naar int.

edit: nope gaat niet fout bij het converteren, heb het net even uitgetest met door een andere nieuwgemaakte int een waarde te geven en die te converteren. FF verder kijken dus :p

[ Voor 23% gewijzigd door Verwijderd op 16-04-2007 14:46 ]


Verwijderd

Topicstarter
Ik heb het even doorgenomen en zie dat bank.klantTeller() de waarde 0 teruggeeft alleen kan er niet echt opkomen waarom, want bank is al geinitialiseerd.

[ Voor 31% gewijzigd door Verwijderd op 16-04-2007 14:58 ]


  • Marcj
  • Registratie: November 2000
  • Laatst online: 01-12 16:59
Als je een goede IDE gebruikt kun je toch wel met de debugger kijken wat de klantTeller() functie precies doet en waarom die 0 is? Gewoon een breakpoint direct voordat je de klantTeller() functie aanroep zetten en dan de debug modus starten. Welke IDE gebruik je? (Of gebruik je geen, dan kan ik je wel Eclipse aanraden)

Verwijderd

Topicstarter
Inmiddels heb ik dit opgelost, maar ben ik beland op een ander probleem.

Tot dusver hadden we de klanten toegevoegd via main:
Java:
1
2
bank.addKlant(new Klant(1, "Piet", "Anjerstraat 57 ", "Hengelo", ""));
bank.addKlant(new Klant(2, "Jan", "Loopweg 32", "Zoetermeer", ""));


Bij het opstarten van de KlantToevoegenGui krijg ik de klantnummer 3 te zien wat dus klopt, omdat er maar 2 klanten zijn, en als ik op OK klik dan voegt die de klant toe aan het bestand klanten.bank Maar het vage hiervan is dat zodra ik het programma opnieuw start alleen de twee oude klanten nog bestaan en de nieuwe klant is verwijderd.

Een klant toevoegen gaat zo:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    public void actionPerformed(ActionEvent e) {
        if(e.getSource() == b1){
            Bank bank = Bank.getInstance();
            bank.addKlant(new Klant(knr, tf1.getText(), tf3.getText(), tf4.getText(), ""));
            bank.save();
            dispose();
            new KlantBeheerGui();
        }

        if(e.getSource() == b2){
            dispose();
            new KlantBeheerGui();
        }
    }

  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 30-11 11:20

voodooless

Sound is no voodoo!

Dan werkt je save niet, of je load! De twee bestaande klanten voeg je immers in de de main al toe als je het proggie start.

Do diamonds shine on the dark side of the moon :?


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 07:54

Janoz

Moderator Devschuur®

!litemod

Ik zie nergens dat je je load aanroept. Ik zie alleen dat je enkele constante waarden toevoegd aan je class bij het initialiseren. Had je soms verwacht dat door die bank.save() je sourcecode aangepast werd oid?

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Topicstarter
voodooless schreef op dinsdag 17 april 2007 @ 11:31:
Dan werkt je save niet, of je load! De twee bestaande klanten voeg je immers in de de main al toe als je het proggie start.
Maar als de save niet werkt dan kan die toch helemaal niks toevoegen? Als ik op OK klik en de applicatie nog niet afsluit dan zie ik dat het bestand klanten.bank is aangepast en de klant is toegevoegd, maar zodra ik het opnieuw start dan wordt die blijkbaar opnieuw aangemaakt in de oude versie.
Janoz schreef op dinsdag 17 april 2007 @ 11:35:
Ik zie nergens dat je je load aanroept. Ik zie alleen dat je enkele constante waarden toevoegd aan je class bij het initialiseren. Had je soms verwacht dat door die bank.save() je sourcecode aangepast werd oid?
Dat dacht ik dus, maar zo te zien moet load er ook nog bij? Waar en waarom moet ik load dan toevoegen?

Thnx!

  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 30-11 11:20

voodooless

Sound is no voodoo!

Is het niet handig om te kijken naar een databasekoppeling. Dat is veel makkelijker, zeker als je iets als hybernate i.c.m HSQLDB gebruikt. Dan krijg je databaseabstractie, creatie en objectbeheer in een klap cadea zonder er veel voor hoeven te doen, zeker als je annotations van hybernate gebruikt.

Over de load: denk daar maar eens heel hard zelf over na! Zo moeilijk kan dat niet zijn.

[ Voor 13% gewijzigd door voodooless op 17-04-2007 11:42 ]

Do diamonds shine on the dark side of the moon :?


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 07:54

Janoz

Moderator Devschuur®

!litemod

Mwah, ik vermoed dat bank en klant aangeleverde klasses zijn van de leraar en dat de opdracht is een bank te schrijven. Gezien dit topic komen deze studenten daar helemaal niet uit. Dat je op een gegeven moment nog wel hebt kunnen bedenken dat je ergens klanten in een bank stopt, maar vervolgens moet vragen waar je de load zou moeten neerzetten sterkt mijn vermoeden alleen maar dat ze geen idee hebben waar ze mee bezig zijn.

Ik wil TS dan ook maar aanraden om naar zijn docent te gaan en hem eens om uitleg vragen en in het vervolg iets beter opletten wanneer de onderwerpen in de klas behandeld worden. Je hebt namelijk geen idee waar je mee bezig bent.

We moeten, zoals ik eerder ook al aangaf, maar niet beginnen over serializen en O/R mappers.

[ Voor 6% gewijzigd door Janoz op 17-04-2007 11:46 ]

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Topicstarter
Je hebt gelijk, de lessen heb ik niet echt gevolgd en dat zorgt nu idd voor problemen, maar ik heb nu ook door dat er een load bij moet zitten, want de bestand die wordt geschreven blijft nog met de nieuwe klant bestaan totdat ik weer bij het opnieuw starten op OK klik dan begint die weer opnieuw, het probleem is dus dat ik eerst load moet gebruiken om ook die laatste toegevoegde klant te laden en dan pas opnieuw toevoegen, denk ik? Of zit ik er weer helemaal naast?

  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 30-11 11:20

voodooless

Sound is no voodoo!

't is toch echt heel simpel: als je iets wil bewaren over meerder sessies van je programma, dan zul je die data moeten opslaan, maar ook weer moeten inladen bij het opstarten.

Die save van jou slaat dus niet alleen de toegevoegde klant op, maar ook die twee, die je er in de main zelf bij zet. Ga je een load doen, dan staan die twee die je er in de main bij zet, dubbel in (aangezien je die immers in de main toevoegt en via de load inlaadt).

Do diamonds shine on the dark side of the moon :?


Verwijderd

Topicstarter
En idd het is nu opgelost, ik moest ook even voor de klantnummer load aanroepen omdat anders de klantnummer op 1 bleef staan.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 07:20

.oisyn

Moderator Devschuur®

Demotivational Speaker

flowerp schreef op zaterdag 14 april 2007 @ 13:41:
Dat is wel een erge high-level optimalisatie zeg. Zo op het eerste oog lijkt het triviaal, maar dat is het zeker niet. De JVM moet dan -exact- weten wat een Vector.add precies doet, en wat een AbstractList.Iterator().next() precies terug geeft en intern potentieel kan doen.

Misschien dat ik wel mijn eigen AbstractList heb geschreven (de JVM staat namelijk los van de JDK class lib), waarbij de next() functie intern naar de clock kijkt en op Pasen de String 'Pasen' terug geeft.

Voor een programmeur natuurlijk een onzin functie, maar de JVM zal dus alle code van alle betrokken classen moeten nalopen. Ze mag er zeker niet van uitgaan dat Vector.add een vaststaande operatie is.
De vm doet de optimalisatie natuurlijk @ runtime, en hij kan zien dat alle aangeroepen functies compleet stateless zijn (dus geen globale variabelen en hardware accessen). Wat dus wil zeggen dat de code in dat geval altijd hetzelfde zal opleveren bij dezelfde input, waardoor de compiler de uiteindelijke output kan cachen, ongeacht wat die code nou eigenlijk doet.

Of de vm dergelijke optimalisaties doet weet ik niet, daar heb ik verder geen verstand van, maar het is op zich trivialer dan jij nu denkt :). En dit is dan tevens ook een van de grote voordelen van een JIT compiler tov een static compiler.

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.


Verwijderd

Topicstarter
Ik hoop niet dat ik jullie nu boos maak als ik met nog een vraag kom, maar ik was hiermee al op school bezig met zo'n anderen jongen uit de projectgroep, maar we kwamen er maar niet uit, en nu lukt het ook niet.

Ik heb twee klassen, KlantGui en KlantMenuGui.

Codes van KlantGui
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public String klantNummer;
 
//knr
knr = new JTextField(10);
p2.add(knr);
 
//getValue
public String getValue() {
    return knr.getText();
}
 
//getKlantNummer
public String getKlantNummer(){
    klantNummer = getValue();
    return klantNummer;
}


Java:
1
2
3
4
5
6
7
8
9
private KlantGui kg = new KlantGui();
 
//Data moet hier dus getoond worden.
String klantnr = kg.getKlantNummer();
p2.add(new JLabel (" Klantnr: "));
tf4 = new JTextField (10);
p2.add(tf4);
tf4.setEditable(false);
tf4.setText(klantnr);


Ik heb van alles geprobeerd maar getValue stuurt de data niet door. Als ik bijvoorbeeld klantNummer = "2" ipv klantNummer = getValue(); intyp dan wordt het getal 2 wel doorgestuurd.

Om in te loggen (KlantGui) heb je een klantnummer nodig en na het inloggen krijg je dus het scherm KlantMenuGui te zien. De bedoel is dat ik de klantnummer laat zien EN gebruik om de bijhorende data (naam, adres, woonplaats) die ik heb toegevoegd in de vector laad uit de aangemaakte bestand, hoe dat precies gaat zit ik ook nog mee en ik hoop dat jullie wat tips hebben daarvoor.

  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 30-11 11:20

voodooless

Sound is no voodoo!

Je maakt die klantgui aan, en net erna vraag je de waarde op van het klantnummer. Aangezien je die uit een textveld haalt zal deze wel leeg zijn. Als je die achteraf invult zal deze natuurlijk niet op miraculeuze wijze Tf4 aanpassen.

tip: duik eens wat verder in guiprogrammeren!

Als je trouwens echt wel java wil leren heb ik nog wel een andere tip: download het boek van Bruce Eckel: "Thinking in Java". Het eennalaatste deel kun je gewoon als doc of pdf downloaden. prima boek, veel beter dan de meuk die ze op scholen verplicht stellen. Wie begint er dan ook met GUI proggen als men nog niet eens de taal en OO principes onder de knie heeft...

[ Voor 39% gewijzigd door voodooless op 17-04-2007 21:26 ]

Do diamonds shine on the dark side of the moon :?


Verwijderd

Topicstarter
Bedankt, ik heb zelf inmiddels ook al een paar e-books gedownload om het goed onder de knie te krijgen en ik zal dat boek ook downloaden, maar helaas had ik hier eerder aan moeten beginnen :p

Het klinkt idd logisch dat de textfield leeg zal zijn als die het opvraagt als ik er zo naar kijk, maar ik zie niet echt een manier om het op te lossen.

  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 30-11 11:20

voodooless

Sound is no voodoo!

De grote vraag is: wat wil je eigenlijk doen? Ik zie niet echt het nut van het kopieren vaan de value van een tekstveld naar het andere.

sowiso is het zaak een goede scheiding te maken tussen je gui en je entiteiten als Klant, Bank, enz... een Klant is een Klant, en ee gui moet die Klant gebruiken. Het moet geen brei van doorelkaar lopende code worden, daar maak je het jezelf alleen maar lastig mee.

[ Voor 49% gewijzigd door voodooless op 17-04-2007 21:43 ]

Do diamonds shine on the dark side of the moon :?


Verwijderd

Topicstarter
Nou de bedoeling is dat ik de klantnummer laat tonen EN gebruik om de bijhorende data (naam, adres, woonplaats) die ik heb toegevoegd in de vector laad uit de aangemaakte bestand, hoe dat precies gaat zit ik ook nog mee en ik hoop dat jullie wat tips hebben daarvoor.

In KlantMenuGui komen er labels met textfields waarin de opgehaalde informatie komt te staan. Bijv:
Naam: (label) - Piet (textfield)

de textfield is dan uiteraard non editable :p

Een klant heeft ook nog een rekening en dus moet er een data (in dit geval de klantnummer) opgehaald worden om de bijhorende rekeningen te tonen, toch?

Je hebt overigens gelijk over de manier hoe de code is geschreven allemaal. We hebben zo'n beetje alles door elkaar gedaan en dat zorgt ook nog voor onoverzichtelijkheid.

  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 30-11 11:20

voodooless

Sound is no voodoo!

Dat laatste is precies de rede waarom het ontwepproces zo belangrijk is. Helaas is daarbij basiskenis een must have. Ik snap dan ook niet hoe docenten een dergelijke opgave in een dergelijk stadium verstrekken. Maar goed, dat is een ander verhaal en het zal jou helaas ook niet verder helpen ;)

wat betreft je probleem: je hebt dus een invoerveld waar je je referentienummer uit haalt. Vervolgens laad je de rest van de gegevens erbij, en displayed ze. Wat je nu moet doen is een event maken om dat voor je af te handelen. Dat koppel je aan je invuleld of aan een knop ernaast. Dat event laat je de gegevens ophalen en weergeven (aka bestaande gui elementen vullen/updaten).

Ik ben expres wat cryptisch. Niet om je te plagen, maar om je te dwingen om er wat verder in te duiken. Zelf uitzoeken (eventueel aan de hand van hints) is wat mij betreft de beste methode om te leren. Bovendien type ik dit vanaf een Nokia E70 en heb ik zeker geen zin om daar code mee te typen (ondanks qwerty toetenbord) :+

[ Voor 19% gewijzigd door voodooless op 17-04-2007 22:09 ]

Do diamonds shine on the dark side of the moon :?


Verwijderd

Topicstarter
Dus als ik het goed begrijp moet ik de textfields doorgeven aan de event en dan is het mogelijk om de klantnummer in de volgende klasse te laden?

Laat ik maar eens opnieuw beginnen. Ik heb een klasse KlantGui, dit is een log-in klasse, waarmee je met een klantnummer kan inloggen, er staat een passwordfield bij maar die staat er voor de lol, die wordt dus (nog) niet gebruikt.

Bij het invullen van de klantnummer en daarna het klikken op OK wordt er dus een event in werking gesteld.
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    public void actionPerformed(ActionEvent e) {
        if(e.getSource() == b2){
            dispose();
            new HoofdmenuGui();
        }
        else if(e.getSource() == b1){
            String s = getValue();
            if(cl.controlKlant(s)) {
            new KlantMenuGui(kgc.getKlanten());
            dispose();
            }
            else {
                JOptionPane.showMessageDialog(null, "Klant bestaat niet.");
            }
        }
    }


Er wordt gecontroleerd of de klantnummer voorkomt en zo niet dan kan er niet worden ingelogd.

Komt het klantnummer wel voor dat wordt je doorgestuurd naar KlantMenuGui, daar wil ik dus de klantnummer weer ophalen, maar dat is mij tot zover nog niet gelukt. Als ik dan de klantnummer heb wil ik op de een of andere manier (nog uitzoeken hoe) de andere bijhorende gegevens laden.
Ik ben expres wat cryptisch. Niet om je te plagen, maar om je te dwingen om er wat verder in te duiken. Zelf uitzoeken (eventueel aan de hand van hints) is wat mij betreft de beste methode om te leren. Bovendien type ik dit vanaf een Nokia E70 en heb ik zeker geen zin om daar code mee te typen (ondanks qwerty toetenbord)
Hehe, zo leer ik idd wel beter :D Lol dat moet vast irritant lezen zijn elke keer :p

[ Voor 14% gewijzigd door Verwijderd op 17-04-2007 22:17 ]


  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 30-11 11:20

voodooless

Sound is no voodoo!

Lezen gaat prima op een E70 hoor :) textbreedt past prima op het display.

* voodooless moet tot 1 mei wachten op internet :(

Wat betreft je code: zo te zien leer je snel, maar je denkt soms te moeilijk. I.p.v alle klanten door te geven naar je klantenmenugui kun je ook alleen maar de benodigde klant doorgeven, of als je ze allemaal nodig hebt, ook nog het id dat je uit je tekstveld krijgt.

Bedenk altijd een aantal dingen:
- Wat heb ik nodig?
- Waar haal ik dat vandaan?
- Hoe krijg ik het daar waar ik het hebben wil?

[ Voor 14% gewijzigd door voodooless op 17-04-2007 22:44 ]

Do diamonds shine on the dark side of the moon :?


  • ID-College
  • Registratie: November 2003
  • Laatst online: 30-11 14:33
Wij moeten dit ook doen voor school. Heb je de code compleet?, dan kan ik een paar dingen vergelijken en aanpassen. Ik kom er zelf ook niet helemaal uit namelijk. Dat zou wel makkelijk zijn :)
Thnx :>

Verwijderd

Topicstarter
Dus als ik het goed begrijp moet ik eigenlijk de klant al met de gegevens in de event van KlantGui bepalen, zodat ik alleen die gegevens in de volgende klasse hoef te laden?

Om dan nog de klantnummer te tonen in de volgende klasse moet ik de klantnummer uit de vector halen met behulp van de ingevulde klantnummer, klopt het een beetje zoals ik het op dit moment zeg?
ID-College schreef op dinsdag 17 april 2007 @ 22:48:
Wij moeten dit ook doen voor school. Heb je de code compleet?, dan kan ik een paar dingen vergelijken en aanpassen. Ik kom er zelf ook niet helemaal uit namelijk. Dat zou wel makkelijk zijn :)
Thnx :>
Op welke school zit jij dan :P ?

[ Voor 32% gewijzigd door Verwijderd op 17-04-2007 22:58 ]


  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 30-11 11:20

voodooless

Sound is no voodoo!

Eerste deel klopt.

2e deel is onlogisch. Ik neem aan dat klant zijn eigen nummer wel kent? Zodoende kun je all info, dus ook het nummer uit Klant halen. Je hebt dus alleen klant nodig en voor de rest niks. Die haal je natuurlijk uit je vector van klanten (waarom is dat eigenlijk geen hashmap :? ).

Do diamonds shine on the dark side of the moon :?


  • ID-College
  • Registratie: November 2003
  • Laatst online: 30-11 14:33
Verwijderd schreef op dinsdag 17 april 2007 @ 22:52:
Dus als ik het goed begrijp moet ik eigenlijk de klant al met de gegevens in de event van KlantGui bepalen, zodat ik alleen die gegevens in de volgende klasse hoef te laden?

Om dan nog de klantnummer te tonen in de volgende klasse moet ik de klantnummer uit de vector halen met behulp van de ingevulde klantnummer, klopt het een beetje zoals ik het op dit moment zeg?


[...]


Op welke school zit jij dan :P ?
HU, en ik moet ongeveer ook dit maken vandaar :)

Verwijderd

Topicstarter
@ID-College, vind het een beetje risky, ik zit namelijk ook op de HU en dus hebben we beide dezelfde leraar :p Zou grappig zijn als je ook nog een klasgenoot zou zijn :D

Maarjah stuur maar een PM anders met je msn ofzo.

In ieder geval, in de klasse Bank had ik iets gemist, ik heb dit zelf niet toegevoegd dus ik kwam er net pas achter :p
Java:
1
2
3
4
5
6
7
8
    public Klant getKlant(int nummer) {
        for (Klant klant : klanten) {
            if (klant.getNummer() == nummer) {
                return klant;
            }
        }
        return null;
    }


In de event heb ik dit toegevoegd / gewijzigd
Java:
1
2
3
4
5
6
7
8
    int i = Integer.parseInt(s);
            if(cl.controlKlant(s)) {
                Bank bank = Bank.getInstance();
                bank.getKlant(i);

                new KlantMenuGui();
                dispose();
            }


Tot zover klopt het nog wel, maar ik zit nu nog te denken hoe ik verder moet.

Dit is iig de constructor van Klant:
Java:
1
2
3
4
5
6
7
8
9
    public Klant(int nummer, String nm, String ad, String pl, String pw)
    {
        this.nummer = nummer;
        naam = nm;
        adres = ad;
        plaats = pl;
        password = pw;
        this.rekeningen = new Vector<Rekening>();
    }


pw staat eigenlijk overal voor de lol, maarjah..

  • ID-College
  • Registratie: November 2003
  • Laatst online: 30-11 14:33
Dat zou wel mooi zijn. Je kan een PM (DM :?) sturen hoor. Jij hebt het uitstaan onder voorkeuren, je wilt er geen ontvangen staat er :)
Ik weet niet hoever jij bent, maar wij zijn ook al aardig op weg, ga het natuurlijk niet kopieeren. Valt een beetje op en ga wat ik nu heb niet weggooien uiteraard :)
sorry voor offtopic :)

Verwijderd

Topicstarter
Het lukt nog niet echt :p

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
//een hoop andere code

public class KlantGui extends JFrame implements ActionListener{
    private JPanel p1,p2,p3;
    private JButton b1, b2;
    private JTextField knr;
    private Klant klant;
    private Bank bank;
    public String klantNaam;
    public String klantAdres;
    public String klantPlaats;

//een hoop andere code

    public void actionPerformed(ActionEvent e) {
        if(e.getSource() == b2){
            dispose();
            new HoofdmenuGui();
        }
        else if(e.getSource() == b1){
            String s = getValue();
            int i = Integer.parseInt(s);
            if(cl.controlKlant(s)) {
                Bank bank = Bank.getInstance();
                bank.getKlant(i);
                klantNaam = klant.getNaam();
                klantAdres = klant.getAdres();
                klantPlaats = klant.getPlaats();

                JOptionPane.showMessageDialog(null, klantNaam);
                //new KlantMenuGui();
                //dispose();
            }
            else {
                JOptionPane.showMessageDialog(null, "Klant bestaat niet.");
            }
        }
    }


Dit zou het toch moeten doen?

  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 30-11 11:20

voodooless

Sound is no voodoo!

Ligt eraan wat het is ;)

Do diamonds shine on the dark side of the moon :?


Verwijderd

Topicstarter
Dat de gegevens worden van de klant met klantnummer i, zodat ik ze in de andere klasse kan halen.

KlantGui
Java:
1
2
3
                klantNaam = "3";
                //klantAdres = klant.getAdres(); 
                //klantPlaats = klant.getPlaats(); 


Dat krijg ik dan wel in de message box te zien, maar de volgende gui opent die alleen een leg scherm :p


KlantGuiMenu
Java:
1
2
3
4
5
6
7
//hoop code

private KlantGui kg;

//hoop code

tf1.setText(kg.klantNaam);

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 07:54

Janoz

Moderator Devschuur®

!litemod

Verwijderd schreef op dinsdag 17 april 2007 @ 23:33:
In de event heb ik dit toegevoegd / gewijzigd
Java:
1
2
3
4
5
6
7
8
    int i = Integer.parseInt(s);
            if(cl.controlKlant(s)) {
                Bank bank = Bank.getInstance();
                bank.getKlant(i);

                new KlantMenuGui();
                dispose();
            }


Tot zover klopt het nog wel, maar ik zit nu nog te denken hoe ik verder moet.
de methode getKlant(i) in bank levert een klant op. Jij doet vervolgens niks met de klant. Nergens vang je die klant in op. Je moet de klant toekennen aan een variabele. Klant klant = bank.getKlant(i);. Vervolgens kun je van alles met die klant doen. Bijvoorbeeld doorgeven aan de andere GUI. Ik zeg het nogmaals. En waarom roep je eigenlijk dispose aan?

Dit zijn echt de meest simpele basis beginselen van programmeren ansich. Door zo maar te blijven aan prutsen gaat het nooit wat worden.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Topicstarter
Dom dom dom.. Je hebt helemaal gelijk.

Ik krijg nu de gegevens in dezelfde klasse al, nu nog alleen in de andere klasse zien te krijgen, want dat doet die nog niet, ik zal er even goed naar kijken en die site doornemen, want dit lijkt mij ook weer iets wat je al in het begin eigenlijk al moet weten :p

dispose() gebruiken we om de vorige scherm te sluiten als er een nieuwe wordt geopend.

  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 30-11 11:20

voodooless

Sound is no voodoo!

Denk aan de basisregels, dan kom je al een heel eind zonder die domme fouten!
voodooless schreef op dinsdag 17 april 2007 @ 22:41:
Bedenk altijd een aantal dingen:
- Wat heb ik nodig?
- Waar haal ik dat vandaan?
- Hoe krijg ik het daar waar ik het hebben wil?

Do diamonds shine on the dark side of the moon :?


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 07:54

Janoz

Moderator Devschuur®

!litemod

Als je hem in de andere klasse wilt krijgen moet je hem aan die andere klasse geven

Als je nu ens de constructor van KlantMenuGui aanpast dat je daar een klant aan mee kunt geven, dan heb je die klant ook in de KlantMenuGui instantie.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Topicstarter
Ik heb het! :p

Java:
1
new KlantMenuGui(klantNaam, klantAdres, klantPlaats);


Java:
1
2
    public KlantMenuGui (String klantNaam, String klantAdres, String klantPlaats) {
        super();


Beetje dom allemaal nu ik er zo naar zie te kijken :+

Leraar kwam net met een andere oplossing, dat de gegevens pas in de volgende klasse worden geladen. Hij had dit naar een jongen uit onze projectgroep gemaild. Hij zei dat dat beter is :? Maarjah dit doet het in ieder geval ook :P

Verwijderd

Verwijderd schreef op woensdag 18 april 2007 @ 11:45:
Ik heb het! :p

Java:
1
new KlantMenuGui(klantNaam, klantAdres, klantPlaats);


Java:
1
2
    public KlantMenuGui (String klantNaam, String klantAdres, String klantPlaats) {
        super();


Beetje dom allemaal nu ik er zo naar zie te kijken :+

Leraar kwam net met een andere oplossing, dat de gegevens pas in de volgende klasse worden geladen. Hij had dit naar een jongen uit onze projectgroep gemaild. Hij zei dat dat beter is :? Maarjah dit doet het in ieder geval ook :P
Ik zit ook op de HU en heb precies dezelfde opdracht. Die van ons is al af, maar het is de bedoeling dat je vanuit je controller-klasse een nieuwe UI opbouwt en vanuit de controller klasse de componenten(textarea's, textfield's enz.) invult.

  • NetForce1
  • Registratie: November 2001
  • Nu online

NetForce1

(inspiratie == 0) -> true

Waarom geef je niet gewoon het klant-object mee aan die constructor?
Dus:
Java:
1
2
3
4
5
6
public KlantMenuGui(Klant klant) {
  this.klant = klant;
  // een hoop andere dingen
}
// in KlantGui:
new KlantMenuGui(klant);

De wereld ligt aan je voeten. Je moet alleen diep genoeg willen bukken...
"Wie geen fouten maakt maakt meestal niets!"


  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 30-11 11:20

voodooless

Sound is no voodoo!

Weer niet zo moeilijk denken en doen wat NetForce zegt: Klant doorgeven i.p.v de losse velden.

Do diamonds shine on the dark side of the moon :?


Verwijderd

Topicstarter
Ik heb het nu gedaan zoals NetForce1 het zei, dat is inderdaad makkelijker en slimmer :p

@TNT Bomber: JZ heeft al meerdere keren de applicatie bekeken en hij zei er niets van dus hopelijk blijft dat ook zo, ik heb geen tijd meer om ook nog de hele applicatie te gaan veranderen.

Verwijderd

Verwijderd schreef op woensdag 18 april 2007 @ 13:51:
Ik heb het nu gedaan zoals NetForce1 het zei, dat is inderdaad makkelijker en slimmer :p

@TNT Bomber: JZ heeft al meerdere keren de applicatie bekeken en hij zei er niets van dus hopelijk blijft dat ook zo, ik heb geen tijd meer om ook nog de hele applicatie te gaan veranderen.
Wij hebben dus een andere docent ;)

Verwijderd

Topicstarter
Ik ben nu alweer wat verder en ik probeer de waardes in de vector te wijzigen.

Mbv http://balusc.xs4all.nl/srv/dev-jsw-col.html heb ik heel wat codes geprobeerd, maar werken doen ze niet :p

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    public void actionPerformed(ActionEvent e) {
        if(e.getSource() == b1){
            int klNummer = klant.getNummer();
            String kl = klant.getNaam();
            Bank bank = Bank.getInstance();
            Klant klant = bank.getKlant(kl);
            bank.load();
            klanten.add(klNummer, new Klant(klNummer, tf1.getText(), tf2.getText(), tf3.getText(), ""));
            bank.save();

            dispose();
            new KlantBeheerGui();
        }

        if(e.getSource() == b2){
            dispose();
            new KlantBeheerGui();
        }
    }


Ik heb ook eens op google rondgezocht maar de voorbeelden die ik heb gevonden, ook via de bovengenoemde site gaan over het wijzigen van 1 element blijkbaar, nou weet ik niet of het daaraan ligt dat het niet werkt..

Verwijderd

Topicstarter
Even aan de basisregels zitten denken en goed zitten nadenken en ik ben eruit :p

In de Bank klasse een methode setKlant(int nummer, Klant klant) toegevoegd en dat gebruikt om te wijzigen:

Java:
1
bank.setKlant(klNummer, (new Klant(klNummer, tf1.getText(), tf2.getText(), tf3.getText(), "")));

[ Voor 3% gewijzigd door Verwijderd op 18-04-2007 19:39 ]


Verwijderd

Topicstarter
Huh ik heb nu ook een methode voor het verwijderen van een account en het werkte net, maar bij sommige accounts werkt die niet.

Ik krijg dan een arrayindexoutofboundexception foutmelding.

Ik merk trouwens wel op dat als ik vier klanten heb en ik de 3e klant verwijder dat de vierde klant dan zijn klantnummer krijgt en als ik die dan probeer te verwijderen krijg ik dat foutmelding.

Wijziging gegevens klasse
Java:
1
2
3
4
5
6
7
8
9
10
11
12
        else if(e.getSource() == b2){
            int reply = JOptionPane.showConfirmDialog(null, "Weet je zeker dat je de account van " + tf1.getText() + " uit het database wilt verwijderen?", "Verwijderen Account", JOptionPane.YES_NO_OPTION);
                if(reply == JOptionPane.YES_OPTION){
                    dispose();

                    bank.load();
                    bank.verwijderKlant(klNummer);
                    bank.save();

                    new KlantBeheerGui();
                }
        }


Bank:
Java:
1
2
3
4
    public void verwijderKlant(int nummer){
        klanten.remove(nummer);
        save();
    }

  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 30-11 11:20

voodooless

Sound is no voodoo!

Vector index != klantnummer.

ik zeg het nog een keer: check eens een HashMap als vervanging voor je Vector. Dat werkt veel intuitiever en is vermoedelijk oom nog eens sneller.

Do diamonds shine on the dark side of the moon :?


Verwijderd

Topicstarter
Ik wil het graag doen, maar alles is nu met een vector geregeld en een andere jongen is met de andere bestanden bezig dus ik weet niet of dat nog gaat lukken. Opdracht moet ook nog eens morgenochtend worden gepresenteerd dus ik heb wel heel wat te doen vannacht :p Maar als er geen optie is dan moet het maar...

Ik dacht al zoiets dat klantnummer geen index zou zijn :p, maar ik dacht dat het werkte dus vond ik het goed zo totdat dat foutmelding kwam.

public Object remove(int index)
"Removes the element at the specified position in this Vector. shifts any subsequent elements to the left (subtracts one from their indices). Returns the element that was removed from the Vector."

Hmm.. ik weet eigenlijk niet hoe ik het dan moet oplossen, ik dacht dat het met de klantnummer goed zat :'(

  • NetForce1
  • Registratie: November 2001
  • Nu online

NetForce1

(inspiratie == 0) -> true

Het mooiste is natuurlijk om het zaakje om te schrijven naar HashMap zoals voodooless aangeeft. Je kunt bank.getKlanten dan nog steeds een Vector terug laten geven:
Java:
1
2
3
public Vector getKlanten() {
  return new Vector(clientsById.values());
}

Als dit niet gaat lukken zul je bij het verwijderen over al je klanten moeten lopen en het klantnr vergelijken:
Java:
1
2
3
4
5
6
7
8
9
public void verwijderKlant(int klantNr) {
  Iterator<Klant> it = klantent.iterator();
  while (it.hasNext()) {
    if (it.next().getNummer() == klantNr) {
      it.remove();
      return;
    }
  }
}

Of nog makkelijker, geef gewoon de klant mee:
Java:
1
2
3
public void verwijderKlant(Klant klant) {
  klanten.remove(klant);
}

Voor deze laatste methode moet je wel equals overriden in Klant (zie javadoc van Object)
Java:
1
2
3
4
5
6
7
8
9
public boolean equals(Object that) {
  if (that == this) {
    return true;
  }
  if (that == null || !(that instanceof Klant)) {
    return false;
  }
  return Klant.class.cast(that).getNummer() == this.getNummer();
}

edit:
verhaaltje over equals

[ Voor 20% gewijzigd door NetForce1 op 18-04-2007 21:10 ]

De wereld ligt aan je voeten. Je moet alleen diep genoeg willen bukken...
"Wie geen fouten maakt maakt meestal niets!"


  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 30-11 11:20

voodooless

Sound is no voodoo!

Dat laatste is alleen nodig als je meerdere instanties van de zelfde klant hebt natuurlijk. Vage manier van casten trouwens :) Zo leer je nog eens wat.

Do diamonds shine on the dark side of the moon :?


  • NetForce1
  • Registratie: November 2001
  • Nu online

NetForce1

(inspiratie == 0) -> true

voodooless schreef op woensdag 18 april 2007 @ 21:16:
Dat laatste is alleen nodig als je meerdere instanties van de zelfde klant hebt natuurlijk. Vage manier van casten trouwens :) Zo leer je nog eens wat.
Ja, dat casten kan vanaf java 5, daar werd ik laatst op gewezen door een collega. Bij de traditionele manier van casten krijg je vaak een woud van haakjes wat het geheel niet echt leesbaarder maakt.

De wereld ligt aan je voeten. Je moet alleen diep genoeg willen bukken...
"Wie geen fouten maakt maakt meestal niets!"


Verwijderd

Topicstarter
Bedankt! Nu ik dit opgelost heb kom ik op een ander probleem terecht waarvan ik ook dacht dat die het deed.

Om Klantgegevens te wijzigen krijg je eerst een Gui waarin je uit een dropdown box een klant selecteert en als je op OK klikt wordt je doorgestuurd naar de andere GUI met de gegevens. Het probleem is dat als ik een klant wijzig dat de laatste klant van de dropdown box wordt gewijzigd. Ik denk zelf dat het hetzelfde probleem is als van net omdat ik hier ook klantnummer als index had gebruikt.

Gui om klant te selecteren
Java:
1
2
3
4
5
6
7
8
9
10
        if(e.getSource() == b1){
            String kNaam = (String) box1.getSelectedItem();

            Bank bank = Bank.getInstance();
            Klant klant = bank.getKlant(kNaam);

            new KlantGegevensWijzigenGui(klant);
            dispose();

        }


Gegevens wijzigen Gui
Java:
1
2
3
4
5
6
7
8
9
10
11
12
    public void actionPerformed(ActionEvent e) {
        Bank bank = Bank.getInstance();
        int klNummer = klant.getNummer();
        if(e.getSource() == b1){

            bank.load();
            bank.setKlant(klNummer, (new Klant(klNummer, tf1.getText(), tf2.getText(), tf3.getText(), "")));
            bank.save();

            dispose();
            new KlantBeheerGui();
        }



Ik denk zelf dat dit zou moeten werken:
Java:
1
2
3
4
5
6
7
8
9
10
11
    public void setKlant(int nummer, Klant klant){
      Iterator<Klant> it = klanten.iterator();
      while (it.hasNext()) {
        if (it.next().getNummer() == nummer) {
          klanten.set(....index...., klant);
          return;
        }
        save();
      }

    }


Maar wat moet daar dan als index worden ingevoerd?

  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 30-11 11:20

voodooless

Sound is no voodoo!

Waarm is er een methode setklant die steeds de klant overschrijft? Je kunt gewoom met getters de klant aanpassen, is veeeeeel makkelijker. Wat je nu doet gaat inderdaad fout.

Do diamonds shine on the dark side of the moon :?


  • NetForce1
  • Registratie: November 2001
  • Nu online

NetForce1

(inspiratie == 0) -> true

Je zou dat zo kunnen doen:
Java:
1
2
3
4
5
6
7
8
public void setKlant(int nummer, Klant klant) {
  if (klanten.contains(klant)) {
    klanten.set(klanten.indexOf(klant), klant); //let op: hiervoor moet equals geimplementeerd zijn op Klant
  } else {
    klanten.add(klant);
  }
  save();
}

Maar dit hoeft allemaal helemaal niet nodig te zijn. Als je ervoor zorgt dat je altijd maar een instantie van een bepaalde klant hebt zijn wijzigingen op dat object ook doorgewerkt in de lijst. De variabele 'klant' waarmee je bezig bent is niets anders dan een verwijzing naar een object van het type Klant. Het element in de vector heeft ook een verwijzing naar ditzelfde object. Wijzigingen die je doet via de ene variabele zijn dan dus overal doorgewerkt waar een verwijzing naar dat object gebruikt wordt.
Bovenstaande is wellicht een beetje moeizaam uitgelegd, er zijn gelukkig talloze tutorials en leraren die dat beter kunnen dan ik ;)
Je hoeft in je actionPerformed dus geen nieuw Klant object aan te maken. Doe je wijziging op het object wat je daar al hebt en roep dan bank.save() aan.
voodooless schreef op woensdag 18 april 2007 @ 21:48:
Waarm is er een methode setklant die steeds de klant overschrijft? Je kunt gewoom met getters de klant aanpassen, is veeeeeel makkelijker. Wat je nu doet gaat inderdaad fout.
setters toch zeker? ;)

[ Voor 12% gewijzigd door NetForce1 op 18-04-2007 22:01 ]

De wereld ligt aan je voeten. Je moet alleen diep genoeg willen bukken...
"Wie geen fouten maakt maakt meestal niets!"


  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 30-11 11:20

voodooless

Sound is no voodoo!

Heb niet de illusie dat docenten dat beter kunnen. Je gaat me niet wijs maken dat al die kennis van je afkomstig is van een docent. Ik durf wel te wedden dat je het meest zelf ontdenkt hebt :P (het mag ondertussen wel duidelijk zijn wat ik van docenten denk ;) ( uizonderingen zullen ook hier de regel wel bevestigen). Toen mijn docent me vertelde dat ie mijn UML diagram niet snapte, dat het te ingewikkeld was en nooit ging werken, heb ik allw hoop verloren. Zeker toen drie weken later de applicatie af was, volgens het UML diagram werkte, en ook nog eens prima presteerde :P

anyway, ik was net beizg het bovenstaande verhaal ook nog eens te verduidelijken toen iemand mij belde, en dus mijn browser werd gesloten :( Nouja, jou uitleg is toch duidelijker :)

En natuurlijk bedoel ik setters i.p.v getters. Gebruik eclipse, dan kun je dat soort dingen heel makkelijk genereeren!

[ Voor 7% gewijzigd door voodooless op 18-04-2007 22:10 ]

Do diamonds shine on the dark side of the moon :?


Verwijderd

Topicstarter
Dus als ik het goed begrijp dan hoef ik alleen de getters eigenlijk op te vragen in de event, voor bank.save(); en dan wordt de oude naam al overschreven?

Dit is wat ik er ongeveer uithaal, maar de waarde blijft gewoon hetzelfde:
Java:
1
2
3
4
5
6
7
8
9
10
11
    public void actionPerformed(ActionEvent e) {
        Bank bank = Bank.getInstance();
        int klNummer = klant.getNummer();
        if(e.getSource() == b1){

            klant.getNaam();
            bank.save();

            dispose();
            new KlantBeheerGui();
        }


Waarschijnlijk is het weer iets knulligs wat ik niet doorheb |:(

edit: aah ik dacht zelf ook aan setters maar ik probeerde zelf klant.getNaam(); = klant.setNaam(); en dat werkte niet (:p) dus dacht ik dat het vast alleen om getters gingen.

Nu maar eens met setters proberen weer.

edit2:
Dat werkt inderdaad, veel makkelijker ook nog :|

Ongelooflijk dat ik al uren met dit allemaal bezig ben..

Java:
1
2
String klantNaam = tf1.getText();
klant.setNaam(klantNaam);

[ Voor 27% gewijzigd door Verwijderd op 18-04-2007 22:17 ]


  • NetForce1
  • Registratie: November 2001
  • Nu online

NetForce1

(inspiratie == 0) -> true

voodooless schreef op woensdag 18 april 2007 @ 22:07:
Heb niet de illusie dat docenten dat beter kunnen. Je gaat me niet wijs maken dat al die kennis van je afkomstig is van een docent. Ik durf wel te wedden dat je het meest zelf ontdenkt hebt :P (het mag ondertussen wel duidelijk zijn wat ik van docenten denk ;) ( uizonderingen zullen ook hier de regel wel bevestigen). Toen mijn docent me vertelde dat ie mijn UML diagram niet snapte, dat het te ingewikkeld was en nooit ging werken, heb ik allw hoop verloren. Zeker toen drie weken later de applicatie af was, volgens het UML diagram werkte, en ook nog eens prima presteerde :P
Ik heb inderdaad niet nog zoveel les van docenten genoten in de edele kunsten van het programmeer vak. Ik heb drie vakken gedaan op de eur met vrij hoog 'inleiding'-gehalte, maar ik had wel het idee dat de docenten wisten waar ze het over hadden. Ik had het overigens niet over mijn kennis, maar meer over mijn uitleg. Ik heb bij dit soort dingen regelmatig het idee dat het te wazig gaat worden als ik het in 'gewone mensen taal' probeer uit te leggen.
anyway, ik was net beizg het bovenstaande verhaal ook nog eens te verduidelijken toen iemand mij belde, en dus mijn browser werd gesloten :( Nouja, jou uitleg is toch duidelijker :)
Tjonge, dat valt dan weer alles mee :P
Verwijderd schreef op woensdag 18 april 2007 @ 22:11:
Dat werkt inderdaad, veel makkelijker ook nog :|

Ongelooflijk dat ik al uren met dit allemaal bezig ben..

Java:
1
2
String klantNaam = tf1.getText();
klant.setNaam(klantNaam);
Mooi!
Ik raad je overigens ten zeerste aan om duidelijke namen te gebruiken voor je variabelen. Dat komt de onderhoudbaarheid van je applicaties (en leesbaarheid voor de docent) zeker ten goed. Dus niet tf1 maar nameField bijv. en okButton of okBtn ipv b1.

[ Voor 16% gewijzigd door NetForce1 op 18-04-2007 22:27 ]

De wereld ligt aan je voeten. Je moet alleen diep genoeg willen bukken...
"Wie geen fouten maakt maakt meestal niets!"


  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 30-11 11:20

voodooless

Sound is no voodoo!

Dat laatste is inderdaad de oplossing :) waarden setten en dan save aanroepen.

Tja, soms is het zo simpel dat je het gewoon niet ziet. Mijn drie "regels" bieden dan vaak wel uitkomst ;)

@netforce1: je mag je dan gelukkig prijzen. mijn docenten hadden de meeste tijd amper een idee waar ze mee bezig waren :( Meer dan de collegestof kenden ze niet. Het was dan ook zinloos om eens een keer een echt interessante vraag te stellen :( 't is zelfs een keer zo erg geweest dat we met een groepje midden in de les het lokaal zijn uitgelopen ;) Dat werd ons natuurlijk niet in dank afgenomen :P

[ Voor 52% gewijzigd door voodooless op 18-04-2007 22:29 ]

Do diamonds shine on the dark side of the moon :?


Verwijderd

voodooless schreef op woensdag 18 april 2007 @ 22:22:
@netforce1: je mag je dan gelukkig prijzen. mijn docenten hadden de meeste tijd amper een idee waar ze mee bezig waren :( Meer dan de collegestof kenden ze niet. Het was dan ook zinloos om eens een keer een echt interessante vraag te stellen :( 't is zelfs een keer zo erg geweest dat we met een groepje midden in de les het lokaal zijn uitgelopen ;) Dat werd ons natuurlijk niet in dank afgenomen :P
Tsja dat kan een behoorlijke domper zijn als je nog altijd de illusie hebt dat de docent er een vmbo_presenteerblaadjes_methodiek op na dient te houden. Dat afvallen op docenten betekent enkel dat je het zelf (nog) niet hebt begrepen.

  • NetForce1
  • Registratie: November 2001
  • Nu online

NetForce1

(inspiratie == 0) -> true

Verwijderd schreef op donderdag 19 april 2007 @ 08:50:
[...]

Tsja dat kan een behoorlijke domper zijn als je nog altijd de illusie hebt dat de docent er een vmbo_presenteerblaadjes_methodiek op na dient te houden. Dat afvallen op docenten betekent enkel dat je het zelf (nog) niet hebt begrepen.
Dat is natuurlijk wel wat kort door de bocht. Een docent is nog altijd iemand die zijn/haar leerlingen kennis bij dient te brengen. Op wat voor manier of met welke methodiek doet er niet toe. Als een docent dan het werk van een leerling niet begrijpt is hij (de docent) duidelijk niet goed bezig en heeft de docent niet niet helemaal begrepen wat eigenlijk zijn vak is.

De wereld ligt aan je voeten. Je moet alleen diep genoeg willen bukken...
"Wie geen fouten maakt maakt meestal niets!"


  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 30-11 11:20

voodooless

Sound is no voodoo!

Verwijderd schreef op donderdag 19 april 2007 @ 08:50:
Tsja dat kan een behoorlijke domper zijn als je nog altijd de illusie hebt dat de docent er een vmbo_presenteerblaadjes_methodiek op na dient te houden. Dat afvallen op docenten betekent enkel dat je het zelf (nog) niet hebt begrepen.
Seriously... Als mijn docenten me zouden hebben aangespoord om zelf dingen te leren, dan hadden de meesten mensen uit mijn klas veel meer geleerd dan ze hebben gedaan. Het waren de weinigen die zelf initiatief tonen en de zaken zelf uitzochten buiten de les en de docent om, die het uiteindelijk konden en er wat van gemaakt hadden. De docent had daar 0.0 mee te maken. Als je die namelijk wat vroeg uit interesse wat iets buiden de stof om ging, dan wisten ze dat niet. Lees ook mijn UML verhaal nog een keer Dat heeft niets te maken met vmbo_presenteerblaadjes_methodiek, maar gewoon met oude stoffige docenten die al jaren uit het bedrijfsleven zijn (of er misschien nooit hebben mogen vertoeven) en nooit meer hebben geleerd dan hun lesstof die ze moeten aanbieden... 'T is triest maar waar, en vast geen uitzondering.

Als ik dus iets niet begrepen heb kan ik maar een ding zeggen: Halleluja!

[ Voor 3% gewijzigd door voodooless op 19-04-2007 09:46 ]

Do diamonds shine on the dark side of the moon :?


Verwijderd

Juist je UML verhaal geeft aan dat je het niet begrepen hebt. Je kunt namelijk nog zoveel kanten op met de uitleg "gaat nooit werken, te ingewikkeld". Waarschijnlijk heb je gewoon overdreven je best gedaan en er nog steeds niet van geleerd.

[ Voor 7% gewijzigd door Verwijderd op 19-04-2007 11:38 ]


  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 30-11 11:20

voodooless

Sound is no voodoo!

Verwijderd schreef op donderdag 19 april 2007 @ 11:38:
Juist je UML verhaal geeft aan dat je het niet begrepen hebt. Je kunt namelijk nog zoveel kanten op met de uitleg "gaat nooit werken, te ingewikkeld". Waarschijnlijk heb je gewoon overdreven je best gedaan en er nog steeds niet van geleerd.
Nee, de docenten begrepen het gewoon simpelweg niet! Ze hadden geen idee over waar ze zelf les in gaven. Wat feit is: het programma werkte perfect, was eigenlijk helemaal niet ingewikkeld, en wij waren was verreweg het snelste klaar van alle projecten (weken eerder dan de rest), met de meeste features en functionaliteit en de minste bugs.

Ik vraag me dus echt af wat ik dan had moeten begrijpen :? Misschien kun jij me dat uitleggen??? Je gaat me toch niet vertellen dat de docenten zich expres voor de domme houden om mij aan te sporen om zelf dingen uit te zoeken?

Misschien heb ik gewoon pech gehad ofzo... Ervaring van mensen om mij heen leert echter dat mijn verhaal geen uitzondering is.

Hiermee wil ik dus zeker niet zeggen dat er geen goede docenten zijn. Ook die ben ik er genoeg tegengekomen gelukkig :)

[ Voor 19% gewijzigd door voodooless op 19-04-2007 12:29 ]

Do diamonds shine on the dark side of the moon :?


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 07:20

.oisyn

Moderator Devschuur®

Demotivational Speaker

Verwijderd schreef op donderdag 19 april 2007 @ 08:50:
[...]

Tsja dat kan een behoorlijke domper zijn als je nog altijd de illusie hebt dat de docent er een vmbo_presenteerblaadjes_methodiek op na dient te houden. Dat afvallen op docenten betekent enkel dat je het zelf (nog) niet hebt begrepen.
Beetje kort door de bocht Mark, hoe triest ook, vaak worden docenten ingezet voor vakken waar ze eigenlijk onvoldoende ervaring mee hebben. Ze baseren zich dan op een korte zelf-stoom-cursus of lesstof van een vorige docent die er niet meer werkt oid. Want ja, het vak moet immers gewoon doorgaan. Ik ben het met je eens dat opmerkingen als "pff, docenten snappen er echt niets van" vaak niet helemaal terecht zijn, maar dat betekent tevens niet dat ze altijd onterecht zijn :)

Those who can, do. Those who can't, teach.
Neem bovenstaande quote ook met een korrel zout ;)

[ Voor 3% gewijzigd door .oisyn op 19-04-2007 12:24 ]

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.


Verwijderd

.oisyn schreef op donderdag 19 april 2007 @ 12:21:
Ik ben het met je eens dat opmerkingen als "pff, docenten snappen er echt niets van" vaak niet helemaal terecht zijn, maar dat betekent tevens niet dat ze altijd onterecht zijn :)
Hier ben ik het logischerwijs mee eens.

Het ging mij natuurlijk om het tegengas geven. Want ervaring van een persoon heeft namelijk geen enkele waarde als argument. Immers, zijn of haar ervaring een te kleine steekproef om ook maar enigzins een conclusie te kunnen trekken.

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 07:54

Janoz

Moderator Devschuur®

!litemod

Those who can, do. Those who can't, teach.
Imho zie je dat vooral op HBO's, puur omdat docenten daar 100% docent zijn. Bij universiteiten is het lesgeven slechts een deel van de werkzaamheden. Aangezien ze daarnaast vooral bezig zijn met het onderzoek doen naar nieuwe technieken en het uitvogelen van andere nieuwe ontwikkelingen weten die mensen vaak weer wel waar ze het over hebben.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 30-11 11:20

voodooless

Sound is no voodoo!

Janoz schreef op donderdag 19 april 2007 @ 13:37:
Imho zie je dat vooral op HBO's, puur omdat docenten daar 100% docent zijn. Bij universiteiten is het lesgeven slechts een deel van de werkzaamheden. Aangezien ze daarnaast vooral bezig zijn met het onderzoek doen naar nieuwe technieken en het uitvogelen van andere nieuwe ontwikkelingen weten die mensen vaak weer wel waar ze het over hebben.
Helemaal mee eens. Op de uni heb ik inderdaad andere ervaringen gemaakt dan op het HBO.

Do diamonds shine on the dark side of the moon :?


  • BalusC
  • Registratie: Oktober 2000
  • Niet online

BalusC

Carpe diem

Dat verklaart ook waarom de beste devvers óf van de uni komen óf gewoon autodidact zijn :Y)

We gaan eigenlijk best wel offtopic hierzo tho.

  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 30-11 11:20

voodooless

Sound is no voodoo!

Ik ben eigenlijk benieuwd hoe de presentatie is gegaan ;)

Do diamonds shine on the dark side of the moon :?


Verwijderd

Topicstarter
Oei sorry,

Erg late reactie, maar presentatie was niet echt goed verlopen, maar omdat we veel pech hadden gehad met hebben we uitstel gekregen en over twee weken, na de vakantie dus hebben nog een laatste kans.

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 07:54

Janoz

Moderator Devschuur®

!litemod

Pech gehad? Als je in de klas gewoon niet hebt lopen opletten en nu 'op je bek gaat' daardoor wil ik neit echt van pech spreken. Ik hoop echter dat jullie hier wat van geleerd hebben en de volgende keer wel opletten ;).

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Topicstarter
Janoz schreef op vrijdag 27 april 2007 @ 10:48:
Pech gehad? Als je in de klas gewoon niet hebt lopen opletten en nu 'op je bek gaat' daardoor wil ik neit echt van pech spreken. Ik hoop echter dat jullie hier wat van geleerd hebben en de volgende keer wel opletten ;).
Niet opletten in de klas heb je wel gelijk in, maar met 5 mensen in een groep beginnen en er met 2 eindigen is normaal?

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 07:54

Janoz

Moderator Devschuur®

!litemod

Misschien niet normaal, maar zeker een overkomelijk probleem. Als ik daarnaast zie waarop jullie vastgelopen zijn dan heeft dat niet met de mankracht te maken, maar vooral met het gebrek aan kennis. De twee weggelopen mensen de schuld geven geeft bij mij dan ook een beetje het idee dat je je eigen verantwoordelijkheid probeert te ontlopen ;).

Maar goed, zolang je hiervan hebt geleerd is het alleen maar goed natuurlijk. Volgende keer gewoon opletten en niet pas om de figuurlijke 5 voor twaalf eens met de opdracht beginnen.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 30-11 11:20

voodooless

Sound is no voodoo!

Janoz schreef op vrijdag 27 april 2007 @ 12:05:
Maar goed, zolang je hiervan hebt geleerd is het alleen maar goed natuurlijk. Volgende keer gewoon opletten en niet pas om de figuurlijke 5 voor twaalf eens met de opdracht beginnen.
Ja meester :')

* voodooless stond er vaak zat alleen voor met projecten omdat de rest er de ballen van snapte. Is toch ook wel weer leuk om anderen wat bij te brengen :)

[ Voor 19% gewijzigd door voodooless op 27-04-2007 12:38 ]

Do diamonds shine on the dark side of the moon :?


Verwijderd

voodooless schreef op vrijdag 27 april 2007 @ 12:36:
* voodooless stond er vaak zat alleen voor met projecten omdat de rest er de ballen van snapte. Is toch ook wel weer leuk om anderen wat bij te brengen :)
Ik hou wel van uitslovers in mijn team. Dan hoef ik minder te doen.

  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 30-11 11:20

voodooless

Sound is no voodoo!

Verwijderd schreef op vrijdag 27 april 2007 @ 13:06:
Ik hou wel van uitslovers in mijn team. Dan hoef ik minder te doen.
Dat is nu precies de rede waarom het dan vaak op niets uitloopt. Iedereen wacht maar tot er iemand opstaat om eindelijk eens wat te doen... Uiteindelijk heb je het dan gewoon niet af en zit je met de gebakken peren.

Do diamonds shine on the dark side of the moon :?


Verwijderd

voodooless schreef op vrijdag 27 april 2007 @ 13:44:
Dat is nu precies de rede waarom het dan vaak op niets uitloopt. Iedereen wacht maar tot er iemand opstaat om eindelijk eens wat te doen... Uiteindelijk heb je het dan gewoon niet af en zit je met de gebakken peren.
Hoe zou het dan verbeterd kunnen worden?

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 07:20

.oisyn

Moderator Devschuur®

Demotivational Speaker

Zorgen dat je voor meerdere groepsopdrachten steeds dezelfde groep vormt, zodat je steeds iemand aan kan wijzen die de hele opdracht voor z'n rekening neemt :P. Zo heb ik het ook gedaan op de HBO toen we in het 6e semester casussen kregen voor verschillende vakken waar je een heel blok mee bezig was (computer graphics, databases, netwerken, en nog iets wat ik me niet meer kan herinneren). Ik deed de computer graphics casus, wat ons groepje een mooie 9 heeft opgeleverd :Y). Anderen zorgden weer voor de andere casussen. 't Is vast niet de bedoeling, maar hey, iedereen doet wat ie leuk vind en iedereen haalt voldoendes. Wat wil je nog meer ;)

[ Voor 17% gewijzigd door .oisyn op 27-04-2007 14:40 ]

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.


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 07:54

Janoz

Moderator Devschuur®

!litemod

voodooless schreef op vrijdag 27 april 2007 @ 13:44:
[...]


Dat is nu precies de rede waarom het dan vaak op niets uitloopt. Iedereen wacht maar tot er iemand opstaat om eindelijk eens wat te doen... Uiteindelijk heb je het dan gewoon niet af en zit je met de gebakken peren.
En dat is na je schooltijd in het bedrijfsleven anders omdat...?

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • JKVA
  • Registratie: Januari 2004
  • Niet online

JKVA

Design-by-buzzword fanatic

Janoz schreef op vrijdag 27 april 2007 @ 14:44:
[...]

En dat is na je schooltijd in het bedrijfsleven anders omdat...?
Omdat het in het bedrijfsleven nog erger is. Bij de klant waar ik nu zit hebben ze afgelopen zaterdag weer met 15 man de hele dag gewerkt. De week daarvoor hetzelfde verhaal.

Op school liepen er nog veel lamstralen rond. Die heb ik (samen met nog een stel mensen die ook bereid waren te werken) de bal lekker teruggekaatst omdat ze lekker het project over mochten doen.

In het bedrijfsleven zie ik niet veel lamstralen meer. De ene leest iets meer blogs dan de andere en de andere staat iets vaker bij de koffieautomaat, maar uiteindelijk is iedereen bereid om hard te werken. (en terecht) Dat planningen altijd te krap zijn, staat daar op zich los van.

Fat Pizza's pizza, they are big and they are cheezy


  • Hydra
  • Registratie: September 2000
  • Laatst online: 06-10 13:59
.oisyn schreef op donderdag 19 april 2007 @ 12:21:
Beetje kort door de bocht Mark, hoe triest ook, vaak worden docenten ingezet voor vakken waar ze eigenlijk onvoldoende ervaring mee hebben. Ze baseren zich dan op een korte zelf-stoom-cursus of lesstof van een vorige docent die er niet meer werkt oid. Want ja, het vak moet immers gewoon doorgaan. I
Ik heb dat zelf ook meegemaakt. Voor een bepaald vak zit er een docent in de collegezaal welke dan een trimester later zelf hetzelfde vak mag geven. Het verschil is alleen dat een dergelijke docent niet hoeft te blokken voor een tentamen en al helemaal geen practica gaat lopen doen, en dus gewoon enorm weinig opsteekt.

Ik heb zelf informatica (HIO) gedaan in Enschede, en daar waren er maar een paar docenten welke zelf begrepen waar ze mee bezig waren. Een groot deel van wat daar doceerde waren gewoon mensen die het nooit zouden halen in het bedrijfsleven, en ook geen flauw benul hebben van wat daar precies speelt. De stof liep ook een jaar of 10 achter op de werkelijkheid.

https://niels.nu


  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 30-11 11:20

voodooless

Sound is no voodoo!

Janoz schreef op vrijdag 27 april 2007 @ 14:44:
En dat is na je schooltijd in het bedrijfsleven anders omdat...?
Waar staat dat dat anders is in het bedrijfsleven :? Dat is altijd zo, bij vrijwel alle bezigheden van de mens.

Do diamonds shine on the dark side of the moon :?


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 07:54

Janoz

Moderator Devschuur®

!litemod

Het punt dat ik wilde maken was dat project onderwijs helemaal zo slecht nog niet is aangezien het zou moeten voorbereiden op het bedrijfslevenen dat je daar dus ook vaak genoeg tegen dit soort dingen aan kunt lopen.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'

Pagina: 1 2 Laatste