Witam. Nadrabiam zaległości z zajęć i mam pewien problem. w zadaniu mam utworzyc klase Czlowiek, a w niej abstrakcyjna metoda skadDochod, czyli klasa Czlowiek tez musi byc abstrakcyjna. Wszystkie klasy wydaje mi sie utworzylem jak w tresci, jednak zatrzymalem sie na poleceniu utworzenia obiektu klasy Czlowiek i nie wiem jak dalej z tym postąpic. tresc zadania oraz klasy ponizej. prosze o wytlumaczenie oraz podpowiedz jesli moglem cos inaczej tzn. lepiej napisac.
Zadanie 1
1. Utwórz klasę Czlowiek posiadającą następujące właściwości oraz zachowania:
Właściwości:
Imię, nazwisko, wiek, płeć (char np. ‘k’, ‘m’, ‘n’- nieznana), zawód, private zatrudniony (domyślnie - nie)
Zachowania publiczne:
- jakSieNazywasz()
- jestesKobieta() – zwracająca wartości :tak, nie, nie wiadomo (wykorzystaj switch)
- wJakimWieku()
- protected zatrudnij() – ustawiającej zmienną zatrudniony
- skadDochod() – metoda abstrakcyjna (bez implementacji)
2. Dodaj do klasy konstruktory:
2.1. Czlowiek() – ustawiający właściwości tekstowe na NN (nieznane) i liczbowe na 0.
2.2. Czlowiek(Imie, Nazwisko) – ustawiający nieznane właściwości jak w pkt. 1.
2.3. Czlowiek(Imie, Nazwisko, Wiek, Plec)
3. Utwórz klasę Pracownik dziedziczącą po klasie Czlowiek i:
3.1. Posiadającą własne pola: zawod, miejscePracy, dochod
3.2. Posiadającą dodatkowy konstruktor: Pracownik(Imie, Nazwisko, Wiek, Plec, Zawod, miejscePracy,
dochod) korzystającą z konstruktora klasy Czlowiek
3.3. Posiadającą własną publiczną metodę zatrudnij(miejscePracy, dochod) korzystającą z metody
zatrudnij() klasy Czlowiek
3.4. Posiadającą własną metodę: skadDochod() zwracającą nazwę zakładu pracy i dochód lub informację,
że nie ma dochodu
3.5. Posiadającą własną metodę statyczną: dajRaport(Pracownik) wyświetlającą wszystkie dane o
pracowniku.
4. Utwórz klasę Pracodawca dziedziczącą po klasie Czlowiek i:
4.1. Posiadającą pole: nazwaFirmy, preferencje, pensjaPracownicza
4.2. Posiadającą dodatkowy konstruktor umożliwiający uzupełnienie dodatkowych pól w stosunku do klasy
Czlowiek
4.3. Posiadającą metodę: zatrudnij(Pracownik) – umożliwiającą zatrudnienie pracownika o zawodzie
zgodnym z preferencjami pracodawcy.
W programie:
1. utwórz obiekt klasy człowiek i wywołaj jego metodę zatrudnij() i sprawdź wartość zmiennej zatrudniony
2. wywołaj metodę dajRaport, aby sprawdzić dane Pracownika utworzonego za pomocą każdego z
konstruktorów,
3. utwórz kilku pracowników i zapisz ich do kontenera obiektów klasy ArrayList().
KLASA CZLOWIEK
package lab4;
/**
*
* @author Gregor
*/
public abstract class Czlowiek {
private String imie,nazwisko,zawod;
private int wiek;
private String zatrudniony = "Nie";
private char plec;
public void jakSieNazywasz(){
System.out.println("Imię: " + imie);
System.out.println("Nazwisko: " + nazwisko);
}
public void jestesKobiata(){
switch(plec){
case 'k':
System.out.println("Kobieta");
break;
case 'm':
System.out.println("Męźczyzna");
break;
case 'n':
System.out.println("Płeć nieznana");
break;
default:
System.out.println("WTF");
break;
}
}
public void wJakimWieku(){
System.out.println("Wiek: " + wiek);
}
protected void zatrudnij(){
this.zatrudniony = "Tak";
}
public abstract void skadDochod();
//KONSTRUKTORY
public Czlowiek(){
this("NN", "NN", 0, 'n');
}
public Czlowiek(String imie, String nazwisko){
this(imie, nazwisko, 0, 'n');
}
public Czlowiek(String imie, String nazwisko, int wiek, char plec){
this.imie = imie;
this.nazwisko = nazwisko;
this.wiek = wiek;
this.plec = plec;
}
}
KLASA PRACOWNIK
package lab4;
/**
*
* @author Gregor
*/
public class Pracownik extends Czlowiek {
String zawod, miejscePracy;
double dochod;
public Pracownik(String imie, String nazwisko, int wiek, char plec, String zawod, String miejscePracy, double dochod){
super(imie, nazwisko, wiek, plec);
this.zawod = zawod;
this.miejscePracy = miejscePracy;
this.dochod = dochod;
}
public void zatrudnij(String miejscePracy, double dochod){
super.zatrudnij();
this.miejscePracy = miejscePracy;
this.dochod = dochod;
}
public void skadDochod(){
System.out.println("Miejsce pracy: " + miejscePracy);
if(dochod == 0){
System.out.println("Brak dochodu.");
}else{
System.out.println("Dochód: " + dochod);
}
}
public static void dajRaport(Pracownik prac){
prac.jakSieNazywasz();
prac.jestesKobiata();
prac.wJakimWieku();
prac.skadDochod();
}
}
KLASA PRACODAWCA
package lab4;
import java.util.Arrays;
/**
*
* @author Gregor
*/
public class Pracodawca extends Czlowiek{
String nazwaFirmy;
String[] preferencje;
double pensjaPracownicza;
public Pracodawca(String imie, String nazwisko, int wiek, char plec, String nazwaFirmy, String[] preferencje, double pensjaPracownicza){
super(imie, nazwisko, wiek, plec);
this.nazwaFirmy = nazwaFirmy;
this.pensjaPracownicza = pensjaPracownicza;
this.preferencje = new String[preferencje.length];
this.preferencje = Arrays.copyOf(preferencje, preferencje.length);
/*
* System.arraycopy(preferencje, 0, this.preferencje, 0, preferencje.length);
* this.preferencje = Arrays.copyOf(preferencje, preferencje.length);
*/
}
public void zatrudnij(Pracownik prac){
for(int i=0;i<preferencje.length;i++){
if(preferencje[i].equals(prac.zawod)){
prac.zatrudnij(nazwaFirmy, pensjaPracownicza);
}
}
}
public void skadDochod() {
}
}
KLASA GLOWNA
package lab4;
/**
*
* @author Gregor
*/
public class Main {
public static void main(String[] args) {
Czlowiek czlowiek = new Czlowiek();
}
}