Problem przy tworzeniu obiektu.

0

Witam Szanownych Forumowiczów
Mam pewien problem ze stworzeniem obiektu.
Mianowicie mam trzy klasy.
Pierwsza z nich to klasa OSOBA. Ma dwie zmienne prywatne:imię i nazwisko.

public class Osoba {
	private String imie;
	private String nazwisko;
	
	//getter
	public String getImie()
	{
		return imie;
	}
	public String getNazwisko()
	{
		return nazwisko;
	}
	//setters
	public void setImie(String imie)
	{
		this.imie=imie;
	}
	public void setNazwisko(String nazwisko)
	{
		this.nazwisko=nazwisko;
	}
	public Osoba(String imie, String nazwisko)
	{
		setImie(imie);
		setNazwisko(nazwisko);
		
	}
	
	@Override
	public String toString()
	{
		
		return imie+nazwisko;
	}

}


Druga klasa to klasa Firma.
W tej klasie zawarłem metodę tworzenia obiektów typy OSOBA:


public class Firma {
	private Osoba pracownik;
	

	public Osoba getPracownik() {
		return pracownik;
	}

	public void setPracownik(Osoba pracownik) {
		this.pracownik = pracownik;
	}
	

	
	//constructor
	public Firma()
	{
		
	setPracownik(pracownik);
	}
	
	//addPracownik
	public void addPracownik(Osoba osoba)
	{
		osoba=getPracownik();
		
	}
	
	@Override
	public String toString()
	{
		return super.toString()+" "+pracownik;
	}

}

Stworzyłem też klasę MAIN taką jak poniżej:

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Firma firma=new Firma();
		firma.addPracownik(new Osoba("Jan","Kowalski"));
		System.out.print(firma);

	}

}


I niestety stworzony obiekt jest pusty, jest zwracana tylko wartość referencji:

Firma@10dea4e null

Gdzie mam błąd w kodzie, że tworzę pusty obiekt?

0

Debugger i jedziesz.
Masz błąd w addPracownik(Osoba osoba).

0
szweszwe napisał(a):

Debugger i jedziesz.
Masz błąd w addPracownik(Osoba osoba).

Używam Eclipse.
Nie wskazuje żadnego błędu :(

0

Błąd implementacyjny :] Zobacz po prostu jak działa ta metoda.

0
szweszwe napisał(a):

Błąd implementacyjny :] Zobacz po prostu jak działa ta metoda.

Dzięki za zainteresowanie.
Metoda działa w następujący sposób:
1.Tworzy pusty obiekt klasy Person
2.Metoda print drukuje wartość referencji i zwraca wartość obiektu czyli null:
"Firma@10dea4e null"

0

Nie nie. Ta metoda robi coś takiego osoba=getPracownik(); Czyli do stworzonego i przekazanego pracownika przypisuje pracownika aktualnego czyli null. Generalnie z private Osoba pracownik nic się nie dzieje.

0
szweszwe napisał(a):

Nie nie. Ta metoda robi coś takiego osoba=getPracownik(); Czyli do stworzonego i przekazanego pracownika przypisuje pracownika aktualnego czyli null. Generalnie z private Osoba pracownik nic się nie dzieje.

Masz absolutną rację, nie spojrzałem na to z tej strony :)
Czyli metoda "public void addPracownik(Osoba osoba)" jako argument przyjmuje obiekt typu Osoba. Teraz pytanie co zawrzeć wewnątrz metody aby tworzyła wymagany obiekt...

0

No tak jak reszta setterów. Ustawiasz pracownika czyli:

public void addPracownik(Osoba osoba) {
   this.pracownik =osoba;
}
0
szweszwe napisał(a):

Nie nie. Ta metoda robi coś takiego osoba=getPracownik(); Czyli do stworzonego i przekazanego pracownika przypisuje pracownika aktualnego czyli null. Generalnie z private Osoba pracownik nic się nie dzieje.

Dzięki wielkie szweszwe.

1 użytkowników online, w tym zalogowanych: 0, gości: 1