[Java] String gebruiken om methode te gebruiken

Pagina: 1
Acties:

  • Koekoeksclocker
  • Registratie: Augustus 2002
  • Laatst online: 23-04 18:35
2 vraagjes

- Ik heb een methode saldo, waarbij ik via bvb jan.saldo kan opvragen wat Jan's saldo is. Daarnaast heb ik een string 'user' waarin de momenteel actieve gebruiker staat, bvb 'jan'. Ik hoopte via user.saldo het saldo van de momenteel actieve user op te vragen maar dat lukt niet. Hoe doe je zoiets? Mijn enige hulpbron (En dan is er.... Java) is niet echt hulpvaardig.

- De bovenstaande vraag zal wel duidelijk maken dat ik een Java newbie ben. Ik zoek eigenlijk een goede reference manual voor Java, liefst electronisch, nog liever op mijn palm. Een beetje ge'google' levert enkel 'Thinking in java' op maar dat is niet wat ik zoek. Bestaan er echt goede offline beschikbare Java reference manuals?

  • Robtimus
  • Registratie: November 2002
  • Laatst online: 14-05 17:09

Robtimus

me Robtimus no like you

Koekoeksclocker schreef op zondag 13 februari 2005 @ 22:48:
- Ik heb een methode saldo, waarbij ik via bvb jan.saldo kan opvragen wat Jan's saldo is. Daarnaast heb ik een string 'user' waarin de momenteel actieve gebruiker staat, bvb 'jan'. Ik hoopte via user.saldo het saldo van de momenteel actieve user op te vragen maar dat lukt niet. Hoe doe je zoiets? Mijn enige hulpbron (En dan is er.... Java) is niet echt hulpvaardig.
Je wilt dus dat je mbv een string een object kan vinden?

Dan is een Map iets voor je. Als keys gebruik je de strings, als values de user objecten.
Dan krijg je dus zoiets, met activeUser een string met de huidige user:
Java:
1
2
3
4
5
6
7
8
9
Map map = new HashMap(); // andere kan ook
...
User user = new User("jan");
map.put("jan", user);
...
User user = (User)map.get(activeUser);
if (user != null) {
    ....
}
Als je Java1.5 gebruikt hoef je niet eens meer te casten naar User. Die check op null moet je wel altijd uitvoeren als het mogelijk is dat er geen user "jan" oid is.

Maar even een vraagje: je slaat de huidige user in een string op. Waarom niet meteen als een User object?

Dat type User heb ik natuurlijk zelf verzonnen ;)

[ Voor 19% gewijzigd door Robtimus op 13-02-2005 23:03 ]

More than meets the eye
There is no I in TEAM... but there is ME
system specs


  • Plecky
  • Registratie: Januari 2004
  • Niet online
Koekoeksclocker schreef op zondag 13 februari 2005 @ 22:48:
2 vraagjes

- Ik heb een methode saldo, waarbij ik via bvb jan.saldo kan opvragen wat Jan's saldo is. Daarnaast heb ik een string 'user' waarin de momenteel actieve gebruiker staat, bvb 'jan'. Ik hoopte via user.saldo het saldo van de momenteel actieve user op te vragen maar dat lukt niet. Hoe doe je zoiets? Mijn enige hulpbron (En dan is er.... Java) is niet echt hulpvaardig.
Ik neem aan dat saldo() een methode van klasse user is, en in dit geval jan de objectnaam is. Als je de naam van de actieve gebruiker in een String kan opslaan, kan je waarschijnlijk ipv alleen de naam ook het hele user object opslaan. Anders kan je misschien met een hashtable oid werken met als key de naam van de gebruiker of de naam gebruiken als id om informatie uit een database te halen.
- De bovenstaande vraag zal wel duidelijk maken dat ik een Java newbie ben. Ik zoek eigenlijk een goede reference manual voor Java, liefst electronisch, nog liever op mijn palm. Een beetje ge'google' levert enkel 'Thinking in java' op maar dat is niet wat ik zoek. Bestaan er echt goede offline beschikbare Java reference manuals?
Van Suns Java Tutorial is ook een offline versie te download

Verwijderd

Volgens mij staat dit wel in het boek van En dan is er Java.

Heb het hier helaas nu niet te liggen.

Maar de oplossing is een klasse maken waarin je het saldo opslaat.
Dan een nieuwe instantie van die klasse maken genaamd "user".
Zoiets:
Bank jan = new Bank();

In die klasse jan zitten dan gegevens zoals het saldo, en die kun je er dan uithalen door bijvoorbeeld
int saldo = jan.saldo.
Realiseer je, dat dit alleen kan als je de variabele saldo public hebt gemaakt.

Als je het professioneler wilt doen, moet je een functie aanmaken waarbij je het saldo in de klasse stop en nog een functie die het saldo teruggeeft.
Teruggeeft functie:
public int getSaldo(){
return saldo;
}

Je moet in het boek van Gert-jan van der Laan (geloof ik), de hoofdstukken over klassen misschien maar eens doorlezen.
Als ik me niet vergis, staat in het boek ook nog een voorbeeld over zulk soort 'bank' voorbeelden.

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Verwijderd schreef op zondag 13 februari 2005 @ 23:18:
Volgens mij staat dit wel in het boek van En dan is er Java.
Ik weet niet welk topic jij hebt gelezen, maar je beantwoordt de vraag van de topicstarter niet echt. :P

Ik ben het overigens met IceManX eens. Je kan IMO beter kijken dat je het hele user object opslaat (met daarin uiteraard een methode om de naam op te vragen, als je die nodig hebt), en dan met dat object werken in plaats van die string; dat is veel natuurlijker, en meer volgens OO-principes. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

heb je in java geen eval?

:+

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Robtimus
  • Registratie: November 2002
  • Laatst online: 14-05 17:09

Robtimus

me Robtimus no like you

Nee. Je kan dat wel vaak met reflection oplossen, maar reflection is een van de minst elegante manieren van programmeren, en moet je alleen gebruiken als het echt niet anders kan.

More than meets the eye
There is no I in TEAM... but there is ME
system specs


  • Koekoeksclocker
  • Registratie: Augustus 2002
  • Laatst online: 23-04 18:35
Kort intermezzo

De eerste les 'Programmeren in Java' start en de leraar legt met hand en tand uit dat Java een relatief gemakkelijke programmeertaal is.

Tijdens de pauze koop ik 'En dan is er... Java', het cursushandboek

Eerste regel tekst op de achterflap: 'Java is geen eenvoudige programmeertaal'.

Vond het best wel grappig.

Achteraf gezien heeft het boek gelijk :/

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Maar gelukkig ben jij dol op uitdagingen en ga je met frisse moed aan de slag ;)

Wat je niet moet vergeten is dat Java een OO taal is en dat je dus wel wat van OO moet weten voordat de taal logisch en dus eenvoudig wordt.
Zo kan ik mijzelf bij een fietsenwinkel voorzien van alle mogelijk dingen om mijn fiets te repareren, maar dat wil nog niet zeggen dat ik het automatisch kan. :+

Practice makes perfect! Of: oefening baart kunst, voor de Neerlandici onder ons ;)

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Koekoeksclocker schreef op maandag 14 februari 2005 @ 22:18:
Kort intermezzo

De eerste les 'Programmeren in Java' start en de leraar legt met hand en tand uit dat Java een relatief gemakkelijke programmeertaal is.

Tijdens de pauze koop ik 'En dan is er... Java', het cursushandboek

Eerste regel tekst op de achterflap: 'Java is geen eenvoudige programmeertaal'.

Vond het best wel grappig.

Achteraf gezien heeft het boek gelijk :/
Dan heeft je leraar vindt ik toch gelijk. Java is geen moeilijke programmeertaal.

Programmeren in het algemeen is alleen niet makkelijk. Als je eenmaal goed kunt programmeren is het echt niet moeilijk om Java te leren.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03:15

.oisyn

Moderator Devschuur®

Demotivational Speaker

Koekoeksclocker schreef op zondag 13 februari 2005 @ 22:48:
- Ik heb een methode saldo, waarbij ik via bvb jan.saldo kan opvragen wat Jan's saldo is. Daarnaast heb ik een string 'user' waarin de momenteel actieve gebruiker staat, bvb 'jan'. Ik hoopte via user.saldo het saldo van de momenteel actieve user op te vragen maar dat lukt niet. Hoe doe je zoiets? Mijn enige hulpbron (En dan is er.... Java) is niet echt hulpvaardig.
Dit is een veel voorkomende fout onder beginnende programmeurs; een string gebruiken waarin de naam van je variabele staat, zodat er een textuele substitutie plaats kan vinden met de inhoud van de string. Zo werkt het echter geenszins, de naam van een variabele bestaat alleen tijdens compile-time, omdat het werken met regelrechte geheugenadressen nogal ondoenlijk is :). De naam is dus niets meer dan een symbool waarmee je aangeeft over welk stukje geheugen en wat voor type je het hebt.

Wat jij echter wil is een variabele die wijst naar hetzelfde object als een van de users. Dat doe je dus gewoon door een andere variabele aan te maken met hetzelfde type, die je naar het juiste object laat wijzen:
Java:
1
2
3
4
5
6
7
8
User jan, kees, klaas;

jan = new User("jan", 123.0);
kees = new User("kees", -100.0);
klaas = new User("klaas", 13045.56);

User user = kees;
System.out.println (user.naam + " heeft een saldo van " + user.saldo);

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.


  • Apie!
  • Registratie: Januari 2000
  • Laatst online: 09-03 19:55

Apie!

Newer, better & confusinger

Koekoeksclocker schreef op maandag 14 februari 2005 @ 22:18:
Kort intermezzo

De eerste les 'Programmeren in Java' start en de leraar legt met hand en tand uit dat Java een relatief gemakkelijke programmeertaal is.

Tijdens de pauze koop ik 'En dan is er... Java', het cursushandboek

Eerste regel tekst op de achterflap: 'Java is geen eenvoudige programmeertaal'.

Vond het best wel grappig.

Achteraf gezien heeft het boek gelijk :/
Je leraar heeft inderdaad gelijk. Java is geen moeilijke programmeertaal. Wat wel moeilijk kan zijn is het Object Oriented denken, maar als je daar eenmaal het licht bij ziet is Java echt zo moeilijk niet hoor :)

Overigens, volgens het encapsulation principe mag je die variable User.saldo niet van buitenaf aanroepen, maar zou die private moeten zijn en via een public User.getSaldo() voor de buitenwereld toegankelijk moeten zijn, maar dat krijg je waarschijnlijk in één van de volgende lessen waarschijnlijk wel... (hetzelfde geldt voor de variabele User.naam). Nu ik toch bezig ben: probeer jezelf aan te leren om of in het nederlands of in het engels te coden. Anders krijg je een mix van nederlands en engels :/

Java:
1
2
3
4
5
6
7
8
User jan, kees, klaas;

jan = new User("jan", 123.0);
kees = new User("kees", -100.0);
klaas = new User("klaas", 13045.56);

User user = kees;
System.out.println (user.getNaam() + " heeft een saldo van " + user.getSaldo());

[ Voor 11% gewijzigd door Apie! op 15-02-2005 11:04 ]

My lungs taste the air of Time
Blown past falling sands

Pagina: 1