Beberapa kriteria yang berguna untuk menganalisis dan
meningkatkan antarmuka publik dari kelas:
8.2.1 Providing a Cohesiv Public Interface
Sebuah kelas harus mewakili satu konsep. Semua fitur
antarmuka harus terkait erat dengan konsep tunggal yang mewakili kelas.
Jika ada antarmuka publik dari kelas mengacu pada beberapa
konsep, maka itu merupakan pertanda baik bahwa mungkin sudah saatnya untuk
menggunakan kelas terpisah sebagai gantinya. Ini jelas merupakan solusi yang
lebih baik, karena memisahkan tanggung jawab setiap masalah atau isu.
8.2.2 Meminimalkan Dependensi
Banyak method yang dibutuhkan kelas-kelas lain untuk
melakukan pekerjaan mereka. Untuk memvisualisasikan hubungan antar kelas,
seperti ketergantungan, programmer menggambar diagram kelas. Disimi, kita
menggunakan UML ( "Unified Modeling Language") notasi untuk objek dan
kelas. UML adalah notasi untuk analisis berorientasi objek dan desain
diciptakan oleh Grady Booch, Ivar Jacobson, dan James Rumbaugh, tiga peneliti
terkemuka dalam pengembangan softare berorientasi objek. (Lampiran H memiliki
ringkasan
notasi UML yang digunakan disini.) Notasi UML membedakan
antara objek diagram sebuah diagram kelas. Dalam sebuah diagram objek nama
kelas digarisbawahi; dalam diagram kelas nama kelas tidak digarisbawahi. Dalam
diagram kelas, ketergantungan ditunjukan oleh garis putus-putus dengan panah
tip terbuka -berbentuk yang menunjuk ke kelas yang bergantung.
8.2.3 Memisahkan Accessors dan mutator
Sebuah muthator method mengubah keadaan suatu objek.
Sebaliknya, accessor method
meminta objek untuk menghitung hasilnya, tanpa mengubah
asalnya.
Sebuah kelas yang hanya memiliki metode accesor, tidak
memiliki metode mutator disebut immutable.
String name = "John Q. Public";
String uppercased = name.toUpperCase (); // Nama tidak
berubah
Referensi ke obyek dari kelas berubah dapat dengan aman
dishare.
8.2.4 Meminimalkan Efek Samping
Efek samping dari method adalah setiap jenis modifikasi data
yang diamati luar metode mutator method memiliki efek samping, yaitu modifikasi
dari parameter implisit.
public void printBalance () // Tidak direkomendasikan {
System.out.println ( "Jumlah tersebut sekarang $"
+ saldo);
}
Metode ini bermutasi objek System.out, yang bukan merupakan
bagian dari objek rekening bank. Itu adalah efek samping. Untuk menghindari
efek samping ini, jaga sebagian besar kelas bebas dari operasi input dan
output, dan berkonsentrasi input dan output di satu tempat, seperti main method
dari sebuah program.
Sumber: Horstmann, Coy. Fifth Edition. Big Java Early Objects.
Sumber: Horstmann, Coy. Fifth Edition. Big Java Early Objects.