Pemrograman Berorientasi Objek

Penjelasan Inheritance, Enkapsulasi, dan Polymorphism.

Serta Overloading dan Overriding, Pada Pemrograman Berorientasi Objek.


Nama : Muhammad Muhsin Yasir

Rombel : RPL XI - 4

SMK Wikrama Bogor


1. Inheritance (Pewarisan)

- Pengertian


Inheritance atau yang disebut Pewarisan merupakan sebuah konsep pemrograman yang dimana sebuah class dapat menurunkan property dan method yang dimilikinya kepada class yang lain. Inheritance biasanya digunakan untuk memanfaatkan fitur penggunaan berulang atau yang dikenal dengan “Code Reuse”.
Konsep dari inheritance sendiri yaitu membuat sebuah struktur class dalam sebuah program. Class induk (parent class) merupakan sebuah class yang diturunkan pada sebuah program bisa disebut juga super class atau base class. Sedangkan class yang menerima penurunan disebut dengan class anak (child class). Akan tetapi tidak semua property dan method diturunkan dari sebuah class induk karena property dan method dengan hak akses private tidak akan diturunkan kepada class anak. Hanya akses yang bersifat protected dan publicyang bisa diakses oleh class anak.


- Penggunaan

Didalam sebuah bahasa komputer yaitu pada PHP, inheritance dari sebuah class kepada class lain yang menggunakan kata kunci “extends“. Contoh penggunaan kata Inheritance pada PHP :
<?php
class motor {
public $merk;
public $kecepatan;
public $tahun;
public function memilih_motor() {
return "Memilih Motor";
} }
class jenis extends motor {
public function lihat_spek() {
return "merk : $this->merk, kecepatan : $this->kecepatan, tahun : $this->tahun;
} }
$motor_baru = new jenis();
$motor_baru->merk = "honda";
$motor_baru->kecepatan = "150cc";
$motor_baru->tahun = "2017";
echo "<br/>";
echo $motor_baru->memili_motor();
?>
echo $laptop_baru->lihat_spek();

2. Enkapsulasi 

- Pengertian

Enkapsulasi adalah suatu cara untuk menyembunyikan informasi detail dari suatu class. Dua hal yang mendasar dalam enkapsulasi yakni : Information hiding , Interface to access data.
Sebelumnya kita dapat mengakses anggota class baik berupa atribut maupun method secara langsung dengan menggunakan objek yang telah kita buat. Hal ini dikarenakan akses kontrol yang diberikan kepada atribut maupun method yang ada di dalam class tersebut adalah ‘public’. Kita dapat menyembunyikan informasi dari suatu class sehingga anggota class tersebut tidak dapat diakses dari luar, caranya adalah hanya dengan memberikan akses kontrol ‘private’ ketika mendeklarasikan atribut atau method. Proses ini disebut dengan information hiding.
Jika kita telah melakukan information hiding terhadap suatu atribut pada suatu class, lalu bagaimana cara melakukan perubahan terhadap atribut yang kita sembunyikan tersebut, caranya adalah dengan membuat suatu interface berupa method untuk menginisialisasi atau merubah nilai dari suatu atribut tersebut yang dinamakan dengan interface to access data.
Dalam enkapsulasi terdapat hak akses public, protected, dan private. Hak akses public memungkinkan semua kelas mengaksesnya, hak akses protected hanya diberikan kepada kelasnya sendiri dan turunannya, serta kelas-kelas dalam satu paket. Sedangkan private hanya boleh diakses oleh kelasnya sendiri.
Mengapa jika hak akses public pada konstruktor manusia di ganti dengan PRIVATE, program akan ERROR ? Private, adalah level proteksi untuk andi yang berada di dalam manusia. Si andi tidak boleh keluar dari manusia karena mempunya level proteksi paling tinggi. Dalam implementasinya, field dengan level proteksi private hanya dapat diakses di dalam class tersebut.
Dalam teori, dapatkah kita memberikan hak akses pada konstruktor??? Constructor berfungsi untuk menginisialisasi obyek dari class dan mempersiapkan ruang memory, sedangkan destructor menghapus dan membersihkan obyek ketika sudah tidak terpakai dan membebaskan memory yang tadinya terpakai. Constructor method merupakan method yang namanya sama dengan nama classnya dan bersifat public tapi tidak berjenis void ataupun non void. Constructor dapat menerima parameter namun tidak bisa mengembalikan nilai apapun.


- Penggunaan

Program Sederhana
class belajar{
public String x =”Pintar”;
private String y = “Java”;
}
Pintar.Java
public class Pintar{
public static void main(String[]args){
Coba panggil = new Belajar();
System.out.println(“Panggil X : “+panggil.x);
System.out.println(“Panggil Y : “+panggil.y);
}}


3. Polymorphism

- Pengertian


Polymorphism merupakan salah satu konsep penting dalam object oriented programming (OOP) khususnya di bahasa pemrograman Java setelah abstraction dan inheritance. Polymorphism berarti banyak bentuk. Ada beberapa definisi berbeda tentang polymorphism yang berkaitan dengan pemrograman berorientasi obyek. Sedangkan apa yang dimaksud dengan polymorphism sendiri, sebenarnya sulit untuk didefinisikan. Sejalan dengan contoh yang diberikan, Anda diharapkan dapat mengerti dan memahami konsep polymorphism itu sendiri.

Polymorphism sering dikaitkan dengan penggunaan lebih dari satu metoda dengan nama sama. Penggunaan metoda dengan nama sama dapat diterapkan dengan method overloading dan method overriding. Peran polymorphism sebenarnya tidak terbatas hanya pada hal tersebut. Ada keterkaitan antara polymorphism dan inheritance (turunan).
Dalam konsep turunan, saat obyek dari subclass dikonstruksi, obyek dari superclass juga ikut dikonstruksi. Jadi setiap instance dari subclass adalah juga instance dari superclass. Apabila Anda mendeklarasikan metoda dengan parameter dari tipe superclass, Anda diperbolehkan untuk memberi argumen berupa obyek subclass yang merupakan turunan dari superclass tersebut.


- Penggunaan

Berikut ini adalah contoh program yang dapat memberikan gambaran terkait konsep polymorphism. Perlu dipahami dan dimengerti bahwa kelas Object merupakan akar dari semua kelas Java dan menduduki puncak tertinggi dalam hirarkhi kelas. Program akan mendefinisikan kelas yang berkaitan dengan bidang datar secara sederhana termasuk beberapa kelas turunannya (kelas PersegiPanjang dan Balok) dan membatasi hanya pada penerapan method overriding.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// Nama file : Polimorphism.java
// Contoh penerapan konsep polimorphism
public class Polimorphism {
   public static void main(String[ ] args) {
      cetakObyek(new Balok());
      cetakObyek(new PersegiPanjang());
      cetakObyek(new BangunDatar());
      cetakObyek(new Object());
   }
    
   public static void cetakObyek(Object obyek) {
      System.out.println(obyek);
   }
} // Akhir kelas Polimorphism
class Balok extends PersegiPanjang {
   public String toString() {
      return "Mempunyai sisi panjang, lebar dan tinggi";
   }
}
class PersegiPanjang extends BangunDatar {
   public String toString() {
      return "Mempunyai sisi panjang dan lebar";
   }
}
class BangunDatar extends Object {
   public String toString() {
      return "Mempunyai berbagai bentuk";
   }


4. Overloading

- Pengertian

Overloading merupakan suatu function yang memiliki parameter, dan function tersebut dapat memiliki nama function yang sama dengan yang lainnya dengan syarat jumlah parameter mesti berbeda atau bisa kita bilang situasi di mana beberapa rutin dalam sebuah program dapat mempunyai nama sama tetapi berbeda jenis parameter dan/atau jenis return value. lebih jelasnya Overloading secara singkat : 

  • Nama Method Boleh Sama , Tapi Jumlah Parameter Mesti berbeda 
  • Nilai Yang Di Return Harus memiliki Tipe yang sama


- Penggunaan

class overloading{
 public void segitiga(){
  int alas=5, tinggi=10;
  System.out.println("Luas segitiga satu = "+(alas*tinggi)/2);
 }
 //Metod segitiga di overloading dengan 2 parameter (int x, int y)
 public void segitiga2(int x, int y){
  System.out.println("Luas segitiga dua = "+(x*y)/2);
 }
 public static void main(String [] args){
  System.out.println("I Gede John Arissaputra");
  System.out.println("1404505066");
  System.out.println("Contoh Overloading");
  System.out.println("");
  overloading s3;
  s3 = new overloading();
  s3.segitiga();//memanggil metod segitiga
  s3.segitiga2(20,8);//memanggil metod segitiga2
 }
}


5. Overriding

- Pengertian

Overriding merupakan suatu keadaan dimana kelas anak dapat mengubah atau bisa kita bilang memodifikasi atau memperluas data dan method pada kelas induk. Keuntungan Overriding : dapat menambahkan sifat / atribut pada kelas induknya. Lebih jelasnya Overloading secara singkat : 
  • Mendefinisikan method dengan nama sama pada class yang berbeda. 
  • Konsep dapat di manfaatkan dalam beberapa kasus inheritance, di mana menginginkan penamaan method dengan nama sama namun berbeda dalam impelementasinya


- Penggunaan

class Nama{
 public void Sapa(){
  System.out.println("Bill Gates");
 }
 public static void main(String [] args){
  Siapa ss;
  Nama nn;
  ss = new Siapa();
  nn = new Nama();
  
  ss.Sapa();//memanggil method Sapa() pada class Siapa
  nn.Sapa();//memanggil method Sapa() pada class Nama
 }
}
class Siapa extends Nama{
 //Method Sapa() pada class Nama di override
 public void Sapa(){
  System.out.println("Steve Jobs");
 }
}

Komentar