Friday, January 12, 2018

OOP - Encapsulation dalam Bahasa Pemrograman Java

Salah satu konsep Pemrograman Berorientasi objek lainnya adalah Encapsulation. Enkapsulasi digunakan untuk menyembunyikan nilai dalam sebuah... thumbnail 1 summary
Salah satu konsep Pemrograman Berorientasi objek lainnya adalah Encapsulation. Enkapsulasi digunakan untuk menyembunyikan nilai dalam sebuah class.
baca juga : Inheritance dalam Bahasa Java
Pada artikel sebelumnya di Inheritance dan Abstraksi sudah dibahas contoh dari enkapsulasi yaitu private field/variable seperti nama NISN dan Nama.
Apa tujuannya dibuat sebagai private ? agar tidak bisa diakses secara langsung.
Untuk itulah tujuannya setter dan getter dibuat.



Contoh lain

Misal kita mempunyai sebuah class yang input tanggal lahir, lalu bisa mendapatkan usia sekarang.


Source Code File Pelajar : 



Source Code File Main :



Output : 

enkapsulasi-dalam-bahasa-pemrograman-java
output dari kode diatas



Pembahasan

Beberapa hal yang perlu diperhatikan disini, pada saat setTanggalLahir penulis menggunakan try-catch atau disebut exception handling. Jika mau bisa googling atau abaikan saja dulu, karna akan dibahas pada artikel artikel berikutnya.
selanjutnya untuk membuat TanggalLahir, penulis menggunakan class LocalDate yang disediakan dari Java, untuk dokumentasi bisa dilihat dari sini 
Java LocalDate Documentation
Insyaallah akan dibahas lebih banyak juga mengenai LocalDate pada artikel artikel berikutnya.

Karna artikel ini membahas mengenai enkapsulasi, jadi yang akan menjadi titik fokus pada pembahasan kali ini berupa private method di dalam class Pelajar tersebut.
baca juga : Cara Membuat dan Memanggil Method dalam Bahasa Java
Kenapa perhitungan usia dipisah ?
Jika anda berniat menjadi seorang programmer profesional, anda harus memahami SOLID principles SOLID
Dimana S untuk Single Responsibility, yang berarti satu tujuan dalam artian disini jika kita membuat method getAge(); sebisa mungkin getAge() hanya melakukan return terhadap age, untuk menghitungnya kita bisa memisahkan logic untuk menghitung usia pada method yg lain.

Kenapa countAge() dibuat private ?
Inilah salah satu contoh enkapsulasi, ada method yang ingin kita buat agar tidak dapat diakses secara langsung, dalam artian objek pelajar tidak perlu memanggil method countAge(). Biarkan objek tersebut hanya memanggil method getAge(); dimana didalam method tersebut kita memanggil method countAge();

Sekian dari penulis, jika ada yang kurang jelas bisa ditanyakan lewat komentar dibawah :)

Thursday, January 11, 2018

OOP - Abstraction dalam Bahasa Pemrograman Java

Abstraction  atau dalam bahasa Indonesia Abstraksi yang berasal dari kata abstrak (tidak berwujud)  merupakan salah satu konsep OOP selain d... thumbnail 1 summary
Abstraction atau dalam bahasa Indonesia Abstraksi yang berasal dari kata abstrak (tidak berwujud) merupakan salah satu konsep OOP selain dari Encapsulation dan Inheritance
baca juga : Inheritance dalam Bahasa Java
Melalui proses abstraksi, programmer menyembunyikan semua kompleksitas data terhadap suatu objek. Untuk melakukan abstraksi programmer biasanya menggunakan abstract class atau interface untuk memberikan penamaan methodnya yang sesuai dengan tugasnya, misal suatu interface mempunyai method getUsia() sehingga mudah dibaca bahwa method tersebut adalah getUsia() lalu class yang mengextends interface/abstract class tersebut mengimplementasikannya sesuai nama method tersebut.

Abstraksi sangat berkaitan dengan enkapsulasi.
Enkapsulasi akan dibahas pada artikel berikutnya..



Contoh

Sebagai contoh, pertama buatlah 3 buah class dan 1 buah interface.
class-interface-bahasa-pemrograman-java
Class : MainClass, Anak, Pemuda. Interface : Manusia

Source Code File Manusia :

Sebuah interface hanya bisa mempunyai nama method, tanpa ada implementasi.
Interface juga tidak dapat dibuat menjadi objek.

Seperti yang sudah dibahas pada inheritance, untuk membuat class Anak dan Pemuda mempunyai implementasi dari interface Manusia, maka kita membuat class Anak dan Pemuda inherit terhadap interface Manusia.

Akan tetapi, hal yang perlu diingat, dalam bahasa Java jika inherit kepada class, keywordnya extends tetapi untuk interface menggunakan implements


implementasi-interface-bahasa-java
Pesan Error pada class di Eclipse

Saat melakukan inherit tentu saja akan ada pesan error, sebab kita belum mengimplementasikan method pada interface Manusia. Dengan menggunakan eclipse kita dapat klik pada Add unimplemented methods sehingga akan muncul method yang perlu di impementasikan. 
Bagaimana menampilkan menu tersebut ?
arahkan saja kursor ke nama class :D

Maka akan menjadi seperti ini
implementasi-interface-manusia-java
Auto-generated method dari eclipse
Seperti yang terlihat tidak error lagi.

Sehingga, setelah melakukan implementasi pada masing masing class menjadi.


Source Code File Anak :

Source Code File Pemuda : 

Source Code File MainClass : 

Output:

output-implementasi-interface-bahasa-java
seperti yang dibayangkan.


Pembahasan

Pemrograman harus menggambarkan keadaan nyata, seperti class Anak dan Pemuda tersebut tidak terdapat setName(), melainkan untuk mengatur nama hanya bisa dilakukan lewat constructor. Karna nama manusia memang tidak bisa berubah (bisa sih kalo di urus haha).
Serta sebaiknya untuk usia, lebih baik memasukkan tanggal lahir, sebab dari tanggal lahir kita dapat mengetahui usia seseorang sekarang.