[Javalist] amator kerdes

istvan.ketler at lhsystems.com istvan.ketler at lhsystems.com
2013. Jan. 27., V, 23:38:17 CET


Szia,

lehet static, nem éred el direktben:

private static List<Book> bookList;

public static void addBook(Book book) {
    bookList.add(book);
}

public static Book lookup(String title) {
    for (Book book : bookList) {
        if (book.isTitle(title)) {
            return book;
        }
    }
    return null;
}

Satöbbi. De így ebben a formában nem szoktuk használni a static-ot. Megteheted viszont, hogy a Főablak osztályban vannak az addBook, lookup, és hasonló listakezelő függvények, a MellékAblak osztálynak pedig átadsz egy példányt a Főablak osztályból. Ez akkor működik, ha a MellékAblak osztályt valahol a Főablak hozza létre, vagy olyasvalami hozza létre, amelyik maga is látja a Főablak osztály példányát.

A MellékAblak osztály tárolja a kapott Főablak hivatkozást, és ahol kell használja is:

public class MellékAblak {
    private Főablak listHandler;

    public MellékAblak(Főablak ablak) {
        this.listHandler = ablak;
    }

    public void myMethod() {
        // ...
        listHandler.addBook(myNewBook);
        // ...
    }
}

Van persze még egy csomó más lehetőség is. Egyik, hogy a könyvlista kezelését kiveszed a Főablak osztályból, és csinálsz egy saját osztályt neki. Ez a saját osztály aztán lehet singleton, így bárki eléri egy static híváson keresztül:

public class ListHandler {
    private static ListHandler theInstance;

    private List<Book> theBookList = new ArrayList<Book>();

    private ListHandler() {
        // private konstruktor miatt nem lehet példányosítani kívülről.
    }

    public static ListHandler getInstance() {
        if (theInstance == null) {
            theInstance = new ListHandler();
        }
        return theInstance;
    }

    public void addBook(Book book) {
        theBookList.add(book);
    }
}

Aztán ha bárhol kell neked, akkor elkéred az instance-t és használod:

    // ...
    ListHandler handler = ListHander.getInstance();
    handler.addBook(myNewBook);

Ha felteszed a kódod mondjuk az ajánlott githubra, akkor valószínűleg fogsz még javaslatokat kapni a listatagoktól, hogy mit lenne érdemes másként csinálni. A problémádra így csak közelítő választ lehet adni, hiszen több megoldás is létezhet, ezek jó vagy rossz volta függhet általad nem említett más körülményektől is.

Üdv,

Iván

______________________________
István Ketler
Senior Consultant

Lufthansa Systems Hungária Kft.
Development Center Pest
Neumann János u. 1/e
1117 Budapest
Hungary
Phone: +36 1 887-2815
Fax: +36 1 887-0577
Mobile: +36 30 600-4936
E-mail: istvan.ketler at LHsystems.com
www.LHsystems.com


 
Sitz der Gesellschaft / Corporate Headquarters: Lufthansa Systems Hungaria Kft, Budapest, Fovarosi Birosag 01-09-463417
Geschaeftsfuehrung / Management Board: Peter Sipos

-----Original Message-----

From: javalist-bounces at lists.javaforum.hu [mailto:javalist-bounces at lists.javaforum.hu] On Behalf Of Bara Zoltan
Sent: Friday, January 25, 2013 7:44 PM
To: Java lista
Subject: [Javalist] amator kerdes

Sziasztok

Nemreg fogtam neki a java nyelv tanulasanak es tetszett hogy OOP szemleletu, bar kisse meg idegen szamomra inkabb a strukturalt programozast hasznaltam mindig.
Elhataroztam hogy irok magamnak egy egyszeru konyvnyilvantartot.
Mar majdnem kesz is lennek vele csak OOP problemaba futtam.

Van egy Lista osztalyom amibe Konyv peldanyok vannak.
Van egy Foablak osztaly maga a program es egy Mellekablak osztaly ahol uj konyveket adok a meglevokhoz.

Namarmost itt a gond mert nem erem el a Lista osztalyom peldanyvaltozojat a Mellekablak osztalybol, amit a Foablak osztaly tartalmaz A lenyeg hogy a Lista osztaly peldanyat minden osztalybol el kene erjem es ugyanazokat az adatokat, ezert gondoltam hogy static-nak teszem de akkor a fugvenyek is azok kell legyenek es direkt is elerem a statikus arrayList valtozomat, ami ugyebar nem igazan OOP szemelelet, s minek is kene irjak hozza get, set fugvenyeket.

Hogy kene ezt megoldani elegansan milyen iranybol kene megkozelitsem ezt a problemat ?
Minden utmutatast, otletet koszonok elore is.

Udvozlettel
Bara Zoltan

_______________________________________________
Javalist mailing list
Javalist at lists.javaforum.hu
http://lists.javaforum.hu/mailman/listinfo/javalist


További információk a(z) Javalist levelezőlistáról