Merupakan 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.
- 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.
- 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 :
- Public, mendefinisikan suatu class dapat diakses dari luar class.
- Private mendefinisikan suatu class tidak dapat diakses sama class yang lain sama sekali.
- Protected digunakan untuk membatasi akses class yang dilakukan oleh subclass turunannya (inheritance)dan class yang lain dari package yang sama
- 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.
- 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()); } }
Terimakasih Pak Frieyadie,
atas tutorial tentang OOP,
sangat bermanfaat untuk menambah pengetahuan saya.
Selamat Beraktivitas Pak Frieyadie… 🙂
Halloo emiy … mudah2an artikelnya bisa ditambah..abis lagi sibuk banget sih . 😀