Prośba o wytłumaczenie kodu

0

Witam jak w temacie... Jestem dość świeży w języku JAVA, na podstawie poradników i fragmencie kodu podanego przez prowadzącego uzyskałem takie coś... tyle, że teraz nie bardzo wiem co która część robi. Byłbym wdzięczny za pomoec :)

public class EmptyNS extends RuntimeException {
    public EmptyNS() {
    }

}


-----------------------------------------------------------------------------------------------------------------


import java.util.LinkedList;
import java.util.List;


public class Firma {
    private List<Pracownik> pracowniks = new LinkedList<>();

    public void nowyPracownik(Pracownik pracownik){
        pracowniks.add(pracownik);
    }

    public void usun(String tekst){
        for (int i=0;i<pracowniks.size();i++){
            if(pracowniks.get(i).getImie().contains(tekst)||pracowniks.get(i).getNazwisko().contains(tekst)){
                pracowniks.remove(i);
                i--;
            }
        }
    }

    public List<Pracownik> getPracowniks() {
        return pracowniks;
    }
}


-----------------------------------------------------------------------------------------------------------------


import java.awt.*;

public class Main {

    public static void main(String[] args) {
        Firma firma = new Firma();
        Pracownik pracownik1 = new Pracownik("Adam"," Matys",1987);
        Pracownik pracownik2 = new Pracownik("Marek"," Des",1966);
        Pracownik pracownik3 = new Pracownik("Jan"," Wold",1990);
        Pracownik pracownik4 = new Pracownik("Anna"," Nowak",1980);

        firma.nowyPracownik(pracownik1);
        firma.nowyPracownik(pracownik2);
        firma.nowyPracownik(pracownik3);
        firma.nowyPracownik(pracownik4);

        for(int i=0;i<firma.getPracowniks().size();i++){
            System.out.println(firma.getPracowniks().get(i));
        }

        firma.usun("Jan");
        System.out.print("PO USUNIECIU\n");
        for(int i=0;i<firma.getPracowniks().size();i++){
            System.out.println(firma.getPracowniks().get(i));
        }
    }
}


--------------------------------------------------------------------------------------------------------




public class Pracownik {

    private String imie;
    private String nazwisko;
    private int rok;


    public Pracownik(String imie, String nazwisko, int rok) {

        this.imie = imie;
        this.nazwisko = nazwisko;
        this.rok = rok;
        if (nazwisko == null || nazwisko == "" || imie == null || imie == "") {
            throw new EmptyNS();
        }

    }

    public String getImie() {
        return imie;
    }

    public String getNazwisko() {
        return nazwisko;
    }

    public int getRok() {
        return rok;
    }

    public String toString() {
        return
                "imie: '" + imie + '\'' +
                ", nazwisko: '" + nazwisko + '\'' +
                ", rok: " + rok ;
    }



}
0

Czego konkretnie nie rozumiesz? :P

0

Zacznijmy od początku xD

public class EmptyNS extends RuntimeException {
    public EmptyNS() {
    }
 
}

0

Kopiując fragmenty kodu, których nie rozumiesz, nie napiszesz niczego sensownego, a tym bardziej niczego się nie nauczysz. Można napisać, że podany przez Ciebie fragment kodu to klasa wyjątku, który jest rzucany, gdy dane Pracownika są "puste". Nazwa pewnie od "EmptyNameSurname". Ale jest spora szansa, że nie wiesz czym jest wyjątek, czyli wciąż nie wiadomo do końca co Ci wytłumaczyć. Po prostu przeczytaj porządnie jakiś kurs Javy i wszystko się wyjaśni :) Na przykład ten: https://javastart.pl/static/mapa-strony/

0

java dziedziczenie oraz java konstruktor w Google.

0

W skrócie chodzi o to, że masz 2 klasy Pracownik i Firma. Jedynym polem klasy Firma jest lista przechowująca obiekty klasy Pracownik.
Firma ma metody odpowiedzialne za dodawanie oraz usuwanie pracowników. Pracownicy usuwani są gdy imię lub nazwisko zawiera fragment tekstu dostrarczonego jako parametr metody - tu lepiej byłoby użyć equals().
Konstruktor Pracownika rzuca niekontrolowany wyjątek w momencie gdy któryś parametr jest nullem lub imię lub nazwisko są pustym stringiem (rok już nie jest sprawdzany).

Co można by porawić - na szybko

  1. nie mieszać nazw polskich z angielskimi - pracowniks, proszę !,
  2. wywalić i--; z metody usun,
  3. wywalić ten wyjątek bo on niczego nie wnosi poza nadmiarowym kodem - korzystać z wyjątków z API Javy - bardziej specjalizowanych, tu można by użyć np. java.lang.IllegalArgumentException
  4. użyć Java 8 - stream().filter()....

i pewnie jeszcze trochę...

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