Sad su neke stvari jasnije. Znači ovaj kod je pisan onako što bi rekli s brda s dola. I sad je tebi profa dao zadatak da to malo urediš u skladu sa objektno orijentisanim principima, da se ne tumba sve u konstruktoru, da se jasno podele odgovornosti metoda itd.
E sad, samo još jedna stvar ovde nedostaje da bi probali da rešimo problem a to je kod koji si ti prepravio i u kom neće ova metoda. Ali čak i bez njega pretpostavljam šta si uradio, na osnovu sledećeg:
Citat:
normandija: ..a ona se mora citati iz druge klase tako da je ona samo prosledenje ovoj ovde sa implementacijom
Izmestio si ovu metodu makeCustomerButtons iz klase Table i stavio je u neku novu klasu. To je po meni pogrešan pristup pošto ta metoda obavlja nešto nad klasom Table i ona mora da stoji unutar te klase. Znači ta metoda treba da ostane tamo gde je i bila. Podsetio bi te samo da proučiš nešto vezano za enkapsulaciju. Citiraću ti rečenicu iz knjige Core Java:
Citat:
Ne može se dovoljno naglasiti činjenica da je ključ koji obezbeđuje da enkapsulacija radi, obezbeđivanje da metode nikada ne pristupaju direktno poljima primerka u nekoj drugoj klasi.
A ti upravo pokušavaš ovo da narušiš i zato mislim da je to loš dizajn.
Postoje neke druge stvari koje bi mogao da promeniš u ovom programu. Na primer iz aviona se vidi da treba ovu main metodu da izmestiš u posebnu klasu. Naravno može i ovako nabacano da radi ali je bolje da se odvoji posebno.
Na primer, najpre izbrišeš main metodu iz Table pa onda napraviš novu klasu:
Code:
import javax.swing.JFrame;
public class GlavniProgram {
public static void main(String[] args){
Table table = new Table();
table.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
table.setVisible(true);
}
}
Takođe treba da skineš:
this.show();
zato što se to od 1.5 verzije ne koristi već metoda setVisible(true);
itd, itd..