Jumat, 20 April 2012

TUGAS PBO INHERITANCE DAN POLIMORFISME

TUgas PBO INHERITANCE DAN POLIMORFISME
Oleh : Rizki Fajar Agung 56410130 dan Achmad Syarief 50410094 (2IA14)

INHERITANCE

Inheritance adalah konsep penting dalam pemrograman berorientasi objek. Bila diterjemahkan secara harafiah, artinya adalah Pewarisan.
Istilah Inheritance akan lebih sering digunakan karena istilah ini sudah dikenal luas dalam dunia pemrograman internasional. Fungsi utama inheritance adalah untuk membuat Class baru dari class yang sudah ada.
Inheritance menjadikan suatu class menjadi lebih reusable dalam arti lebih berguna karena dapat digunakan untuk menghasilkan class-class lain yang lebih spesifik. Apabila ada suatu class mewarisi class lain maka dalam definisi class harus ditambakan extends.Pengertian Inheritance disebut juga (Pewarisan)  memakai variabel data fungsi (method) dari kelas yang sudah ada tersebut serta menambah atribut/pelaku yang baru, kelas baru otomatis memiliki variabel atau fungsi yang dimiliki kelas asal.sebagai berikut listing programnya.
LISTING KALKULATOR JAVA
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public class kalkulator extends JFrame implements ActionListener
{

 JLabel label1= new JLabel("Nilai A:");
 JLabel label2= new JLabel("Nilai B");
 JLabel label3= new JLabel("Hasil");
 JLabel label4= new JLabel();
 JTextField n1 = new JTextField();
 JTextField n2 = new JTextField();
 JTextField hasil = new JTextField();
 JButton tambah=new JButton("+");
 JButton kurang=new JButton("-");
 JButton kali=new JButton("*");
 JButton bagi=new JButton("/");
 JPanel panel =new JPanel();
double c;
    public kalkulator()
    {
        setSize(300,300);
        setTitle("Kalkulator");
        panel.setLayout(null);
        setLocationRelativeTo(null);
        label1.setBounds(20, 50,50 , 20);
        label2.setBounds(20, 80, 50, 20);
        n1.setBounds(70, 50, 100, 20);
        n2.setBounds(70, 80, 100, 20);
        tambah.setBounds(20, 120, 50, 20);
        kurang.setBounds(80, 120, 50, 20);
        kali.setBounds(140, 120, 50, 20);
        bagi.setBounds(200, 120, 50, 20);
        label3.setBounds(20, 150, 50, 20);
        label4.setBounds(80, 150, 100, 20);
        tambah.addActionListener(this);
        kurang.addActionListener(this);
        kali.addActionListener(this);
        bagi.addActionListener(this);
        panel.add(label1);
        panel.add(label2);
        panel.add(n1);
        panel.add(n2);
        panel.add(tambah);
        panel.add(kurang);
        panel.add(kali);
        panel.add(bagi);
        panel.add(label3);
        panel.add(label4);
        getContentPane().add(panel);
        setVisible(true);
    }
    public void actionPerformed(ActionEvent e)
    {
        double a=Double.parseDouble(n1.getText());
        double b=Double.parseDouble(n2.getText());
        if(e.getSource()==tambah)
        {
            c=a+b;
            label4.setText(""+c);
        }
        else if(e.getSource()==kurang)
        {
            c=a-b;
            label4.setText(""+c);
        }
        else if(e.getSource()==kali)
        {
            c=a*b;
            label4.setText(""+c);
        }
        else if(e.getSource()==bagi)
        {
            c=a/b;
            label4.setText(""+c);
        }
    }


}

LISTING KONVERSI JAVA
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public class konversi extends JFrame implements ActionListener
{
 JLabel label1= new JLabel("CELCIUS");
 JLabel label2= new JLabel("HASIL CONVERT");
 JTextField celcius = new JTextField();
 JTextField hasilkon= new JTextField();
 JButton kelvin=new JButton("Kelvin");
 JButton fahren=new JButton("Fahrenheit");
 JButton ream=new JButton("Reamur");
 JPanel panel =new JPanel();
 double h;
   public konversi()
   {
        setSize(400,300);
        setTitle("Konversi Suhu");
        panel.setLayout(null);
        setLocationRelativeTo(null);
        label1.setBounds(20, 50,50 , 20);
        celcius.setBounds(70, 50, 100, 20);
        kelvin.setBounds(20, 120, 100, 20);
        fahren.setBounds(140, 120, 100, 20);
        ream.setBounds(250, 120, 100, 20);
        label2.setBounds(20,150,120,25);
        hasilkon.setBounds(140,150,120,20);
        celcius.addActionListener(this);
        kelvin.addActionListener(this);
        fahren.addActionListener(this);
        panel.add(label1);
        panel.add(celcius);
        panel.add(kelvin);
        panel.add(fahren);
        panel.add(ream);
        panel.add(label2);
        panel.add(hasilkon);
        this.getContentPane().add(panel);
        setVisible(true);
   }
    public void actionPerformed(ActionEvent e)
   {
        double c=Double.parseDouble(celcius.getText());
    if(e.getSource()==kelvin)
    {
      h=273+c;
      hasilkon.setText(""+h);
    }
    else if(e.getSource()==fahren)
    {
      h=(c*1.8)+32;
      hasilkon.setText(""+h);
    }
    else if(e.getSource()==ream)
    {
      h=c*0.8;
      hasilkon.setText(""+h);
    }
   }
}

POLIMORFISME

Polimorfisme adalah kemampuan untuk memperoleh bentuk. Dua objek atau lebih dikatakan polimorfis, bila objek-objek itu mempunyai antar muka-antarmuka identik namun mempunyai perilaku-perilaku berbeda. Bentuk ini memungkinkan kita menganggap sekelompok objek dengan tipe-tipe berbeda seperti dimiliki oleh suatu tipe yang sama. Polimorfisme merupakan fitur yang terjadi karena interaksi setiap konsep pewarisan dan dynamic binding. Contohnya pintu dan jendela memiliki perilaku yang sama yaitu dapat dibuka dan ditutup, namun untuk menutup jendela dilakukan misalnya dari atas ke bawah (vetikal), sedangkan pintu dari depan ke belakang (horizontal).Lalu setelah program yang terdapat diatas sudah tidak ada yang erorr hasil plimorfisme keduanya akan tampil dalam program berikut ini:

LISTING MENUUTAMA JAVA
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public class menuutama extends JFrame implements ActionListener
{
 kalkulator kal;
 konversi kon;
 JLabel label1= new JLabel("MENU");
 JLabel label2= new JLabel("1. Kalkulator");
 JLabel label3= new JLabel("2. Konversi");
 JLabel label4= new JLabel("3. exit");
 JLabel label5= new JLabel("pilih");
 JTextField pilihan = new JTextField();
 JButton ok=new JButton("ok");
 JPanel panel =new JPanel();

 public menuutama()
 {
     setTitle("Menu");
     setSize(300,200);
     setLocationRelativeTo(null);
     label1.setBounds(this.getWidth()/2,10,100,20);
     label2.setBounds(50, 30, 100, 20);
     label3.setBounds(50, 55, 100, 20);
     label4.setBounds(50, 75, 100, 20);
     label5.setBounds(20, 100, 50, 20);
     pilihan.setBounds(50,100 ,100, 20);
     ok.setBounds(160, 100, 50, 20);
     ok.addActionListener(this);
     panel.setLayout(null);
     panel.add(label1);
     panel.add(label2);
     panel.add(label3);
     panel.add(label4);
     panel.add(label5);
     panel.add(pilihan);
     panel.add(ok);
     getContentPane().add(panel);
        
 }

    public void actionPerformed(ActionEvent e)
    {
        if (e.getSource()==ok)
        {
        int pil=Integer.parseInt(pilihan.getText());
        switch(pil)
        {
            case 1:kal=new kalkulator();
                   break;

            case 2:kon= new konversi();
                    break;

            case 3:System.exit(0);
        }
        }
    }

    public static void main(String [] args)
    {
        menuutama tampilan=new menuutama();
        tampilan.setVisible(true);
        tampilan.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }


}

OUTPUT


                  


                                                 

                                  





Kamis, 12 April 2012

pengertian enkapsulasi dan contoh programnya


Pengertian Enkapsulasi dan Contoh Program Sederhananya

Pengertian Enkapsulasi dan Contoh Program Sederhananya
Oleh : Rizki Fajar Agung 56410130 dan Achmad Syarief 50410094 (2IA14)

Pengertian Enkapsulasi
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. Bagaimana solusi agar program dapat berjalan?? Konstruktor diubah menjadi protected atau public atau bisa juga menerapkan interface to access.
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);
}}

Jumat, 06 April 2012

Perbedaan pemrograman berbasis objek dan terstruktur



Pengertian Enkapsulasi dan Contoh Program Sederhananya
Oleh : Rizki Fajar Agung 56410130 dan Achmad Syarief 50410094 (2IA14)

Object Oriented Programing atau yang biasa dikenal dengan OOP adalah suatu pemrograman yang mengarah pada objek. Object oriented juga disebut sebagai paradigma pemrograman.
Procedural Programming atau biasa disebut dengan pemrograman terstruktur adalah pemrograman yang disusun berdasarkan urutan tertentu.
Perbedaan mendasar antara OOP dan pemrograman terstruktur adalah:
Dengan menggunakan OOP maka dalam melakukan pemecahan suatu masalah kita tidak melihat bagaimana cara menyelesaikan suatu masalah tersebut (terstruktur) tetapi objek-objek apa yang dapat melakukan pemecahan masalah tersebut. Sedangkan untuk pemrograman terstruktur, menggunakan prosedur/tata cara yang teratur untuk mengoperasikan data struktur
Untuk tata nama, keduanya pun memiliki tatanan yang sama walaupun memiliki pengertian tersendiri:
object oriented menggunakan “method” sedangkan terstruktur menggunakan “function”. Bila di OOP sering didengar mengenai “objects” maka di terstruktur kita mengenalnya dengan ” modules”. Begitu pula halnya dengan “message” pada OO dan “argument” pada terstruktur. “attribute” pada OO juga memiliki tatanan nama yang sepadan dengan “variabel” pada pemrograman terstruktur.
Persamaan kedua pemrogaman
adalah keduanya termasuk ke dalam pemodelan pemrograman yang digunakan dewasa ini.
Mana yang lebih baik
tidak ada yang dapat dikatakan lebih baik karena keduanya memiliki spesifikasi tersendiri dalam pemrogramannya. Hal ini juga tergantung pada bagaimana pribadi si pemrogram ingin menyusun program yang akan dibuatnya. Apakah lebih suka menggunakan yang berorientasikan pada objek maupun pemrograman yang terstruktur.
Kapan sama2 baik
Pemrograman prosedural akan dikatakan lebih baik apabila dalam segala situasi melibatkan kompleksitas moderat atau yang memerlukan signifikan kemudahan maintainability. Manfaat yang dirasakan dalam penggunaan pemrograman prosedural adalah kemampuan kembali menggunakan kode yang sama tanpa menggunakan kode yang berbeda ataupun mengkopinya kembali. Dengan menggunakan “goto”, memudahkan programmer melacak kumpulan data sehingga menghindarkan pemrograman terstruktur menjadi seperti spagethii code.
Pemrograman berorientasikan objek dikatakan lebih baik apabila Model data berorientasi objek dikatakan dapat memberi fleksibilitas yang lebih, kemudahan mengubah program, dan digunakan luas dalam teknik piranti lunak skala besar. Lebih jauh lagi, pendukung OOP mengklaim bahwa OOP lebih mudah dipelajari bagi pemula dibanding dengan pendekatan sebelumnya, dan pendekatan OOP lebih mudah dikembangkan dan dirawat.