Sunday, 8 June 2014

Membuat Class PHP, Conversi Angka Menjadi Text Menggunakan str_split

Masih membahas object oriented programming (OOP), kali ini kita akan membuat sebuah class pada PHP.

Class yang akan dibuat adalah class conversi angka menjadi text (text bahasa Indonesia). Sebenarnya sudah banyak tutorial yang membahas masalah ini, tapi dengan jalan / cara yang berbeda. Ini adalah salah satu cara untuk membuat class conversi_angka.

Untuk cara membut class telah dibahas tersendiri pada tulisan sebelumnya, Memahami OOP dengan PHP.

Membuat pola pada proses di dalam Class

Sebelum membuat class ada baiknya kita menganalisis sedikit apa yang akan kita buat, buatlah coretan pada kertas dan tuliskan text membaca angka 1123.

seribu seratus dua puluh tiga

Jika kita perhatikan angka dan tulisan yang kita buat akan terlihat sebuah pola yang sederhana yang nantinya bisa kita tuliskan menjadi code-code. Beberapa point yang bisa kita tuliskan adalah:

  • Satuan, dengan jumlah digit 1
  • Puluhan dan belasan, dengan jumlah digit 2
  • Ratusan dengan jumlah digit 3
  • Ribuan dengan jumlah digit 4
  • Setiap bilangan terkecil adalah bagian dari bilangan yang lebih besar.
  • Pecahan angka 1 memiliki pengucapan berbeda pada selain satuan. Misal: seribu, seratus, sepuluh.

Dengan analisis yang telah kita buat kita tidak akan tersesat ketika menuliskan code.

Buat class dengan nama Conversi_angka:

Buat private variable dan function public dalam class, function ini yang akan kita panggil ketika class telah di instansiasi menjadi object. private variable kita manfaatkan dengan mengisi nilai default agar kita tidak melakukan penulisan berulang.

Function masukkan_angka, memiliki satu parameter yaitu angka yang akan diubah menjadi text, parameter diberi nilai default "0" ini berfungsi sebagai error handling. Yang pertama dilakukan adalah mengecek parameter apakah terisi atau kosong. Jika kosong akan dikembalikan nilai string kosong.

Selanjutnya adalah menghilangkan space diawal dan akhir dari parameter menggunakan fungsi trim

Setelah pengecekan selesai parameter angka akan diubah dari string menjadi array() dengan fungsi str_split(), untuk penjelasan fungsi ini bisa dibaca di php.ini.

Setelah parameter berubah menjadi array(), kita dapat menghitung jumlah index di dalam array tersebut, menggunakan fungsi count(), penjelasan fungsi ini bisa dibaca di php.ini.

Karena kita telah melakukan validasi parameter yang bernilai kosong, sehingga hasil dari count array terkecil adalah 1.

Langkah selanjutnya adalah memasukan parameter kedalam fungsi sesuai dengan jumlah angka yang dihasilakan. Misal untuk parameter yang digit angkanya berjumlah 2 akan masuk kedalam function angka_belasan_dan_puluhan.

Membuat function angka_satuan

Fungsi yang dibuat selanjutnya adalah function angka_satuan, fungsi ini berfungsi mengubah angka satuan menjadi text, lihat code berikut:

Fungsi yang sangat sederhana, menggunakan switch untuk melakukan pengecekan angka berapa yang dimaksukkan untuk dikembalikan string / text angka tersebut.

Membuat function belasan dan puluhan

Selanjutnya lebih banyak satu digit jumlah angkanya adalah puluhan dan belasan, buatlah function angka_belasan_dan_puluhan, lihat code berikut.

Function angka_belasan_dan_puluhan terlihat sedikit lebih kompleks, tapi sebenarnya tidak.

Setiap validasi yang ada adalah kebutuhan untuk memanipulasi data. Fungsi ini memiliki parameter array() beda dengan fungsi satuan yang parameternya adalah number, jumlah digit dalam parameter yang dimasukkan harus selalu berjumlah 2. dan untuk digit lebih dari satu akan lebih baik menggunakan array(). Fungsi ini pertama kali melakukan validasi untuk angka "00", mengapa ini dilakukan ? karena fungsi puluhan akan digunakan dalam fungsi pecahan yang lebih besar yaitu ratusan dan ribuan, akan ada kemungkinan angka yang dimasukan adalah 1000 atau 100, sehingga kita perlu melakukan validasi ini.

Selanjutnya adalah validasi jika parameter $angka index 0 ($angka[0]) diawal bernilai "0", alasan validasi ini dilakukan karena ada kemunkinan angka yang dimasukkan adalah 1001 atau 109, karena fungsi ini akan digunakan oleh fungsi yang lain. Jika pada validasi angka "00" nilai yang dikembalikan adalah string kosong, pada validasi ini kita memanggil fungsi angka_satuan, dan memasukan parameter $angka[1], sehingga akan mengembalikan text angka satuan.

Note: Ini adalah contoh value dari parameter $angka jika diprint:
$angka = array(
   0 => 1,
   1 => 1
);
Tipe data ini telah dibahas dalam tulisan Tipe Array dalam PHP.

Validasi selanjutnya adalah mengecek apakah parameter $angka[0] bernilai 1, $angka[0] bernilai 1 berarti ini adalah angka belasan, maka lanjutkan dengan pengecekan apakan nilai $angka[1] bernilai 0 jika true kembalikan string "sepuluh" dan jika bernilai 1 kembalikan string "sebelas". dan jika tidak memenuhi keduanya kembalikan dengan menggunakan function angka_satuan diikutin kata "belas".

Setelah melakukan validasi untuk angka belasan yang ditandai dengan $angka[0] bernilai 1, selanjutnya adalah mengembalikan angka puluhan, yang berarti $angka[0] bernilai lebih besar dari angka 1 dan lebih kecil sama dengan 9, perhatikan code ini:

Untuk menuliskan angka kita menggunakan function angka_satuan bila angka puluhan kita ikuti dengan tulisan "puluh", lalu diikuti lagi dengan fungsi angka_satuan.

Membuat function angka_ratusan

Fungsi selanjutnya adalah ratusan, dalam bilangan ratusan pasti akan ada bilangan puluhan, belasan dan satuan, sehingga kita akan melakukan validasi jumlah digit dan menggunakan function angka_satuan dan function angka_belasan_dan_puluhan. Perhatikan codenya:

Dalam fungsi ini kita memiliki satu parameter dengan tipe data array(), dan jumlah index dari parameter adalah 3. Pertama kita buat variable $ratusan, variable ini akan menyimpan string dari setiap validasi yang dilakukan di bawahnya. Selanjutnya kita melakukan pengecekan $angka[0] apakah bernilai 1, jika true kita akan mengisikan string "seratus" kedalam varible $ratusan. Dan jika $angka[0] lebih besar dari satu dan kecil sama dengan 9, kita gunakan fungsi angka_satuan dan string "ratus".

Selanjutnya adalah index ke-2 ($angka[1]), kita melakukan validasi apakah nilai pada $angka[1] bernilai "0", jika tidak berarti angka ini masuk kedalam pecahan puluhan dan belasan, sehingga kita bisa mengelolanya dengan function angka_belasan_dan_puluhan. Lalu bila $angka[1] bernilai "0" kita masukan kedalam function angka_satuan dan simpan kedalam variable $ratusan untuk selanjutnya dikembalikan sebagai string.

Note: tanda ".=" berarti kita menambahkan string kedalam sebuah variable tanpa menghapus nilai sebelumnya.

Membuat function angka_ribuan

Fungsi terakhir dalam tulisan ini adalah function angka_ribuan, hampir sama dengan code yang ada dalam function angka_ratusan, buat sebuah variable $ribuan, selanjutnya kita akan melakukan validasi pada nilai $angka[0] apakah bernilai 1, jika true kita masukan string "seribu" pada variable. namun jika bernilai lebih besar dari 1 dan lebih kecil sama dengan 9 kita menggunakan function angka_satuan dan diikuti kata "ribu".

Selanjutnya melakukan validasi pada $angka[1], untuk mengecek apakah ada nilai ratusan. Jika $angka[1] tidak bernilai "0" kita masukan kedalam function angka_ratusan namun bila tida kita masukan kedalam function angka_belasan_dan_puluhan.

Semua hasil kembalian dari setiap function disimpan kedalam variable $ribuan untuk menjadi nilai kembalian dari function angka_ribuan.

OK. Kita telah selesi dengan penulisan code, selanjutnya simpan dengan nama conversi_angka.php, pemberian nama file harus sama dengan nama class.

Langkah terakhir adalah melakukan test pada class yang telah kita buat, buat sebuah file baru dan tuliskan code berikut:

Memang class yang dibuat ini baru bisa mengkonversi angka sampai pecahan seribu, namun class ini dirancang untuk dapat dikembang lagi menjadi lebih kompleks. Hingga pecahan jutaan atau milliar. Ditulisan selanjutnya kita akan mengembangkan class ini menjadi lebih kompleks.

Untuk koreksi, masukan, atau request tutorial silakan menuliskannya pada kolom comment.

No comments:

Post a comment