Kamis, 06 April 2017

Interface pada Java dan Implementasi Stack and Queue

Pada pertemua ketiga Lab Pemrograman Java kami belajar membuat Interface pada java dan Stack.

Interface adalah sebuah tipe referensi pada Java. Interface secara struktur serupa dengan class. Isi dari interface adalah method abstract, artinya method hanya dideklarasikan tidak ditulis secara utuh. Deklarasi method pada interface serupa dengan method pada class abstract.




Hubungan Antara Class dan Interface

Seperti yang terlihat pada gambar dibawah ini, sebuah class melakukan extends terhadap class  lain, sebuah interface melakukan extends terhadap interface lain, namun sebuah class melakukan implements pada interface.





Hubungan Interface dan Class

Pewarisan Pada Interface

Jika sebuah class tidak diperkenankan melakukan pewarisan (extends) lebih dari 1 class, maka interface diperbolehkan melakukan hal tersebut. Namun sebuah class diperbolehkan melakukan implementasi terhadap lebih dari 1 interface.
Pewarisan Banyak Pada Java

Cara membuat Class Interface yang dimana saat klik kanan pada project -> Klik NEW -> lalu pilih Java Class saat menamakan Class tersebut maka ada option untuk memilih Class,Interface,Enum dan sebagai nya


Bila ingin membuat Interface maka pilih lah Class interface dan Contoh kode program interface melakukan multiple pewarisan adalah sebagai berikut :

Fungsidasar.java

public interface Fungsidasar {

    public void makan();
    public void jalan();
    public void bernafas();

}

Makhlukhidup.java

public abstract class Makhlukhidup { //sebuah kelas dasar yang harus dimiliki oleh sebuah fungsinya 
    public void jalan(){
        System.out.println("Capekk");
    }
    public abstract void bernafas();
}

Manusia.java

public class Manusia extends Makhlukhidup implements Fungsidasar {
    @Override    public void makan() {
        System.out.println("Enakkkkkkk");
    }

    @Override    public void jalan() {
        System.out.println("Jalan");
    }

    @Override    public void bernafas() {
        System.out.println("Fiuuhhhh");

    }
    public static void main(String[] args){
        Manusia a = new Manusia();
                a.makan();
    }
}

dan bila di RUN maka akan keluar seperti gambar di bawah ini :



Stack pada Java


Stack adalah salah satu struktur data yang memiliki sistem kerja Last In First Out (LIFO), yang terakhir masuk pertama keluar. Dapat di ilustrasikan seperti sebuah tumpukan buku, ketika mengambil sebuah buku di dalam tumpukan itu maka harus diambil satu persatu dari buku yang paling atas dari tumpukan buku tersebut.  Sebuah stack hanya dapat ditambahkan dan dikurangi elemennya hanya dari satu sisi yakni elemen atasnya atau biasa disebut Top Of Stack.


Fungsi dalam Stack:
  • Fungsi init: fungsi yang digunakan untuk inisialisasi atau membuat stack baru yang masih kosong.
  • Fungsi full: digunakan untuk mengetahui stack penuh atau tidak.
  • Fungsi empty: digunakan untuk mengetahui stack kosong atau tidak.
  • Fungsi clear: digunakan untuk mengosongkan stack. Stack dianggap kosong apabila puncak stack berada pada posisi -1.
  • Fungsi push: digunakan untuk menambahkan data ke dalam stack. Penambahan data tidak bisa dilakukan apabila stack sudah penuh. Urutan perintahnya adalah: menambahkan nilai top dan menambahkan data pada posisi nilai top. Jika dalam Linked List menggunakan method addLast
  • Fungsi pop: digunakan untuk mengeluarkan data teratas stack dengan syarat bahwa stack tidak kosong. Urutan perintahnya adalah : menghapus data pada posisi nilai top dan menurunkan nilai top. Jika dalam Linked List menggunakan method removeLast.
  • Penggunaan STACK :
    • Perhitungan ekspresi aritmatika (posfix)
    •  algoritma backtraking (runut balik)
    •  algoritma rekursif
(cites from http://id.wikipedia.org/wiki/Stack_%28struktur_data%29)Contoh Kode Stack menggunakan TemplateStack.java



public class Stack <T> { //dia belum tau T,T itu caranya harus panggil class array,fungsi nya    public T[] array;
    public int pointer;

    public Stack(Class <?> classname){
        array=(T[]) Array.newInstance(classname, 10);
        pointer = -1;
    }

    public void push (T item){
        array[++pointer] = item;
    }
    public T pop(){
       return array[pointer--];
    }
    public static void main(String[] args){
        Stack <Integer> Stack = new Stack<Integer> (Integer.class); //objek kelas dari kelas tertentu    }
}

Queue pada Java
 
Queue adalah sebuah Antrian atau istilah lain nya FIFO(First In First Out) contoh kodingan nya adalah :

QUEUE.Java

import java.util.NoSuchElementException;

public class Queue<T> {
    private T[] elements;//array in generic    private int depan;//element pertama atau depan nya queue    private int belakang;//element terakhir atau belakang nya queue    private int kapasitas; //kapasitas queue    private int hitung; //mengindikasikan jumlah elemen yang tersimpan saat ini dalam queue
    public Queue(int size)
    {
        kapasitas = size;
        hitung = 0;
        belakang = size-1;
        depan = 0;
        elements =(T []) new Object[size];  //array kosong queue    }

    //Returns true if the queue is empty or false    public boolean isEmpty()
    {
        return hitung==0;//means its true    }

    //Add elements to the queue    public void enqueue(T item)
    {
        if(hitung == kapasitas)
        {
            resize(kapasitas*2);
            // System.out.println("Queue is full");
        }

        belakang = hitung % kapasitas;    //example back=(0+1)%10=1        elements[belakang]=item;
        //elements[0]=0        //item=elements[count];        hitung++;
    }


    //Public resize    public void resize(int reSize){
        T[] tmp = (T[]) new Object[reSize];

        int current = depan;
        for (int i = 0; i > hitung; i++)
        {
            tmp[i] = elements[current];
            current = (current + 1) % hitung;
        }

        elements = tmp;
        depan = 0;
        belakang = hitung-1;
        kapasitas=reSize;

    }


    //Dequeue method to remove head    public T dequeue()
    {
        if(isEmpty())
            throw new NoSuchElementException("Dequeue: Queue is empty");
        else        {
            hitung--;
            for(int x = 1; x <= hitung; x++)
            {
                elements[x-1] = elements[x];
            }
            kapasitas--;
            return (T) elements;
        }
    }

    //peek the first element    public T peek()
    {
        if(isEmpty())
            throw new NoSuchElementException("Peek: Queue is empty");

        else            return elements[depan];
    }


    //Print queue as string    public String toString()
    {

        if(isEmpty()) {
            throw new NoSuchElementException("Queue is empty");
        }

        String s = "[";
        for(int i = 0; i < hitung; i++)
        {
            if(i != 0)
                s += ", ";
            s = s + elements[i];// [value1,value2,....]        }

        s +="]";
        return s;
    }

    public void delete() {   //Delete everything        hitung = 0;
    }
}

MainQueue.Java

/** * Created by putriramadannia_pc on 4/1/2017. */public class MainQueue {
    public static void main(String[] args) {

        int kapasitas=6;
        Queue<Integer> queue = new Queue<Integer>(kapasitas);

        queue.enqueue(1);
        System.out.println("Queue: "+ queue);
        queue.enqueue(2);
        System.out.println("Queue: "+ queue);
        queue.dequeue();
        queue.enqueue(3);
        System.out.println("Queue: "+ queue);
        queue.enqueue(4);
        System.out.println("Queue: "+ queue);
        queue.enqueue(5);
        System.out.println("Queue: "+ queue);
        queue.enqueue(6);
        System.out.println("Queue: "+ queue);

    }
}

Hasil Output nya :


Sekian untuk minggu ini see you....












Sumber : http://onestringlab.com/penjelasan-class-interface-pada-java/

1 komentar:

Thread dan Socket

Thread Thread adalah rangkaian eksekusi dari sebuah aplikasi java dan setiap program java minimal memiliki satu buah thread. Sebuah thre...