EXCEPTION HANDLING

Dasar Teori

Exception merupakan subkelas dari kelas java.lang.Throwable, bukalah dokumentasi java (java doc) untuk lebih menyakinkan anda. Karena Exception adalah sebuah kelas maka hakikatnya ketika program berjalan dan muncul sebuah bug atau kesalahan maka bug tersebut dapat dianggap sebuah object. Sehingga ketika object ini di tampilkan di layar maka java akan secara otomatis memanggil method toString yang terdapat dalam object bertipe Exception ini. Java memberikan akses kepada developer untuk mengambil object bug yang terjadi ini dengan mekanisme yang dikenal Exception Handling. Exception handling merupakan fasilitas di java yang memberikan flexibilitas kepada developer untuk menangkap bug atau kesalahan yang terjadi ketika program berjalan. Contoh Exception Handling akan dibahas pada bagian berikutnya.

Perbedaan antara Class Error dan Class Exception di java, seperti yang telah dijelaskan di atas bahwa kelas Exception merupakan kelas turunan dari kelas Throwable di package Java.Lang. Selain Exception, java.lang.Throwable juga memiliki subclass yaitu class Error. Tentu, kita bertanya-tanya, sebetulnya apa sih perbedaan antara class Error dengan class Exception. Error dan exception pada dasarnya berbeda, error merupakan masalah yang muncul tapi tidak ada alasan yang kuat untuk menangkapnya. Sedangkan exception merupakan kesalahan kecil yang muncul dan ingin diperlakukan sesuai keinginan developer. Ada 5 keyword penting dalam java dalam hal exception handling :

1. try

Keyword try biasanya digunakan dalam suatu block program. Keyword ini digunakan untuk mencoba menjalankan block program kemudian mengenai sasaran dimana munculnya kesalahan yang ingin diproses. Keyword ini juga harus dipasangkan dengan keyword catch atau keyword finally yang akan dibahas pada point kedua dan ketiga.

2. catch

Dalam java, keyword catch harus dipasangkan dengan try. Kegunaan keyword catch
adalah untuk menangkap kesalahan atau bug yang terjadi dalam block try. Setelah menangkap kesalahan yang terjadi maka programmer dapat melakukan hal apapun pada block catch sesuai keinginan programmer.

Contoh penggunaan :

public class A
{
      public static void main(String[] args) {
             try
             {
                   int a = 1 / 0;
                   // berpotensi untuk menimbulkan kesalahan yaitu
                   // pembagian dengan bilangan 0
                  System.out.println("perintah selanjutnya");
             }
             catch (Exception kesalahan)
             {
                     System.err.println(kesalahan);
             }
       }
}

Perhatikan contoh diatas, ada beberapa hal penting yang perlu dilihat. Pertama, block program yang diyakini akan menimbulkan kesalahan maka ada di dalam block try and catch. Kedua, kesalahan yang muncul akan dianggap sebagai object dan ditangkap catch kemudian di assign ke variable kesalahan dengan tipe Exception. Ketiga, perintah setelah munculnya kesalahan pada block try tidak akan dieksekusi. Keyword catch juga dapat diletakan berulang-ulang sesuai dengan kebutuhan. Contoh penggunaan:

public class A
{
public static void main(String[] args) {
try
{
int a = 1/0;
// berpotensi untuk menimbulkan kesalahan
// yaitu pembagian dengan bilangan 0
System.out.println("perintah selanjutnya");
}
catch(NullPointerException e)
{ }
catch(ArrayIndexOutOfBoundsException e)
{ }
catch(Exception e)
{ }
}
}

4. finally

Keyword finally merupakan keyword yang menunjukan bahwa block program tersebut akan selalu dieksekusi meskipun adanya kesalahan yang muncul atau pun tidak ada. Contoh implementasinya pada program :

public class A 
{
    public static void main(String[] args) {
        try
        {
        int a = 1/0;
        }
        catch (Exception e)
        {
        System.out.println(“ada kesalahan yang muncul”);
        }
        finally
        {
        System.out.println(“terima kasih telah menjalankan program”);
        }
    }
}

Perhatikan kedua contoh diatas, block finally akan selalu dieksekusi meskipun adanya kesalahan atau tidak pada block try. Berbeda dengan keyword catch keyword finally hanya dapat diletakan 1 kali setelah keyword try

Kata Kunci Finally :

  • Biasanya berpasangan dengan Try atau Catch
  • Blok Finally akan selalu dieksekusi meskipun tidak terjadi eksepsi

4. throw

Keyword ini digunakan untuk melemparkan suatu bug yang dibuat secara manual.
Contoh program:

public class A 
{
    public static void main(String[] args) {
        try
        {
        throw new Exception("kesalahan terjadi");
        }
        catch(Exception e)
        {
        System.out.println(e);
        }
    }
}

Seperti yang anda lihat pada program diatas, pada keyword throw new Exception(“kesalahan terjadi”); akan melempar object bertipe exception yang merupakan subclass dari class Exception sehingga akan dianggap sebagai suatu kesalahan yang harus ditangkap oleh keyword catch. Perhatikan contoh berikut ini :

public class A 
{
    public static void main(String[] args) {
        try
        {
        throw new B();
        //cobalah hilangkan “throw” ganti dengan “new B();” saja
        }
        catch(Exception e)
        {
        System.out.println(e);
        }
    }
}
 
class B extends Exception 
{
    B()
    { }
    public String toString()
    {
    return "object dengan tipe kelas B";
    }
}

Program diatas telah mendefinisikan suatu kelas B extends dari kelas Exception. Ketika kita melakukan throw new B(); maka object dari kelas bertipe B ini akan dianggap kesalahan dan ditangkap oleh block catch. Sekarang jika anda menghilangkan keyword throw apa yang terjadi?

Kata Kunci Throw :

  • Kata kunci yang digunakan untuk melempar eksepsi
  • Method yang mengandung kata kunci Throw akan beresiko menghasilkan eksepsi

5. throws

Keyword throws digunakan dalam suatu method atau kelas yang mungkin menghasilkan suatu kesalahan sehingga perlu ditangkap error-nya. Cara mendefinisikannya dalam method adalah sebagai berikut : <method modifier> type method-name throws exception-list1, exceptio-list2, … {}. Contoh Program :

public class NewClass 
{
    public static void main(String[] args) {
        try
        {
            f();
            }
        catch(Exception e)
        {
        System.out.println(e);
    }
    public static void f() throws NullPointerException,ArrayIndexOutOfBoundsException
    {
        //implementasi method
        throw new NullPointerException();
        //throw new ArrayIndexOutOfBoundsException();
    }
}

Perhatikan contoh pengguaan keyword throws pada method. Ketika method tersebut dipanggil dalam block try. Maka method tersebut akan membuat object yang merupakan subclass dari class Throwable dan method tersebut akan melemparkan kesalahan yang ada dalam block method kedalam block try. Di dalam block try, kesalahan tersebut kemudian ditangkap kedalam block catch.

Kata Kunci Throws :

  • Jika suatu method tidak menangani eksepsi maka perlu diberi tanda dengan kata kunci Throws
  • Throws diletakkan di akhir method
  • Throws hanyalah sebagai penanda bahwa penanganan eksepsi ditunda (tidak ditangani di method tersebut)

PRAKTIKUM

Percobaan 1

public class Exception1 {
    public static void main(String[] args) {
        int a[]= new int [5];
        try {
            a[5] = 100;
        }catch(Exception e){
            System.out.println("terjeadi pelanggaran memory");
        }
    }
}

Percobaan 2

public class Exception2 {
    public static void main(String[] args) {
        int i = 0;
        String greetings[]= {
            "Hello World!",
            "No, i mean it!",
            "HELLO WORLD !!"
        };
        while (i<4){
            try{
                System.out.println(greetings[i]);
                i++;
            }catch(ArrayIndexOutOfBoundsException e){
                System.out.println("Resetting inedx value");
                i=0;
            }
            i++;
        }
    }
}

Percobaan 3

public class Exception3 {
    public static void main(String[] args) {
        int bil = 0;
        try{
            System.out.println(bil/0);
        }catch(Exception e){
            System.out.println("ini menghendle error yagn terjadi");
        }
    }
}

Percobaan 4

public class Exception4 {
    public static void main(String[] args) {
        int bil=10;
        String b[]={"a","b","c",};
        try{
            System.out.println(bil/0);
            System.out.println(b[3]);
        }catch(ArithmeticException e){
            System.out.println("Terjadi Aritmatika Error");
        }catch(ArrayIndexOutOfBoundsException e){
            System.out.println("Melebihih Jumlah array");
        }catch(Exception e){
            System.out.println("ini menghendle error yang terjadi");
        }
    }
}

Percobaan 5

public class Exception5 {
    public static void main(String[] args) {
        int bil=10;
        try{
            System.out.println(bil/0);
        }catch(ArithmeticException e){
            System.out.println("Pesan error: ");
            System.out.println(e.getMessage());
            System.out.println("info stack erase");
            e.printStackTrace();
            e.printStackTrace(System.out);
        }catch(Exception e){
            System.out.println("Ini menghandle error yang terjadi");
        }
    }
}

Percobaan 6

public class ThrowExample {
    static void demo(){
        NullPointerException t;
        t = new NullPointerException("Coba Throw");
        throw t;
         
//        baris ini tidak lagi dikerjakan;
        System.out.println("ini tidak lagi dicetak");
    }
    public static void main(String[] args) {
        try{
            demo();
            System.out.println("Selesai");
        }catch(Exception e){
            System.out.println("ada pesan error!!" + e);
        }
    }
}

Percobaan 7

public class ThrowException2 {
    public static void main(String[] args){
        try{
            throw new Exception ("Here's my Exception");
        }catch(Exception e){
            System.out.println("Caught aException");
            System.out.println("e.getMessage():"+e.getMessage());
            System.out.println("e.toString()"+e.toString());
            System.out.println("e.printStackTrace():");
            e.printStackTrace();
        }
    }
}

Percobaan 8

import java.io.IOException;
 
public class Test3 {
    public void methodA(){
            System.out.println("Method A");
    }
    public void methodB() throws IOException{
        System.out.println(20/0);
        System.out.println("Method B");
    }
}
 
class utama{
    public static void main(String[] args) throws IOException{
        Test3 o = new Test3();
        o.methodA();
        try{
            o.methodB();
        }catch(Exception e){
            System.out.println(e);
        }finally
        {
            System.out.println("ini selalu dicetak");
        }
    }
}

Percobaan 9

import static jdk.nashorn.internal.objects.NativeArray.reverse;
 
public class Propagate {
    public static void main(String[] args) {
        try{
            System.out.println(reverse());
        }
        catch(Exception e)
        {
            System.out.println("The String was blank");
        }finally
        {
            System.out.println("All done");
        }
    }
     
    public static String reverse (String s) throws Exception {
        if (s.length()==0) 
        {
            throw new Exception();
        }
        String reverseStr="";
        for (int i = s.length()-1; i >= 10; --i) {
            reverseStr+=s.charAt(i);
        }
        return reverseStr;
    }
}

Jalankan program membalik string (reverse) berikut ini, coba hapus isi dari method reverse (”This is a string”) kemudian jalankan kembali.

Percobaan 10

import java.io.IOException;
import java.io.RandomAccessFile;
 
public class RandomAccessRevisi {
    public static void main(String[] args) {
        String bookList[]={"satu","dua","tiga"};
        int yearsList[]={1920,1930,1940};
        try{
            RandomAccessFile books = new RandomAccessFile("books.txt","rw");
            for (int i = 0; i < 3; i++) 
            {
                books.writeUTF(bookList[i]);
                books.writeInt(yearsList[i]);
            }
            books.seek(0);
            System.out.println(books.readUTF()+" "+books.readInt());
            System.out.println(books.readUTF()+" "+books.readInt());
            System.out.println(books.readUTF()+" "+books.readInt());
            System.out.println(books.readUTF()+" "+books.readInt());
            books.close();
        }catch(IOException e)
        {
            System.out.println("Indeks melebihi batas");
        }
        System.out.println("test");
    }
}

Percobaan 11

public class RangeErrorException extends Throwable{
    public RangeErrorException(String s){
        super(s);
    }
     
    public static void main(String[] args) {
        int position=1;
        try{
            if (position>0) {
                throw new RangeErrorException("position" +position);
            }
        }catch(RangeErrorException e){
            System.out.println("Range error: " +e.getMessage());
        }
        System.out.println("This is the last Program.");
    }
}

Percobaan 12

public class MyException extends Exception{
    private String Teks;
    MyException (String s)
    {
        Teks="Exception generated by: "+s;
        System.out.println(Teks);
    }
}
 
class Eksepsi{
    static void tampil(String s)throws Exception 
    {
        System.out.println("Tampil");
        if (s.equals("amir")) 
        {
            throw new MyException(s);
        }
        System.out.println("OK! ");
    }
     
    public static void main(String[] args) throws Exception {
        try
        {
            tampil("ali");
            tampil("amir");
        }
        catch(MyException ex)
        {
            System.out.println("Tangkap:"+ex);
        }
    }
}

Referensi

Click to access Praktikum%2009%20-%20Exception%20Handling.pdf

CLASS DIAGRAM

Pengertian Class Diagram

Class diagram adalah visual dari struktur sistem program pada jenis-jenis yang di bentuk. Class diagram merupakan alur jalannya database pada sebuah sistem.
Class diagram merupakan penjelasan proses database dalam suatu program. Dalam sebuah laporan sistem maka class diagram ini wajib ada.

JENIS-JENIS RELASI ANTAR KELAS
• Terdapat beberapa macam relasi antar kelas yaitu :
• Inheritance
• Realization
• Dependency
• Aggregation
• Composition

INHERITANCE
• Inheritance merupakan relasi turunan dimana sebuah kelas diciptakan
berdasarkan kelas lainnya. Kelas yang diciptakan disebut dengan kelas anak
dan kelas asalnya disebut dengan kelas induk. Kelas anak akan mewarisi
seluruh method an property yang dimiliki oleh kelas induknya. Pembahasan
tentang inheritance ini telah dibahas pada pertemuan sebelumnya. Simbol
UML untuk relasi inheritance dapat dilihat pada gambar berikut ini. Pada
gambar tersebut kelas Sedan merupakan turunan dari kelas Mobil.

REALIZATION
• Realization merupakan relasi yang terjadi akibat implementasi dari interface.
Dalam relasi realization, sebuah kelas yang mengimplementasikan interface
tertentu, harus mendefinisikan/ mengimplementasikan seluruh method yang
dideklarasikan dalam interface. Pembahasan tentang interface telah dibahas
pada pembahasan sebelumnya.

AGREGATION
• Relasi antara dua objek dengan mengatakan bahwa satu objek memiliki atau
mengandung atau berisi objek yang lain
• Relasi aggregation sering juga disebut relasi HAS-A
• mobil memiliki mesin
• rumah memiliki dapur
• fakultas memiliki jurusan

ASOSIASI
• Bagaimana relasi yang terjadi antara objek dosen dengan mata kuliah ?
• Bagaimana relasi yang terjadi antara objek mahasiswa dengan mata kuliah ?
• Dalam Relasi perlu diperhatikan Kardinalitas
• berapa objek yang terlibat dari masing-masing kelas yang terlibat.
• apakah relasi tersebut bersifat wajib (mandatory) atau opsional.

ASOSIASI
• Menyatakan suatu hubungan struktural antar objek. yang menggambarkan
objek dari suatu kelas dihubungkan ke objek dari kelaslain
• Menunjukkan variabel dalam suatu kelas yang menyimpan rujukan bertipe
kelas lain

DEPEDENCY
• Dependency merupakan relasi antar kelas dimana satu kelas membutuhkan
atau tergantung kepada kelas lainnya. Tapi ketergantungan tersebut tidak
timbal balik.
• Suatu kelasA bergantung pada kelas B → jika kelas B mengalami perubahan
maka kelas A akan terkena dampak perubahan tersebut
• Relasi dependency ini digambarkan dengan panah yang dari satu kelas ke
kelas lainnya. Arah panah menunjukkan kelas yang dibutuhkan.

Fungsi atau Manfaat Class Diagram

Adapun fungsi dan manfaat dari class diagram adalah sebagai berikut.

  • Menjelaskan suatu model data untuk program informasi, tidak peduli apakah model data tersebut sederhana maupun kompleks.
  • Dengan menguasai class diagram maka akan meningkatkan pemahaman mengenai gambaran umum skema dari suatu program.
  • Mampu menyatakan secara visual akan kebutuhan spesifik suatu informasi serta dapat berbagi informasi tersebut ke seluruh bisnis.
  • Dengan Class Diagram dapat dibuat bagan secara terperinci dan jelas, dengan cara memperhatikan kode spesifik apa saja yang dibutuhkan oleh program. Hal ini mampu mengimplementasikan ke struktur yang dijelaskan.
  • Class Diagram mampu memberikan  penjelasan implementasi-independen dari suatu jenis program yang digunakan, kemudian dilewatkan diantara berbagai komponennya.

SIMBOL CLASS DIAGRAM

CONTOH CLASS DIAGRAM

Contoh Class Diagram

Tugas !!!

• Buatlah UML untuk kelas limas, kelas prisma dan kelas segitiga
• Buatlah UML untuk kelas kerucut dan kelas lingkaran
• Buatlah UML untuk kelas Kubus, Balok dan kelas segi empat
• Termasuk agregasi atau komposisi

Tugas !!!

• Berikan contoh dari relasi agregasi? Berikan contoh dari relasi asosiasi?
• Apakah perbedaan dari komposisi dan agregasi?
• Berdasarkan kasus bangun ruang tsb, bagaimana dengan relasinya komposisi
atau agregasi?

Jawaban :

1
2
3

Aggregation (Agregasi)

Agregasi adalah bentuk hubungan yang lebih khusus dari Assosiasi dimana sebuah object memiliki lifecycle nya sendiri tapi dengan kepemilikan dan class child tidak dapat memiliki class parentnya. Relasinya biasa di sebut relasi “has-a”.

Sebagai contoh, Department dan Teacher. Satu Teacher tidak dapat memiliki banyak Department, tapi jika kita menghapus object Department, object Teacher tidak akan ikut terhapus. Contoh:

Karena object teacher di buat di luar object department, sehingga jika object department dihancurkan maka object teacher tetap exist. Object department bisa memiliki banyak object teacher yang berasosiasi dengannya, tapi tidak sebaliknya. Sehingga dalam relasi ini object department adalah owner dari object teacher.

Relasi Agregasi disebut juga Weak Assosiation dan dalam UML disimbolkan seperti ini

agregasi

Composition (Komposisi)

Komposisi sama dengan relasi Agregasi, tapi lebih spesfic lagi yaitu lifecycle object bergantung pada object ownernya.

Pada contoh ini class University bertindak sebagai object owner seperti pada relasi Agregasi di atas. Karena object electricalDepartment dan biologyDepartment di buat di dalam object univerty sehingga jika object university dihancurkan, maka object electricalDepartment dan biologyDepartment akan tidak exist lagi. Relasi Komposisi disebut juga Strong Association atau Death Relationship dan disimbolkan dalam UML seperti ini

komposisi

sumber :

https://adnansetiawan.com/2017/01/15/perbedaan-asosiasi-agregasi-dan-komposisi-pada-object-oriented-programming/

https://id.gadget-info.com/difference-between-aggregation#:~:text=Agregasi%20dan%20komposisi%20adalah%20jenis,bisa%20eksis%20terlepas%20dari%20orangtua.

Konsep Java OOP – INTERFACE

PENGERTIAN INTERFACE

Interface terdiri dari inter = antar, face = muka. Jadi Interface adalah antarmuka

Secara umum Interface berfungsi sebagai penghubung antar sesuatu yang ‘abstrak’dengan sesuatu yang nyata.

Hal Yang Perlu Diketahui Dalam Interface

Tujuan utama dari interface ini adalah untuk menetapkan perilaku umum dari suatu class yang terkait ataupun tidak terkait.

Interface juga tidak bisa mengimplementasikan method, melainkan hanya berisi signature yaitu nama, parameter, dan exceptions dari method.

Penting untuk membedakan interface dengan class pada Java.

Kesamaan antar Interface dan Class

Berikut adalah kesamaan antara sebuah Interface dalam Program java :

  1. Interface bisa memiliki jumlah method sebanyak apapun
  2. Sebuah interface di tulis dengan menggunakan ekstensi .java dan nama interface itu sesuai dengan nama dari file.
  3. Kode byte dari interface itu terdapat di file .class
  4. Interface terdapat di packages dan kode byte yang berkaitan harus ada di struktur direktori di mana sesuai dengan nama dari package.

Perbedaan Antar Interface dan Class

Di bawah ini adalah perbedaan Interface dan Class pada program Java :

  1. Interface tidak didapat di instance-kan
  2. Tidak memiliki konstruktor apapun
  3. Semua method yang dimiliki oleh interface adalah method abstract
  4. Interface tidak bisa mengandung fields instance. Fields yang terdapat pada interface haruslah dideklarasikan sebagai static dan final.
  5. Interface bisa extend ke beberapa interface (multiple)

Hal – Hal yang tidak boleh dilakukan di Interface

Ada beberapa hal yang tidak boleh kamu lakukan saat membuat interface:

  1. Jangan buat variabel di dalam interface, tapi membuat konstanta boleh;
  2. Jangan mengisi method-nya, cukup tuliskan nama method, tipe data, dan parameter saja. Tapi untuk default metod boleh punya isi.
  3. Jangan berikan modifier privete atauapun protected pada method dan konstanta yang ada di dalam interface.
  4. Interface tidak bisa dibuat objek instance-nya dengan kata kunci new.

Jadi kesimpulannya:
Interface merupakan penghubung antar objek. Interface bersifat abstrak, sehingga objek yang menggunakannya tidak akan perduli bagaimana ia diimplementasikan.

Karena bersifat abstrak, interface tidak bisa dibuat objek instance dengan kata kunci new.

Interface juga mengamalkan prinsip Abstraksi dan Enkapsulasi (pembungkusan).

Membuat Contoh Program Interface

  1. Sekarang mari kita coba buat dalam bentuk kode. Buatlah proyek baru dengan nama ContohInterface.

Setelah itu, buat class baru di dalam <default package> dengan nama Phone dan isi kodenya seperti ini:

public interface Phone {
    int MAX_VOLUME = 100;
    int MIN_VOLUME = 0;
    
    void powerOn();
    void powerOff();
    void volumeUp();
    void volumeDown();
}

Berikutnya, buat lagi class baru dengan nama PhoneUser dan isi kodenya seperti ini:

public class PhoneUser {
    
    private Phone phone;

    public PhoneUser(Phone phone) {
        this.phone = phone;
    }
    
    void turnOnThePhone(){
        this.phone.powerOn();
    }
    
    void turnOffThePhone(){
        this.phone.powerOff();
    }
    
    void makePhoneLouder(){
        this.phone.volumeUp();
    }
    
    void makePhoneSilent(){
        this.phone.volumeDown();
    }
}

Berikutnya kita akan membuat class implementasi dari interface Phone. Kita coba buat satu saja dulu.

Silahkan buat class baru dengan nama Xiaomi, kemudian isi kodenya seperti ini:

public class Xiaomi implements Phone {

    private int volume;
    private boolean isPowerOn;

    public Xiaomi() {
        // set volume awal
        this.volume = 50;
    }

    @Override
    public void powerOn() {
        isPowerOn = true;
        System.out.println("Handphone menyala...");
        System.out.println("Selamat datang di XIAOMI");
        System.out.println("Android version 29");
    }

    @Override
    public void powerOff() {
        isPowerOn = false;
        System.out.println("Handphone dimatikan");
    }

    @Override
    public void volumeUp() {
        if (isPowerOn) {
            if (this.volume == MAX_VOLUME) {
                System.out.println("Volume FULL!!");
                System.out.println("sudah " + this.getVolume() + "%");
            } else {
                this.volume += 10;
                System.out.println("Volume sekarang: " + this.getVolume());
            }
        } else {
            System.out.println("Nyalakan dulu donk HP-nya!!");
        }
    }

    @Override
    public void volumeDown() {
        if (isPowerOn) {
            if (this.volume == MIN_VOLUME) {
                System.out.println("Volume = 0%");
            } else {
                this.volume -= 10;
                System.out.println("Volume sekarang: " + this.getVolume());
            }
        } else {
            System.out.println("Nyalakan dulu donk HP-nya!!");
        }
    }

    public int getVolume() {
        return this.volume;
    }

}

Terakhir, buatlah class Main dengan isi sebagai berikut:

import java.util.Scanner;


public class Main {

    public static void main(String[] args) {
        
        // membuat objek HP
        Phone redmiNote8 = new Xiaomi();

        // membuat objek user
        PhoneUser dian = new PhoneUser(redmiNote8);

        // kita coba nyalakan HP-nya
        dian.turnOnThePhone();
        
        // biar enak, kita buat dalam program
        Scanner input = new Scanner(System.in);
        String aksi; 

        while (true) {
            System.out.println("=== APLIKASI INTERFACE ===");
            System.out.println("[1] Nyalakan HP");
            System.out.println("[2] Matikan HP");
            System.out.println("[3] Perbesar Volume");
            System.out.println("[4] Kecilkan Volume");
            System.out.println("[0] Keluar");
            System.out.println("--------------------------");
            System.out.print("Pilih aksi> ");
            aksi = input.nextLine();
            
            if(aksi.equalsIgnoreCase("1")){
                dian.turnOnThePhone();
            } else if (aksi.equalsIgnoreCase("2")){
                dian.turnOffThePhone();
            } else if (aksi.equalsIgnoreCase("3")){
                dian.makePhoneLouder();
            } else if (aksi.equalsIgnoreCase("4")){
                dian.makePhoneSilent();
            } else if (aksi.equalsIgnoreCase("0")){
                System.exit(0);
            } else {
                System.out.println("Kamu memilih aksi yang salah!");
            }
        }

    }

}

Sekarang coba jalankan class Main. Caranya, Klik kanan lalu pilih Run File atau bisa juga dengan menekan Shift+F6.

Maka hasilnya:

Demo Contoh Program Interface

Kalau kita perhatikan di dalam method main().. kita hanya menggunakan objek dari class PhoneUser saja.

Coba lihat kode-kode ini:

dian.turnOnThePhone();
dian.turnOnThePhone();
dian.turnOffThePhone();
dian.makePhoneLouder();
dian.makePhoneSilent();

Saat kita memanggil method-method ini, maka method yang ada di dalam objek redmiNote8 yang akan dipanggil. Ini karena mereka terhubung dengan interface.

Lalu pertanyaanya:

MENGAPA HARUS MEMAKAI INTERFACE?

Sebenarnya kita tidak harus selalu menggunakan interface. Tapi dalam kasus tertentu, interface akan sangat berguna.

Misalnya gini:

Kita tahu objek PhoneUser membutuhkan objek dari handphone. Tanpa objek handphone, si objek user nggak akan bisa kita buat.

Ini karena kita menetapkan pada konstruktornya.

Btw, ini juga disebut hubungan dependency..

Class PhoneUser

Nah, di sana kita menggunakan interface Phone untuk membaut objek dependency-nya.

Kalau gak pakai interface memangnya kenapa?

Untuk menjawab pertanyaan ini, mari kita coba ubah Phone menjadi Xiaomi.

Class PhoneUser menggunakan Xiaomi

Apa yang akan terjadi?

Untuk saat ini tidak akan terjadi apa-apa. Tapi sekarang bagaimana kalau kita punya objek baru dari class yang mengimplementasikan interface Phone juga.

Kita sebut saja objek baru tersebut adalah iPhoneX yang merupakan instance dari class IPhone.

Phoneuser menggunakan objek iphonex

Maka objek iPhoneX tidak akan bisa diberikan kepada objek PhoneUser. Karena di konstruktornya dia cuma bisa pakai Xiaomi saja.

Jadi.. mengapa kita harus pakai interface?

Interface akan membuat si objek PhoneUser bisa menggunakan objek handphone apapun, dengan syarat objek handphone tersebut harus mengimplementasikan method dari interface Phone.

Referensi :

https://ndoware.com/paradigma-pemrograman.html/embed#?secret=6aJieVawvS

https://blog.devhoz.com/pegertian-serta-macam-macam-paradigma-pemrograman/embed/#?secret=yGNxTFiv5m

Java OOP – Abstract Class

Apa itu Class Abstrak?

Class abstrak adalah class yang masih dalam bentuk abstrak. Karena bentuknya masih abstrak, dia tidak bisa dibuat langsung menjadi objek.

Sebuah class agar dapat disebut class abstrak setidaknya memiliki satu atau lebih method abstrak.

Method abstrak adalah method yang tidak memiliki implementasi atau tidak ada bentuk konkritnya.

Kelas abstrak digunakan untuk membuat sebuah kelas yang memiliki method yang belum jelas implementasinya. Berikut ini aturan nya :

  1. Jika sebuah kelas memiliki method abstrak maka kelas itu harus menjadi kelas abstrak.
  2. Sebuah kelas abstract dapat saja memiliki method yang tidak abstract
  3. Jika sebuah kelas abstrak diturunkan menjadi kelas konkret, maka semua method abstrak dari kelas abstrak haruslah ditulis ulang / dibuat ulang di kelas konkretnya dan diberi detail dari methodnya.
  4. Jika method abstrak di turunkan dan kelas turunannya adalah kelas abstrak, maka tidak perlu menulis ulang method yang abstrak.

Mengapa Harus Method Abstract?

Kita tahu, class abstrak adalah kelas murni (tanpa objek) dan tidak boleh memiliki objek (tidak boleh ada instansiasi) sehingga belum bisa digunakan secara langsung. Sebagai kelas basis kelas ini hanya berisi variable – variable umum dan deklarasi method tanpa detail implementasi. Kelas ini digunakan sebagai basis bagi penururnan kelas – kelas lainnya, sehingga tidak dapat diinstansi secara langsung menjadi objek. Class abstract bisa digunakan apabila ia dibentuk menjadi konkrit.

Perhatikan contoh ini:

Kedua class tersebut merupakan calss biasa. Sekarang mari kita coba buat objek dengan class Database.

Ini akan valid, tapi sebenarnya objek db tidak bisa digunakan. Saat kita memanggil method getTableName() si class Database akan bingung. Karena belum jelas, bagaimana metode untuk mengambil nama tabel di database dan database apa yang akan dipakai. Oleh karena itu, class Database sebaiknya dibuat menjadi abstrak agar tidak bisa digunakan untuk membuat objek.

Cara Membuat Class Abstract di Java?

Cara membuat class abstrak adalah dengan memberikan kata kunci abstract kepada class
dan method yang ingin dijadikan abstrak.

Contoh :

  1. BangunDatar4120005.java

2. persegi4120005.java

3. segitiga4120005.java

3. lingkaran4120005.java

4. main4120005.java

Outputnya :

POLIMORFISME

Polimorfisme terbagi menjadi dua suku kata yaitu, Poly yang berartibanyak dan Morfisme yang berarti bentuk. Dalam ilmu sains, Polimorfisme (polymorphism) adalah sebuah prinsip dalam biologi di mana organisme atau spesies memiliki banyak bentuk serta tahapan (stages). Prinsip tersebut diterapkan juga pada bahasa Java.

Polimorfisme dalam OOP merupakan sebuah konsep OOP di mana class memiliki banyak “bentuk” method yang berbeda, meskipun namanya sama. Maksud dari “bentuk” adalah isinya yang berbeda, namun tipe data dan parameternya berbeda.

Polimorfisme juga dapat diartikan sebagai teknik programming yang mengarahkan kamu untuk memprogram secara general daripada secara spesifik. Contohnya kita memiliki tiga class yang berbeda yaitu: “Kelinci”, “Kucing”, dan “Sapi”. Di mana ketiga class tersebut merupakan turunan dari class “Hewan”.

Sejalan dengan contoh yang diberikan, kamu diharapkan dapat mengerti dan memahami konsep polimorfisme itu sendiri.

Polimorfisme pada Java memiliki 2 macam yaitu diantaranya:

  1. Static Polymorphism (Polimorfisme statis).
  2. Dynamic Polymorphism (Polimorfisme dinamis).

Perbedaan keduanya terletak pada cara membuat polimorfisme. Polimorfisme statis menggunakan method overloading, sedangkan polimorfisme dinamis menggunakan method overriding

Jika sebelumnya kamu belum tahu perbedaan antara method overloading dan method overriding, maka kita akan bahasa juga perbedaan dari keduanya.

Perbedaan Method Overloading dan Method Overriding

Method overloadingterjadi pada sebuah class yang memiliki nama method yang sama tapi memiliki parameter dan tipe data yang berbeda.

Ingat! Intinya dalam sebuah class memiliki method yang sama, namun parameter dan tipe data yang berbeda. 

Tujuan dari method overloading yaitu memudahkan penggunaan atau pemanggilan method dengan fungsionalitas yang mirip.

Aturan Method Overloading

  • Nama method harus sama dengan method lainnya.
  • Parameter haruslah berbeda.
  • Return boleh sama, juga boleh berbeda.

Berikut contohnya :

Dan iniilah outputnya :

Telusuri Kode
Coba perhatikan kode program di atas!

Pada class Cetak.java memiliki 2 method yang sama yaitu maxNumber(). Tapi parameter dan tipenya berbeda, yaitu:

  • static double maxNumber(double a, double b)
  • static int maxNumber(int a, int b)

Yang pertama memiliki parameter dan tipe data double, sedangkan satunya lagi memiliki parameter dan tipe data int. Hal ini jelas berbeda.

Method Overriding

Lalu Polimorfisme yang dinamis seperti apa? Polimorfisme dinamis identik dengan menggunakan pewarisan (inheritance), implementasi interface bahkan abstrak class.

Untuk inheritance sendiri sudah dibahasa sebelumnya. Atau kamu bisa kunjungi linknya di awal tadi. Adapun pengertian dari interface dan abstrak.

Interface adalah class kosong yang berisi nama-nama method dan nantinya harus diimplementasikan pada class lain. Dalam pengimplementasiannya, tiap-tiap class akan mengimplementasikan secara berbeda dengan nama method yang sama.

Sebagai contoh kita akan membuat contoh program menghitung luas dan keliling bangun datar.

Perhatikan diagram di bawah ini :

Perhatikan diagram ini :

Pada diagram tersebut, terdapat class BanungDatar yang memiliki tiga subclass, yaitu: Persegi, Lingkaran, dan Segitiga.

Setiap class memiliki method yang sama yaitu luas() dan keliling(). Akan tetapi method-method ini memiliki isi rumus yang berbeda.

Mari kita coba buat dalam progarm Java :

Buatlah class baru dengan nama BangunDatar, kemudian isi dengan kode berikut:

Buatlah class baru dengan nama Persegi, kemudian isis dengan kode berikut ini :

Buatlah class baru dengan nama Segitiga, kemudian isi dengan kode berikut :

Buatlah class baru dengan nama LIngkaran, kemudian isi dengan kode berikut ini :

Terakhir, buatlah file main, dengan isi sebagai berikut :

Class yang bisa dijalankan hanyalah class Main, karena ia memiliki method main.

Untuk menjalankannya, silahkan klik kanan pada class main.. lalu pilih Run File.

Maka hasilnya:

Sekian dulu ya, terimakasih, semoga bermanfaat….

Referensi :

Pengertian Polimorfisme Dalam Pemrograman Java

https://www.petanikode.com/java-oop-polimorfisme/

Konsep Java OOP: Inheritance

Apa Itu Inheritance Dan Mengapa Penting Dipahami Dalam Belajar Java?

Dalam belajar Java untuk pemula, memahami Inheritance adalah hal yang sangat penting.
Inheritance merupakan salah satu dari 4 konsep dari pemrograman Java yang fundamental
selain dari Encapsulation, Polymorphism dan Abstraction.Inheritance bersifat krusial karena
memiliki efek langsung pada bagaimana anda mendesain class-class.

Konsep ini sebenarnya memiliki tujuan yaitu ketika anda membuat suatu class maka anda
hanya perlu menspesifikasikan apa yang menjadi perbedaan antara suatu class dengan class
lainnya, kemudian secara otomatis inheritance ini akan memberikan akses otomatis
terhadap informasi yang terkandung dari class lainnya.

Keyword untuk inheritance atau pewarisan adalah extends.

Class yang mewariskan disebut dengan superclass dan class yang menerima pewarisan
disebut dengan subclass.

Class Object Sebagai Superclass Tertinggi

Pada posisi top level puncak class pada Java ditempati oleh class Object, nama lengkapnya
java.lang.Object, yang merupakan superclass dari semua class yang ada pada Java, baik itu
class yang ada pada Java library maupun pada class yang anda buat.

Mungkin anda tidak menyadari, jadi sebenarnya ketika anda membuat class misalnya:
public class Buah {
}

class Buah tersebut inherit dari class Object. Namun tidak secara eksplisit dituliskan. Jika
ingin menuliskan bisa saja dengan:
public class Buah extends Object{
}

Terus apa buktinya kalau class Buah inherit dari class Object?
Lihat contoh kode program simpel di bawah ini:

Salah satu buktinya adalah class Buah bisa menggunakan method dari class Objek.

Bagaimana Cara Kerja Inheritance ?

Suatu subclass yang menerima pewarisan dari superclass-nya akan bisa menggunakan fieldfield serta method-method dari superclass-nya, selama acces modifiernya memenuhi syarat
untuk itu.

Misalkan dalam Game, kita akan membuat class-class musuh dengan perilaku yang berbeda.

Lalu kita membuat kode untuk masing-masing kelas seperti ini :

File : Zombie.java

File : Pocong.java

File : Burung.java

Apakah boleh seperti ini?
Ya, boleh-boleh saja. Akan Tapi tidak efektif, karena kita menulis berulang-ulang properti
dan method yang sama.
Bagaimana solusinya?
Kita harus menggunakan inheritance.
Mari kita lihat member class yang sama:

Setelah menggunakan inheritance, maka akan menjadi seperti ini:

Class Enemy adalah class induk yang memiliki anak Zombie, Pocong, dan Burung.
Apapun properti yang ada di class induk, akan dimiliki juga oleh class anak.
Lalu bagaimana bentuk kodenya dalam Java?
Pada program Inheritance, di class anak, kita menggunakan kata kunci extends untuk
menyatakan kalau dia adalah class turunan dari Enemy.
Bentuk kodenya akan seperti ini:

Lalu, bila ingin membuat objek dari class-class tersebut, Kita bisa membuatnya seperti ini:

Membuat Program Inheritance

Disini saya akan membuat contoh program Inheritance yang menyimpan data dari mahasiwa yang berbeda:

  1. Buka Netbeans, Buat Projek baru dengan nama Inheritance
  2. Buatlah package baru bernama inheritance di dalam Source Packages.
  3. Berikutnya buatlah class-class baru yaitu, DataMahasiswa.java (Superclass), mahasiswa1 (subclass), mahasiswa2 (subclass), dan main.java
  4. Untuk subclass sendiri bisa lebih dari 2, karena disini contoh saja maka saya hanya membuat 2 subclass

File : inheritance/DataMahasiswa.java

File : mahasiswa1.java

File : mahasiswa2.java

File : main.java

Dan berikut hasil dari Outputnya.

Sekian dan terimakasih, Semoga bermanfaat.

Referensi

Belajar Memahami Konsep Inheritance Pada Java

https://www.petanikode.com/java-oop-inheritance/

Konsep Java OOP : Encapsulation

Tahukah kamu apa itu encapsulation? Disini kita akan membahas tentang apa itu encapsulation, access modifier, dan constructor beserta contoh”nya.

PENGERTIAN ENCAPSULATION

Encapsulation adalah sebuah proses pemaketan / penyatu data bersama metode – metodenya, dimana hal ini bermanfaat untuk menyembunyikan rincian – rincian implementasi dari pemakai. Maksud dari encapsulation ini adalah untuk menjaga suatu proses program agar tidak dapat diakses secara sembarangan atau di intervensi oleh program lain. Konsep encapsulation sangat penting dilakukan untuk menjaga kebutuhan program agar dapat diakses sewaktu-waktu, sekaligus menjaga program tersebut. Dalam Java encapsulation dapat dilakukan dengan pembentukan kelas – kelas, menggunakan keyword class.

Dalam kehidupan sehari hari enkapsulasi dapat dimisalkan sebagai arus listrik pada generator, dan sistem perputaran generator untuk menghasilkan arus listrik. Kerja arus listrik tidak mempengaruhi kerja dari sistem perputaran generator, begitu pula sebaliknya. Karena didalam arus listrik tersebut, kita tidak perlu mengetahui bagaimana kinerja sistem perputaran generator, apakah generator berputar kebelakang atau ke depan atau bahkan serong. Begitu pula dalam sistem perputaran generator, kita tidak perlu tahu bagaimana arus listrik, apakah menyala atau tidak.

Di dalam Java, pengkapsulan dapat dilakukan dengan pembentukan kelas-kelas menggunakan keyword class. Sedangkan penyembunyian informasi dapat dilakukan dengan pengendalian terhadap pengaksesan pembentuk kelas dengan keyword-keyword untuk kendali pengaksesan default, private, protected, dan public. Penyembunyian informasi deilakukan dengan implementasi penerapan kendari menggunakan keyword private dan protected pada elemen data.

Ada 2 manfaat enkapsulasi :

  1. Penyembunyian Informasi (information hiding)

Hal ini mengacu kepada perlindungan terhadap implementasi obejk internal. Objek tersebut dari interface public dan bagian private yang merupakan kombinasi data dan metode internal. Manfaat utamanya adalah bagian internal dapat berubah tanpa mempengaruhi bagian-bagian program yang lain.

2. Modularitas

Modularitas berarti objek dapat dikelola secara independen. Karena kode sumber bagian internal objek dikelola secara terpisah dari antarmuka, maka Kita bebas melakukan modifikasi yang tidak menyebabkan masalah pada bagian-bagian lain dari sistem. Manfaat ini mempermudah mendistriibusikan objek-objek dari sistem.

APA ITU ACCESS MODIFIER

Pada encapsulation, Diwujudkan dalam bentuk class, dan didalam class sendiri terdapat method yang memiliki hak akses tertentu terhadap enviroment/ lingkungkannya. Pada hubungan inheritance, semua member di dalam class induk akan bisa diakses oleh class anak (subclass), kecuali memeber tersebut diberikan modifier private.

Perlu diingat:

Modifier tidak hanya bisa diberikan kepada member saja. Tapi juga bisa diberikan kepada interface, enum, dan class itu sendiri. Hak akses ini disebut Access Modifier. Yang terdiri dari private, protected, dan public.

  1. Private = Memberikan hak akses hanya kepada class tersebut.
  2. Protected = Memberikan hak akses kepada anggota classnya dan turunannya.
  3. Public = memberikan hak akses kepada property dan method agar dapat digunakan di luar class tersebut.

Apabila kita tidak menggunakan tiga kata kunci tersebut, maka member atau class itu tidak menggunakan modifier (no modifier). Masing-masing modifier akan menentukan di mana saja member bisa diakses.

Berikut contoh masing – masing modifier:

  1. Public

Dari contoh diatas kita memberikan modifier public pada class mahasiswa, dengan demikian kita bisa mengimpor file mahasiswa.java di atas ke file test.java, seperti di bawah ini:

Pada class diagram modifier public digambarkan dengan symbol (+).

2. Private

Pada contoh di atas kita memberikan modifier private pada attribute username. Seperti yang sudah dijelaskan di atas, bahwa modifier private hanya bisa diakses oleh class itu sendiri. Apabila kita mencoba mengaksesnya secara langsung di file lain maka akan terjadi error, lihat gambar di bawah ini:

Lalu bagaimana cara kita mengakses file tersebut dari luar classnya?

Kita bisa memanfaatkan method setter() dan getter(), karena method tersebut akan selalu diberi modifier public, contoh :

Pada class diagram, modifier private digambarkan dengan symbol ().

3. Protected

Pada contoh diatas kita memberikan modifier protected pada attribute username, sama halnya dengan protected kita tidak bisa mengakses attribute tersebut dari luar class atau file. Maka kita harus memanfaatkan method setter() dan getter(), contoh :

Pada class diagram modifier protected digambarkan dengan symbol (#).

APA ITU CONSTRUCTOR?

Constructor adalah method khusus yang akan dieksekusi pada saat pembuatan objek (instance). Biasanya method ini digunakan untuk inisialisasi atau mempersiapkan data untuk objek.

Cara membuat constructor adalah dengan menuliskan nama method constructor sama seperti nama class. Pastikan memberikan modifier public kepada Constructor, karena ia akan dieksekusi saat pembuatan objek (instance).

Sehingga hasil outputnya akan sseperti ini :

CONSTRUCTOR DENGAN PARAMETER

Constructor biasanya digunakan untuk initialize (menyiapkan) data untuk class. Untuk melakukan ini, kita harus membuat parameter sebagai inputan untuk constructor.

Contoh kodenya :

Dan berikut cara mengakses di file lain dan contoh outputnya :

IMPLEMENTASI KONSEP ENCAPSULASI

Berikut Contoh outputnya :

REFERENSI

https://www.google.com/amp/s/hildanesia.home.blog/2018/11/23/konsep-dasar-oop-pada-java/amp/

https://www.petanikode.com/tutorial/java/

KONSEP DASAR OOP JAVA PADA JAVA

  1. Class & Object

Class merupakan blueprint atau cetakan untuk menciptakan suatu object. Class biasa dipergunakan untuk membungkus berbagai attribute dna method yang saling berhubungan menjadi sebuah grub agar lebih terorganisir sebagai satu kesatuan.

Sedangkan objek adalah sebuah variable yang merupakan instance atau perwujudan dari class. Instance bisa diartikan sebagai wujud dari class atau representasinya tadari class. Class berisi definisi variable danfungsi yang menggambarkan sebuah object.

DalamOOP :

  • Variable disebut atribut atau property
  • Fungsi disebut method

ContohClass :

Lalu, kitabiasanya membuat object (instance) seperti ini:

NamaClassnamaObj = new NamaClass();

Kata kuncinewberfungsiunutkmembuat object barudari class tertentu.

Aetelahmembuat object, kita bisa mengakses atribut dan method dari object tersebut.

Contoh :

tanda titik (.) berfungsi untuk mengakses attribute dan method.

  1. Attribute

Attribute merupakan ciri – ciri yang melekat pada suatu Object. Berikut adalah struktur sintaks atribut :

[acces_modifier] [tipe_data] [nama_variabel] = [value]

Keterangan :

  1. [acces_modifier] digunakan untuk memberi batasan hak class maupun method. Pada umumnya berisi public, protected, dan private.
  2. Public = berarti memberikan akses kepada property dan method agar dapat dipergunakan di luar class tersebut.
  3. Protected = berarti memberikan hak akses kepada anggota classnya dan turunannya.
  4. Private = berarti memberikan hak akses hanya kepada class tersebut.
  5. [tipe-data] menjelaskan apakah variable tersebut String, int, double, dan jenis tipe data lainnya.
  6. [nama_variabel] merupakan sebutan atau definisi variable tersebut, nama_variabel bebas ditentukan oleh programmer itusendiri.
  7. [value] merupakannilaidari variable tersebut.
  • Method

Merupakan fungsi – fungsi yang digunakan untuk memanipulasi nilai – nilai pada attribute dan untuk melakukan hal – hal yang dapat dilakukan oleh object itu sendiri. Dalam hal ini method dapat berisi sekumpulan program yang telah terbungkus. Dengan method, kita bisa memanggil kumpulan program tersebut hanya dengan memanggil nama methodnya sehingga pekerjaan jadi lebih singkat dan tidak boros dalam menuliskan program. Secara umum, method ada dua macam, yaitu method yang mengembalikan nilai dan yang tidak mengembalikan nilai. Method yang mengembalikan nilai biasanya berupa sub program berjenis fungsi. Sedangkan, method yang tidak mengembalikan nilai biasanya sub program berjenis prosedur.

2. BagaimanaMenentukan Attribute dan Method dari Object?

Seperti yang sudah dijelaskan diatas. Object memiliki data (attribute) dan operasi (Fungsi).

Kuncinya :

  • Attribute itu seperti ciri – ciri dari object.
  • Method itu seperti tingkah laku atau operasi.

Contoh :

Misalkan kita membuat class dari pemain Bola :

Apa ciri – ciri dari pemain bola atau data yang dijadikan attribute?

  • Namapemain
  • Berat
  • Tinggi
  • Energy
  • Kecepatan
  • Dll

Lalu apa tingkah laku atau operasi (fungsi) yang bisa dilakukan?

  • Berlari
  • Menendang
  • Tekling
  • Menyundul
  • Dll.

3. Mengenal Class Diagram

Class Diagram adalah sebuah diagram yang menggambarkan hubungan antar class. Class Diagram dapat kita buat dengan aplikasi perancangan (CASE), seperti StarUML. Sebuah Class digambarkan dengan sebuah table 1 kolom dan 3 baris. Baris pertama berisi nama class; Baris kedua berisi attribute; dan Baris ketiga berisi method.

Keterangan :

  1. Bagian atas: Berisi Nama kelas, bagian ini selalu diperlukan, baik ketika berbicara tentang classifier atau objek.
  2. Bagian tengah: Berisi Atribut-atribut kelas, bagian ini digunakan untuk menjelaskan kualitas kelas. Ini hanya diperlukan saat menggambarkan contoh kelas tertentu. Secara singkat, Atribut dapat menjelaskan rentang nilai sifat tersebut.
  3. Bagian bawah: Termasuk Operasi kelas (metode). Ditampilkan dalam format daftar, setiap operasi mengambil jalurnya sendiri. Operasi menggambarkan bagaimana suatu kelas berinteraksi dengan data.
  4. Tanda (+) merupakan symbol dari akses modifier, setiap akses modifier memiliki symbol yang berbeda, berikut contohnya:

Implementasi diagram Class Player diatas pada program java:

Referensi 🙂

Pemrograman Berorientasi Objek (PBO) Dalam Paradigma Pemrograman

Sebelum mempelajari PBO yang merupakan salah satu jenis dari paradigma pemrograman kita harus mengetahui apa itu paradigma pemrograman.

Paradigma juga ada dalam ilmu komputer yaitu sebuah Paradigma Pemrograman adalah cara untuk mengklasifikasikan bahasa pemrograman berdasarkan fitur mereka. Bahasa dapat diklasifikasikan menjadi beberapa paradigma. Pedoman dasar pemrograman, biasanya diterapkan oleh bahasa program yang dipakai.

Dalam pemrograman ada 5 paradigma yang harus kalian ketahui, yaitu:

a. Pemrograman Fungsional

Pemrograman jenis ini memiliki cara pandang dalam menyelesaikan suatu masalah pemrograman sebagai suatu komposisi fungsi yang memetakan masalah ke jawaban yang diiinginkan.

b. Pemrograman Prosedural atau Iteratif

Berbeda dengan pemrograman fungsional, pada pemrograman prosedural atau iteratif ini, pengguna atau user harus memberikan serangkaian perintah yang berurutan untuk menyelesaikan suatu masalah pemrograman.

c. Pemrograman Berorientasi Objek

Lain pula halnya dengan pemrograman yang berorientasi pada objek. Sesuai dengan namanya, pemrograman ini menyelesaikan suatu masalah yang ada dengan berorientasi kepada objek karena seluruh data serta fungsi yang ada di dalamnya dikemas dalam suatu kelas atau objek-objek yang terpisah ke beberapa bagian tertentu.

d. Pemrograman Berorientasi Objek

Lain pula halnya dengan pemrograman yang berorientasi pada objek. Sesuai dengan namanya, pemrograman ini menyelesaikan suatu masalah yang ada dengan berorientasi kepada objek karena seluruh data serta fungsi yang ada di dalamnya dikemas dalam suatu kelas atau objek-objek yang terpisah ke beberapa bagian tertentu.

e. Paradigma Konkuren

Paradigma ini didasari oleah kenyataan bahwa dalam keadaan nyata, sebuah sistem komputer harus menangani beberapa program (task) yang harus dieksekusi secara bersamaan dalam sebuah lingkungan baik mono ataupun multi processor.

Nah!!! setelah mengetahui macam – macam paradigma dalam pemrograman sekarang kita akan lebih mendalami salah satu dari jenis – jenisnya yaitu Pemrograman Berorientasi Objek.

  1. Pengertian Pemrograman Berorientasi Objek

Sebelum mengetahui kenapa perlu belajar Pemrograman Berorientasi Objek kita harus mengetahui pengertian Pemrograman berorientasi objek. Pemrograman berorientasi objek (OOP) merupakan paradigma pemrograman yang menggunakan “objek” – struktur data yang terdiri dari datafields dan metode bersama dengan interaksi mereka – untuk merancang aplikasi dan program komputer. Teknik pemrograman dapat mencakup fitur seperti data abstraksi, enkapsulasi, modularitas, polimorfisme, dan pewarisan. Banyak bahasa pemrograman modern sekarang mendukung OOP.

OOP (Object Oriented Programming) adalah suatu metode pemrograman yang berorientasi kepada objek. Tujuan dari OOP adalah untuk mempermudah pengembangan dalam program dengan cara mengikuti model yang telah ada dalam kehidupan sehari – hari. Artinya setiap bagian dari suatu masalah adalah objek. Dan objek tersebut merupakan bagian dari beberapa objek didalamnya.  Contohnya ibaratkan mobil. Mobil adalah objek. Dari mobil tersebut terdapat objek lagi seperti ban, mesin, spion, dll. Mobil adalah object, yang mana terdiri dari object – object lain. Dari pengertian oop dan contohnya yang saya berikan. Bisa diartikan bahwa oop merupakan object yang terdiri dari sekumpulan object kecil, yang mana object kecil tersebut sebagai pendukung dari object besar.

2. Keunggulan Pemrograman Berorientasi Objek

  • Meningkatkan produktivitas

Class dan Object pada PBO yang dibuat untuk suatu problem masih dapat dipakai lagi untuk problem lainnya yang menggunakan objek tersebut (reusable).

  • Kecepatan pengembangan

karena sistem yang didevelop dengan cara yang baik dan benar pada saat menganalisis dan merancang akan menjadikan coding yang dibuat dapat diminimalisir kesalahannya.

  • Kemudahan pemeliharaan

Karena dengan model yang ebrorientasiobjek, pola-pola yang cenderung tetap dan stabil dapat dipisahkan dan pola-pola yang bisa saja berubah.

  • Adanya konsistensi

Karena sifat inheritance dan penggunaan fase yang sama pada saat menganalisis, merancang maupun coding.

  • Meningkatkan kualitas perangkat lunak

karena pendekatan pengembangan selalu dalam keadaan yang real dan adanya konsistensi pada saat pengembangannya, perangkat lunak yang dihasilkan akan mampu memenuhi kebutuhan pemakai serta mempunyai sedikit kesalahan.

3. Konsep Dasar OOP

Jika ingin mempelajari OOP java, tentu kita harus mengetahui terlebih dahulu mengenai konsep oop pada java. Konsep ini adalah dasar dari OOP. Berikut ini merupakan Konsep OOP pada java:

  1. Class = merupakan “blueprint” atau “cetakan” untuk menciptakan suatu  object. Class biasa dipergunakan untuk membungkus berbagai attribute dan method yang saling berhubungan menjadi sebuah group agar lebih terorganisir sebagai satu kesatuan. Contoh : Class Kendaraan, Class Bangunan, Class Handphone, dll
  2. Object = adalah instance dari class. Jika class secara umum merepresentasikan (template) sebuah object, sebuah instance adalah representasi nyata dari class itu sendiri.
  3. Abstraksi = Proses representasi data dan program dalam bentuk sama dengan pengertiannya (semantik) dengan menyembunyikan rincian atau detail implementasi.
  4. Encapsulation = Merupakan pembungkus, artinya membungkus class dan menjaga apa saja yang ada didalam class tersebut. Baik method ataupun atribut. Agar tidak bisa diakses oleh class lainnya.
  5. Polimorfisme = (Perbedaan Bentuk) kemampuan objek yang berbeda kelas dalam pewarisan untuk merespon secara berbeda terhadap suatu pesan yang sama dan memutuskan method mana yang akan diterapkan kepada sebuah objek.
  6. Inheritance = Pewarisan. artinya sebuah class dapat menurunkan property dan method yang dimilikinya kepada class lain. Kemudian Inheritance sendiri mempunyai keyword yaitu keyword extends.
  7. Method = suatu operasi berupa fungsi-fungsi yang dapat dikerjakan oleh suatu object. Method didefinisikan pada class akan tetapi dipanggil melalui object. Metode menentukan perilaku objek, yakni apa yang terjadi ketika objek itu dibuat serta berbagai operasi yang dapat dilakukan objek sepanjang hidupnya.
4. Bahasa Pemrograman Apa Saja yang Didukung Oleh OOP?

Adapun Bahasa pemrograman yang mendukung pemrograman berorientasi objek yang pastinya sering di dengar oleh Anda yang menekuni IT. Dan Bahasa program tersebut adalah sebagai berikut.

  1. Bahasa Visual Foxpro, yaitu bahasa pemrograman berorientasi objek dan procedural keluaran Microsoft.
  2. Java, dijalankan oleh komputer bahkan telepon genggam.
  3. C++, yang merupakan perkembangan lanjutan dari Bahasa pemrograman C.
  4. Bahasa pemrograman Pascal, dibuat oleh Profesor Niklaus Wirth sebagai alat bantu pengajaran pemrograman komputer kepada mahasiswa oleh si professor.
  5. Bahasa pemrograman Smalltalk, dalam Bahasa pemrograman ini objek satu dapat saling berkomunikasi dengan objek lainnya melalui messages atau berita.
  6. Bahasa Ruby, merupakan bahasa pemrograman dinamis yang berbasis script dan yang pasti berorientasi pada objek.
  7. Bahasa pemrograman Python, sebuah bahasa pemrograman yang bisa berjalan pada berbagai platform perangkat lunak.
  8. PHP, banyak digunakan untuk membuat website dinamis.
  9. Perl, merupakan bahasa pemrograman serbaguna yang pertama kali diciptakan oleh Larry wall pada mesin Unix.

Banyak orang tau bahwa pemrograman berorientasi objek selalu identik dengan bahasa Java. Bahasa Java sendiri adalah bahasa yang paling konsisten dalam menjalankan paradigma pemrograman berorientasi objek.

Pada era sekarang ini, metode berorientasi objek banyak digunakan karena metodologi yang sebelumnya banyak menimbulkan problem yakni terdapat kesulitan pada saat merubah hasil dari satu fase pengembangan ke fase berikutnya, contohnya pada metode pendekatan yang terstruktur, jenis software yang dikembangkan pada era ini sangat berbeda dengan software pada masa lalu. Software yang dikembangkan pada saat ini sangat beragam (aplikasi e-commerce, utility , real-time, , dan lain-lain) dengan platform yang tidak sama, sehingga menimbulkan kebutuhan akan metodologi pengembangan yang dapat mengkoordinir ke semua jenis software yang dinginkan tersebut.

REVERENSI 🙂

markey.id | Konsep Dasar Pemrograman Berorientasi Objek

ayoksinau.com | Pemrograman Berorientasi Objek

kajianpustaka.com | Pemrograman Berorientasi Objek (OOP)

blog.devhoz.com | Pegertian Serta Macam-Macam Paradigma Pemrograman

Create your website with WordPress.com
Get started