Witam, przechodzę powoli do programowania obiektowego. Chciałbym dość dobrze nauczyć się poprawnie pisać kod, stąd rodzi się u mnie kilka pytań. Mając pola w klasie np Samochod, mogę im nadać Od razu wartość początkową tzn private String silnik = "Nie podano", private double moc = -1 itp... Czy lepiej jest nie dawać wartości początkowych i robić to w konstruktorze ? Wydaje mi się, że kod napisałem w miare poprawnie, ale nie jestem na pewno przekonany na pewno do jednego miejsca dokładnie chodzi o klase Samochod, miejsce mojej niepewnosci zaznaczyłem komentarzem w kodzie. Jak można napisać to ładniej ?
Klasa Main
public class Main {
public static void main(String[] args) {
Samochod[] samochody = new Samochod[3]; // rezerwuje pamięć
samochody[0] = new Samochod("Toyota Auris", 1700, 230, 5, "Benzyna 1.6", 123, 9.3);
samochody[1] = new Samochod(samochody[0]);
samochody[1].setSilnik("Disel 2.0");
samochody[1].setMoc(140);
samochody[2] = new Samochod("Citroen C3", 1300, 170, 5, "Benzyna 1.4", 70, 7.4);
for (Samochod s : samochody) {
s.dane();
System.out.println("");// nowa linia
}
}
}
Klasa Pojazd
public class Pojazd {
private String nazwa;
private double masa;
private double predkosc;
private int iloscMiejsc;
public Pojazd() {
super();
nazwa = "Nie podano nazwy";
masa = -1;
predkosc = -1;
iloscMiejsc = -1;
}
public Pojazd(String nazwa, double masa, double predkosc, int iloscMiejsc) {
super();
this.nazwa = nazwa;
this.masa = masa;
this.predkosc = predkosc;
this.iloscMiejsc = iloscMiejsc;
}
public String getNazwa() {
return nazwa;
}
public void setNazwa(String nazwa) {
this.nazwa = nazwa;
}
public double getPredkosc() {
return predkosc;
}
public void setPredkosc(double predkosc) {
this.predkosc = predkosc;
}
public double getMasa() {
return masa;
}
public void setMasa(double masa) {
this.masa = masa;
}
public int getIloscMiejsc() {
return iloscMiejsc;
}
public void setIloscMiejsc(int iloscMiejsc) {
this.iloscMiejsc = iloscMiejsc;
}
public void dane() {
System.out.println("Nazwa : " + getNazwa() + "\nMasa : " + getMasa() + "\nPredkosc maksymalna : "
+ getPredkosc() + "\nIlosc miejsc " + getIloscMiejsc());
}
}
Klasa Samochod
public class Samochod extends Pojazd {
private String silnik;
private int moc;
private double spalanie;
public Samochod() {
super();
silnik = "Nie podano silnika";
moc = -1;
spalanie = -1;
}
public Samochod(String nazwa, double masa, double predkosc, int iloscMiejsc, String silnik, int moc,
double spalanie) {
super(nazwa, masa, predkosc, iloscMiejsc);
this.silnik = silnik;
this.moc = moc;
this.spalanie = spalanie;
}
// Tego nie jestem pewnien, nie wyglada to za ładnie :c
public Samochod(Samochod sam) {
setNazwa(sam.getNazwa());
setMasa(sam.getMasa());
setPredkosc(sam.getPredkosc());
setIloscMiejsc(sam.getIloscMiejsc());
setSilnik(sam.getSilnik());
setMoc(sam.getMoc());
setSpalanie(sam.getSpalanie());
}
public String getSilnik() {
return silnik;
}
public void setSilnik(String silnik) {
this.silnik = silnik;
}
public int getMoc() {
return moc;
}
public void setMoc(int moc) {
this.moc = moc;
}
public double getSpalanie() {
return spalanie;
}
public void setSpalanie(double spalanie) {
this.spalanie = spalanie;
}
public void dane() {
super.dane();
System.out.println("Silnik : " + getSilnik() + "\nMoc : " + getMoc() + "\nSpalanie : " + getSpalanie());
}
}