javan olio ohjelmointi ongelma

Hei,

Olen suunnitellut tekeväni projekti pankkiautomaatin, jossa käyttäisi tiliä olio luokkana, johon tallentusi saldo. Eli käyttäisin toimintoja, että kysyin tilin saldoa, voisin lisätä sinne rahaa, voisin nostaa sieltä myös. Miten tämän saisin toimimaan niin, että aina kutsuisin olio-luokka tiliä ja se päivittyisi eri toimintojen yhteydessä.

Minulla on seuraavanlainen ongelma, kun kokeilen Javalla olio luokilla saada saldo muuttujaa toimimaan.

Tässä käyttöliittymä, jossa kutsun tili oliota.
_________________________________________________

private class nappiKuuntelija implements ActionListener
{
Tili tili = new Tili(0);

public void actionPerformed(ActionEvent e)
{

Object aiheuttaja=e.getSource();

if(aiheuttaja.equals(saldo))
{
tiedot.setText(tili.toString());
}
if(aiheuttaja.equals(talleta))
{
tili.setSaldo(tili.getSaldo() parseInt(tunnus.getText()) );
}
if(aiheuttaja.equals(nosta))
{
tili.setSaldo(tili.getSaldo() - parseInt(tunnus.getText()) );
}
}

}
_________________________________________________


Tässä tili olio luokka.

_________________________________________________


public class Tili
{
private int saldo;

/**********************************************************************/
public Tili(int n) //luontimetodit
{
saldo=n;
}

public int getSaldo() { //SETit ja GETit
return saldo;
}

public void setSaldo(int saldo) {
this.saldo = saldo;
}


public String toString()
{
String palaute;
palaute = "Saldo:" saldo;
return palaute;
}
}


Eli ongelmana on, että en saa tuota tili olioita toimimaan, niin että kun koitan vähentää tai lisätä summaa ja tulostaa tilin ulos. Se vain tulostaa saldon, mutta ei tee siihen muutoksia. Voisikto joku neuvoa miten saisin muutokset toimimaan.
3666
Äänestä

Muut lukivat myös

Vastaukset 3

Vanhimmat

Javaa pahemmin tuntematta, ei kai tuota nappikuuntelijaa (luokkien nimet kai yleensä isolla?) luoda aina nappia painettaessa? Jos näin on, luodaan tilikin siinä vaiheessa tyhjänä...

Tee testiluokka tai ainakin testimetodi tuonne, joka muuttelee saldoa ja tulostelee sitä ulos. Näet ainakin, onko vika Tili -luokassa (ei minun silmiini osu mitään varsinaista virhettä).

Termeistä vielä: olio on luokan ilmentymä. Et kutsu luokkaa, vaan kutsut sen ilmentymän metodeja.

Äänestä

Kannattaisi selvittää/katsoa se, yrittääkö ohjelma lisätä/kasvattaa saldoa, eli ovatko lauseet "if(aiheuttaja.equals(talleta))" ja "if(aiheuttaja.equals(nosta))" koskaan tosia.

Toiseksi kannattaisi selvittää toimiiko "itse tehty"(?) parseInt() -metodi.

Kolmanneksi kannattaisi selvittää se, että saldo, talleta ja nosta oliot käyttävät samaa nappiKuuntelija -luokan ilmentymää, ettei esim. joka kerta setActionListener metodia kutsuessa vahingossa luoda uutta ilmentymää "new nappiKuuntelija()", tms. käskyllä.

Neljänneksi kannttaa tarkistaa se, ettei tulostus lauseessa ole mitään vikaa. Esim. ettei se käytä eri tili luokan ilmentymää mitä ohjelma yleisesti muokkaa, tms.

Äänestä

Tuli viellä yksi tarkastus ehdotus mieleen tuosta otsikon rivistä. Eli onko se numero tosiaan "tunnus" nimisessä oliossa/kentässä? (Eli jos yritätkin ottaa arvoa sellaisesta kentässä josta sitä ei ole. Tämä vain tuli mieleen, kun tuo "tunnus" kuulostaa jotenkin hassulta kentän nimeltä, kun käyttäjältä kuitenkin kysytään kai vain raha summaa).

Äänestä

Kommentoi aloitusta


anis kirjoitti:

Hei,

Olen suunnitellut tekeväni projekti pankkiautomaatin, jossa käyttäisi tiliä olio luokkana, johon tallentusi saldo. Eli käyttäisin toimintoja, että kysyin tilin saldoa, voisin lisätä sinne rahaa, voisin nostaa sieltä myös. Miten tämän saisin toimimaan niin, että aina kutsuisin olio-luokka tiliä ja se päivittyisi eri toimintojen yhteydessä.

Minulla on seuraavanlainen ongelma, kun kokeilen Javalla olio luokilla saada saldo muuttujaa toimimaan.

Tässä käyttöliittymä, jossa kutsun tili oliota.
_________________________________________________

private class nappiKuuntelija implements ActionListener
{
Tili tili = new Tili(0);

public void actionPerformed(ActionEvent e)
{

Object aiheuttaja=e.getSource();

if(aiheuttaja.equals(saldo))
{
tiedot.setText(tili.toString());
}
if(aiheuttaja.equals(talleta))
{
tili.setSaldo(tili.getSaldo() parseInt(tunnus.getText()) );
}
if(aiheuttaja.equals(nosta))
{
tili.setSaldo(tili.getSaldo() - parseInt(tunnus.getText()) );
}
}

}
_________________________________________________


Tässä tili olio luokka.

_________________________________________________


public class Tili
{
private int saldo;

/**********************************************************************/
public Tili(int n) //luontimetodit
{
saldo=n;
}

public int getSaldo() { //SETit ja GETit
return saldo;
}

public void setSaldo(int saldo) {
this.saldo = saldo;
}


public String toString()
{
String palaute;
palaute = "Saldo:" saldo;
return palaute;
}
}


Eli ongelmana on, että en saa tuota tili olioita toimimaan, niin että kun koitan vähentää tai lisätä summaa ja tulostaa tilin ulos. Se vain tulostaa saldon, mutta ei tee siihen muutoksia. Voisikto joku neuvoa miten saisin muutokset toimimaan.

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu