Muszę przyznać, że trochę z lenistwa zrobiłem 2 klasy, które jedynie różnią się nazwą, a nie chciało mi się wymyślać pól unikalnych dla danej klasy ponieważ pomyślałem, że nie jest to tak istotne dla zrozumienia tematu :P.
Już prawię godzinę walczę z tym sortowaniem tablicy i coś mi nie idzie ;(, jak tylko nauczę się sortować to napiszę czy przykład coś mi rozjaśnił ^^.
Mógłbyś jeszcze wyjaśnić co miałeś na myśli pisząc "Dodaj do programisty jeszcze np. przychód z przeniesienia prawa własności", nie rozumiem tej części z przeniesieniem prawa własności.
EDIT:
Ok, coś takiego mi wyszło:
Kopiuj
package praca;
import java.util.ArrayList;
import java.util.Collections;
class Pracownik implements Comparable<Pracownik>{
String imie;
String nazwisko;
double zarobki;
Pracownik(String imie, String nazwisko, double zarobki){
this.imie = imie;
this.nazwisko = nazwisko;
this.zarobki = zarobki;
}
double roczneZarobki(){
return this.zarobki * 12;
}
@Override
public String toString(){
return "Imię: " + imie + ", Nazwisko: " + nazwisko + ", Zarobki: " + zarobki;
}
@Override
public int compareTo(Pracownik t) {
if (zarobki == t.zarobki) return 0;
else if (zarobki > t.zarobki) return 1;
else return -1;
}
}
class Programista extends Pracownik{
double premia;
String specjalizacja;
Programista(String imie, String nazwisko, double zarobki, double premia, String specjalizacja){
super(imie, nazwisko, zarobki);
this.premia = premia;
this.specjalizacja = specjalizacja;
}
@Override
double roczneZarobki(){
return this.zarobki * premia * 12;
}
@Override
public String toString(){
return super.toString() + ", Premia: " + premia + "%, Specjalizacja: " + specjalizacja;
}
}
class Technolog extends Pracownik{
double premia;
Technolog(String imie, String nazwisko, double zarobki, double premia){
super(imie, nazwisko, zarobki);
this.premia = premia;
}
@Override
double roczneZarobki(){
return this.zarobki * premia * 12;
}
@Override
public String toString(){
return super.toString() + ", Premia: " + premia + "%";
}
}
public class Praca {
public static void main(String[] args) {
ArrayList<Pracownik> lista = new ArrayList<Pracownik>();
Pracownik p1 = new Pracownik("Lukasz", "Nowak", 2400);
Programista p2 = new Programista("Krzysztof", "Zapałka", 2200, 0.25, "Java");
Technolog p3 = new Technolog("Janusz", "Bąk", 2500, 0.2);
lista.add(p1);
lista.add(p2);
lista.add(p3);
for(Pracownik e: lista) System.out.println(e);
Collections.sort(lista);
System.out.println("\nPosortowana według zarobków:\n");
for(Pracownik e: lista) System.out.println(e);
}
}
Nadal wszystko działa, bez względu na to czy wszystkie obiekty definiuję jako klasę "Pracownik", czy każdy jest oddzielnie Pracownikiem, Programistą, Technologiem. W obu przypadkach sortowanie działa tak samo i bez problemów.
Bardzo chciałbym to zrozumieć, bo już wcześniej z tym się spotykałem ale coś chyba za tępy jestem żeby to ogarnąć, a pewnie jak już kiedyś zrozumiem to będę się zastanawiał czego tu można było nie rozumieć xd.