Object Oriented Programming

oopMerupakan paradigma pemrograman yang berorientasikan kepada objek. Semua data dan fungsi di dalam paradigma ini dibungkus dalam kelas-kelas atau objek-objek. Bandingkan dengan logika pemrograman terstruktur. Setiap objek dapat menerima pesan, memproses data, dan mengirim pesan ke objek lainnya.
Model data berorientasi objek dikatakan dapat memberi fleksibilitas yang lebih, kemudahan mengubah program, dan digunakan luas dalam teknik piranti lunak skala besar. Konsep Class dan Object

Class merupakan kumpulan atas definisi data dan fungsi-fungsi dalam suatu unit untuk suatu tujuan tertentu. Bisa dikatakan Class merupakan rancangan dari sebuah model Object.
Object merupakan dasar dari modularitas dan struktur dalam sebuah program komputer berorientasi objek. Object membungkus data dan fungsi bersama menjadi suatu unit dalam sebuah program komputer. Bisa dikatakan object merupakan perwujudan dari sebuah class.

Memandang suatu object terdapat 2(dua) hal yang harus dipahami, yaitu : Attribute dan Behaviour.

  1. Attribut, adalah segala sesuatu yang melekat pada diri objek. Sebagai contoh melihat objek buku, atribut-atribut yang dimiliki, diantaranya : judul, penulis, penerbit, tahun terbit, ketebalan, harga, dan lain-lain. Attribut ini yang pada pemrograman berbasis objek menjadi yang disebut dengan variabel.
  2. Behaviour, adalah segala perilaku yang terdapat pada diri objek. Sebagai contoh, melihat objek mobil, behaviour yang dimiliki, diantaranya : berjalan maju, berjalan mundur, belok kekiri, belok kenanan, ngebut, dan lain-lain. Behaviour ini yang pada pemrograman berbasis objek menjadi yang disebut dengan method atau function

Bentuk penulisan class, seperti dibawah ini :

[public | private] [abstract] class Nama_Class
{
     ... daftar property...
     ... daftar method ...
}

Method

Method adalah Implementasi operasi yang bisa dilakukan oleh Class dan Object. Operasi-operasi yang dilakukan oleh methode, diantaranya, yaitu :

  • Menerima dan memanipulasi data atau field.
  • Mempengaruhi Object lain

Berikut bentuk penulisan deklarasi method:

Tipe_Akses Tipe_Return NamaMethod(Argumen1, Argumen2, ..., Argumen-N)
{
... Badan / Tubuh Method ..
}

Tipe Akses, menyatakan tingkatan akses untuk memproteksi akses terhadap data-data didalam method, tipe akses ini bersifat opsional.
Tipe Return, menyatakan nilai hasil yang diolah oleh method akan dikembalkan atau akan mengirimkan kepada objek yang memanggil method. Bentuk Tipe Return, bisa berupa tipe data primitive yaitu integer, float, double dan lain-lain.
Apabila method tidak akan mengembalikan nilai kepada objek yang memanggilnya, maka bisa dituliskan didepan nama method dengan perintah void.

Sebagai contoh penulisan class yang berisikan property list dan method

class Buku
{
      String judul, penulis, penerbit;
      int tahunTerbit;
      double hargaBuku;

      void tampilBuku()
      {
           System.out.println("Judul Buku    : " + judul);
           System.out.println("Penulis    : " + penulis);
           System.out.println("Penerbit    : " + penerbit);
           System.out.println("Tahun Terbit    : " + tahunTerbit);
           System.out.println("Harga Buku  Rp. " + harga);
       }
}

Encapsulation

Adalah pembungkusan property object sedemikian rupa, sehingga tidak dapat diakses secara langsung dari luar. Hal ini dilakukan untuk menghindari interferensi dari luar dan lebih menyederhanakan program.

Dalam penulisan class terdapat beberapa modifier, diantaranya yaitu :

  1. Public, mendefinisikan suatu class dapat diakses dari luar class.
  2. Private  mendefinisikan suatu class tidak dapat diakses sama class yang lain sama sekali.
  3. Protected digunakan untuk membatasi akses class yang dilakukan oleh subclass  turunannya (inheritance)dan class yang lain dari package yang sama
  4. Abstract medefinisikan class tidak dapat diinstansiasi langusng menjadi object. Modifier ini hanya digunakan bila class tersebut  terletak pada hirarki yang lebih tinggi, sehingga dapat mungkin diturunkan sebagai subclass bukan instansiasi menjadi objek.
  5. Final menyatakan suatu class tidak dapat diturunkan menjadi subclass (inheritance)

Contoh : simpan dengan nama HitungLingkaran.java

import java.text.NumberFormat;

class Lingkaran
{
      private double luas, keliling;

      public double hitLuas(int jarijari)
      {
            return luas = Math.PI * jarijari * jarijari;
      }

      public double hitKeliling(int jarijari)
      {
           return luas = 2 * Math.PI * jarijari;
      }
}

public class HitungLingkaran
{
     public static void main(String[] args)
     {
         Lingkaran bulet = new Lingkaran();

         NumberFormat atur = NumberFormat.getInstance(); 

         //membatasi jumlah digit dibelakang koma
         atur.setMinimumFractionDigits(2);

         System.out.println("Luas Lingkaran     : " + atur.format(bulet.hitLuas(5)));
         System.out.println("Keliling Lingkaran : " + atur.format(bulet.hitKeliling(4)));
    }
}

Constructor

Adalah suatu method yang memiliki nama yang sama dengan nama class, tidak memiliki nilai balik (return value) dan biasanya memiliki instruksi untuk memberikan nilai inisialisasi untuk variabel-variabel yang akan dimiliki oleh objek. Konstruktor ini dipanggil pada saat proses instansiasi class menjadi object.

Contoh Constructor : simpan dengan nama Balok.java

class Balok
{
     private int panjang, lebar, tinggi, volume;
     public Balok(int panjang, int lebar, int tinggi)
     {
          this.panjang = panjang;
          this.lebar = lebar;
          this.tinggi = tinggi;
     }

    protected int hitvolume()
    {
         return this.volume = this.panjang * this.lebar * this.tinggi;
    }

    public void TampilBalok()
    {
        System.out.println("Panjang : " + this.panjang);
        System.out.println("lebar   : " + this.lebar);
        System.out.println("Tinggi  : " + this.tinggi);
    }
}

Simpan dengan nama BalokKonstruktor.java

public class BalokKonstruktor
{
    public static void main(String[] args)
    {
         Balok balokku = new Balok(10, 3, 2);
         balokku.TampilBalok();
         System.out.println("Tinggi  : " + balokku.hitvolume());
    }
}

this(), digunakan untuk mengakses variabel instant dari masing-masing object dan menyatakan terjadi pemanggilan terhadap constructor pada class yang sama.

Inheritance

Inheritance atau pewarisan adalah konsep yang dimiliki oleh Object Oriented Programming yang memiliki kemampuan untuk mengembangkan class yang sudah ada menjadi class baru. Dalam proses pewarisan ini data dan method yang dimiliki oleh suatu class akan diwariskan seluruhnya kepada class pewarisnya.

Suatu class yang mewariskan disebut dengan Super Class atau Class Induk. Sedangkan class yang diwariskan disebut dengan SubClass atau Class Sub atau Class Anak.
Suatu method diclass anak memiliki nama yang sama dengan method diclass induknya disebut dengan Override (Overriding).

Overriding adalah kemampuan class anak untuk memodifikasi atau mendefinisikan kembali data dan method dari kelas induknya.

Untuk mengaplikasikan konsep inheritance didalam program, dengan menggunakan kata kunci extends.
Sifat lain perwarisan yaitu Overloading, yaitu penggunaan satu nama class untuk beberapa method yang berbeda parameter.

class Lingkaran
{
   private double jari2;
   public Lingkaran()
   {
        jari2 = 2.5;
   }

   public Lingkaran(double d)
   {
	this();
	setJARI(d);
    }

    public void setJARI(double r)
    {
	if (r > 0)
	   jari2 = r;
    }

    public double getJARI()
    {
	return jari2;
    }

    public double luas()
    {
	return Math.PI * jari2 * jari2;
    }

    public double keliling()
    {
	return 2 * Math.PI * jari2;
    }
}

class Silinder extends Lingkaran
{
    private double tinggi;

    public Silinder(double r, double t)
    {
	super(r);
	setTinggi(t);
    }	

    public void setTinggi(double t)
    {
	if(t>0)
	tinggi = t;
    }

    public double getTinggi()
    {
	 return tinggi;
    }

    public double luas()
    {
	double luasling1 = 2 * super.luas();
	double luasling2 = tinggi * super.keliling();
	return luasling1 + luasling2;
    }

    public double volume()
    {
	return tinggi * super.luas();
    }
}

class TestSilinder
{
    public static void main(String[] args)
    {
	   Silinder xyz = new Silinder(3, 7);

	   System.out.println("\n\nInformasi Objek XYZ");
	   System.out.println("------------------------");
	   System.out.println("Nilai Jari Jari : " + xyz.getJARI());
	   System.out.println("Nilai Tinggi    : " + xyz.getTinggi());
	   System.out.println("Nilai Luas      : " + xyz.luas());
	   System.out.println("Nilai Volume    : " + xyz.volume());
     }
}

2 pemikiran pada “Object Oriented Programming

  1. Terimakasih Pak Frieyadie,
    atas tutorial tentang OOP,
    sangat bermanfaat untuk menambah pengetahuan saya.

    Selamat Beraktivitas Pak Frieyadie… 🙂

Tinggalkan komentar