Object-oriented programming - Laboratory 5


Prev Next
Temat: IntelliJ - Java 5

IntelliJ

We will use IntelliJ on create Java program.

Third Java program

Abstract class
Abstract method

Final code from classes

public class Czlowiek
{
    private String imie;
    private String nazwisko;
    private int wiek;

    public Czlowiek(String imie, String nazwisko)
    {
        this.imie = imie;
        this.nazwisko = nazwisko;
    }

    public Czlowiek(String imie, String nazwisko, int wiek)
    {
        this.imie = imie;
        this.nazwisko = nazwisko;
        this.wiek = wiek;
    }

    public String getImie()
    {
        return imie;
    }

    public void setImie(String i)
    {
        System.out.println("Nie wolno zmieniać imienia w systemie");
    }

    public String getNazwisko() {
        return nazwisko;
    }

    public void setNazwisko(String nazwisko) {
        System.out.println("Nie wolno zmieniać nazwiska w systemie");
    }

    public String getImieNazwisko() {
        return imie + " " + nazwisko;
    }

    public int getWiek() {
        return wiek;
    }

    public void setWiek(int wiek) {
        this.wiek = wiek;
    }

    public void przedstawSie()
    {
        System.out.println("Nazywam się "+this.imie+" "+this.nazwisko);
    }
}
public class Student extends Czlowiek
{
    private int nrIndeksu = 0;
    private static int liczbaStudentow;
    static
    {
        liczbaStudentow = 0;
    }
    //Aggregation
    private Wykladowca promotor;

    public Student(String imie, String nazwisko)
    {
        super(imie,nazwisko);
        liczbaStudentow++;
    }

    public Student(String imie, String nazwisko, int nrIndeksu)
    {
        super(imie,nazwisko);
        this.nrIndeksu = nrIndeksu;
        liczbaStudentow++;
    }

    public boolean czyPelnoletni()
    {
       if (super.getWiek() >= 18) return true;
       else return false;
    }

    public static int getLiczbaStudentow() {
        return liczbaStudentow;
    }

    public void setPromotor(Wykladowca promotor) {
        this.promotor = promotor;
    }

    public void przedstawSie() {
        System.out.println("Nazywam się "+super.getImie()+" "+getNazwisko()+ " a mój numer indeksu to "+this.nrIndeksu);
    }

    public void podwojnePrzedstawienie()
    {
        this.przedstawSie();
        super.przedstawSie();
    }
}
public class Wykladowca extends Czlowiek {
    private int wynagrodzenie;
    //private Student studenNaDyzurze;

    public Wykladowca(String imie, String nazwisko)
    {
        super(imie, nazwisko);
        wynagrodzenie = 2000;
    }

    public int getWynagrodzenie() {
        return wynagrodzenie;
    }

    public void setWynagrodzenie(int wynagrodzenie) {
        this.wynagrodzenie = wynagrodzenie;
    }

    public void Dyzur(Student s)
    {
        s.przedstawSie();
        //coś robią
        //studenNaDyzurze = null;
    }
}
public final class Rektor extends Wykladowca{
    private String tytul = "Jego Magnificencja Rektor ";
    private Kalendarz kalendarz;

    public Rektor(String imie, String nazwisko)
    {
        super(imie,nazwisko);
        setWynagrodzenie(10000);
        kalendarz = new Kalendarz();
    }

    public Rektor(Wykladowca w)
    {
        super(w.getImie(), w.getNazwisko());
    }

    public boolean sprawdzDostepnosc(String kiedy)
    {
        // sprawdzam, czy jest wolny termin "kiedy" w "kalendarzu"
        return kalendarz.sprawdzDostepnosc(kiedy);
    }

    public void umowZRektorem(Czlowiek x, String kiedy)
    {
        kalendarz.dodajDoKalendarza(x, kiedy);
    }
}
public class Uczelnia {
    private final String nazwa;
    //Composition
    private Rektor rektor;

    public Uczelnia(String nazwa, Wykladowca w)
    {
        this.nazwa = nazwa;
        rektor = new Rektor(w);
    }

    public Wykladowca getRektor() {
        return rektor;
    }

    public void setRektor(Wykladowca w) {
        rektor = new Rektor(w);
   }

//    public void setNazwa() {nazwa = "Inna nazwa";}

    public void setRektor(String imie , String nazwisko)
    {
        rektor = new Rektor(imie, nazwisko);
    }
}
public abstract class Biuro {
    protected String nrPokoju;
    protected Kalendarz kalendarz;

    public Biuro()
    {
        kalendarz = new Kalendarz();
    }

    abstract boolean umowWizyte(Czlowiek x, String kiedy);
}
public class Dziekanat extends Biuro {

    public Dziekanat()
    {
        nrPokoju = "A1-1";
    }

    @Override
    boolean umowWizyte(Czlowiek x, String kiedy) {
        if (kalendarz.sprawdzDostepnosc(kiedy))
        {
            kalendarz.dodajDoKalendarza(x,kiedy);
            return true;
        }
        else return false;
    }
}
public class sekretariatRektora extends Biuro {

    private Rektor rektor;

    public sekretariatRektora(Rektor rektor)
    {
        nrPokoju = "A1-28";
        this.rektor = rektor;
    }

    @Override
    boolean umowWizyte(Czlowiek x, String kiedy) {
        if (kalendarz.sprawdzDostepnosc(kiedy) && rektor.sprawdzDostepnosc(kiedy))
        {
            kalendarz.dodajDoKalendarza(x,kiedy);
            rektor.umowZRektorem(x, kiedy);
            return true;
        }
        else return false;
    }
}
public class Kalendarz {
    private String terminarz;

    public Kalendarz()
    {
       terminarz = "";
    }

    public void dodajDoKalendarza(Czlowiek x, String kiedy)
    {
        terminarz = terminarz + x.getImieNazwisko() + " " + kiedy;
    }

    private void wyczyscKalendarz()
    {
        terminarz =  "";
    }

    public boolean sprawdzDostepnosc(String kiedy)
    {
        // sprawdzam, czy jest wolny termin "kiedy" w "kalendarzu"
        return true;
    }
}