Minggu, 13 September 2020

Belajar Java OOP: Memahami Konsep Dasar OOP (untuk Pemula)

 

Jika kamu ingin memahami Framework, pelajari dulu konsep OOP

Jadi tidak ada alasan untuk tidak belajar OOP.

Apa saja yang akan kita pelajari pada artikel ini?

  1. Mengapa Harus Belajar OOP?
  2. Apa itu OOP?
  3. Objek dan Class
  4. Class Diagram

Mari kita mulai…

Mengapa Sih Harus Belajar OOP?

Mengapa sih OOP itu penting?

Bukannya kita bisa bikin program dengan prosedural saja?

Ya memang bisa…

Tapi masalahnya nanti kalau programnya sudah semakin besar dan kompleks.

Kode program akan sulit di-maintenance.

Pada pemrograman prosedural, kita biasanya memecah program menjadi beberapa prosedur.

Lalu membuat variabel global dan lokal untuk menyimpan data.

Program Prosedural

Semakin besar programnya, semakin banyak pula variabel dan prosedur yang harus dibuat.

Lama-kelamaan, kode program akan sulit dimodifikasi.. karena sudah terlalu kompleks.

Di sinilah kita harus menggunakan OOP.

Jadi..

Apa itu OOP?

OOP (Object Oriented Programming) atau dalam bahasa indonesia dikenal dengan pemrograman berorientasikan objek (PBO) merupakan sebuah paradigma atau teknik pemrograman yang berorientesikan Objek.

Pada OOP, Fungsi dan variabel dibungkus dalam sebuah objek atau class yang dapat saling brinteraksi, sehingga membentuk sebuah program.

Objek

Dengan demikian, tidak akan ada lagi kode yang “berantakan.”

Semua akan kita bungkus dalam objek.

Tapi sebelum membuat objek, kita harus membuat class dulu…

Class dan Object

Class sebenarnya bertugas untuk mengumpulkan prosedur/fungsi dan variabel dalam satu tempat.

Contoh:

Kita ingin membuat game sederhana, di dalamnya ada kucing dan makanan.

Class dalam OOP

Dengan class, kita bisa menentukan.. mana variabel dan prosedur untuk kucing dan makanan.

Class ini nanti yang akan kita pakai untuk membuat objek.

Jadi…

Class adalah rancangan atau blue print dari sebuah objek.

Sedangkan objek adalah sebuah variabel yang merupakan instance atau perwujudan dari Class.

Instance bisa diartikan sebagai wujud dari class.

Class berisi definisi variabel dan fungsi yang menggambarkan sebuah objek.

Dalam OOP:

  • Variabel disebut atribut atau properti;
  • Fungsi disebut method.

Contoh Class:

class NamaClass {
    String atribut1;
    String atribut2;

    void namaMethod(){ ... }
    void namaMethodLain(){ ... }
}

Lalu, Kita biasanya membuat objek (instance) seperti ini:

NamaClass namaObj = new NamaClass();

Kata kunci new berfungsi untuk membuat objek baru dari class tertentu.

Setelah membuat objek, kita bisa mengakses atribut dan method dari objek tersebut.

Contoh:

namaObj.namaMethod();
namaObj.atribut1;

Tanda titik (.) berfungsi untuk mengakses atribut dan method.

Contoh Program OOP

Kita akan menggunakan Netbeans, silahkan buat project baru.

Memilih project Java

Isi nama project-nya dengan “BelajarOOP” dan jangan centang “Create Main Class”.

Memberikan nama project Java

Setelah itu, silahkan buat package baru. Klik kanan pada <default package>, lalu pilih New->Java Package.

Membuat package Java

Isi nama package dengan “dasar”:

Membuat package Java

Setelah itu, di dalam package dasar, silahkan buat class baru bernama Player.java.

Klik kanan pada package dasar lalu pilih New->Java Class. Setelah itu, isi namanya dengan Player.java.

Silahkan tulis kode pada Player.java seperti ini:

package dasar;

public class Player {
    
    // definisi atribut
    String name;
    int speed;
    int healthPoin;

    // definisi method run
    void run(){
        System.out.println(name +" is running...");
        System.out.println("Speed: "+ speed);
    }

    // definisi method isDead untuk mengecek nilai kesehatan (healthPoin)
    boolean isDead(){
        if(healthPoin <= 0) return true;
        return false;
    }
    
}

Berikutnya, buat class baru lagi bernama Game.java dan isi kodenya seperti ini:

package dasar;

public class Game {
    public static void main(String[] args){

        // membuat objek player
        Player petani = new Player();

        // mengisi atribut player
        petani.name = "Petani Kode";
        petani.speed = 78;
        petani.healthPoin = 100;

        // menjalankan method
        petani.run();

        if(petani.isDead()){
            System.out.println("Game Over!");
        }

    }
}

Coba eksekusi Game.java dengan klik kanan pada Game.java lalu pilih Run File. Maka hasilnya:

Contoh Program OOP Java

Coba ganti nilai healthPoin menjadi 0.

petani.healthPoin = 0;

Setelah itu, coba eksekusi lagi:

Output program

Player petani sudah mati, Game selsai! 😄

Kok Bisa Begitu? Jelaskan Donk!

Baik, kita mulai dari pembuatan class.

Pertama-tama, kita membuat sebuah class dengan nama Player. Class ini mendefinisikan objek Player dalam Game dengan atribut sebagai berikut:

  • name adalah nama objek;
  • speed adalah kecepatan;
  • healthPoin adalah nilai kesehatan dari player, biasanya disingkat hp.

Lalu class Player memiliki method:

  • run() untuk menggerakkan player;
  • isDead() untuk mengecek kondisi kesehatan player. Method ini akan mengembalikan nilai true apabila nilai hp lebih kecil atau sama dengan nol (0), sebaliknya akan mengembalikan nilai false.

Berikutnya kita membuat objek baru dari class Player pada class Game bernama petani.

// membuat objek player
Player petani = new Player();

Setelah itu mengisi atribut-atributny. Karena kalau tidak diisi akan bernilai Null dan bisa menyebabkan NullPointerException.

Objek Petani

Berikutnya kita coba modifikasi nilai hp menjadi nol.

Hasilnya, pesan Game Over! akan ditampilkan. Karena method isDead() akan mengembalikan nilai true jika nilai hp kurang atau sama dengan nol.

Objek Petani

Contoh Program OOP 2: Program Drone

Untuk praktek berikutnya, coba buat class Drone.

class Drone {
    // atribut
    int energi;
    int ketinggian;
    int kecepatan;
    String merek;

    // method
    void terbang(){
        energi--;
        if(energi > 10){
            // terbang berarti nilai ketinggian bertambah
            ketinggian++;
            System.out.println("Dorne terbang...");
        } else {
            System.out.println("Energi lemah: Drone nggak bisa terbang");
        }
    }

    void matikanMesin(){
        if(ketinggian > 0){
            System.out.println("Mesin tidak bisa dimatikan karena sedang terbang");
        } else {
            System.out.println("Mesin dimatikan...");
        }
    }

    void turun(){
        // ketinggian berkurang, karena turun
        ketinggian--;
        energi--;
        System.out.println("Drone turun");
    }

    void belok(){
        energi--;
        System.out.println("Drone belok");
        // belok ke mana? perlu dicek :)
    }

    void maju(){
        energi--;
        System.out.println("Drone maju ke depan");
        kecepatan++;
    }

    void mundur(){
        energi--;
        System.out.println("Drone mundur");
        kecepatan++;
    }
}

Bagaimana Menentukan Atribut dan Method dari Objek?

Seperti yang sudah dijelaskan di awal. Objek memiliki data (atribut) dan operasi (fungsi).

Kuncinya:

  • Atribut itu seperti ciri-ciri dari objek.
  • Method itu seperti tingkah laku atau operasi.

Contoh:

Misalkan kita ingin membuat class dari Senjata.

Apa ciri-ciri dari senjata atau data yang bisa dijadikan atribut?

  • jumlah peluru
  • jenis
  • nama senjata
  • berat
  • warna
  • dll

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

  • tembak()
  • lempar()
  • kurangiPeluru()
  • reload()
  • dll.
Objek Senjata

Maka class-nya bisa dibuat seperti ini:

class Senjata {
    // atribut
    String nama;
    int jumlahPeluru;
    
    // method
    void tembak(){
        //..
        // setelah nembak, kurangi peluru
        jumlahPeluru--;
    }

    void reload(){
        //..
        // kalau di-reload maka jumlah peluru diisi ulang
        jumlahPeluru = 300;
    }
}


Mengenal Class Diagram

Class Diagram adalah sebuah diagram yang menggambarkan hubungan antar class. Class Diagram dapat kita buat dengan aplikasi perancangan (CASE), seperti StarUML.

Class diagram di StarUML

Sebauh class digambarkan dengan sebuah tabel 1 kolom dan 3 baris.

Baris pertama berisi nama class; Baris kedua berisi atribut; dan Baris ketiga berisi method.

Class diagram di StarUML

Selain itu, terdapat garis yang menggambarkan hubungan antar class.

Relasi diagram di StarUML

Class Diagram biasanya digunakan oleh software engineer untuk merancang software dengan paradigma OOP.

Sebagai programmer, kita hanya perlu tahu cara membaca dan menuliskannya ke dalam kode.

Jika kamu tertarik dengan class diagram, bisa membaca buku-buku tentang UML.

Selasa, 17 September 2019

Mengenal Framework

Buat para programer kata framework pastilah tidak asing lagi, karna untuk membuat aplikasi atau pemrograman web akan membutuhkan sebuah framework agar dalam proses koding lebih mudah. Nah untuk yang masih belum tahu framework lebih dalam, saya akan membahasnya di artikel ini.
Framework adalah sebuah software untuk memudahkan para programer untuk membuat sebuah aplikasi web yang di dalam nya ada berbagai fungsi diantaranya plugin, dan konsep untuk membentuk suatu sistem tertentu agar tersusun dan tersetruktur dengan rapih.
Dengan menggunakan framework bukan berarti kita akan terbebas dengan pengkodean. Karena kita sebagai seorang pengguna framework haruslah menggunakan fungsi – fungsi dan variable yang ada di dalam sebuah framework yang kita gunakan. Untuk saat ini framework terbagi dua yaitu framework PHP dan framework CSS, untuk framework PHP terdiri dari
  • Laravel
  • Yii
  • Code Igniter
  • Symfoni
  • Zend Framework
  • Cake PHP
  • Fuel PHP
  • DLL
dan untuk Framework CSS terdiri dari
  • Bootstrap
  • Gumby
  • Foundation
  • Less Framework
  • JQuery UI
  • Unsemantic
  • Blue Print CS
Selain di php ternyata pada juva cukup banyak menyediakan framework
seperti sebagai berikut

Java Collection Framework



Framework : Koleksi atau kumpulan potongan-potongan program yang disusun atau diorganisasikan sedemikian rupa, sehingga  dapat digunakan untuk membantu membuat aplikasi utuh tanpa harus membuat semua kodenya dari awal.
Framework adalah kumpulan fungsi (libraries), sehingga seorang programmer tidak perlu lagi membuat fungsi-fungsi (biasanya disebut kumpulan library) dari awal, programmer tinggal memanggil kumpulan library atau fungsi yang sudah ada didalam framework, tentunya cara menggunakan fungsi-fungsi itu sudah ditentukan oleh framework.
Collection Framework
Collection Framework adalah arsitektur di Java untuk merepresentasi dan memanipulasi collections.
Meliputi:
Interface: tipe data abstract yang merepresentasikan collections
Implementation: berupa implementasi concrete dari interface yang ada
Algorithm: adalah method yang berguna untuk memanipulasi collections, seperti searching dan shorting
Method ini bersifat polymorphic, karena bisa diterapkan pada implementasi yang berbeda .
Jika array adalah tempat sekumpulan elemen. Maka Collection adalah tempat sekumpulan objek.
Collection : suatu wadah/container yang menapung sekumpulan object.
Java Collection Framework mendukung tiga jenis collections utama, yakni:
              set
              list
              map
JCF Interfaces dan Classes
  Interfaces:
       Collection
       Set (tidak ada duplikasi)
       SortedSet
       List (bisa ada duplikasi)
       Map (mis: Dictionary)
       SortedMap
       Iterator
       Iterable
       ListIterator
  Classes:
       HashSet
       TreeSet
       ArrayList
       LinkedList
       HashMap
       TreeMap
   boolean hasNext();
       untuk memeriksa apakah object berikutnya ada atau tidak
   E next();
       untuk mendapatkan object berikutnya
   void remove();
       dipanggil setelah menjalankan method next()
       menghapus object yang sudah dipanggil dengan next() terakhir
       setelah memanggil next(), tidak bisa menjalankan remove() dua kali, pemanggilan kedua menyebabkan munculnya exception
Interface Collection
  public int size();
       Mengembalikan angka yang merupakan jumlah object dalam collection
  public boolean isEmpty();
       Mengembalikan nilai true bila tidak ada object dalam collection
  public boolean add(E x);
       Untuk memasukkan satu atau beberapa object ke collection. Pengembaliannya adalah true jika berhasil menambah. (beberapa jenis collection tidak mengijinkan duplikasi, sehingga proses add bisa saja gagal)
  public boolean contains(Object x);
       Untuk mengecek bahwa collection yang dimaksud mengandung object x
  public boolean remove(Object x);
       Menghapus sebuah object x dari collection. Kembalian bernilai true, jika ada object yang dihapus
  public Iterator<E> iterator();
       Mengembalikan sebuah iterator yang digunakan untuk menelusuri object di collection
Interface Set
  Set extends collection
       Set menuruni semua method milik Collection
  Set tidak memperbolehkan adanya duplikasi object di koleksinya
       Jika ingin menambah elemen dua kali dengan “add()” maka “add()” yang kedua akan mengembalikan nilai false
  Untuk mengakses object-object di Set, digunakan Iterator
  Representasi Set adalah seperti group, misal group musik, group mata kuliah
Implementasi Set (Concrete Class)
  java.util.HashSet<E>  (merupakan hashtable)
       Constructors:
   public HashSet();
   public HashSet(Collection<? extends E> c);
   public HashSet(int initialCapacity);
   public HashSet(int initialCapacity, float loadFactor);
  java.util.TreeSet<E> (merupakan balance BST)
       Constructors
   public TreeSet();
   public TreeSet(Collection<? extends E> c);
   .............
Interface SortedSet
  SortedSet memiliki fitur yang sama dengan Set, namun object yang tersimpan diurutkan berdasarkan datanya
  SortedSet biasanya dikombinasikan dengan TreeSet
  Efek penggunaan SortedSet, proses penambahan data jadi lebih lambat daripada Set biasa
Interface List
  List extends Collection
  Items/Objects di List dapat diakses menggunakan posisinya / indeksnya
  Method “add()” menambahkan object baru di bagian paling belakang dari list
  List cocok digunakan untuk mengganti Array, dengan ukuran yang dinamis
  Method tambahan yang merupakan tambahan baru dari yg dituruni dari interface Collection
       public E get(int index)
   mengembalikan object di posisi yang ditunjukkan index
       public E set(int index, E x)
   mengganti object di posisi index dengan object x, dan mengembalikan object yang telah diganti
       public void add(int index, E x)
   menambahkan object E ke posisi x, object lama di posisi x sampai posisi terakhir digeser satu posisi ke belakang
       public E remove(int index)
   menghapus object di posisi x, kemudian menggeser di belakang object yang dihapus satu posisi kedepan
   return object yang dihapus
       public int indexOf(Object e)
   Mengembalikan indeks/posisi dari object e
Implementasi List (Concrete Class)
  java.util.ArrayList<E> (representasi array)
       Constructors:
   public ArrayList();
   public ArrayList(int initialCapacity)
   public ArrayList(Collection<? extends E> c);
  java.util.LinkedList<E> (dobel linked list)
       Constructors:
   public LinkedList();
   public LinkedList(Collection<? extends E> c);
  Kedua-duanya memiliki tambahan method yang specifik untuk masing-masing class
Interface Map
  Map digunakan untuk memetakan kunci dan data. Sebagai contoh, kita memiliki suatu katalog buku, kode buku adalah kunci dan object buku adalah datanya
  Kunci di Map tidak dapat diduplikasi
  Tiap kunci hanya menunjuk ke satu object data
  Penggunaan Map biasanya dipadukan dengan class HashMap
  Method yang ada di Map:
  V put(K key, V value);
  untuk menambahkan pasangan kunci dan object
  V get(Object key);
  untuk mendapatkan object berdasarkan kunci tertentu
  V remove(Object key);
  untuk menghapus object berdasarkan kunci tertentu
  boolean containsKey(Object key);
  memeriksa apakan map memiliki kunci tertentu
  boolean containsValue(Object value);
  memeriksa apakah map memiliki object tertentu
  int size();
  mendapatkan jumlah key di map
  public Set<K> keySet();
  mendapatkan keseluruhan key yang berupa Set
  public Collection<V> values();
  mendapatkan keseluruhan object data yang berupa collection
Implementasi Map
  java.util.HashMap<K,V>
       Constructors:
   public HashMap<K,V>();
   public HashMap<K,V>(int initialCapacity)
   public HashMap<K,V>(Collection<? extends E> c);
  java.util.TreeMap<K,V>
       Constructors:
   public TreeMap<K,V>();
   public LinkedList<K,V>(Collection<? extends E> c);
  Kedua-duanya memiliki tambahan method yang specifik untuk masing-masing class

Java – Menggunakan Collection Framework

Mengumpulkan banyak variable dengan tipe sama dalam sebuah array adalah hal yang mutlak dibutuhkan dalam bahasa pemrograman apa pun. Seiring dengan kebutuhan tersebut, banyak juga dibuat fungsi-fungsi untuk memanipulasi array. Dalam Java, Anda bisa memanfaatkan seluruh framework Collection yang akan bertindak seperti array dengan fungsi-fungsi powerful yang tersedia sesuai kebutuhan.

Diagram collection - klik untuk melihat versi besar
Sebuah collection adalah sebuah object yang merepresentasikan kumpulan object-object. Collection digunakan untuk menyimpan, mengambil, dan memanipulasi data-data. Salah satu collection paling sederhana adalah Array. Namun dalam Collection Framework, Java menawarkan berbagai bentuk lain dari Collection.

Karena Collection adalah interface, maka harus dibuat class yang mengimplementasikannya. Dalam Java API, sudah tersedia beberapa class yang sangat berguna untuk memanage object-object dalam Collection, sesuai sifat dan kebutuhannya. Beberapa kelebihan utama menggunakan collection framework antara lain:
  • Mengurangi effort dalam membuat program, karena sudah tersedia struktur data dan algoritma tanpa harus menulis sendiri.
  • Meningkatkan performa, karena setiap implementasi dapat berfungsi maksimal sesuai kasus yang ada.
  • Mudah dipelajari, sehingga mengurangi effort untuk mempelajari cara menggunakan API.
  • Dapat dikembangkan dan fleksibel terhadap tipe object yang ada dalam Collection.
Ada banyak class yang mengimplementasikan Collection yang sudah tersedia dalam JDK. Pada dasarnya ada 3 Interface yang digunakan, yaitu Set, List, dan Map. Kemudian ada 5 implementasi dasar yang digunakan pula, yaitu Hash Table, Resizable Array, Balanced Tree, Linked List, dan Hash Table + Linked List. Masing-masing memiliki kelebihan dan kekurangan tersendiri, tergantung penggunaannya.

Implementations
Hash Table Resizable Array Balanced Tree Linked List Hash Table + Linked List
Interfaces Set HashSet
TreeSet
LinkedHashSet
List
ArrayList
LinkedList
Map HashMap
TreeMap
LinkedHashMap
Berikut ini beberapa contoh cara menggunakan Collection Framework yang cukup sering dipakai.
  1. ArrayList digunakan untuk membuat array yang ukurannya dinamis. Berbeda dengan array biasa yang ukurannya harus ditentukan di awal deklarasi array, dengan ArrayList, ukurannya akan fleksibel tergantung banyaknya elemen yang dimasukkan. Pendeklarasian object ArrayList sebaiknya diikuti dengan nama class yang akan dimasukkan dalam List tersebut. Tujuannya agar method dan property dari setiap object dalam ArrayList dapat diakses secara langsung. Namun jika tidak mencantumkan nama class pun tidak masalah selama proses parsing class benar.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    import java.util.ArrayList;
    public class ArrayListDemo {
      public static void main(String[] args) {
        ArrayList<Human> list1 = new ArrayList<Human>();
        for(int i = 0; i < 10; i++) {
          list1.add(new Human("Human " + i));
        }
        for(int i = 0; i < list1.size(); i++) {
          System.out.println(list1.get(i).name);
        }
      }
    }
    class Human {
      public String name;
      public Human(String name) {
        this.name = name;
      }
    }
    Kelebihan lain collection framework ini adalah kemampuannya untuk membuat perulangan dirinya sendiri, sebab Collection framework mengimplementasikan interface Iterable. Sehingga untuk membuat perulangan “for” sebenarnya cukup dengan:

    1
    2
    3
    for(Human h : list1) {
      System.out.println(h.name);
    }
  2. Implementasi kedua yang cukup sering dipakai adalah Set. Sama seperti ArrayList, Set ini akan berukuran dinamis. Hanya saja, Set tidak akan memperbolehkan duplikasi object yang diketahui dari method equals() yang ada di setiap object dalam Java. Anda bisa meng-override method tersebut untuk membuat kriteria Anda sendiri, seperti pada contoh di bawah ini.

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    import java.util.ArrayList;
    import java.util.HashSet;
    public class HashSetDemo {
      public static void main(String[] args) {
        HashSet<Human> set = new HashSet<Human>();
        ArrayList<Human> list = new ArrayList<Human>();
        Human a = new Human("A");
        Human b = new Human("B");
        Human c = new Human("A");
        set.add(a);
        set.add(b);
        set.add(c);
        list.add(a);
        list.add(b);
        list.add(c);
        System.out.println("Print Set");
        for(Human h : set) {
          System.out.println(h.name);
        }
        System.out.println("Print List");
        for(Human h : list) {
          System.out.println(h.name);
        }
      }
    }
    class Human {
      public String name;
      public Human(String name) {
        this.name = name;
      }
      @Override
      public boolean equals(Object obj) {
        if(!(obj instanceof Human)) {
          return super.equals(obj);
        } else {
          Human comp = (Human)obj;
          return comp.hashCode() == obj.hashCode();
        }
      }
      @Override
      public int hashCode() {
        int hash = 7;
        hash = 53 * hash + (this.name != null ? this.name.hashCode() : 0);
        return hash;
      }
    }
  3. Implementasi ketiga adalah dari Interface Map. Map berfungsi sebagai collection yang memetakan setiap value dengan key tertentu. Jika mencoba menambahkan elemen dengan key yang sama, maka elemen sebelumnya pada key tersebut akan ditindih sehingga hilang. Deklarasi HashMaps juga harus diikuti nama class yang akan menjadi key dan value-nya.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    import java.util.HashMap;
    import java.util.Iterator;
    public class HashMapDemo {
      public static void main(String[] args) {
        HashMap<String, String> map = new HashMap<String, String>();
        map.put("rumah", "Tipe 45");
        map.put("mobil", "BMW");
        map.put("bunga", "Mawar");
        System.out.println("Sebelum diubah");
        Iterator<String> ite = map.keySet().iterator();
        while(ite.hasNext()) {
          System.out.println(map.get(ite.next()));
        }
        System.out.println("Setelah diubah");
        map.put("mobil", "Ferrari");
        for(String key : map.keySet()) {
          System.out.println(map.get(key));
        }
      }
    }
  4. Contoh lainnya implementasi yang sering dipakai adalah Stack. Stack merupakan sebuah collection sederhana yang menerapkan aturan LIFO (Last in First out). Artinya, elemen yang masuk terakhir akan dikeluarkan terlebih dahulu. Meskipun terdapat method add, get, dan remove karena Stack tetap inherit ke interface collection, namun method yang umum dipakai dalam Stack adalah push() untuk memasukkan elemen, pop() untuk mengeluarkan elemen, empy() untuk mengecek apakah stack kosong, dan peek() untuk melihat elemen teratas. Semua dilakukan sesuai urutan LIFO.
    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    import java.util.Stack;
    public class StackDemo {
      public static void main(String[] args) {
        Stack<String> stack = new Stack<String>();
        stack.push("A");
        stack.push("B");
        stack.push("C");
        System.out.println("Print stack awal berurutan biasa");
        for(String s : stack) {
          System.out.println(s);
        }
        System.out.println("Keluarkan satu");
        System.out.println(stack.pop());
        System.out.println("Tambahkan dua");
        stack.push("D");
        stack.push("E");
        System.out.println("Print stack sesuai urutan keluar");
        while(!stack.empty()) {
          System.out.println(stack.pop());
        }
        System.out.println("Selesai");
      }
    }
    Untuk memanipulasi elemen-elemen stack seperti pengurutan dan pengacakan, bisa menggunakan static method pada class java.util.Collections. Dengan demikian akan mempermudah proses pembuatan program Anda. Masih banyak lagi implementasi Collections yang siap Anda gunakan langsung.