uzupełnianie obiektu metodą

uzupełnianie obiektu metodą
C0
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 11
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?

  • Rejestracja: dni
  • Ostatnio: dni
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
    }
Kopiuj

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

  • Rejestracja: dni
  • Ostatnio: dni
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

  • Rejestracja: dni
  • Ostatnio: dni
0

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

C0
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 11
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?

  • Rejestracja: dni
  • Ostatnio: dni
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:

Kopiuj
 
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ę.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.