"Halo, Amigo! Ini saya—sekali lagi. Saya ingin memberi Anda sudut pandang lain tentang antarmuka. Soalnya, sebagian besar kelas adalah model dari objek tertentu. Sebaliknya, antarmuka lebih seperti kemampuan objek atau peran, bukan objek itu sendiri."
Misalnya, hal-hal seperti mobil, sepeda, sepeda motor, dan roda paling baik direpresentasikan sebagai kelas dan objek. Tapi kemampuan mereka, seperti «Saya bisa bergerak», «Saya bisa membawa orang», dan «Saya bisa parkir», lebih baik direpresentasikan sebagai antarmuka. Lihat contoh ini:
kode jawa | Keterangan |
---|---|
|
Sesuai dengan kemampuan bergerak. |
|
Sesuai dengan kemampuan bergerak. |
|
Sesuai dengan kemampuan membawa kargo. |
|
Kelas «roda». Memiliki kemampuan bergerak. |
|
Kelas «mobil». Memiliki kemampuan bergerak, dikemudikan oleh seseorang, dan membawa muatan. |
|
Kelas «skateboard». Memiliki kemampuan untuk bergerak dan dikendalikan oleh seseorang. |
Antarmuka sangat menyederhanakan kehidupan programmer. Program sangat sering memiliki ribuan objek, ratusan kelas, dan hanya beberapa lusin antarmuka (peran). Ada beberapa peran, tetapi dapat digabungkan dalam banyak cara (kelas).
Intinya adalah Anda tidak perlu menulis interaksi yang menentukan kode dengan setiap kelas lainnya. Yang harus Anda lakukan adalah berinteraksi dengan peran (antarmuka).
Bayangkan Anda adalah pembuat robot. Anda memiliki lusinan robot bawahan dan masing-masing dari mereka dapat memiliki banyak keterampilan. Misalkan Anda harus segera menyelesaikan pembangunan tembok. Anda tinggal mengambil semua robot yang memiliki kemampuan untuk "membangun" dan menyuruh mereka membangun tembok. Anda tidak terlalu peduli robot mana yang melakukannya. Biarkan itu menjadi kaleng penyiram robot. Jika ia tahu cara membangun, biarkan ia membangun.Begini tampilannya dalam kode:
kode jawa | Keterangan |
---|---|
|
Kemampuan untuk «membangun tembok». Memahami perintah «membangun tembok» (memiliki metode yang sesuai). |
|
Robot yang memiliki kemampuan/skill ini.
Pengairan tidak dapat membangun dinding (tidak mengimplementasikan antarmuka WallBuilder). |
|
Bagaimana kita memberi perintah untuk membangun tembok? |
"Itu sangat menarik. Saya tidak pernah bermimpi bahwa antarmuka bisa menjadi topik yang begitu menarik."
"Dan kemudian beberapa! Bersama dengan polimorfisme, itu benar-benar menakjubkan."
GO TO FULL VERSION