Hirdetés

Keresés

Új hozzászólás Aktív témák

  • Drizzt
    nagyúr

    Még a setterrel kapcsolatban lenne egy kérdésem.
    A beolvas metódusban szeretném átadni közvetlen a setternek az értéket de nem nagyon jött eddig össze.
    Valahogy így gondoltam, de lehetséges, hogy rosszul csinálom nagyon.

    public void beolvas(Scanner sc) {
    System.out.println("Kérem a diák nevét!");
    this.setNev(nev) = sc.nextLine();
    }
    public void setNev(String nev) {
    this.nev = nev;
    }

    Fuha, itt elegge komoly gondok vannak. :(

    public void beolvas(Scanner sc) {
    System.out.println("Kérem a diák nevét!");
    this.setNev(sc.nextLine());
    }
    public void setNev(String nev) {
    this.nev = nev;
    }

  • btraven
    őstag

    Sziasztok Segítséget kérné mivel kicsit elakadtam a tanulásban.
    Lenne egy feladat amit nem tudok értelmezni,
    és a setterek megírásával gondban vagyok.
    Egyenlőre írtam egy vázlatot mire is gondoltam de a settereket még nem írtam meg rendesen, gondolom ott kellene levédeni az adattagokat???

    import java.util.Scanner;
    /*Készítsünk a korábbi Diak osztályhoz konstruktort!
    Tegyük a benne található adattagokat kívülről módosíthatatlanná!
    Működjön a következő kódrészlet:
    Diak jozsi = new Diak("Nagy Jozsef Leopold", 1999, 4.5);
    System.out.println(jozsi.getAtlag());
    System.out.println(jozsi.getNev());
    A futtatás eredménye a következő lesz:
    4.5
    Nagy Jozsef Leopold
    Az osztályban a korábbiakhoz képest ne legyen új adattag!
    Legyen minden adattaghoz getter és setter!*/
    /**
    *
    * @author spidi
    */
    public class Diak {
    private String nev;
    private int szuletesiEv;
    private double atlag;
    private Diak() {

    }

    public Diak(String nev, int szulEv, double atlag) {
    this.nev = "Nagy Jozsef Leopold";
    this.szuletesiEv = 1999;
    this.atlag = 4.5;
    }
    public void beolvas(Scanner sc) {
    System.out.println("Kérem a diák nevét!");
    this.nev = sc.nextLine();
    System.out.println("Kérem a diák születési évét!");
    this.szuletesiEv = sc.nextInt();
    System.out.println("Kérem a diák átlagát!");
    this.atlag = sc.nextDouble();
    }
    public void kiir() {
    System.out.println(getNev() + " (" + getSzuletesiEv() + "; "
    + getAtlag() + ")");
    }
    public void setNev(String nev) {
    this.nev = nev;
    }
    public String getNev() {
    return this.nev;
    }
    public void setSzuletesiEv(int szuletesiEv) {
    this.szuletesiEv = szuletesiEv;
    }
    public int getSzuletesiEv() {
    return this.szuletesiEv;
    }
    public void setAtlag(double atlag) {
    this.atlag = atlag;
    }
    public double getAtlag() {
    return this.atlag;
    }
    }

    Azért klassz dolog a setter mert nemcsak védve van az adattag.
    Hanem amikor keresed hogy hol lett módosítva/elrontva az adattag akkor könnyű megtalálni hol hívták a setter-ét.
    Ha például életszerűen 100 helyen olvassák és 1 helyen írják. Mert egyébként setter nélkül nézhetné végig az ember mind a 101 helyet. És azt nem kívánom senkinek.

  • Sziasztok Segítséget kérné mivel kicsit elakadtam a tanulásban.
    Lenne egy feladat amit nem tudok értelmezni,
    és a setterek megírásával gondban vagyok.
    Egyenlőre írtam egy vázlatot mire is gondoltam de a settereket még nem írtam meg rendesen, gondolom ott kellene levédeni az adattagokat???

    import java.util.Scanner;
    /*Készítsünk a korábbi Diak osztályhoz konstruktort!
    Tegyük a benne található adattagokat kívülről módosíthatatlanná!
    Működjön a következő kódrészlet:
    Diak jozsi = new Diak("Nagy Jozsef Leopold", 1999, 4.5);
    System.out.println(jozsi.getAtlag());
    System.out.println(jozsi.getNev());
    A futtatás eredménye a következő lesz:
    4.5
    Nagy Jozsef Leopold
    Az osztályban a korábbiakhoz képest ne legyen új adattag!
    Legyen minden adattaghoz getter és setter!*/
    /**
    *
    * @author spidi
    */
    public class Diak {
    private String nev;
    private int szuletesiEv;
    private double atlag;
    private Diak() {

    }

    public Diak(String nev, int szulEv, double atlag) {
    this.nev = "Nagy Jozsef Leopold";
    this.szuletesiEv = 1999;
    this.atlag = 4.5;
    }
    public void beolvas(Scanner sc) {
    System.out.println("Kérem a diák nevét!");
    this.nev = sc.nextLine();
    System.out.println("Kérem a diák születési évét!");
    this.szuletesiEv = sc.nextInt();
    System.out.println("Kérem a diák átlagát!");
    this.atlag = sc.nextDouble();
    }
    public void kiir() {
    System.out.println(getNev() + " (" + getSzuletesiEv() + "; "
    + getAtlag() + ")");
    }
    public void setNev(String nev) {
    this.nev = nev;
    }
    public String getNev() {
    return this.nev;
    }
    public void setSzuletesiEv(int szuletesiEv) {
    this.szuletesiEv = szuletesiEv;
    }
    public int getSzuletesiEv() {
    return this.szuletesiEv;
    }
    public void setAtlag(double atlag) {
    this.atlag = atlag;
    }
    public double getAtlag() {
    return this.atlag;
    }
    }

    Valóban kissé ellentmondásos a feladat a módosíthatatlansággal és a setterekkel, de valószínűleg arra gondolt a feladat szerzője, hogy a field-ek legyenek private-ek és így kívülről közvetlenül ne lehessen módosítani őket.

Új hozzászólás Aktív témák