Sabtu, 27 Mei 2017

Thread dan Socket

Thread

Thread adalah rangkaian eksekusi dari sebuah aplikasi java dan setiap program java minimal memiliki satu buah thread. Sebuah thread bisa berada di salah satu dari 4 status, yaitu new, runnable, blocked, dan dead.
Status Thread
• New, Thread yang berada di status ini adalah objek dari kelas Thread yang baru dibuat, yaitu saat instansiasi objek dengan statement new. Saat thread berada di status new,belum ada sumber daya yang dialokasikan, sehingga thread belum bisa menjalankan perintah apapun.
• Runnable. Agar thread bisa menjalankan tugasnya, method start() dari kelas Thread harus dipanggil. Ada dua hal yang terjadi saat pemanggilan method start(), yaitu alokasi memori untuk thread yang dibuat dan pemanggilan method run(). Saat method run() dipanggil, status thread berubah menjadi runnable, artinya thread tersebut sudah memenuhi syarat untuk dijalankan oleh JVM. Thread yang sedang berjalan juga berada di status runnable.
• Blocked. Sebuah thread dikatakan berstatus blocked atau terhalang jika terjadi blocking statement, misalnya pemanggilan method sleep(). sleep() adalah suatu method yang menerima argumen bertipe integer dalam bentuk milisekon. Argumen tersebut menunjukkan seberapa lama thread akan “tidur”. Selain sleep(), dulunya dikenal method suspend(), tetapi sudah disarankan untuk tidak digunakan lagi karena mengakibatkan terjadinya deadlock. Thread akan menjadi runnable kembali jika interval method sleep()-nya sudah berakhir, atau pemanggilan method resume() jika untuk menghalangi thread tadi digunakan method suspend()
• Dead. Sebuah thread berada di status dead bila telah keluar dari method run(). Hal ini bisa terjadi karena thread tersebut memang telah menyelesaikan pekerjaannya di method run(), maupun karena adanya pembatalan thread. Status jelas dari sebuah thread tidak dapat diketahui, tetapi method isAlive() mengembalikan nilai boolean untuk mengetahui apakah thread tersebut dead atau tidak.
Pembentukan Thread dalam java
Untuk membuat thread dalam java terdapat dua cara ( sejauh yang saya tahu ðŸ˜€ )
• Extends class Thread
Untuk menjalankan thread, dapat dilakukan dengan memanggil method start(). Saat start() dijalankan, maka sebenarnya method run() dari class akan dijalankan. Jadi untuk membuat thread, harus mendefinisikan method run() pada definisi class. Konstruktor dari cara ini adalah :
SubThread namaObject = new SubThread();
namaObject.start();
• Implements interface Runnable
Cara ini merupakan cara yang paling sederhana dalam membuat thread. Runnable merupakan unit abstrak, yaitu kelas yang mengimplementasikan interface ini hanya cukup mengimplementasikan fungsi run(). Dalam mengimplementasi fungsi run(), kita akan mendefinisikan instruksi yang membangun sebuah thread. Konstruktor dari cara ini adalah :
MyThread myObject= new MyThread();
Thread namaObject = new Thread(myObject);
Atau dengan cara singkat seperti :
New Thread(new ObjekRunnable());
MyThread merupakan class yang mengimplementasikan interface dari Runnable, dan object dari class MyThread akan menjadi parameter instansi object class Thread.
Synchronized
Sinkronisasi adalah method atau blok yang memiliki tambahan keyword synchronized,sehingga apabila dijalankan maka hanya satu thread pada suatu waktu yang dapat menjalankan method atau blok program. Thread lain akan menunggu thread yang sedang mengeksekusi method ini hingga selesai. Mekanisme sinkronisasi penting apabila terjadi pembagian sumber daya maupun data di antara thread-thread. Sinkronisasi juga melakukan penguncian pada sumber daya atau data yang sedang diproses.
Sinkronisasi dapat dilakukan pada dua bagian yaitu
  • Sinkronisasi Blok
Sintak untuk sinkronisasi blok adalah sebagai berikut :
synchronized (<object reference expression>) {
<code block>
}
  • Sinkronisasi Method
Sintak untuk sinkronisasi method adalah sebagai berikut:
synchronized TypeBalikanMethod NamaMethod ( parameter)
{
}
Prioritas Thread
Dalam Java kita dapat membuat prioritas suatu thread relative terhadapa thread yang lain. Sehingga thread yang mempunyai prioritas lebih tinggi mempunyai kesempatan lebih besar untuk mengakses suatu sources
Java Virtual Machine memilih thread yang runnable dengan prioritas tertinggi. Semua thread java mempunyai prioritas dari 1 sampai 10. Prioritas tertinggi 10 dan berakhir dengan 1 sebagai prioritas terendah. Sedangkan prioritas normal adalah 5.
Thread.MIN_PRIORITY = thread dengan prioritas terendah.
Thread.MAX_PRIORITY = thread dengan prioritas tertinggi.
Thread.NORM_PRIORITY = thread dengan prioritas normal.
Saat thread baru dibuat ia mempunyai prioritas yang sama dengan thread yang menciptakannya. Prioritas thread dapat diubah dengan menggunakan setpriority() method.
contoh kodingan :
thread.java

import java.io.DataOutputStream;
import java.net.InetAddress;
import java.net.Socket;

/** * Created by DELL on 17/05/2017. * PERTEMUAN 8 SEBENERNYA */public class Threading implements Runnable
{
    private int n=1;

    @Override    public void run() {
        while (true){
            System.out.println(n++);
        try {
            Thread.sleep(500); //penjedaan        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        }
    }

    public static void main(String args[]){
        Thread t = new Thread(
                new Threading()
        );
        t.start();

        while (true){
            System.out.println("Tes");
            try {
                Thread.sleep(600);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

}

Saat di RUN


Socket

Sebuah socket merupakan IP Port pada sebuah host mesin yang spesifik. Socket adalah sebuah konsep yang telah berkembang pada paradigma bahasa pemrograman untuk beberapa waktu. Socket pertama kali digunakan pada sistem Unix pada tahun 1970-an dan sekarang socket merupakan standar low-level komunikasi primitif. Sebenarnya ada dua jenis socket, yaitu connection-oriented socket, yang termasuk dalam TCP (Transport Control Protocol), dan connectionless socket, yang berdasar pada UDP (User Datagram Protocol). Jika dianalogikan, komunikasi socket merupakan komunikasi dua arah antar komputer dengan jalur pipa sebagai penghubungnya dan masing-masing pipa tersebut “tertancap” pada sebuah gerbang tertentu yang dinamakan port. Lifetime sebuah socket terdiri atas 3 fase :

a. Creation : inisilisasi untuk membuat sebuah socket

b. Reading and Writing : menerima dan mengirim ke sebuah socket

c. Destruction : menutup/mengakhiri socket


Java menyediakan utilitas yang lengkap untuk pemrograman network yang dibundel dalam package java.net.* dan javax.net.*. Java menyediakan dua buah tipe socket yang berbeda dan sebuah socket spesial untuk berkomunikasi antar node yaitu:

a. TCP sockets (connection -oriented socket) yang diimplementasikan pada kelas java.net.Socket.

b. UDP sockets (connection -less socket) yang diimplentasikan oleh kelas java.net.DatagramSocket.

Socket.java

import java.io.DataOutputStream;
import java.io.IOException;
import java.net.InetAddress;

/** * Created by DELL on 17/05/2017. */public class Socket {
    public static void main (String args[]) throws IOException {
    java.net.Socket socket = new java.net.Socket(
            InetAddress.getLoopbackAddress(),
            3000    );

    DataOutputStream sendStream = new DataOutputStream(socket.getOutputStream());

        sendStream.writeBytes("Helloo");

        socket.close();}
}

ServerSocket.java

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.InetAddress;

/** * Created by DELL on 17/05/2017. */public class ServerSocket {
    public ServerSocket(InetAddress loopbackAddress, int i) {
    }


    public static void main(String args[]) throws IOException {
        java.net.ServerSocket server = new java.net.ServerSocket(
                3000,0,
                InetAddress.getLoopbackAddress()
        );
        java.net.Socket request = server.accept();
        BufferedReader reader = new BufferedReader(new InputStreamReader(request.getInputStream()));
        String temp;
        while((temp = reader.readLine())!=null){
        System.out.println(temp);}
        request.close();
    }
}

Collection

COLLECTION PADA JAVA

        Java Collections adalah framework yang menyediakan sebuah tempat untuk menyimpan dan memanipulasi sekumpulan objek. Adapun kegiatan yang dapat dilakukan pada sebuah data seperti pencarian, pengurutan, memasukkan, menghapus dapat dilakukan oleh Java Collections. Java Collection secara  sederhana merupakan sebuah objek. Kerangka kerja Java Collection menyediakan dalam bentuk interfaces(Set, List, Queue, Deque dll) dan untuk class (ArrayList, Vector, LingkedList, PriorityQueue, HashSet, LinkedHashSet, TreeSet dll). 


Collection adalah sekumpulan interface dan class yang sangat berguna dalam pengolahan variable / objek di Java. Suatu objek collection Java dapat menyimpan beberapa elemen objek dalam suatu kesatuan group. Dengan pengelompokan dalam group tersebut kita mendapatkan manfaat berikut :
  • menyimpan elemen dengan urutan tertentu, 
  • mengambil kembali elemen tersebut dengan index atau dengan berbagai metode yang spesifik, 
  • memanipulasi data terutama agregasi dari elemen-elemen yang ada seperti penjumlahan, 
  • dan berbagai transformasi bermanfaat lainnya.

Bagian berikut dikhususkan untuk membahas penggunaan collection ini baik dalam bentuk tips singkat maupun secara lebih komprehensif dalam bentuk artikel dengan penjelasan lebih mendalam.

Contoh Kodingan 

collection.java


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.Stack;
import java.util.Vector;

/** * Created by DELL on 10/05/2017. */public class Collection {
    public static void main(String[] args) throws IOException {
        Stack<Integer> stack = new Stack<>();
        stack.push(10);
        stack.pop();

        HashMap<String, Integer> HashMap = new HashMap<>();
        HashMap.put("abc", 21);
        System.out.println(HashMap.get("abc"));

        Vector<Integer> vector = new Vector<>();
        ArrayList<Integer> arrayList = new ArrayList<>();
        vector.add(12);
        vector.add(24);
        System.out.println(vector.get(1));
        arrayList.add(12);
        arrayList.add(24);
        System.out.println(arrayList.get(1));

        LinkedList<Integer> linkedList = new LinkedList<>();
        linkedList.add(21);
        linkedList.push(31);
        linkedList.pop();
        linkedList.remove();
        for(Integer i : linkedList){ //foreach            System.out.println(i);
        }
        URL url = new URL("http://api.openweathermap.org/data/2.5/weather");
        BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()));
        String content = "";
        while((content = reader.readLine()) != null)
        {
            System.out.println(content);
        }
    }
}

Database pada Java

Database 

CobaDatabase.java

package Pertemuan6;

import javax.swing.plaf.nimbus.State;
import java.sql.*;
import java.util.HashMap;

public class CobaDatabase {
    private static final String DB_NAME = "dbcs_1";
    private static final String DB_USERNAME = "root";
    private static final String DB_PASSWORD = "";

    private Connection connection;

    public CobaDatabase() throws SQLException {
        this.connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/" + DB_NAME, DB_USERNAME, DB_PASSWORD);
    }

    public void select(String tableName, String[] column) {
        try {
            Statement statement = this.connection.createStatement();

            String query = "SELECT ";
            for (int i = 0; i < column.length; i++) {
                query += column[i];
                if (i != column.length - 1)
                    query += ",";
            }

            query += " FROM " + tableName;

            ResultSet result = statement.executeQuery(query);
            this.print(result);

            result.close();
            statement.close();
        } catch(SQLException e) {
            System.out.println("Error : " + e.getMessage());
        }
    }

    public void update(String tableName, String set, String where) {
        try {
            Statement statement = this.connection.createStatement();

            String query = "UPDATE " + tableName + " SET " + set;

            if (where != null)
                query += " WHERE " + where;
//            System.out.println(query);            if (statement.executeUpdate(query) > 0)
                System.out.println("Successfully updated database");
        } catch (SQLException e) {
            System.out.println("Error : " + e.getMessage());
        }
    }
    public void print(ResultSet result) throws SQLException {

        // Ambil daftar kolom dari hasil        String[] resColumn = new String[result.getMetaData().getColumnCount()];
        for (int i = 1; i <= result.getMetaData().getColumnCount(); i++) {
            resColumn[i - 1] = result.getMetaData().getColumnLabel(i);
        }

        while (result.next()) {
            for (int i = 0; i < resColumn.length; i++)
                System.out.println(resColumn[i] + " : " + result.getString(resColumn[i]));
        }
    }

    public static void main(String[] args) {

        try {
            CobaDatabase database = new CobaDatabase();
            database.select("mahasiswa", new String[]{"nim", "nama", "jenis_kelamin as \"Jenis Kelamin\"",
                    "IF(kewarganegaraan = 'I', 'Warga Negara Indonesia', 'Warga Negara Asing') as Kewarganegaraan"});
            database.update("mahasiswa", "namat = \"MAMAK\"", "nim = '140101002'");
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

}

Notepad (Pengaturan Font)

Pada Minggu ke-5 kami melanjutkan untuk kodingan Notepad.java dimana dibagian view kami menambah kan fungsi font untuk mengatur font size tulisan di Notepad.java 

Notepad.java
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.SocketTimeoutException;

/** * Created by putriramadannia_pc on 4/5/2017. */public class Notepad extends JFrame {

    private JTextArea textArea;

    public Notepad() {
        try {
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        } catch (ClassNotFoundException e) {     //menentukan tampilan dari window//tampilan dari sistem  nya            e.printStackTrace();
        }
         catch(InstantiationException e){
            e.printStackTrace();
        } catch(IllegalAccessException e){
            e.printStackTrace();
        } catch(UnsupportedLookAndFeelException e){
            e.printStackTrace();
        }

        JPanel panel = (JPanel) this.getContentPane(); //cara ngambil content jframe       // GridLayout gridLayout = new GridLayout(0, 2);//layout manager       // panel.setLayout(gridLayout);
  //      JTextField field = new JTextField(); //dia buat text field dan area field=satu baris,area banyak baris         textArea = new JTextArea(); //layup untuk mengatur   //     panel.add(field);        panel.add(textArea);

        this.setTitle("Notepad");

        JMenuBar menuBar = new JMenuBar();
        JMenu file = new JMenu("File"),
                view = new JMenu("View"),
                    edit = new JMenu("Edit"),
                        search = new JMenu("Search");
        JMenuItem open = new JMenuItem("Open.."),
                save = new JMenuItem("Save"),
                saveAs = new JMenuItem("Save As");
        JMenu openc = new JMenu("Open Containing File");
                    JMenuItem explorer = new JMenuItem("Explorer");
                    JMenuItem cmd = new JMenuItem("Cmd");

        JMenu font = new JMenu("Font");
        JMenuItem size14 = new JMenuItem("14");
        JMenuItem size16 = new JMenuItem("16");
        JMenuItem size18 = new JMenuItem("18");
        JMenuItem custom = new JMenuItem("Custom");

        ActionListener sizeListener = new ActionListener(){
            @Override            public void actionPerformed(ActionEvent actionEvent){
                Integer size;
                if(actionEvent.getActionCommand().equals("-")) {
                    size = (Integer) JOptionPane.showInputDialog(
                            Notepad.this,
                            "Ukuran Font : ",
                            "Custom Size ",
                            JOptionPane.INFORMATION_MESSAGE,
                            null,
                            new Integer[]{10, 12, 14, 16, 18, 20, 24, 36, 48},
                            "Ukuran");
                    if (size == null)
                        return;
                }  else                    size = Integer.valueOf(actionEvent.getActionCommand());

                Notepad.this.changeTextSize(size);

                }
            };

            size14.setActionCommand("14");
            size16.setActionCommand("16");
            size18.setActionCommand("18");
            custom.setActionCommand("-");

            size14.addActionListener(sizeListener);
            size16.addActionListener(sizeListener);
            size18.addActionListener(sizeListener);
            custom.addActionListener(sizeListener);


        file.add(open);
        file.add(openc);
        openc.add(explorer);
        openc.add(cmd);
        file.add(save);
        file.add(saveAs);

        //Menu untuk Test Alert Box        JMenuItem test = new JMenuItem("Test");
        test.addActionListener(new ActionListener() {
            @Override            public void actionPerformed(ActionEvent e) {
                JOptionPane.showMessageDialog(Notepad.this, "DO YOU WANT TO SAVE IT?" ,
                        "SAVE",
                        JOptionPane.QUESTION_MESSAGE);


                String jawaban = JOptionPane.showInputDialog(Notepad.this,
                        "Apa Ajawaban Anda?",
                        "SIMPAN!",
                        JOptionPane.QUESTION_MESSAGE
                );
                System.out.println(jawaban);
            }
        });
        view.add(test);
        view.add(font);

        font.add(size14);
        font.add(size16);
        font.add(size18);
        font.add(custom);

        menuBar.add(file);
        menuBar.add(view);
        menuBar.add(edit);
        menuBar.add(search);

        this.setJMenuBar(menuBar);


        this.setLocationRelativeTo(null);
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);


        //mENGESET uKURAN mINIIMUM JFrame        this.pack(); //komponen nya jadi 1        this.setMinimumSize(this.getPreferredSize()); //mengupdate ukuran yang pas untuk window itu        this.setVisible(true);
    }

    private void changeTextSize(Integer size) {
        System.out.println(size);
        Font originalFont = textArea.getFont();
        Font newFont = new Font(originalFont.getFontName(),
                originalFont.getStyle(),
                size);
        //Set Font ke Text Area        textArea.setFont(newFont); //Menmpilkan Font yang baru ke dalam text area    }

    public static void main(String[] args) {
        Notepad notepad = new Notepad();
    }
}


//Jchooser untuk pemilih file//jangan lupa di tutup




Contoh Output nya :

Pertama Tulis sebuah kalimat di Notepad


Lalu klik View -> Font -> dan pilih size 14 seperti gambar dibawah ini


Maka tulisan akan menyesuaikan font nya


Thank You...

Kamis, 06 April 2017

Layout Pada Java

Pada pertemuan ke empat kami membuat tampilan layout pada Java yang dimana class tersebut bernama Notepad.java

Pertama,Kami membuat Tampilan JFrame sederhana

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.SocketTimeoutException;

/** * Created by putriramadannia_pc on 4/5/2017. */public class Notepad extends JFrame {
    public Notepad() {
        try {
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        } catch (ClassNotFoundException e) {     //menentukan tampilan dari window//tampilan dari sistem  nya            e.printStackTrace();
        }
         catch(InstantiationException e){
            e.printStackTrace();
        } catch(IllegalAccessException e){
            e.printStackTrace();
        } catch(UnsupportedLookAndFeelException e){
            e.printStackTrace();
        }

        JPanel panel = (JPanel) this.getContentPane(); //cara ngambil content jframa        GridLayout gridLayout = new GridLayout(0, 2);//layout manager        panel.setLayout(gridLayout);

        JTextField field = new JTextField(); //dia buat text field dan area field=satu baris,area banyak baris        JTextArea textArea = new JTextArea(); //layup untuk mengatur        panel.add(field);
        panel.add(textArea);

        this.setTitle("Notepad");

        JMenuBar menuBar = new JMenuBar();
        JMenu file = new JMenu("File"),
                view = new JMenu("View");
        JMenuItem open = new JMenuItem("Open"),
                save = new JMenuItem("Save"),
                saveAs = new JMenuItem("Save As");
        JMenu font = new JMenu("Font");
        JMenuItem size14 = new JMenuItem("14");
        JMenuItem size16 = new JMenuItem("16");
        JMenuItem size18 = new JMenuItem("18");

        file.add(open);
        file.add(save);
        file.add(saveAs);

        //Menu untuk Test Alert Box        JMenuItem test = new JMenuItem("Test");
        test.addActionListener(new ActionListener() {
            @Override            public void actionPerformed(ActionEvent e) {
                JOptionPane.showMessageDialog(Notepad.this, "Jangan" +
                                "ada sianida diantara kita.",
                        "AWAS!",
                        JOptionPane.WARNING_MESSAGE);

                String jawaban = JOptionPane.showInputDialog(Notepad.this,
                        "Apa Ajawaban Anda?",
                        "Hai sayang!",
                        JOptionPane.WARNING_MESSAGE
                );
                System.out.println(jawaban);
            }
        });
        view.add(test);

        view.add(font);
        font.add(size14);
        font.add(size16);
        font.add(size18);
        menuBar.add(file);
        menuBar.add(view);
        this.setJMenuBar(menuBar);


        this.setLocationRelativeTo(null);
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);


        //mENGESET uKURAN mINIIMUM JFrame        this.pack(); //komponen nya jadi 1        this.setMinimumSize(this.getPreferredSize()); //mengupdate ukuran yang pas untuk window itu        this.setVisible(true);
    }

    public static void main(String[] args) {
        Notepad notepad = new Notepad();
    }
}

saat di run



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

Minggu, 26 Maret 2017

Komponen pada Java

Di pertemuan kedua,kami mendapat penjelasan mengenai Komponen apa saja yang ada di Java.Misal nya ada Class,Object,Args dll,kemudian,Bang Ruswan Menyarankan agar kami menghapal mati susunan pada public,
Contoh : public static void main(String[]  args){ }

Dan bang Ruswan Menjelaskan apa itu Class,Object,Args

  • Class Harus Public, agar dapat di akses secara keseluruhan.
  • Berbasis Object Oriented.
  • Menjalankan dalam Terminal dan Harus ada Fungsi.
  • Static,Method tersebut bisa diakses walaupun tidak dibuat.
  • Args, Menyimpan variabel yang di kirimkan ke Aplikasi tersebut.
Setelah menjelaskan itu,Bang Ruswan menunjukkan contoh kodingan Java yaitu Mainan,java dan Mobilmobilan.java seperti gambar yang di bawah ini.



Gambar 1.1 Mainan.java



Gambar 1.2 Mobilmobilan.java

Kemudian Bang Ruswan berlanjut memberikan contoh Operasi.java tetapi tidak dapat terselesaikan karna mengingat waktu nya juga sudah habis.Sebelum mengakhiri kelas Lab bang Ruswan menyarankan kami agar menginstall dan memperbaharui Intellij IDEA nya dengan cara Klik DISINI dengan mengisi email kampus saja ;)

Sekian untuk Minggu ini... tunggu Minggu minggu selanjutnya yaaaaa




Thread dan Socket

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