TUGAS 1

PENJELASAN MENGENAI PERBEDAAN ANTARA PEMROGRAMAN TERSTRUKTUR 
DENGAN PEMROGRAMAN BERBASIS OBJEK

Berikut ini perbedaan antara Pemrograman Terstruktur dengan Pemrograman Berbasis Objek
Ciri dari Pemrograman Terstruktur:
1. Memecah program dalam fungsi dan data
2. Memiliki ciri Sequence (berurutan), Selection (pemilihan) dan Repetition (perulangan) 
3. Struktur program rumit karena berupa urutan proses dan fungsi-fungsi  
4. Re-use kode program kurang
5. Efektif digunakan untuk menyelesaikan masalah kecil dan tidak cocok untuk menyelesaikkan masalah yang rumit, karena nantinya akan kesulitan menemukan solusi permasalahan ketika terjadi error  
6. Mudah diawal, namun kompleks diproses selanjutnya
7. Eksekusi lebih lambat karena setiap perintah dikerjakan berurutan  

Ciri dari Pemrograman Berbasis Objek:
1. Menggabungkan fungsi dan data dalam kelas – kelas atau objek - objek
2. Memiliki ciri Encapsulation (pengemasan), Inheritance (penurunan sifat) dan Polymorphism (perbedaan bentuk dan perilaku)
*Penjelasan: 
2.1 Encapsulation atau Enkapsulasi adalah sebuah metoda untuk mengatur struktur class dengan cara menyembunyikan alur kerja dari class tersebut.
Struktur class yang dimaksud adalah property dan method. Dengan enkapsulasi, kita bisa membuat pembatasan akses kepada property dan method, sehingga hanya property dan method tertentu saja yang bisa diakses dari luar class. Enkapsulasi juga dikenal dengan istilah ‘information hiding’.
Dengan enkapsulasi, kita bisa memilih property dan method apa saja yang boleh diakses, dan mana yang tidak boleh diakses. Dengan menghalangi kode program lain untuk mengubah property tertentu, class menjadi lebih terintegrasi, dan menghindari kesalahan ketika seseorang ‘mencoba’ mengubahnya. Programmer yang merancang class bisa menyediakan property dan method khusus yang memang ditujukan untuk diakses dari luar. Contohnya akan diberikan pada contoh kode di bawah.
2.2 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 public yang bisa diakses oleh class anak. Contohnya akan diberikan pada contoh kode di bawah.
2.3 Polymorfism adalah konsep dimana terdapat banyak class yang memiliki signature method yang sama. Implementasi dari method-method tersebut diserahkan kepada tiap class, akan tetapi cara pemanggilan method harus sama. Agar kita dapat ‘memaksakan’ signature method yang sama pada banyak class, class tersebut harus diturunkan dari sebuah abstract class atau object interface. Contohnya akan diberikan pada contoh kode di bawah. 
3. Struktur program ringkas, cukup dengan membuat Objek dan class lalu bekerja berdasarkan object dan class tersebut.
4. Kode program sangat re-usable. object dan class dapat digunakan berkali-kali, sehingga dapat menghemat space memori.   
5. Efektif digunakan untuk menyelesaikan masalah besar, karena OOP terdiri dari class-class yang memisahkan setiap kode program menjadi kelompok - kelompok kecil, sesuai dengan fungsinya
6. Sulit diawal (karena harus membuat class) namun selanjutnya akan terasa mudah dan cepat
7. Eksekusi lebih cepat karena dieksekusi bersamaan, program hanya mengatur Objek, properties dan method-nya saja   

Berikut ini contoh Kode Program Luas Beberapa Bangun Datar dengan Pemrograman Terstruktur serta Pemrograman Berbasis Objek:
Dengan Pemrograman Terstruktur (Bahasa C):
#include<stdio.h>
#include<stdlib.h>

void LuasPersegi(float sisiPersegi)
{
    float hasil = (float) sisiPersegi * sisiPersegi;
    printf("Luas Persegi dengan sisi %.2f adalah %.2f\n", sisiPersegi, hasil);
}

void LuasSegitiga(float alasSegitiga, float tinggiSegitiga)
{
    float hasil = (float) 0.5 * alasSegitiga * tinggiSegitiga;
    printf("Luas Segitiga dengan alas %.2f dan tinggi %.2f adalah %.2f\n", alasSegitiga, tinggiSegitiga, hasil);
}

void LuasLingkaran(float jariLingkaran)
{
    float hasil = (float) 3.14 * jariLingkaran * jariLingkaran;
    printf("Luas Lingkaran dengan jari-jari %.2f adalah %.2f\n", jariLingkaran, hasil);
}
int main()
{
    
    float sisiPersegi= 4 ;
    float alasSegitiga= 5;
    float tinggiSegitiga = 4;
    float jariLingkaran = 7;
    LuasPersegi(sisiPersegi);
    LuasSegitiga(alasSegitiga, tinggiSegitiga);
    LuasLingkaran(jariLingkaran);
    
}
 
Dengan Pemrograman Berbasis Objek (Bahasa Java):
package tugas1;

public class segitiga{
    public float tinggi;
    public float alas;
    public float LuasSegitiga()
    {
        float hasil;
        hasil= (float) 0.5 * this.alas * this.tinggi;
        return hasil;
    }
    public void tampilHasilSegitiga() 
    {
        System.out.println("Luas Segitiga dengan alas " + this.alas + " dan tinggi " + this.tinggi + " yaitu: " + this.LuasSegitiga());
    }

}

package tugas1;

public class lingkaran {
    public float jari;
    public float LuasLingkaran()
    {
        float hasil;
        hasil= (float) 3.14 * this.jari * this.jari;
        return hasil;
    }
    public void tampilHasilLingkaran() 
    {
        System.out.println("Luas Lingkaran dengan jari-jari " + this.jari + " yaitu: " + this.LuasLingkaran());
    }
}

package tugas1;

public class persegi {
    public float sisi; 
    public float LuasPersegi() 
    {
        float hasil;
        hasil = (float) this.sisi * this.sisi;
        return hasil;
    }
    
    public void tampilHasilPersegi() 
        System.out.println("Luas Persegi dengan sisi " + this.sisi + " yaitu: " + this.LuasPersegi());
    }
    
}


package tugas1;

public class contoh {
    public static void main(String[] args)
    {
        persegi pic1 = new persegi();//instantitasi atribut
        pic1.sisi = 4;
        pic1.tampilHasilPersegi();
        segitiga pic2= new segitiga();
        pic2.alas = 5;
        pic2.tinggi=4;
        pic2.tampilHasilSegitiga();
        lingkaran pic3=new lingkaran();
        pic3.jari=7;
        pic3.tampilHasilLingkaran();
    }
}


 
Contoh kode yang menunjukkan sifat Encapsulation dan Inheritance pada Pemrograman berbasis objek (Bahasa Java):  -Bapak.java
 package a;

public class Bapak {
    private String nama = "Bapak";
    private String alamat = "Sleman";

    public String getNama() {
        return nama;
    }
   
    private String getNamaPrivate(){
        return nama;
    }
   
    protected String getAlamat(){
        return alamat;
    }
}
-Anak.java
 public class Anak extends Bapak{
   
     public String getNamaPublic(){
         return super.getNama();
     }
// public String getNamaPrivate(){
//         return super.getNamaPrivate();
//       INI AKAN ERROR karena hak akses di parent class untuk method ini private
//     }


     @Override
     public String getAlamat(){
         return super.getAlamat();
     }

    
    public static void main(String args[]) {
        Anak g = new Anak();
        System.out.println("dari method public : " + g.getNamaPublic());
        System.out.println("dari method protected : " + g.getAlamat());

    }
}
Class ini berusaha mengakses method private milik Bapak.java. Walaupun sudah meng extends Bapak tapi karena menggunakan modifier private, siapapun tidak bisa mengaksesnya. Dan berikut ini contoh kode yang menunjukkan sifat Polymorphism pada Pemrograman Berbasis Objek (PBO):
 class Animal{

protected void hello(){
                System.out.println("Hello");
}
               
 protected void move(){
      System.out.println("Animals can move");
   }
  
}

class Dog extends Animal{
 @Override
 public void move(){
      System.out.println("Dogs can walk and run");  }

     
 // method tambahan untuk analisa
                public void bark(){
      System.out.println("Dogs can bark");
   }
       

}

public class Override_Test{

   public static void main(String args[]){
      Animal a = new Animal(); // Animal reference and object
     Animal b = new Dog(); // Animal reference but Dog object

  a.move();
  b.move();


 System.out.println();
 a.hello();
 
   }
}

Komentar

Postingan populer dari blog ini

Tugas 9 - CRUD Menggunakan Framework CodeIgniter

ETS PBO