Tampilkan postingan dengan label OOP. Tampilkan semua postingan
Tampilkan postingan dengan label OOP. Tampilkan semua postingan

Project java part 3 (final)


Hai, cukup memakan waktu untuk project ini selesai di-finalkan. Hal ini juga dipengaruhi berbagai faktor untuk menulis artikel. Sebelum melanjutkan ke bawah, pastikan kalian sudah membaca part 1 dan part 2. Karena tanpa kedua part sebelumnya tadi maka project tidak akan selesai. Nah langsung saja, buatlah class baru dalam package yang sama dengan class StructTree dan beri nama Tree. Nama yang digunakan haruslah Tree karena kode dibawah ditulis dalam kelas Tree. Setelah membuat class baru tersebut, silahkan copy kode dibawah kedalam class Tree.
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
import java.awt.event.ActionEvent;
import javax.swing.JTextField;
import java.awt.Font;
import java.awt.SystemColor;
import java.awt.Color;
import java.awt.Cursor;

import javax.swing.SwingConstants;
import javax.swing.JTextArea;
import javax.swing.JLabel;
import javax.swing.UIManager;


public class Tree {

    private JFrame frame;
    private JTextArea tampil;
    private JTextField number;
    private JTextField level;
    private JTextField daun;
    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    Tree window = new Tree();
                    window.frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the application.
     */
    public Tree() {
        initialize();
    }
    /**
     * Initialize the contents of the frame.
     */
       
    private void initialize() {
        frame = new JFrame("Binary Tree");
        frame.setBounds(100, 100, 450, 300);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().setLayout(null);
        frame.setResizable(false);
       
        StructTree mytree = new StructTree();
       
        JButton btnInsert = new JButton("Insert");
        btnInsert.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
        btnInsert.setForeground(Color.BLACK);
        btnInsert.setBackground(SystemColor.controlHighlight);
        btnInsert.setFont(new Font("MS Reference Sans Serif", Font.PLAIN, 12));
        btnInsert.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                int tambah;
                try{
                    tambah = Integer.parseInt(number.getText());
                    if(mytree.level(mytree.root)-1<5){
                        if(mytree.find(tambah)==null){
                            mytree.insert(tambah);
                        }
                        else{
                            JOptionPane.showMessageDialog(null, "Angka sudah dimasukkan");
                        }
                    }
                    else{
                        JOptionPane.showMessageDialog(null, "Level maksimum 5");
                    }
                   
                    // Create a stream to hold the output
                    ByteArrayOutputStream baos = new ByteArrayOutputStream();
                    PrintStream ps = new PrintStream(baos);
                    // IMPORTANT: Save the old System.out!
                    PrintStream old = System.out;
                    // Tell Java to use your special stream
                    System.setOut(ps);
                    // Print some output: goes to your special stream
                    mytree.print();
                    // Put things back
                    System.out.flush();
                    System.setOut(old);
                    // Show what happened
                    String tree = baos.toString();
                   
                    tampil.setText(tree);
                    level.setText(Integer.toString(mytree.level(mytree.root)-1));
                    daun.setText(Integer.toString(mytree.nbDaun(mytree.root)));
                   
                } catch(Exception e){
                    JOptionPane.showMessageDialog(null, "Input tidak valid");
                    number.setText("");
                }
            }
        });
        btnInsert.setBounds(307, 59, 117, 37);
        frame.getContentPane().add(btnInsert);
       
        JButton btnDelete = new JButton("Delete");
        btnDelete.setForeground(Color.BLACK);
        btnDelete.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
        btnDelete.setBackground(SystemColor.controlHighlight);
        btnDelete.setFont(new Font("MS Reference Sans Serif", Font.PLAIN, 12));
        btnDelete.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg1) {
                int kurang;
                try{
                    kurang = Integer.parseInt(number.getText());
                   
                    if(mytree.level(mytree.root)-1>0){
                        if(mytree.find(kurang)!=null){
                            mytree.hapus(mytree.root,kurang);
                        }
                        else{
                            JOptionPane.showMessageDialog(null, kurang+" Tidak ada di dalam tree");
                        }
                    }
                    else{
                        JOptionPane.showMessageDialog(null, "Tidak bisa menghapus node akar");
                        number.setText("");
                    }
                   
                    // Create a stream to hold the output
                    ByteArrayOutputStream baos2 = new ByteArrayOutputStream();
                    PrintStream ps2 = new PrintStream(baos2);
                    // IMPORTANT: Save the old System.out!
                    PrintStream old2 = System.out;
                    // Tell Java to use your special stream
                    System.setOut(ps2);
                    // Print some output: goes to your special stream
                    mytree.print();
                    // Put things back
                    System.out.flush();
                    System.setOut(old2);
                    // Show what happened
                    String tree = baos2.toString();
                   
                    tampil.setText(tree);
                    level.setText(Integer.toString(mytree.level(mytree.root)-1));
                    daun.setText(Integer.toString(mytree.nbDaun(mytree.root)));
                   
                } catch(Exception e1){
                    JOptionPane.showMessageDialog(null, "Input tidak valid");
                    number.setText("");
                }
            }
        });
        btnDelete.setBounds(307, 107, 117, 37);
        frame.getContentPane().add(btnDelete);
       
        JButton btnSearch = new JButton("Search");
        btnSearch.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg2) {
                int cari;
                try{
                    cari = Integer.parseInt(number.getText());
                    if(mytree.find(cari)!=null){
                        JOptionPane.showMessageDialog(null, cari+" Ada di dalam tree");
                    }
                    else{
                        JOptionPane.showMessageDialog(null, cari+" Tidak ada di dalam tree");
                    }
                } catch(Exception e2){
                    JOptionPane.showMessageDialog(null, "Input tidak valid");
                    number.setText("");
                }
            }
        });
        btnSearch.setForeground(Color.BLACK);
        btnSearch.setBackground(SystemColor.controlHighlight);
        btnSearch.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
        btnSearch.setFont(new Font("MS Reference Sans Serif", Font.PLAIN, 12));
        btnSearch.setBounds(307, 155, 117, 37);
        frame.getContentPane().add(btnSearch);
       
        tampil = new JTextArea();
        tampil.setBackground(Color.WHITE);
        tampil.setDisabledTextColor(Color.WHITE);
        tampil.setEditable(false);
        tampil.setFont(new Font("MS Reference Sans Serif", Font.PLAIN, 11));
        tampil.setBounds(10, 11, 287, 203);
        frame.getContentPane().add(tampil);
        tampil.setColumns(10);
        tampil.setLineWrap(true);
       
        number = new JTextField();
        number.setHorizontalAlignment(SwingConstants.CENTER);
        number.setBackground(SystemColor.text);
        number.setForeground(Color.BLACK);
        number.setFont(new Font("MS Reference Sans Serif", Font.PLAIN, 12));
        number.setBounds(307, 11, 117, 37);
        frame.getContentPane().add(number);
        number.setColumns(10);
       
        JButton btnClose = new JButton("Close");
        btnClose.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg3) {
                String ObjButtons[] = {"Yes","No"};
                int pilihan = JOptionPane.showOptionDialog(null,"Apakah Anda Yakin Ingin keluar ?","Message",JOptionPane.DEFAULT_OPTION,JOptionPane.QUESTION_MESSAGE,null,ObjButtons,ObjButtons[1]);
                if(pilihan == 0){
                    JOptionPane.showMessageDialog(null,"Credit :\nMUHAMMAD JUNDANA AB  - 24010314130069\nGALIH DEA PRATAMA           - 24010314130080\nHAFIDH AULIA WIRANDI       - 24010314130095\nMUHAMMAD WAGE JULI S - 24010314130114 ");
                    System.exit(0);
                }
            }
        });
        btnClose.setForeground(Color.BLACK);
        btnClose.setBackground(SystemColor.controlHighlight);
        btnClose.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
        btnClose.setFont(new Font("MS Reference Sans Serif", Font.PLAIN, 12));
        btnClose.setBounds(307, 212, 117, 37);
        frame.getContentPane().add(btnClose);
       
        JLabel lblLevel = new JLabel("Level                :");
        lblLevel.setBounds(10, 225, 86, 14);
        frame.getContentPane().add(lblLevel);
       
        level = new JTextField();
        level.setBorder(null);
        level.setBackground(UIManager.getColor("Button.background"));
        level.setBounds(100, 222, 22, 20);
        frame.getContentPane().add(level);
        level.setColumns(10);
       
        JLabel lblDaun = new JLabel("Jumlah daun :");
        lblDaun.setBounds(10, 245, 86, 14);
        frame.getContentPane().add(lblDaun);
       
        daun = new JTextField();
        daun.setBorder(null);
        daun.setBackground(UIManager.getColor("Button.background"));
        daun.setBounds(100, 242, 22, 20);
        frame.getContentPane().add(daun);
        daun.setColumns(10);
    }
}

Setelah kode diatas di copy, silahkan di compile dan lihat hasilnya. Yap sebuah program desktop berhasil kalian buat.


Jika ingin mencoba programnya saja, bisa download disini : tree
Cek terus project-project yang akan saya buat. Terimaksih semoga bermanfaat.

Project java part 2


Setelah kita mempersiapkan apa yang perlu di persiapkan pada Project java part 1. Kali ini masuk ke kodingan dari project yang akan dibuat. Postingan kali ini penulis share kodenya meskipun ada warning yang didapat namun tidak berpengaruh terhadap hasil dari project. Kode dibawah adalah kode  untuk struktur data tree, namun belum untuk tampilan desktop karena kode untuk struktur tree cukup panjang. Pada kode juga terdapat dokumentasi yang bisa membantu untuk memahami kode ini. Garis besarnya struktur tree bisa melakukan insert, search dan delete, sedangkan lainnya hanya tambahan untuk informasi pada tree.

Nah, bagaimana menggunakan kode dibawah ? Cukup simpel lho !. Buatlah file project pada IDE eclipse atau Klik File > new > Java Project, akan muncul suatu jendela, cukup isikan nama project dan klik finish. Akan muncul file project yang dibuat tadi di tab kiri eclipse. Buka file project tersebut, pada folder src klik kanan > new > package dan klik finish setelah memasukkan nama package pada jendela yang muncul. Selanjutnya adalah membuat class, klik kanan pada package yang dibuat tadi pilih new dan pilih class, perlu diperhatikan disini nama class yang dimasukka haruslah StructTree ,berbeda dengan pemberian nama project dan nama package, untuk menggunakan kode dibawah haruslah menggunakan nama class yang ada pada kode. Klik finish dan paste kode dibawah kedalam class yang baru saja dibuat. Nah class StructTree siap untuk digunakan, selanjutnya adalah membuat interface dari project tersebut yang akan dijelaskan pada postingan berikutnya.
import java.util.*;

class Node{
    int data;
    Node left;
    Node right;
    Node(int x){
        this.data = x;
    }
}

class StructTree{
    Node root;

    /**
     * Mengecek apakah tree masih kosong
     **/
    boolean isEmpty(){
        return (root == null);
    }
   
    boolean isHaveChild(Node localRoot){
        if(localRoot.left!=null || localRoot.right!=null){
            return true;
        }
        else{
            return false;
        }
    }
    /**
     * Memasukkan suatu nilai ke dalam tree.
     * Jika nilai tersebut lebih kecil dari nilai node, maka bergerak ke kiri terus
     * hingga menjadi child, begitu juga sebaliknya.
     **/
    void insert(int input){
        Node temp = new Node(input);
        if (isEmpty())
            root = temp;
        else {
            Node cursor = root,
                 parent = null;
            while (cursor != null){
                parent = cursor;
                if (input < cursor.data)
                    cursor = cursor.left;
                else
                    cursor = cursor.right;
            }
            /**
             * Menambahkan Node baru pada kiri/kanan Node parent bergantung
             * pada nilai input dan nilai yang disimpan Node parent
             */
            if (input < parent.data){
                parent.left = temp;
                return;
            }
            else {
                parent.right = temp;
                return;
            }
        }
    }
    /**
     * Mencari suatu nilai dalam tree berdasarkan prinsip :
     * Selama belum menemukan nilai yang sama,
     * Jika nilai yang dicari lebih kecil dari nilai yang disimpan dalam Node
     * maka bergerak ke left Child begitu juga sebaliknya.
     **/
    Node find(int key){
        Node cursor = root;
        while (cursor != null){
            if (cursor.data == key)
                return cursor;
            else if (key < cursor.data)
                cursor = cursor.left;
            else
                cursor = cursor.right;
        }
        return null;
    }
   
    Node minValue(Node localRoot) {
        if (localRoot.left == null)
              return localRoot;
        else
              return minValue(localRoot.left);
    }
    Node maxValue(Node localRoot) {
        if (localRoot.right == null)
              return localRoot;
        else
              return maxValue(localRoot.right);
    }
   
    boolean isLeftChild = true;
   
    boolean hapus(Node localRoot, int key){
        Node current = localRoot;
        Node parent = localRoot;
       
        while (current.data != key) {
            parent = current;
            if (key < current.data) {
                isLeftChild = true;
                current = current.left;
            } else {
                isLeftChild = false;
                current = current.right;
            }
            if (current == null) {
                return false;
            }
        }
        if(current.data == key){
            if(current.left != null){
                int x = current.data =  maxValue(current.left).data;
                hapus(current.left,x);
            }
            else if(current.right != null){
                int x = current.data = minValue(current.right).data;
                hapus(current.right,x);
            }
            else if(current.left==null && current.right==null){
                if(parent != current){
                    if(isLeftChild){
                        parent.left = null;
                    }
                    else{
                        parent.right = null;
                    }
                }
                else{
                    if(isLeftChild){
                        Node s = find(current.data);
                        if(s.left != null){
                            find(maxValue(s.left).data).left = null;
                        }
                        else{
                            find(minValue(s.right).data).right = null;
                        }
                    }
                    else{
                        Node s = find(current.data);
                        if(s.left != null){
                            find(maxValue(s.left).data).left = null;
                        }
                        else{
                            find(minValue(s.right).data).right = null;
                        }
                    }
                }
            }
            return true;
        }
        else{
            return false;
        }
    }
   
    Node getParent(Node localRoot,int x){
        Node current = localRoot;
        Node parent = localRoot;
        while (current != null){
            if (current.data == x)
                return parent;
            else if (x < current.data){
                current = current.left;
            }
            else{
                parent = current;
                current = current.right;
            }
        }
        return null;
    }
   
    int nbDaun(Node localRoot){
        Node current = localRoot;
        if(current == null){
            return 0;
        }
        else{
            if((current.left==null) && (current.right==null)){
                return 1;
            }
            else{
                return nbDaun(current.left) + nbDaun(current.right);
            }
        }
    } 
   
    int level(Node localRoot){
        int u,v;
       
        if (localRoot == null){
            return 0;
        }
        u = level(localRoot.left);
        v = level(localRoot.right);
        if (u > v)
                return u+1;
        else return v+1;
    }
   
    void print() {
        Stack s = new Stack();
        s.push(root);
        int nBlanks = 32;
        boolean isRowEmpty = false;
        while (isRowEmpty == false) {
            Stack localStack = new Stack();
            isRowEmpty = true;
            for (int j = 0; j < nBlanks; j++) {
                System.out.print(' ');
            }
            while (!s.isEmpty()) {
                Node temp = (Node) s.pop();
                if (temp != null) {
                    System.out.print(temp.data);
                    localStack.push(temp.left);
                    localStack.push(temp.right);
                    if (temp.left != null || temp.right != null) {
                        isRowEmpty = false;
                    }
                } else {
                    System.out.print("  ");
                    localStack.push(null);
                    localStack.push(null);
                }
                for (int j = 0; j < nBlanks * 2 - 2; j++) {
                    System.out.print(' ');
                }
            }
            System.out.println();
            nBlanks /= 2;
            while (!localStack.isEmpty()) {
                s.push(localStack.pop());
            }
        }
    }
}

Pemrograman Berorientasi Objek


Tentu kita sudah tau apa itu objek, nah pada pemrograman juga ada objek. Pemrograman berorientasi objek maksudnya semua data dan fungsi di dalam paradigma ini dibungkus dalam kelas-kelas atau objek-objek (wikipedia).

Sebenarnya artikel yang membahas pemrograman berorientasi objek banyak. Namun disini penulis ingin menyederhanakan kata-kata penjelasan tersebut agar lebih mudah dipahami.

Contoh objek sangat mudah ditemukan disekitar kita, bahkan diri kita sendiri merupakan objek. Akan tetapi tidak semua objek sama, walaupun ada beberapa yang hampir sama. Manusia terbagi dua gender, yaitu laki-laki dan perempuan. Si laki-laki dan perempuan tentu memiliki nama, umur, tempat tinggal dan sebagainya. Ciri yang dimiliki mereka disebut atribut pada pemrograman berorientasi objek. Pada dasarnya manusia memiliki kebiasaan, seperti makan, berjalan, berbicara dan lainnya. kebiasaan ini disebut dengan behavior. Atribut dan behavior inilah yang membangun sebuah objek. Tanpa keduanya sesuatu bukan merupakan objek. Selanjutnya yaitu class, class contohnya manusia, ya, manusia terdiri atas kumpulan manusia laki-laki dan manusia perempuan. Jadi class merupakan kumpulan dari objek-objek.

Dengan memahami dasar, mempelajarinya akan lebih mudah. Untuk apa pemrograman berorientasi objek ? Yaitu agar penyelesaian suatu masalah lebih mudah dilakukan. Pada PBO ini kita tidak perlu memperhatikan bagaimana cara menyelesaikan masalah ( terstruktur) yang perlu kita lakukan adalah mengatr objek agar menyelesaikan masalah tersebut.

Nah itu dia konsep dasar dari pemrograman berorientasi objek semoga tidak bingung. Silahkan berkomentar dibawah jika ingin berkomentar :)

Project java part 1

 

Salah satu bahasa pemrograman berorientasi objek yaitu java. Java berada di peringkat pertama bahasa pemrograman populer versi spectrum.ieee.org  pada tahun 2015. Pada postingan kali ini penulis akan menjelaskan salah satu project yang pernah dibuat. Namun penjelasan project ini tidak hanya disatu postingan karena keterbatasan waktu penulis.

Project yang pernah penulis buat yaitu membuat program tree. Konsep tree sendiri bisa di search engine kesayangan kalian. Pada project ini digunakan IDE eclipse yang bisa di download pada link dibawah. Pada eclipse ditambahkan windows builder. Windows builder ini digunakan untuk membuat Graphic User Interface (GUI).

Jadi yang pertama adalah menginstal JRE, JRE singkatan dari Java Runtime Environment , ini diperlukan untuk menjalankan IDE eclipse. Silahkan download JRE pada situs oracle. Untuk cara penginstalannya tidaklah sulit. Intinya dengan memperhatikan perintah dan mengklik tombol next. Selanjutnya adalah menginstal eclipse, berikut langkah-langkahnya : 
  1. Download eclipse 32 bit atau 64 bit. Sesuaikan dengan pc yang kalian gunakan.
  2. Klik file installer eclipse yang berformat .exe. Maka akan muncul jendela penginstalan. Gantilah workspace jika diperlukan.
Nah setelah terinstal eclipse dan java di pc. Selanjutnya yaitu menambahkan windows builder pada eclispe tersebut. Dengan adanya windows builder kita tidak perlu membuat window secara manual, jadi tinggal drag dan drop bagian-bagian yang dibutuhkan ke jendela.

Cara menginstal windows builder di eclipse yaitu :
  1. Klik Help > Install New Software...
  2. Pada work with isikan : http://download.eclipse.org/releases/juno
  3. Kalian bisa menemukan Windows builder di bagian General Purpose Tools. Centang windows builder tersebut dan klik next.
Nah itu dia persiapan untuk project java ini. Untuk kode-nya di posting berikutnya akan dijelaskan. Silahkan berkomentar dibawah jika ingin berkomentar :)

Most Popular