Pengertian Objek, Class, Instance dan beberapa macam variabel objek

Dalam proses belajar program berorientasi objek banyak istilah yang sering membuat siswa bingung, misalnya pengertian dan perbedaan antara objek, class, instance, variabel, instance variabel, class variabel. Maka pada praktek ini akan dijelaskan secara detil pengertian dan perbedaannya

Class

Membuat class

  • Objek, Class dan Instance dan variabel
    • Objek dapat dibayangkan sebagai sesuatu yang memiliki ciri (state) dan kemampuan melakukan sesuatu (Behaviour)
    • contoh objek misalnya manusia, mobil, burung,...
    • Kalau untuk Objek manusia
    • Objek = Manusia
    • memiliki ciri-ciri (state): warna rambut, tinggi dan bentuk yang berbeda antara yang satu dengan yang lain
    • memiliki kemampuan (behaviour): mampu berlari, berteriak,
    • bila ada 3 orang, misalnya bernama andi, siti dan dita maka 3 orang tersebut dikatakan 3 instance dari objek manusia.
    • selanjutnya bila ternyata andi ternyata memiliki 2 nama misalnya andi dan ahong, maka dapat dikatakan saat ini kita memiliki 4 variabel untuk 3 instance
    • jadi dapat dibayangkan variabel itu hanya sebagai label yang melekat pada suatu objek dan satu intance bisa memiliki lebih dari satu variabel
    • Kalau untuk objek mobil
    • objek = mobil
    • class dapat dibayangkan sebagai Blue-print dari objek mobil yang akan dibuat
      • tentu saja blue-print setiap pabrik mobil bisa berbeda-beda karena membuat mobil balap (ferrari) dan membuat mobil untuk angkut barang (daihatsu) jelas berbeda.
    • bila ada 3 mobil yang dihasilkan pabrik dan diberi nama merah, kuning dan hijau maka disebut 3 instance ()
    • bila mobil warna merah juga diberi nama misalnya mobil_joni, maka berarti ada 4 variabel yang menunjuk pada 3 instance.
  • Perhatikan contoh program berikut:
class PersegiPanjang
    attr_accessor :panjang

    def initialize(p,l)
        @panjang = p
        @lebar = l
        @@jumlah = @@jumlah + 1
    end

    def luas
      @panjang * @lebar
    end

    def keliling
        2 * (@panjang + @lebar)
    end

    @@jumlah = 0

    def self.jumlah_kotak
        @@jumlah
    end
end

kotak1 = PersegiPanjang.new(10,2)
kotak1.luas
kotak1.keliling
kotak1.panjang
kotak2 = kotak1
p kotak1
p kotak2
kotak3 = PersegiPanjang.new(30,3)
p kotak3
p PersegiPanjang.jumlah_kotak
  • Penjelasan
    • Nama class harus diawali dengan huruf besar (Uppercase)
    • Teknik penamaan menggunakan Camelcase misalnya PersegiPanjang, BujurSangkar
    • pada contoh program diatas terdapat
      • Satu objek yang diwakili oleh class PersegiPanjang
      • Dua instance, karena melakukan new sebanyak 2x dimana kotak pertama panjangnya 10 dan kotak kotak kedua panjangnya 30, dengan demikian di memory komputer hanya ada 2 tempat saja.
      • Terdapat 3 variabel (kotak1, kotak2 dan kotak3) dimana kotak1 dan kotak2 menunjuk instance yang sama.

member variable, class variable dan instance variable

  • di dalam suatu class terdapat member variabel
    • member variabel dibagi menjadi 2 jenis
    • instance variabel
      • misalnya @panjang dan @lebar
      • Ingat! instance variabel berbeda dengan instance dan berbeda juga dengan variabel
      • instance variabel ini menunjukkan ciri-ciri dari suatu objek
      • misalnya kalau mobil memiliki warna, jenis bahan bakar, harga
      • kalau persegi panjang memiliki panjang dan lebar
      • kalau segitiga memiliki alas dan tinggi
      • kalau lingkaran memiliki jari-jari
      • instance variabel diawali dengan tanda @ pada namanya
      • sifatnya di dikenali oleh seluruh method(def) di dalam class tersebut.
      • secara default semua instance variabel bersifat private, kecuali di-definisikan dengan perintah attr_
    • class variabel
      • misalnya @@jumlah
      • class variabel umumnya digunakan untuk menganalisa data secara keseluruhan, misalnya suatu pabrik mobil, setiap kali dia dia menghasilkan 1 mobil maka variabel @@jumlah ditambah 1 sehingga pada akhirnya akan diketahui berapa total mobil yang dihasilkan
      • class variabel nilainya juga di share antar instance, misalnya secara berurutan pabrik mobil memproduksi mobil merah, kuning dan hijau, masing-masing instance mobil ini dapat mengakses nilai dari class variabel

class method

  • di dalam setiap class terdapat instance variabel dan method
  • pada topik sebelumnya terdapat variabel dengan tipe class variabel yang nilainya dapat diakses secara langsung oleh seluruh instance
  • di dalam ruby terdapat pula yang disebut class method
  • cara melakukan deklarasi class method adalah dengan diawali self.
  • kegunaan dari class method, misalnya kita ingin mengetahui jumlah objek yang sudah dibuat, tanpa harus membuat instance baru, jumlah dari objek yang dihasilkan dapat di cek dengan memanggil nama class disertai dengan nama methodnya
  • pada contoh dibawah ini adalah
class PersegiPanjang
  ...
    def self.jumlah_kotak
        @@jumlah
    end
  ...
end

p "Total Objek persegi panjang : #{PersegiPanjang.jumlah_kotak}"