package p10_klasy.v3;

class Konstruktory {
    public static void main(String[] args) {
        // Gdyby obiekty trzeba było tworzyć w ten sposób, że:
        // 1. tworzymy obiekt niezainicjowany
        Osoba a = new Osoba();
        // 2. uzupełniamy wartości obiektu
        a.imie = "Ala";
        // istnieje ryzyko użytkownik tej klasy (programista)
        // zacznie używać obiektu, zanim ten będzie w pełni gotowy do pracy
        a.przedstawSie();

        a.nazwisko = "Kowalska";
        a.wiek = 30;
        a.przedstawSie();

        // Właściwym zazwyczaj podejściem jest stworzenie konstruktora, który od razu ustawia wartości pól.
        // (Są też inne podejścia do tworzenia obiektów, kiedy konstruktory są prywatne, a upublicznia się:
        // - metody statyczne, - oddzielną klasę tworzącą instancje (tzw. factory), - wzorzec builder...

        Osoba b = new Osoba("Ola", "Malinowska", 40);
        b.przedstawSie();

    }
}
