Prośba o sprawdzenie zadania.

0

Witam wszystkich serdecznie ;),
jestem tu nowym userem i początkującym programistą Javy ;)

Prosiłbym o sprawdzenie mi tego zadania, którego treść przedstawiam poniżej:
Zdefiniować klasy z poniższego programu:

public class Test {

  public static void main(String[] args) {
    
    Pacjent[] pacjenci = { new ChoryNaGłowę("Janek"),
                           new ChoryNaNogę("Edzio"),
                           new ChoryNaDyspepsję("Marian")
                         };
    
    for (Pacjent p : pacjenci) {
      System.out.println("Pacjent:     " + p.nazwisko() + '\n' +
                         "Chory na:    " + p.choroba() + '\n' + 
                         "Zastosowano: " + p.leczenie() +"\n\n" 
                         );
    }

  }

}

w taki sposób, aby otrzymać w wyniku następujący wydruk:

Pacjent: Janek
Chory na: głowa
Zastosowano: aspiryna

Pacjent: Edzio
Chory na: noga
Zastosowano: gips

Pacjent: Marian
Chory na: dyspepsja
Zastosowano: węgiel

Uwaga: metody choroba() i leczeanie() muszą być wywoływane polimorficznie.

A oto moje rozwiązanie:

abstract class Pacjent {
	
	private String name;
	
	public Pacjent() {	
	}
	
	public Pacjent(String name) {
		this.name= name;
	}
	
	abstract String nazwisko();
	abstract String choroba();
	abstract String leczenie();

}

class ChoryNaGłowę extends Pacjent {
	
	private String nazwisko;
	
	public ChoryNaGłowę(String name) {
		super(name);
		nazwisko = name;
	}
	
	public String nazwisko() {
		return nazwisko;
	}
	
	public String choroba() {
		return "głowa";
		
	}
	
	public String leczenie() {
		return "aspiryna";
	}
	
}

class ChoryNaNogę extends Pacjent {
	
	private String nazwisko;
	
	public ChoryNaNogę(String name) {
		super(name);
		nazwisko = name;
	}
	
	public String nazwisko() {
		return nazwisko;
	}
	
	public String choroba() {
		return "noga";
		
	}
	
	public String leczenie() {
		return "gips";
	}
	
}

class ChoryNaDyspepsję extends Pacjent {
	
	private String nazwisko;
	
	public ChoryNaDyspepsję(String name) {
		super(name);
		nazwisko = name;
	}
	
	public String nazwisko() {
		return nazwisko;
	}
	
	public String choroba() {
		return "dyspepsja";
		
	}
	
	public String leczenie() {
		return "węgiel";
	}
	
}
0

Po pierwsze nie używaj polskich znaków w nazwach klas, po drugi lepiej dodaj modyfikator public do klasy, bo w przeciwnym razie będzie widoczna tylko w obrębie pakietu. Po co w klasach dziedziczących deklarujesz pole nazwisko skoro w klasie nadrzędnej jest pole name . No i najważniejsze kto was uczy tej javy skoro metody pobierające wartość pola nazywa fieldName() a nie getFieldName(), no i wstawia polskie znaki do nazw klas ;-)

0

Dzięki śliczne za odpowiedź :)
Jeśli chodzi o polskie znaki i nazwy metod, to chyba tylko w tym przypadku jest taka sytuacja. W następnym programie powinno być lepiej :)
Pozdrawiam

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