Cara menggunakan Module Pada Ruby

Module adalah kumpulan class dan method yang dapat digunakan oleh program lain. Dengan adanya modul maka program yang kita buat dapat sesingkat mungkin, karena deklarasi class dan method sudah ditempatkan di file lain, sehingga dapat lebih mudah dalam membuat program dan mencari kesalahan suatu program

Module

  • module adalah kumpulan class dan method yang dapat digunakan oleh program lain
  • Dengan adanya modul maka program yang kita buat dapat sesingkat mungkin, karena deklarasi class dan method sudah ditempatkan di file lain, sehingga dapat lebih mudah dalam membuat program dan mencari kesalahan suatu program
  • dengan adanya module memudahkan para programmer untuk saling berbagi program dengan orang lain.
  • misalnya ada file module matematika.rb
    module Matematika

      module Kebersamaan

        def volume
          "Maaf tidak ada volume"
        end

      end

      class Persegi
        include Kebersamaan
        def initialize(sisi)
          @sisi = sisi
        end

        def luas
          @sisi * @sisi
        end
      end

      class Lingkaran
        include Kebersamaan
        def initialize(jarijari)
          @jarijari = jarijari
        end

        def luas
          3.14 * jarijari * jarijari
        end
      end
    end
  • Penjelasan

    • nama file disamakan dengan nama module (matematika.rb = module Matematika)
    • Aturan pemberian nama module sama dengan pemberian nama class (diawali huruf besar)
    • pada program diatas terdapat module matematika dimana didalamnya terdapat 2 class (Persegi dan Lingkaran)
    • di dalam module Matematika terdapat module yang lain yang bernama module Kebersamaan
      • sengaja diberi nama "Kebersamaan" karena method yang ada di dalam module ini akan digunakan oleh class Persegi dan class Lingkaran
      • perintah include Kebersamaan yang ada di dalam class Persegi akan menyisipkan semua method yang ada di dalam module tersebut agar dapat digunakan oleh objek dari class persegi
      • demikian pula dengan class Lingkaran dapat menggunakan semua perintah di dalam module kebersamaan
    • Buat file ruby yang akan menggunakan module matematika misalnya prak-8a.rb
    require_relative "matematika.rb"
    p1 = Matematika::Persegi.new(10)
    puts "Luas Persegi pertama adalah #{p1.luas}"
    puts "Volume Persegi pertama adalah #{p1.volume}"
  • penjelasan
    • perintah require_relative pada baris pertama untuk memanggil kode program di dalam file tersebut
    • perintah Matematika::Persegi pada baris kedua untuk membuat objek dari class yang ada di dalam suatu module
    • selanjutnya penggunaan objek dapat dilakukan seperti biasa seolah-olah semua program ada di dalam 1 file ini
    • hasil dari program diatas

Modul Baca Rupiah

  • pada praktek berikut ini kita akan mempelajari cara penggunaan modul
  • buat file baru dengan nama uang.rb
  • lakukan copy paste program dibawah ini dan simpan filenya
    module Uang

    class Rupiah
      def ratusan(nilai)

        # isi nilai Ratusan
        digit1 = nilai.div(100)
        if digit1 != 0 then
          case digit1
            when 1
              nratusan = "Seratus "
            when 2
              nratusan = "Dua Ratus "
            when 3
              nratusan = "Tiga Ratus "
            when 4
              nratusan = "Empat Ratus "
            when 5
              nratusan = "Lima Ratus "
            when 6
              nratusan = "Enam Ratus "
            when 7
              nratusan = "Tujuh Ratus "
            when 8
              nratusan = "Delapan Ratus "
            when 9
              nratusan = "Sembilan Ratus "
          end
        else
          nratusan = ""
        end

        # isi nilai puluhan / belasan / satuan
        digit2 = nilai % 100
        if (digit2 >= 10) and (digit2 < 20) 
          case digit2
            when 10
              npuluhan = "Sepuluh "
            when 11
              npuluhan = "Sebelas "
            when 12
              npuluhan = "Dua Belas "
            when 13
              npuluhan = "Tiga Belas "
            when 14
              npuluhan = "Empat Belas "
            when 15
              npuluhan = "Lima Belas "
            when 16
              npuluhan = "Enam Belas "
            when 17
              npuluhan = "Tujuh Belas "
            when 18
              npuluhan = "Delapan Belas "
            when 19
              npuluhan = "Sembilan Belas "
           end
           nsatuan = ""
        else
          if digit2 < 10
            npuluhan = ""
          else
            case digit2
               when 20..29
                 npuluhan = "Dua Puluh "
               when 30..39
                 npuluhan = "Tiga Puluh "
               when 40..49
                 npuluhan = "Empat Puluh "
               when 50..59
                 npuluhan = "Lima Puluh "
               when 60..69
                 npuluhan = "Enam Puluh "
               when 70..79
                 npuluhan = "Tujuh Puluh "
               when 80..89
                 npuluhan = "Delapan Puluh "
               when 90..99
                 npuluhan = "Sembilan Puluh "
            end
          end
          digit3 = nilai % 10
          case digit3
            when 0
              nsatuan = ""
            when 1
              nsatuan = "Satu "
            when 2
              nsatuan = "Dua "
            when 3
              nsatuan = "Tiga "
            when 4
              nsatuan = "Empat "
            when 5
              nsatuan = "Lima "
            when 6
              nsatuan = "Enam "
            when 7
              nsatuan = "Tujuh "
            when 8
              nsatuan = "Delapan "
            when 9
              nsatuan = "Sembilan "
          end
        end
        ratusan = nratusan + npuluhan + nsatuan
      end # method ratusan

      def baca(nilai)
        snilai = nilai.to_s     # jadikan string
        panjang = snilai.length # ambil panjang string


        # nilai millard
        if nilai >= 1000000000
          nmilliard = nilai.div(1000000000)
          nilai = nilai % 1000000000
          smilliard = ratusan(nmilliard) + "Milliard "
        else
          smilliard = ""
          nmilliard = 0
        end   

        # nilai juta
        if nilai >= 1000000
          njutaan = nilai.div(1000000)
          sjutaan = ratusan(njutaan) + "Juta "
        else
          sjutaan = ""
          njutaan = 0
        end

        # nilai ribuan
        if nilai >= 1000
          nribuan = (nilai - (njutaan * 1000000))
          nribuan = nribuan.div(1000)
          if nribuan == 0
            sribuan = ""
          else
            if nribuan == 1
              sribuan = "Seribu "
            else
              sribuan = ratusan(nribuan) + "Ribu "
            end
          end
        else
          sribuan = ""
          nribuan = 0
        end

        if nilai > 0
          # nrupiah = (nilai - (njutaan * 1000000) - (nribuan * 1000))
          nrupiah = nilai % 1000
          srupiah = ratusan(nrupiah) + "Rupiah"
        else
          srupiah = ""
        end
        matauang = smilliard + sjutaan + sribuan + srupiah
      end # method baca_rupiah
    end

    end 
  • buat program baru dengan nama Prak-8b.rb
  • berikut adalah contoh program
    require_relative "uang.rb"
    u1 = Uang::Rupiah.new
    puts "Angka 11   dibaca menjadi        #{u1.baca(11)}"
    puts "Angka 1500 dibaca menjadi        #{u1.baca(1500)}"
    puts "Angka 1500000 dibaca menjadi     #{u1.baca(1500000)}"
    puts "Angka 123371181 dibaca menjadi   #{u1.baca(123371181)}"
  • Penjelasan

    • Baris pertama adalah memanggil program Uang.rb
    • Baris kedua adalah membuat objek u1 dari class Rupiah yang terdapat pada module Uang.
    • baris ketiga memanggil method u1 dengan memberikan parameter angka 11
    • baris keempat dst sama hanya memberikan nilai yang berbeda-beda sehingga program akan menghasilkan output yang berbeda pula.
    • hasil dari program baca rupiah