Eli ohjelma, jossa kysytään ikää, etunimeä ja sukunimeä. Iän, etunimen ja sukunimen kysymiset omassa luokassa. Tuolta ne pitäisi saada Henkilö-oliolle. Henkilö olion tiedot pitäisi tallettaa tiedostoon ja sitten lukea tiedosto (C:\..) ja tulostaa tiedot näytölle.
Eli näin olen lähtenyt kehittämään:
---ALKAA----
import java.util.Scanner;
import java.io.*;
public class HarjoitusHenkilot {
private static final Scanner lukija = new Scanner(System.in);
public class Henkilotiedot implements Serializable{
int ika;
String etunimi;
String sukunimi;
}
public static void main(String[] args) {
TietojenSyottaminen henkilotietojensyotto;
henkilotietojensyotto=new TietojenSyottaminen();
int ika=henkilotietojensyotto.KysyIka();
String etunimi=henkilotietojensyotto.KysyEtuNimi();
String sukunimi=henkilotietojensyotto.KysySukuNimi();
System.out.println("\nIka: " ika);
System.out.println("Etunimi: " etunimi);
System.out.println("Sukunimi: " sukunimi);
}
---TÄHÄN LOPPUU NYT-------
Nuo KysyIka ym. on omassa luokassa nimeltä TietojenSyottaminen ja se toimii eli kysymykset tulee ja voin siihen syöttää
Miten nuo tiedot saan tuonne Henkilotiedot -olioon? Onhan tuo muuten olio?
Eli näin olen lähtenyt kehittämään:
---ALKAA----
import java.util.Scanner;
import java.io.*;
public class HarjoitusHenkilot {
private static final Scanner lukija = new Scanner(System.in);
public class Henkilotiedot implements Serializable{
int ika;
String etunimi;
String sukunimi;
}
public static void main(String[] args) {
TietojenSyottaminen henkilotietojensyotto;
henkilotietojensyotto=new TietojenSyottaminen();
int ika=henkilotietojensyotto.KysyIka();
String etunimi=henkilotietojensyotto.KysyEtuNimi();
String sukunimi=henkilotietojensyotto.KysySukuNimi();
System.out.println("\nIka: " ika);
System.out.println("Etunimi: " etunimi);
System.out.println("Sukunimi: " sukunimi);
}
---TÄHÄN LOPPUU NYT-------
Nuo KysyIka ym. on omassa luokassa nimeltä TietojenSyottaminen ja se toimii eli kysymykset tulee ja voin siihen syöttää
Miten nuo tiedot saan tuonne Henkilotiedot -olioon? Onhan tuo muuten olio?
Vastaukset 4
Vanhimmat
Ensin pitää luoda olio jotta olioon voisi siirtää jotain. Olion luonti tapahtuu new käskyllä, jossa new sanan jälkeen kerrotaan olion luokkan nimi. Esim. seuravaasti.
--- ALKAA ---
System.out.println("\nIka: " ika);
System.out.println("Etunimi: " etunimi);
System.out.println("Sukunimi: " sukunimi);
Henkilotiedot henkio = new Henkilotiedot();
henkio.ika = ika;
henkio.etunimi = etunimi;
henkio.sukunimi = sukunimi;
--- LOPPUU ---
Tuo yllä oleva esimerkki toimii vain, jos tuo esimerkkisi Henkilotiedot luokka on siirrettynä omaan "Henkilotiedot.java" -tiedostoon. Tuon esimerkkisi kaltaisia sisäkkäisiä luokka rakenteita ei muutoinkaan kanatta luoda ellei siihen näe jotain erittäin hyvää syytä tai tarvetta, eli kaikki luokat kannattaa tehdä omiin tiedostoihinsa.
olenkin aikaisemmin tehnyt erilliseen tiedostoon luokan, mutta oli eräässä esimerkissä samassa niin kokeilin sitten myös samassa.
Yhdessä käännösyksikössä, eli java-tiedostossa voi olla vain yksi public:ksi määritelty luokka ja sen pitää olla samanniminen kuin java-tiedosto. Muita luokkia voi sitten olla kuinka monta vain.
Suosittelen että luot HarjoitusHenkilöt-luokkaan get- ja set-metodit jokaiselle muuttujalle. Esimerkiksi public void setIka(int ika){this.ika = ika;} ja public int getIka(){return this.ika;}
Tämän jälkeen voit käyttää HarjoitusHenkilöt luokaa seuraavasti: HarjoitusHenkilö hh = new HarjoitusHenkilö(); hh.setIka(henkilotietojensyotto.KysyIka());
System.out.println("\n Ika :" hh.getIka());