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?
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
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
A no oczywiście pomyłka nie void pobierzPracownika(String imie)
tylko Pracownik pobierzPracownika(String imie)
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?
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ę.