Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Java: taulukon palauttaminen

Sivun loppuun

pielinen [10.06.2009 10:50:41]

#

Aloin harjottelemaan javalla koodaamista, ja tuli tarve saada siirettyä kaksi taulukkoa toisesta luokasta pää luokkaan,eli

Ohjelman alku
Ikkunan luonti
Ohjaus palkki
ohjelma mitä kutsutaan ikkuna ohjelmasta.

Ohjelman rakenne on tuommoinen,
tuo ohjelma(vai onko se olio? nimeltään) käsitteleen ohjaus palkin teksti kenttiä, ja niiten data pitäisi saada siirettyä takaisin ikkuna ohjelmaan.
Miten tämä siis tapahtuu?

ps. Vielä vähän sekaisin tämän luokka/olio ohjelmoinnin suhteen.

Mobel [10.06.2009 12:30:16]

#

Katso jos aikaa sitten kirjoittamani koodivinkki sattuisi olemaan hyödyksi.


Olioon, jota ikkuna kutsuu tulisi laittaa seuraavaa vastaava metodi:

//ikkunaluokkaan
...
public void setArray(String [] arr){
   ikkunaArray=arr; //ikkunaluokassa oma taulukko, johon tieto tallennetaan ja josta sitä voidaan käyttää
}
...
public String[] getArray(){
   return ikkunaArray; //välissä on muokattu taulukkoa halutulla tavalla ja tämä metodi palauttaa muokatun taulun
}
...

Pääluokassa sitten kutsut kyseisiä metodeja:

...

Ikkuna ikku = new Ikkuna(); //tässä luodaan uusi instanssi ikkunaluokasta

...

ikku.setArray(taulu); //annetaan taulu toiselle oliolle

paaluokanTaulu=ikku.getArray(); //pääluokassa olevaan taulukkoon tallennetaan ikkunaluokan palauttama taulu

...

Koodi ei ole mitenkään valmis, vaan ajan säästämiseksi jätin kaikki epäoleelliset metodit ja muut kirjoittamatta. Varmasti tästä on jotain hyötyä.

pielinen [10.06.2009 16:32:17]

#

Kiitti vastuksesta.

Eli return komento voi paulauttaa myös täyden taulukon?
En vaan mistään löytänyt koodia missä olis ollut niin, ja yrittämällä en saanut oikeaa syntakiaa, niin luulin sen olevan mahdotonta.

Mutta pitääpä testata, ilmoittelen miten kävi.

Edit, Juu tuntuu toimivan kuten pitääkin. Kiitokset vielä.

Metabolix [10.06.2009 16:49:22]

#

Kannattaa muistaa, että kyseessä on viittaus siihen samaiseen taulukkoon, joten taulukon muuttaminen yhdessä paikassa vaikuttaa jälkikäteen myös taulukkoon toisessa paikassa. (Javassa viittauksia ovat kaikki paitsi perustietotyypit.)

Tommittaja [12.06.2009 18:42:07]

#

Olio tarkoittaa sitä, että jostakin luokasta luodaan ilmentymä(olio) jota sitten voidaan käyttää...

Esim:

public class luokka {
    public static void metodi() {
        int luku = 2;
        int luku2 = 3;
        int luku3 = 2+3;
    }
    public static void main(String[] args) {
        luokka olio = new luokka(); // luodaan ilmentymä luokasta "luokka"
        olio.metodi(); // suoritetaan "metodi" olion kautta
    }
}

en muistanut, miten se tehdään toiseen luokkaan eri tiedostosta, joten tein sen nyt näin...

mutta siis: Olio on luokasta tehty ilmentymä, oliota ei ole, ennen kuin se erikseen luodaan jostakin luokasta... hankala selittää luokka. :D

Teuro [12.06.2009 18:49:35]

#

Tommittaja: eihän tuo sun sepustus nyt liity mitenkään käsiteltävään aiheeseen?

Tommittaja [12.06.2009 18:54:05]

#

ei periaatteessa, mutta tuo pielinen sanoo: Vielä vähän sekaisin tämän luokka/olio ohjelmoinnin suhteen. joten laitoin tuon selvennykseksi :)

Päärynämies [12.06.2009 19:01:03]

#

Niin ja jos niitä esimerkkejä antaa, niin kannattaisi tarkistaa että ne ovat oikein. Tuossa Tommittaja nimittäin koitat luoda olio-luokasta luokka nimistä ilmentymää. Ja muutenkin hieman hassu esimerkki, kun kutsut staattista metodia olion kautta. Voihan sen toki niinkin tehdä.

Tommittaja [12.06.2009 19:03:30]

#

No, onko nyt oikein? =) en ole kyllä hirveästi käyttänyt olioita, mutta onko?

Teuro [12.06.2009 19:04:55]

#

Tommittaja kirjoitti:

ei periaatteessa, mutta tuo pielinen sanoo: Vielä vähän sekaisin tämän luokka/olio ohjelmoinnin suhteen. joten laitoin tuon selvennykseksi :)

Luulen, että Pielinen on enemmän sekaisin tuon esimerkkikoodin jälkeen.

Tommittaja [12.06.2009 19:10:01]

#

äläs nyt, yritän vain auttaa.. :(

Metabolix [12.06.2009 22:06:31]

#

Tommittaja: Miksi metodi on staattinen, jos sitä kerran kutsutaan ei-staattisesta ympäristöstä?

tsuriga [12.06.2009 22:09:49]

#

Ja sitten Javassa muistetaan nuo mukavat konventiot, joihin kuuluu luokkien aloittaminen isolla alkukirjaimella.

Tommittaja [13.06.2009 17:29:20]

#

Metabolix kirjoitti:

Tommittaja: Miksi metodi on staattinen, jos sitä kerran kutsutaan ei-staattisesta ympäristöstä?

hmm... en oikein tiedä, olen vain tottunut laittamaan metodit staattisiksi, koska yleensä kutsun niitä päämetodista.

siis.. ajattelin, että kun tuo olio luodaan päämetodissa, joka on staattinen, että sen pitäisi siis ollakin staattinen..

Teuro [13.06.2009 17:31:41]

#

Eikös staattisia metodeita kutsuta ilman oliota?

Tommittaja [13.06.2009 17:38:20]

#

tuo oli nyt vaan semmoinen esimerkki, jolla selitin olion ja luokan eron...
tavallisestihan en edes käytä olioita, ellen tee jotain todella erityista ja hienoa :D

Päärynämies [13.06.2009 17:46:55]

#

Tommittaja kirjoitti:

Metabolix kirjoitti:

Tommittaja: Miksi metodi on staattinen, jos sitä kerran kutsutaan ei-staattisesta ympäristöstä?

hmm... en oikein tiedä, olen vain tottunut laittamaan metodit staattisiksi, koska yleensä kutsun niitä päämetodista.

Ei välttämättä kannata ruveta muita neuvomaan esimerkein, jos ei itsekään tiedä miksi esimerkkinsä kirjoittaa niin kuin kirjoittaa. Tarkotus toki oli tässä hyvä, toteutus hieman ontui.

Staattisia metodeita kutsutaan yleensä ilman olioita, joten olio- ja luokkaesimerkkinä tuo koodinpätkä ei oikein onnistu. Oliolle luokasta ei ole oikeasti tarvetta, koska kaikki luokan metodit ovat staattisia eli niitä voidaan kutsua ilman olion olemassa oloa. Muutenkaan mielestäni esimerkki ei oikein demonstroi kamalasti mitään.

pielinen [17.06.2009 20:51:37]

#

Paljompa on tullut keskustelua, mutta sain homman toimimaan, ja teoriaa luettu on jo sisäistänyt aika hyvin oliot ja luokat.

Siis käytetäänkö staatista metodia, jos kutsuu jotain samasta luokasta?

Sami [17.06.2009 21:50:50]

#

static-avainsanalla määritelty metodi (tai muuttuja) on luokkametodi (tai -muuttuja). Luokkametodit ja -muuttujat eivät ole minkään olion omistamia (vaan luokan omistamia), eli näissä ei myöskään pysty käsittelemään muuta kuin muita luokkametodeita ja -muuttujia, sekä tietysti myös parametrina saatuja muuttujia.
Luokkametodit ja -muuttujat ovat olemassa vaikka luokasta ei olisi luotu yhtäkään oliota.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta