Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Java olio-ohjelmointi

tkok [11.12.2008 17:45:04]

#

Hei, vähän apua kaipaisin.

Lotto-ohjelma piti tehdä kurssin päätteeksi. No muuten ois melko valmis ja kaiken osaan, mutta olio-ohjelmoinnista en oikeen pääse jyvälle.

Lottonumerot on arvottu jne. ogelmana on lottokupongit.
Kuponkeja pitäisi saada ostaa niin monta kuin rahat riittävät. Helpointapa tämän tekemiseen lienee että tehdään kuponki-oliot jotka pitävät sisällään int[7] taulukon joita sitten synnytellään aina kun pelaaja ostaa uuden kupongin. Ja pidän erikseen kirjaa kierroksella ostetuista kupongeista. Joten kuinka pystyn tekemään globaaleja lottokuponki olioita?

EDIT: typo

kayttaja-2791 [11.12.2008 17:53:33]

#

Miksi lottokuponki-olioiden pitää olla globaaleja? Teet niitä pääluokassa, laitat niitä vaikka vektoriin. Luokkamuuttujiahan (siis luokan sisällä näkyviä) saat määriteltyä kunhan esittelet ne vain metodien ulkopuolella. Toisaalta toisillekin olioille näkyviä saat muuttujista määrittämällä niiden näkyvyystyypiksi public.

Enpä osaa tarkemmin neuvoa ilman tarkempaa kuvausta itse ongelmasta.

tkok [11.12.2008 18:46:49]

#

JTS kirjoitti:

Enpä osaa tarkemmin neuvoa ilman tarkempaa kuvausta itse ongelmasta.

Joo siis... siis ongelmani on tämä: Lottokuponkeja pitää pystyä tekemään rajattomasti ennen lauantain arvontaa. Jos teen luokkaan muuttujan kuponki[7] jolloin voin käsitellä vain yhtä kuponkia. jos teen kuponki[100000][7] voin käsitellä 100000 kuponkia ja tämä ratkaisumalli alkaa viemään muistia aika paljon koneesta, kuinka siis saisin tehtyä niin että kuponki taulukon koko kasvaisi aina yhdellä kupongilla kuponki osto/täytön jälkeen?

kayttaja-2791 [11.12.2008 19:05:34]

#

Ahaa. Ok, eli käytä vektoreita:

import java.util.Vector;


public class Vektori {
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		//Luodaan vektori
		Vector vektori = new Vector();

		//Lisätään vektoriin alkioita
		vektori.add(20);
		vektori.add(30);

		//Yksi tapa käydä läpi vektorin sisältämät alkiot
		for (int i = 0; i < vektori.size(); i++) {
			//Tulostetaan sisältö
			System.out.println(vektori.get(i));
		}
	}
}

Käänsin tuon 1.4 JRE:lle, 1.6:ssa taitaa jo pitää tyypittää tuo vektori (no, ainakin Eclipse ja NetBeans osaa tuon fiksata itsekseenkin). Eli vektoriin voi nakata mitä vain olioita, ja koon kasvattaminen on helppoa. Googlella löytyy paljon lisäinfoa.

Jackal von ÖRF [11.12.2008 23:05:01]

#

Vector luokan sijaan List ja ArrayList. Vector on niin Java 1.0/1.1.

List-rajapinta toteutuksineen tulivat vuonna 1998 Java 1.2:n yhteydessä, eikä sen jälkeen ole ollut järkeä käyttää Vector-luokkaa (paitsi Java ME:ssä). Ihme että Vectoria näkee vieläkin useissa oppimateriaaleissa ja koodiesimerkeissä.

Vastaus

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

Tietoa sivustosta