[ Ramirez @ 22.05.2005. 18:36 ] @
Postoji klasa u kojoj se nalaze dve promenljive i dve metode... i naravno main()... ja ovu klasu ne koristim (znaci nista nasledjivanje, nista pravljenje objekata njenog tipa), ona je tu samo zato sto C# kaze da ona mora da postoji... Ja iz main() zelim da pozivam svoje dve metode bez da pravim objekat te klase... on mi kaze da metode moraju a budu static... ok nema problema... sada ja metode mogu da pozovem ali...

Gde i kako da inicijalizujem svoje dve promenljive? Konstruktor se ne poziva? Meni je sve ovo vrlo konfuzno... ako ja imam klasu unutar koje postoji konstruktor i main()... meni je logicno da kada pokrenem taj program jedan objekat tipa te klase bude napravljen. Tom prilikom po mojoj logici bi trebao da se pozove konstruktor te klase a zatim da pocne da se izvrsava main().

Ono sto ja zelim je nesto sto je u C/C++ tako lako... pre main() deklarisem svoje funkcije i onda ih lepo pozivam bez da pravim neke objekte, a dve promenljive koje imam su globalne za taj program.

Ja ovaj problem mogu da resim tako sto cu te metode i promenljive staviti u jednu klasu a main() u drugu... i onda cu u main() napraviti jedan objekat prve klase... ali mi to zvuci toliko glupo...
[ havramm @ 22.05.2005. 23:58 ] @
Main je (mora biti) staticka funkcija i kao takva ne pripada nijednoj instanci klase vec je na neki nacin "usluga" klase i kao takva moze biti pozvana bez instanciranja ijednog objekta te klase (bice da ti malo nedostaju osnove OOP-a, procesljaj to malo...).
E sad, u Frameworku postoji nesto sto se zove staticki konstruktor i njegova namena je da unutar njega inicijalizujes staticke promenljive clanice klase (sto mozes uraditi i inline...). Inicijalizuj te tvoje promenljive u statickom konstruktoru ili inline i koristi ih u statickim funkcijama...
Nemoj zaboraviti da cpp i nije pravi OO jezik (a koji i jeste... ) i nemoj da povlacis velike paralele izmedju ova dva...
[ Java Beograd @ 23.05.2005. 07:51 ] @
Code:
public class MojaKlasa {

    private String mojaPromenljiva;

    public MojaKlasa() {
        // ovde radim sve sto posten svet radi u konstruktoru
        mojaPromenljiva = "Vajfert pivo, ohladjeno ! ";

    }
    private String uradiNesto() {
         // evo radim nesto
         return "ono sta sam uradio";
    }

    public static void main(String[] arguments) {
        new MojaKlasa();
    }
}




Ramirez: Ja iz main() zelim da pozivam svoje dve metode bez da pravim objekat te klase... on mi kaze da metode moraju a budu static...

Logično da moraju biti static, jer je i main static, tj. poziva se bez instanciranja objekta klase.



Ramirez: Konstruktor se ne poziva? Meni je sve ovo vrlo konfuzno... meni je logicno da kada pokrenem taj program jedan objekat tipa te klase bude napravljen. Tom prilikom po mojoj logici bi trebao da se pozove konstruktor te klase a zatim da pocne da se izvrsava main().

Konstruktor se ne poziva. Ti ga po želji možeš ( a i ne moraš ) pozvati iz main(). Dakle, biće pozvan samo main(), sve ostalo je na tebi.



Ramirez: ... Ono sto ja zelim je nesto sto je u C/C++ tako lako... pre main() deklarisem svoje funkcije i onda ih lepo pozivam bez da pravim neke objekte, a dve promenljive koje imam su globalne za taj program.

Ti si zapravo žrtva Mikrosoftove laži da je C# mešavina Jave i C++, a C# u stvari je 95% Java. Dakle, pre svega zaboravi termine "program", "globalne promenljive" i sve tome slično ...