uzupełnianie obiektu metodą

0

Witajcie czy pomógł by mi ktoś doprowadzić to do końca, klasa praca jest dosyć nie bardzo ... ?
http://pastebin.com/8EQ3SJ4y (tu treść) - pracownik
http://pastebin.com/Xc5E8xSc - firma
http://pastebin.com/SL6t2ZSx - k praca
nie wiem czy tworzyć obiekt w main i wywoływać metode która go uzupełnia czy w innej klasie tworzyć obiekt i go uzupełniać a później wywoływać w main tą metodę z innej klasy?

0

Odpowiedzialnościa klasy Firma ma być dodawanie odejmowanie itp pracowników z tablicy
<code=java >
while(i!='k') {

    System.out.println("Podaj numer indeksu talblicy");
    i=scanIn.nextInt();
    System.out.println("Podaj imie ");
    praconik[i].setImie(scanIn.nextLine());
    System.out.println("Podaj nazwisko ");
    praconik[i].setNazwisko(scanIn.nextLine());
    System.out.println("Podaj nazwe specjalości ");
    praconik[i].setStanowisko(scanIn.nextLine());
    System.out.println("Podaj nr indeksu ");
    //k
    }

Nie powinieneś ze standardowego wejścia wczytywać danych pracownika powinieneś zdefiniować pewien interfejs:
```java
 
public interface FirmaInterface {
  void dodajPracownika(Pracownik pracownik);
  void pobierzPracownika(String imie);
  //... jakie tam metody jeszcze potrzebujesz
}

Tworzysz tylko pewną implementacje twojego API i udostępniasz obie rzeczy, aby ktoś zdecydował sobie skąd chce pobierać dane.
Więc pobieranie danych robisz raczej w mainie albo jeszcze w osobnej klasie która będzie się zajmowała tylko tym

Twój pracownik ma być tylko pewną strukturą danych, a firma to pewna klasa zarządzająca grupą tych struktur danych

0

Poza tym rzadko preferuje się nazywanie interfejsów w ten sposób jak ja zrobiłem powinno się go nazwać Firma a klase która masz jako Firma np FirmaImpl. Następnym razem skup się na tworzeniu interfejsów dla klas

0

A no oczywiście pomyłka nie void pobierzPracownika(String imie) tylko Pracownik pobierzPracownika(String imie)

0
Miły Adolf napisał(a):

Poza tym rzadko preferuje się nazywanie interfejsów w ten sposób jak ja zrobiłem powinno się go nazwać Firma a klase która masz jako Firma np FirmaImpl. Następnym razem skup się na tworzeniu interfejsów dla klas

Na razie jeszcze nie ogarniam za dobrze interfejsów i treść zadania też ich nie przewiduje, a tak wgl to czy ja dobrze robie to zadanie?

1

Tak jak powiedziałem, robisz je źle:

//Zastanów się, jak przy tym ostatnim zadaniu rozdzielić odpowiedzialności pomiędzy obie klasy.

Tak masz w zadaniu. Odpowiedzialnością klasy Firma (klasy nazywaj z dużej litery!!!) jest dodawanie i wyświetlanie pracowników, ty dodatkowo dajesz jej funkcje "zdobywania danych" bo wywołujesz scanIn.nextLine(), po drugie jest to złamanie zasady mówiącej, że metoda ma robić tylko to co mówi o niej sygnatura metody. Twoja klasa powinna wyglądać mniej więcej tak:

 
public class Firma {
  
    private Pracownik[] pracownicy = new Pracownik()[100];
    private int indeksTablicy = 0;

    public void dodajPracownika(Pracownik pracownik) {
       pracownicy[indeksTablicy++] = pracownik;
    }

    public Pracownicy[] pobierzPracownikow() {
        return pracownicy;
    }

Pisałem ten kod tutaj mogą być błędy. Nie wiem czemu zadanie narzuca wyświetlanie pracowników w metodzie, ale ta odpowiedzialność powinna spaść na inną klasę.

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