Dziedziczenie, ewidencja płac w firmie

Odpowiedz Nowy wątek
2018-05-15 22:21
0

Witam serdecznie! Jakiś czas temu wstawiłem zdjęcie poleceń dotyczących programu który mam zrobić. Ale mimo wskazówek rozkladam ręce. Wprawdzie zacząłem go robić, ale pewnie dużo rzeczy jest zle i potrzebowałbym wyjaśnienia :)

(POMOCY!) utknąłem nie wiem czy to co mam jest dobrze i jak to zrobić a tego czego nie mam to nie mam pojęcia jak ma to wyglądać :(

http://www.wklejto.pl/548630
http://www.wklejto.pl/548635
http://www.wklejto.pl/548637
http://www.wklejto.pl/548639

edytowany 1x, ostatnio: furious programming, 2018-05-15 23:52
Wrzuc to na github, czy gdzies.. - shagrin 2018-05-16 08:25

Pozostało 580 znaków

2018-05-15 23:08
0

Czego oczekujesz? Że ktoś weźmie Twój cały kod, przerobi jak należy i jeszcze napisze Ci wypracowanie na ten temat!?

Poza tym przypomnij zdjęcie/wątek z poleceniami. I pytaj o fragmenty kodu, nie wrzucaj całości oczekując zbawienia.

edytowany 2x, ostatnio: Spine, 2018-05-15 23:10

Pozostało 580 znaków

2018-05-15 23:18
0

Nie nie chodzi mi o gotowy kod czy metody. Tylko o sprawdzenie czy to co zrobiłem ma sens i racje bytu i jak można rozwiązać te brakujące metody i nie nie chodzi o kod tylko nakierowanie.

Pozostało 580 znaków

2018-05-16 00:20
0

1) Firma może zatrudniać jednocześnie max 100 pracowników i trzymać ich w jednej tablicy (patrz 2).
Więc wydaje mi się, że powinieneś zrobić tą tablicę bez typów generycznych. Dodawanie nowego pracownika by zwiększało wartość zmiennej przechowującą ilość elementów tablicy. Analogicznie przy usuwaniu, przyda Ci się odpowiednia funkcja: https://stackoverflow.com/que[...]p;utm_campaign=google_rich_qa
2) Robisz trzy listy:

        List<Robotnik> robotnicy = new ArrayList<>();
        List<Urzędnik> urzędnicy = new ArrayList<>();
        List<Pracownik> pracownicy = new ArrayList<>();

A co jakby zrobić enuma "typ pracownika"? Robotnik np. by sobie ustawiał w konstruktorze automatycznie typPracownika = TypPracownika.ROBOTNIK;.
Miałbyś wtedy jedną tablicę Pracowników, na której byś wykonywał odpowiednie operacje i wiedziałbyś jaki pracownik się kryje pod danym indeksem tablicy. typPracownika to oczywiście pole klasy Pracownik, żeby dziedziczące klasy je miały.

edytowany 2x, ostatnio: Spine, 2018-05-16 00:21
Pokaż pozostałe 2 komentarze
Na tym etapie nauki nie ma znaczenia :) Zresztą różnica nie jest aż tak znaczna. - Koziołek 2018-05-16 15:51
Czyli zrobiłbyś to tak jak napisałem? Z tym instanceof. - Spine 2018-05-16 16:44
Z instanceof, choć nadal nie jest to najlepsze :D - Koziołek 2018-05-16 20:26
Hehe, to co by było najlepsze :P ? - Spine 2018-05-16 21:16
Dwa osobne flowy na poziomie klienta :D - Koziołek 2018-05-17 08:40

Pozostało 580 znaków

2018-05-16 07:13
0

Chciałem w ogole zrobić Enuma z możliwymi etatami ale stwierdziłem że to niej mi tak bliski temat i oprócz zapisania ciała klasy Enum nie za bardzo wiem jak się po nim poruszać :/ Jak to w praktyce wygląda?
Spróbuje tak to zrobić tylko nie za bardzo wiem jak potem sensownie wykorzystać potencjał Enuma na razie umiem go po prostu stworzyć :D
Muszę się jeszcze dużo nauczyć 😃 Widziałem na innych przykładach w temacie dziedziczenia że właśnie tworząc listę zapisuje się jako typ obiektowy właśnie nazwę klasy na której się operuje. Ponadto czytałem i chyba bezmyślnie jak regułke se wbiłem że listy są typami genetycznymi i trzeba podać typ :)

edytowany 2x, ostatnio: Adrian Paź, 2018-05-16 07:19

Pozostało 580 znaków

2018-05-16 08:15
1

Mnie z kolei ciekawi co stoi za taką konwencją:

public class Firma{
    // ...
    static Firma firma = new Firma();
    // ...

No i jeszcze metoda do usuwania pracowników:

public void usuńPracownika(){
    System.out.print("Podaj nazwisko: ");
    nazwisko = scanner.next();
    pracownicy.remove(new Pracownik(nazwisko));
}

Tutaj najpierw tworzysz nowego pracownika i usuwasz tego nowo utworzonego a ten, którego chcesz usunąć pozostaje nietknięty. Bo raczej tak to zadziała.

Pozostało 580 znaków

2018-05-16 08:26
0

Enum ma Ci tylko służyć do identyfikacji typu pracownika. Obecnie masz zależność binarną, jak pracownik nie jest robotnikiem, to jest urzędnikiem. Więc zamiast enuma można by dać pole boolean isRobotnik. Ale to nie jest rozwiązanie otwarte na ewentualne kolejne typy pracowników.

Mając takie pole, przeszukując listę możesz np. policzyć tylko elementy z polem typPracownika równym TypPracownika.ROBOTNIK. Po prostu sprawdzasz ifem wartość tego pola dla każdego elementu tablicy. I zwiększasz licznik tylko dla elementów spełniających dany warunek. Najlepsze, że możesz napisać jedną metodę zliczającą, która za argument weźmie enuma, zamiast pisać oddzielne metody dla każdego typu. Chcesz policzyć robotników? Piszesz liczPracownikow(TypPracownika.ROBOTNIK);

edytowany 4x, ostatnio: Spine, 2018-05-16 08:31

Pozostało 580 znaków

2018-05-16 08:52
0
kiyo napisał(a):

Mnie z kolei ciekawi co stoi za taką konwencją:

public class Firma{
    // ...
    static Firma firma = new Firma();
    // ...

No i jeszcze metoda do usuwania pracowników:

public void usuńPracownika(){
    System.out.print("Podaj nazwisko: ");
    nazwisko = scanner.next();
    pracownicy.remove(new Pracownik(nazwisko));
}

Tutaj najpierw tworzysz nowego pracownika i usuwasz tego nowo utworzonego a ten, którego chcesz usunąć pozostaje nietknięty. Bo raczej tak to zadziała.

Zrobiłem tak żeby mieć dostęp do metod jak nie zrobiłem instancji klasy Firma to nie miałem do nich dostępu.
Co do dwa to można usuwać podany jako parametr Obiekt. Widziałem na przykładzie że ktoś właśnie podał remove(new Integer(2)) i usuwało numer 2 a nie numer o indeksie 2. Chciałem to tu wykorzystać (pewnie bezmyślnie) jak mam to zrobić? Bo muszę w remove podać obiekt albo indeks. Jeszcze nigdy nie usuwałem obiektu czy to rządzi się innymi prawami? Porównywać na przykład (pracownicy.nazwisko.equals(wprowadzoneNazwisko))?
P.S Przepraszam Od razu jak zadaje głupie pytania

Pozostało 580 znaków

2018-05-16 08:55
0

Dzięki wielkie dzisiaj nad tym siądę i to wykorzystam. Muszę się oswoić z enumem bo to świetna sprawa a nadarzyła się odpowiednia okazja :)

Pozostało 580 znaków

2018-05-16 09:36
0

@Adrian Paź: Z tym static Firm to jest dla mnie tak po prostu nielogiczne. Chcesz mieć firmę (zatrudniać/zwalniać pracowników, itp.) nie zakładając firmy (tworząc obiektu firma).

Co do tego usuwania to masz rację. Przytoczony przez Ciebie przykład jest poprawny. Chodziło mi o to, że u Ciebie to nie działa.

Pozostało 580 znaków

2018-05-16 09:44
0

Faktycznie to nie ma sensu. Może zrobiłem tak bo coś mi się kompilator burzył że używam czegoś co nie jest statyczne. Sprawdzę. Mógłbyś jeszcze sprawdzić metodę znajdzPracownika? O co chodzi z ta adnotacja bo w sumie mi się dama zrobiła i nie wiem o co chodzi.
@SuppressWarnings("unlikely-arg-type")

@SuppressWarnings wyłącza ostrzeżenia podczas kompilacji. Gdybyś tego nie dodał to dostawałbyś ostrzeżenie unlikely-arg-type. - kiyo 2018-05-16 20:38

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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