Priscilliaagnes's Blog

May 21, 2010

OOP week 14

Filed under: Uncategorized — Priscillia @ 12:48 pm

Pada hari Kamis, 20 Mei 2010 pk 8.20-11.40 diadakan kelas OOP week 14. Pada pertemuan itu mengerjakan project untuk semester 2 mengenai Rush Hour. Dan project tesebut harus sudah jadi sampai bergerak. Hasil codingnya adalah sebagai berikut:

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class GarageGUI {

 int n = 5;
 private JFrame frame;
 private JPanel contentPane, garagePanel, mainPanel, actionPanel;
 private JButton doButton;
 private JComboBox vehicleCombo, directionCombo;
 private JLabel stepLabel;
 private JTextField stepField;
 private char[][] map;
 private List listOfVehicle = new ArrayList();
 private JButton buttons;
 private Color[] colors = {Color.WHITE, Color.BLUE, Color.CYAN, Color.GREEN,
 Color.MAGENTA, Color.ORANGE, Color.PINK, Color.CYAN, Color.RED,
 Color.LIGHT_GRAY, Color.YELLOW};
 private String[] variables = {"i", "c", "u", "f", "g", "e", "b"};
 private String[] directions = {"up", "down", "left", "right"};
 private Color buttonColor;
 private EventHandler handler = new EventHandler();

 public String getMovement(ArrayList coordinate1, ArrayList coordinate2) {
 String movement = "";
 if (coordinate1.get(0) == coordinate2.get(0)) {
 movement = "Horizontal";
 } else if (coordinate1.get(1) == coordinate2.get(1)) {
 movement = "Vertical";
 }
 return movement;

 }

 public String cek(Object mobilku) {
 ArrayList coordinateCar = new ArrayList();
 ArrayList xy = new ArrayList();
//        int[] xy = new int[2];
 for (int i = 0; i < n; i++) {
 for (int j = 0; j < n; j++) {
 if (map[i][j] == mobilku) {
//                    System.out.println("ij = " + i + " " + j);
 xy = new ArrayList();
 xy.add(i);
 xy.add(j);
 coordinateCar.add(xy);
 }
 }
 }
 String movement = "";
 if (coordinateCar.size() == 1) {
 movement = "horizontal-vertical";
 } else {
 movement = getMovement((ArrayList)coordinateCar.get(0),
 (ArrayList)coordinateCar.get(1));
 }
//        System.out.println("move: " + movement);
//        System.out.println("akhir");
 return movement;
 }

 public void initializeItems() {
 doButton = new JButton("DO");
 vehicleCombo = new JComboBox(variables);
 directionCombo = new JComboBox(directions);
 stepLabel = new JLabel("Step: ");
 stepField = new JTextField();
 }

 public void initializePanels() {
 mainPanel = new JPanel(new BorderLayout());
 actionPanel = new JPanel(new FlowLayout(FlowLayout.CENTER, 5, 5));
 garagePanel = new JPanel(new GridLayout(5, 5));
 contentPane = new JPanel(new BorderLayout(5, 5));
 }

 public void initialization() {
 initializeItems();
 initializePanels();
 }

 public void populateDefaultSetting() {
 }

 public void registerEventListener() {
 doButton.addActionListener(handler);
 }

 public void buildLayout() {
 int garageBorderCounter = -1;
 JButton grassButton;
 for (int i = 0; i < n; i++) {
 garageBorderCounter = 0;
 for (int j = 0; j < n + 2; j++) {
 if (garageBorderCounter < n) {

 if (map[i][j] != '0') {
 buttons = new JButton("" + String.valueOf(map[i][j]));
 garagePanel.add(buttons);
 buttonColor = getColorOfVehicle(map[i][j]);
 if (buttonColor != null) {
 buttons.setForeground(Color.BLACK);
 buttons.setBackground(buttonColor);
 buttons.setEnabled(false);
 }
 garagePanel.add(buttons);
 } else {
 garagePanel.add(new JLabel());
 }
 } else {
 if (i != (n / 2)) {
 grassButton = new JButton("@");
 grassButton.setBackground(new Color(30, 30, 30));
 grassButton.setForeground(Color.WHITE);
 grassButton.setEnabled(false);
 garagePanel.add(grassButton);
 } else {
 grassButton = new JButton("*");
 grassButton.setEnabled(false);
 garagePanel.add(grassButton);
 }
 }
 garageBorderCounter++;
 }
 actionPanel.add(vehicleCombo);
 actionPanel.add(directionCombo);
 actionPanel.add(stepLabel);
 actionPanel.add(stepField);
 actionPanel.add(doButton);

 mainPanel.add(garagePanel, BorderLayout.CENTER);
 mainPanel.add(actionPanel, BorderLayout.SOUTH);

 contentPane.add(mainPanel, BorderLayout.CENTER);
 contentPane.add(new JPanel(), BorderLayout.SOUTH);
 contentPane.add(new JPanel(), BorderLayout.NORTH);
 contentPane.add(new JPanel(), BorderLayout.WEST);
 contentPane.add(new JPanel(), BorderLayout.EAST);
 }
 }

 public void buildGUI() {
 readFile();
 initialization();
 buildLayout();
 populateDefaultSetting();
 registerEventListener();
 frame = new JFrame("Rush Hour");
 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 frame.setSize(370, 350);
 frame.setLocationRelativeTo(null);
 frame.setResizable(false);
 frame.setContentPane(contentPane);
 frame.setVisible(true);

 }

 public GarageGUI() {
 buildGUI();
 for (int x = 0; x < listOfVehicle.size(); x++) {
 System.out.println("" + listOfVehicle.get(x) + " move = " +
 cek(listOfVehicle.get(x)));
 }
 }

 public void readFile() {
 try {
 File file = new File("D:/map.txt");
 System.out.println("masuk");
 FileReader fr = new FileReader(file);
 BufferedReader br = new BufferedReader(fr);
 String s;
 int x = 0, y = 0, width;
 while (null != (s = br.readLine())) {
 StringTokenizer st = new StringTokenizer(s, ",");
 if (y == 0) {
 width = st.countTokens();
 map = new char[width][width];
 }
 x = 0;
 while (st.hasMoreTokens()) {
 map[y][x] = st.nextToken(",").charAt(0);
 if (!listOfVehicle.contains(map[y][x]) && map[y][x] != '0') {
 listOfVehicle.add(map[y][x]);
 }
 x++;
 }
 y++;
 }

 } catch (Exception e) {
 e.printStackTrace();
 }
 }

 public Color getColorOfVehicle(char x) {
 char a = '0';
 for (int i = 0; i < listOfVehicle.size(); i++) {
 a = listOfVehicle.get(i).toString().charAt(0);
 if (a == x) {
 return colors[i];
 }
 }
 return null;
 }

 public static void main(String[] args) {
 GarageGUI garageGUI = new GarageGUI();
 }

 private class EventHandler implements ActionListener {

 public void actionPerformed(ActionEvent e) {
 Object source = e.getSource();
 if (source != null && source == doButton) {
 String myVehicle = vehicleCombo.getSelectedItem().toString();
 String myDirection = directionCombo.getSelectedItem().toString();
 int myStep = -1;
 try {
 myStep = Integer.parseInt(stepField.getText());
 } catch (Exception ex) {
 myStep = 0;
 }

 System.out.println(myVehicle + " " + myDirection + " " + myStep);
 if (myStep > 0) {
 System.out.println("do someething");
 } else {
 System.out.println("illegal move");
 }
 }
 }
 }
}

Hasil tampilan dr hasil coding di atas adalah:

Sedangkan hasil outputnya adalah:

masuk
c move = Horizontal
d move = Horizontal
e move = horizontal-vertical
b move = Vertical
a move = Horizontal
f move = Horizontal
g move = Vertical
i move = horizontal-vertical

Demikian pelajaran OOP week 14 …. Week 14 juga merupakan week terakhir untuk kelas OOP.

May 7, 2010

OOP week 13

Filed under: Uncategorized — Priscillia @ 4:10 pm

Pada hari Kamis, 6 Mei 2010 pk 8.20-11.40 diadakan kelas OOP week ke 13. Pada pertemuan ini membahas tentang Rush Hour.

Rush Hour

Rush Hour adalah game yang cara bermainnya adalah memindahkan sebuah mobil yang telah ditentukan oleh pembuat game tersebut, misalnya: mobil warna pink ke arah tanda panah atau keluar arena. Bila pemain berhasil mengelurkan atau mengarahkan pada tanda panah tersebut maka pemain tersebut dapat menuju ke level berikutnya atau pemain tersebut berhasil menyelesaikannya.

Rush hour merupakan project saya pada semester 2 ini. Hasil codingnya adalah sebagai berikut:

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class GarageGUI {
int n = 5;
private JFrame frame;
private JPanel contentPane, garagePanel, mainPanel, actionPanel;
private JButton doButton;
private JComboBox vehicleCombo, directionCombo;
private JLabel stepLabel;
private JTextField stepField;
private char[][] map;
private List listOfVehicle = new ArrayList();
private JButton buttons;
private Color[] colors = {Color.WHITE,Color.BLUE, Color.CYAN, Color.GREEN,
Color.MAGENTA,Color.ORANGE, Color.PINK,Color.CYAN,Color.RED,Color.LIGHT_GRAY,Color.YELLOW};
private String[] variables = {"i","c","u","f","g","e","b"};
private String[] directions = {"up", "down", "left", "right"};
private Color buttonColor;
private EventHandler handler = new EventHandler();
public void initializeItems() {
doButton = new JButton("DO");
vehicleCombo = new JComboBox(variables);
directionCombo = new JComboBox(directions);
stepLabel = new JLabel("Step: ");
stepField = new JTextField();
}
public void initializePanels() {
mainPanel = new JPanel(new BorderLayout());
actionPanel = new JPanel(new FlowLayout(FlowLayout.CENTER, 5, 5));
garagePanel = new JPanel(new GridLayout(5, 5));
contentPane = new JPanel(new BorderLayout(5, 5));
}
public void initialization() {
initializeItems();
initializePanels();
}
public void populateDefaultSetting() {
}
public void registerEventListener() {
doButton.addActionListener(handler);
}
public void buildLayout() {
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (map[i][j] != '0') {
buttons = new JButton("" + String.valueOf(map[i][j]));
garagePanel.add(buttons);
buttonColor = getColorOfVehicle(map[i][j]);
if(buttonColor != null) {
buttons.setForeground(Color.BLACK);
buttons.setBackground(buttonColor);
buttons.setEnabled(false);
}
} else {
garagePanel.add(new JLabel());
}
}
}
actionPanel.add(vehicleCombo);
actionPanel.add(directionCombo);
actionPanel.add(stepLabel);
actionPanel.add(stepField);
actionPanel.add(doButton);
mainPanel.add(garagePanel, BorderLayout.CENTER);
mainPanel.add(actionPanel, BorderLayout.SOUTH);
contentPane.add(mainPanel, BorderLayout.CENTER);
contentPane.add(new JPanel(),BorderLayout.SOUTH);
contentPane.add(new JPanel(),BorderLayout.NORTH);
contentPane.add(new JPanel(),BorderLayout.WEST);
contentPane.add(new JPanel(),BorderLayout.EAST);}
public void buildGUI() {
readFile();
initialization();
buildLayout();
populateDefaultSetting();
registerEventListener();
frame = new JFrame("Rush Hour");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 300);
frame.setLocationRelativeTo(null);
frame.setResizable(false);
frame.setContentPane(contentPane);
frame.setVisible(true);
}
public GarageGUI() {
buildGUI();
}
public void readFile() {
try {
File file = new File("D:/map.txt");
System.out.println("masuk");
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
String s;
int x = 0, y = 0, width;
while (null != (s = br.readLine())) {
StringTokenizer st = new StringTokenizer(s, ",");
if (y == 0) {
width = st.countTokens();
map = new char[width][width];
}
x = 0;
while (st.hasMoreTokens()) {
map[y][x] = st.nextToken(",").charAt(0);
if (!listOfVehicle.contains(map[y][x]) && map[y][x] != '0') {
listOfVehicle.add(map[y][x]);
}
x++;
}
y++;
}
} catch (Exception e) {
e.printStackTrace();
}
}
public Color getColorOfVehicle (char x) {
char a = '0';
for(int i =0; i<listOfVehicle.size();i++) {
a = listOfVehicle.get(i).toString().charAt(0);
if (a==x) {
return colors[i];
}
}
return null;
}
public static void main(String[] args) {
GarageGUI garageGUI = new GarageGUI();
}
private class EventHandler implements ActionListener {
public void actionPerformed(ActionEvent e) {
Object source = e.getSource();
if (source != null && source == doButton) {
String myVehicle = vehicleCombo.getSelectedItem().toString();
String myDirection = directionCombo.getSelectedItem().toString();
int myStep = -1;
try{
myStep = Integer.parseInt(stepField.getText());
} catch (Exception ex){
myStep = 0;
}
System.out.println(myVehicle + " " + myDirection + " " + myStep);
if(myStep > 0 ) {
System.out.println("do someething");
}
else {
System.out.println("illegal move");
}
}
}
}
}
import java.awt.BorderLayout;import java.awt.Color;import java.awt.FlowLayout;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.BufferedReader;import java.io.File;import java.io.FileReader;import java.util.ArrayList;import java.util.List;import java.util.StringTokenizer;import javax.swing.JButton;import javax.swing.JComboBox;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTextField; public class GarageGUI { int n = 5;    private JFrame frame;    private JPanel contentPane, garagePanel, mainPanel, actionPanel;    private JButton doButton;    private JComboBox vehicleCombo, directionCombo;    private JLabel stepLabel;    private JTextField stepField;    private char[][] map;    private List listOfVehicle = new ArrayList();    private JButton buttons;    private Color[] colors = {Color.WHITE,Color.BLUE, Color.CYAN, Color.GREEN,    Color.MAGENTA,Color.ORANGE, Color.PINK,Color.CYAN,Color.RED,Color.LIGHT_GRAY,Color.YELLOW};    private String[] variables = {"i","c","u","f","g","e","b"};    private String[] directions = {"up", "down", "left", "right"};    private Color buttonColor;    private EventHandler handler = new EventHandler(); public void initializeItems() {        doButton = new JButton("DO");        vehicleCombo = new JComboBox(variables);        directionCombo = new JComboBox(directions);        stepLabel = new JLabel("Step: ");        stepField = new JTextField();    } public void initializePanels() {        mainPanel = new JPanel(new BorderLayout());        actionPanel = new JPanel(new FlowLayout(FlowLayout.CENTER, 5, 5));        garagePanel = new JPanel(new GridLayout(5, 5));        contentPane = new JPanel(new BorderLayout(5, 5));    } public void initialization() {        initializeItems();        initializePanels();    } public void populateDefaultSetting() {    } public void registerEventListener() {      doButton.addActionListener(handler);    } public void buildLayout() {        for (int i = 0; i < n; i++) {            for (int j = 0; j < n; j++) {                if (map[i][j] != '0') {                    buttons = new JButton("" + String.valueOf(map[i][j]));                    garagePanel.add(buttons);                    buttonColor = getColorOfVehicle(map[i][j]);                    if(buttonColor != null) {                        buttons.setForeground(Color.BLACK);                        buttons.setBackground(buttonColor);                        buttons.setEnabled(false);                    }                } else {                    garagePanel.add(new JLabel());                }            }        }        actionPanel.add(vehicleCombo);        actionPanel.add(directionCombo);        actionPanel.add(stepLabel);        actionPanel.add(stepField);        actionPanel.add(doButton); mainPanel.add(garagePanel, BorderLayout.CENTER);        mainPanel.add(actionPanel, BorderLayout.SOUTH); contentPane.add(mainPanel, BorderLayout.CENTER);        contentPane.add(new JPanel(),BorderLayout.SOUTH);        contentPane.add(new JPanel(),BorderLayout.NORTH);        contentPane.add(new JPanel(),BorderLayout.WEST);        contentPane.add(new JPanel(),BorderLayout.EAST);} public void buildGUI() {        readFile();        initialization();        buildLayout();        populateDefaultSetting();        registerEventListener();        frame = new JFrame("Rush Hour");        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        frame.setSize(300, 300);        frame.setLocationRelativeTo(null);        frame.setResizable(false);        frame.setContentPane(contentPane);        frame.setVisible(true);    } public GarageGUI() {        buildGUI();    } public void readFile() {        try {            File file = new File("D:/map.txt");            System.out.println("masuk");            FileReader fr = new FileReader(file);            BufferedReader br = new BufferedReader(fr);            String s;            int x = 0, y = 0, width;            while (null != (s = br.readLine())) {                StringTokenizer st = new StringTokenizer(s, ",");                if (y == 0) {                    width = st.countTokens();                    map = new char[width][width];                }                x = 0;                while (st.hasMoreTokens()) {                    map[y][x] = st.nextToken(",").charAt(0);                    if (!listOfVehicle.contains(map[y][x]) && map[y][x] != '0') {                        listOfVehicle.add(map[y][x]);                    }                    x++;                }                y++;            } } catch (Exception e) {            e.printStackTrace();        }    } public Color getColorOfVehicle (char x) {        char a = '0';        for(int i =0; i<listOfVehicle.size();i++) {            a = listOfVehicle.get(i).toString().charAt(0);            if (a==x) {                return colors[i];            }        }        return null;    } public static void main(String[] args) {        GarageGUI garageGUI = new GarageGUI();    }    private class EventHandler implements ActionListener { public void actionPerformed(ActionEvent e) {            Object source = e.getSource();            if (source != null && source == doButton) {                String myVehicle = vehicleCombo.getSelectedItem().toString();                String myDirection = directionCombo.getSelectedItem().toString();                int myStep = -1;                try{                    myStep = Integer.parseInt(stepField.getText());                } catch (Exception ex){                    myStep = 0;                } System.out.println(myVehicle + " " + myDirection + " " + myStep);                if(myStep > 0 ) {                    System.out.println("do someething");                }                else {                    System.out.println("illegal move");                }            }        } } }

Mapnya adalah sebagai berikut:

c,c,d,d,e
0,0,b,0,0
a,a,b,0,0
0,0,f,f,g
i,0,0,0,g

Hasil outputnya adalah sebagai berikut:

Dari hasil output di atas, output tesebut dapat memindahkan mobil dengan huruf yang diinginkan tapi hanya bisa bergerak ke up dan down atau left dan right, misalnya mobil c hanya bisa ke kanan dan ke kiri sedangkan untuk mobil g hanya bis bergerak ke atas dan ke bawah. Tergantung letak mobil dan area yang dilalui kosong.

Dari hasil hasil output di atas saya belajar tentang cara memberi Combo Box pada GUI dan cara memberi warna pada GUI


ComboBox

Sebuah JComboBox , yang memungkinkan pengguna memilih salah satu dari beberapa pilihan. User dapat memilih dari pilihan yang disediakan oleh user. ComboBox membutuhkan ruang layar kecil, dan dapat diedit mereka (kolom teks) bentuk berguna untuk membiarkan pengguna dengan cepat memilih nilai tanpa membatasi pengguna dengan nilai-nilai yang ditampilkan pilihan. Komponen lain yang dapat satu-of-banyak adalah kelompok menampilkan tombol radio dan daftar . Kelompok tombol radio pada umumnya yang paling mudah bagi pengguna untuk mengerti, tetapi kotak kombo dapat lebih tepat bila ruang terbatas atau lebih dari beberapa pilihan yang tersedia. Daftar ini tidak terlalu menarik, tapi mereka lebih tepat daripada combo kotak ketika jumlah item besar (katakanlah, lebih dari 20) atau ketika memilih beberapa item mungkin berlaku.

Kode berikut, diambil dari ComboBoxDemo.java , menciptakan sebuah kotak kombo diedit dan set it up:

String[] petStrings = { "Bird", "Cat", "Dog", "Rabbit", "Pig" }; String [] = (petStrings "Burung", "Cat", "Anjing", "Rabbit", "Pig");

//Create the combo box, select item at index 4. / / Buat kotak kombo, pilih item pada indeks 4.
//Indices start at 0, so 4 specifies the pig. / / Indeks dimulai dari 0, jadi 4 menentukan babi.
JComboBox petList = new JComboBox(petStrings); JComboBox petList = JComboBox baru (petStrings);
petList.setSelectedIndex(4); petList.setSelectedIndex (4);
petList.addActionListener(this); petList.addActionListener (ini);

Penanganan Acara pada Combo Box

contoh:

 masyarakat kelas ComboBoxDemo ... implements ActionListener { mengimplementasikan ActionListener (
    . . . . . .
        petList.addActionListener(this) { petList.addActionListener (ini) (
    . . . . . .
    public void actionPerformed(ActionEvent e) { void publik actionPerformed (ActionEvent e) (
        JComboBox cb = (JComboBox)e.getSource(); JComboBox cb = (JComboBox) e.getSource ();
        String petName = (String)cb.getSelectedItem(); String petName = (String) cb.getSelectedItem ();
        updateLabel(petName); updateLabel (petName);
    } )
    . . . . . .
} )

addActionListener digunakan agar pc dapat menjalankan apa yang diberikan oleh user.

Color


Untuk memberikan warna dapat menggunakan JColorChooser. Contoh:

ColorChooserDemo public class JPanel meluas ... { (
    public ColorChooserDemo() { publik ColorChooserDemo () (
        super(new BorderLayout()); super (BorderLayout baru ());
        banner = new JLabel("Welcome to the Tutorial Zone!", banner = new JLabel ("Selamat datang di Zona Tutorial!",
                            JLabel.CENTER); JLabel.CENTER);
        banner.setForeground(Color.yellow); banner.setForeground (Color.yellow);
        . . . . . .
        tcc = new JColorChooser(banner.getForeground()); TCC = baru JColorChooser (banner.getForeground ());
        . . . . . .
        add(tcc, BorderLayout.PAGE_END); add (TCC, BorderLayout.PAGE_END);
    } )

Sebuah Pemilih warna dasar, seperti yang digunakan dalam program contoh, cukup untuk banyak program. Namun, API pemilih warna memungkinkan Anda untuk menyesuaikan dengan pemilih warna dengan menyediakan itu dengan panel preview desain sendiri, dengan menambahkan Pemilih Anda sendiri panel untuk itu, atau dengan menghapus panel pemilih dari pemilih yang ada warna. Selain itu, JColorChooser kelas menyediakan dua metode yang membuatnya mudah untuk menggunakan pemilih warna dalam sebuah dialog.

Membuat Custom Panel Pemilih

Pemilih warna default menyediakan tiga panel Pemilih:

  • Swatches — for choosing a color from a collection of swatches. Potongan-potongan – untuk memilih warna dari koleksi potongan-potongan.
  • HSB — for choosing a color using the Hue-Saturation-Brightness color model. HSB – untuk memilih warna menggunakan Kecerahan Saturasi warna-model-Hue.
  • RGB — for choosing a color using the Red-Green-Blue color model. RGB – untuk memilih warna dengan menggunakan warna Biru Hijau model-Red.

User dapat memperpanjang pemilih warna default dengan menambahkan panel Pemilih desain sendiri dengan addChooserPanel , atau Anda dapat membatasi dengan menghapus panel pemilih dengan removeChooserPanel .

Demikian pelajaran pada pertemuan tersebut. Sampai jumpa minggu depan……

April 30, 2010

OOP week 12

Filed under: Uncategorized — Priscillia @ 4:52 pm

Pada hari Kamis, 29 April 2010 pk 8.20-11.40 diadakan kelas OOP week ke 12 yang mengajar adalah Pak Tri. Pak Tri mengajar mengenai GUI.

Komponen-komponen Swing :

JFrame

JFrame adalah jendela tingkat atas dengan judul dan perbatasan. Ukuran frame meliputi area yang ditunjuk untuk perbatasan. Dimensi wilayah perbatasan dapat diperoleh dengan menggunakan getInsets metode. Karena daerah perbatasan termasuk dalam ukuran keseluruhan frame, perbatasan secara efektif mengaburkan sebagian dari frame, membatasi area yang tersedia untuk rendering dan / atau menampilkan subkomponen ke persegi panjang yang memiliki lokasi pojok kiri-atas (insets.left , insets.top) , dan memiliki ukuran width - (insets.left + insets.right) dengan height - (insets.top + insets.bottom).

Kode:

 / / 1.  Buat frame.
 JFrame frame = JFrame baru ("FrameDemo");
 / / 2.  Opsional: Apa yang terjadi ketika frame ditutup?
 frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
 / / 3.  Buat komponen dan menempatkan mereka dalam bingkai.
 //... Menciptakan emptyLabel ...
 frame.getContentPane (). tambahkan (emptyLabel, BorderLayout.CENTER);
 / / 4.  Ukuran bingkai.
 frame.pack ();
 / / 5.  Menunjukkannya.
 frame.setVisible (true);

Berikut adalah beberapa rincian tentang kode:

  1. Baris pertama kode menciptakan bingkai menggunakan konstruktor yang memungkinkan Anda mengatur bingkai judul. Yang lain yang sering digunakan JFrame constructor adalah konstruktor-argumen.
  2. Berikutnya menentukan kode apa yang terjadi ketika pengguna menutup frame The. EXIT_ON_CLOSE keluar operasi program ketika pengguna menutup frame. perilaku ini cocok untuk program ini karena program tersebut hanya memiliki satu frame, dan menutup frame membuat program yang tidak berguna.
  3. Bit berikutnya kode menambahkan label kosong ke panel konten frame,. Jika Anda belum terbiasa puas dengan panel dan bagaimana menambahkan komponen mereka silakan baca Menambah Komponen ke Konten Pane .Untuk bingkai yang memiliki menu, yang biasanya Anda menambahkan menu bar untuk bingkai di sini menggunakan setJMenuBar metode. LihatCara Menggunakan Menu untuk rincian.
  4. The pack metode ukuran frame sehingga semua isinya pada atau di atas ukuran yang mereka sukai. Sebuah alternatif untuk pack ini adalah untuk menetapkan ukuran frame secara eksplisit dengan menelepon setSize atau setBounds (yang juga menentukan lokasi frame). Secara umum, dengan menggunakan pack adalah lebih baik untuk menelepon setSize , karena pack daun tata letak bingkai manajer yang bertanggung jawab atas ukuran frame, dan manajer tata letak yang baik menyesuaikan diri dengan dependensi platform dan faktor lain yang mempengaruhi ukuran komponen.contoh ini tidak mengatur lokasi bingkai, tetapi mudah untuk melakukannya dengan baik setLocationRelativeTo atau setLocation metode. Misalnya, sebuah pusat kode berikut pada layar bingkai:
     frame.setLocationRelativeTo (null);
  5. Calling setVisible(true) membuat bingkai muncul pada layar. Kadang-kadang Anda bisa melihat show metode yang digunakan sebagai gantinya,. Kedua penggunaan ini setara tapi kita menggunakan setVisible(true) untuk itu demi konsistensi.

JButton

JButton ()
Membuat sebuah tombol tanpa mengatur teks atau ikon.
JButton ( Action a)
Membuat tombol mana sifat diambil dari
Action diberikan.
JButton ( Icon icon)
Membuat tombol dengan ikon.
JButton ( String text)
Membuat tombol dengan teks.
JButton ( String text, Icon icon)
Membuat tombol dengan teks awal dan ikon.

JPanel

JPanel ()
Menciptakan yang baru JPanel dengan buffer ganda dan tata letak aliran.
JPanel (boolean isDoubleBuffered)
Menciptakan yang baru JPanel dengan FlowLayout dan strategi buffering ditentukan.
JPanelLayoutManager layout)
Buat buffer JPanel baru dengan manajer tata letak yang ditentukan
JPanelLayoutManager layout, boolean isDoubleBuffered)
Membuat JPanel baru dengan manajer tata letak yang ditentukan dan buffering strategi.

JPanel kelas-tujuan menyediakan wadah umum untuk komponen ringan;. Secara default, panel tidak menambahkan warna apa pun latar belakang mereka sendiri kecuali Namun, Anda dapat dengan mudah menambahkan batas kepada mereka dan sebaliknya menyesuaikan lukisan mereka. Rincian dapat ditemukan dalam Pertunjukan Custom Lukisan .

Dalam berbagai jenis tampilan dan nuansa, panel yang buram oleh default dalam. Buram panel bekerja dengan baik konten sebagai panel dan dapat membantu dengan lukisan efisien, seperti yang dijelaskan Menggunakan Top Level Containers dapat. Anda mengubah panel transparansi dengan menyerukan setOpaque metode.

Hasil coding Rush Hour:

package OOP;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.StringTokenizer;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import oop.Mobil;
public class RushHourGUI {
private ArrayList mapContent = new ArrayList();
private JFrame frame;
private JPanel contentPane, garagePanel;
private JButton doButton;
private int width=5;
private char[][] map = new char[width][width];
public void initializePanels() {
contentPane = new JPanel();
contentPane.setLayout(new BorderLayout());
garagePanel = new JPanel();
garagePanel.setLayout(new GridLayout(width, width));
}
public void initializeItems() {
doButton = new JButton("GO");
}
public void initialization() {
initializeItems();
initializePanels();
}
public void buildLayout() {
initialization();
//        buat garage begin
for (int a = 0; a < width; a++) {
for (int b = 0; b < width; b++) {
if (map[a][b] != '0') {
garagePanel.add(new JButton("" + String.valueOf(map[a][b])));
} else {
garagePanel.add(new JLabel());
}
}
}
//buat garage end
contentPane.add(garagePanel, BorderLayout.CENTER);
contentPane.add(doButton, BorderLayout.SOUTH);
}
public void printMap() {
for (int a = 0; a < width; a++) {
for (int b = 0; b < width; b++) {
System.out.print(" " + map[a][b]);
}
System.out.println("");
}
}
public void buildGUI() {
System.out.println("");
ReadFile();
printMap();
updateMapContent();
printList();
buildLayout();
frame = new JFrame();
frame.setTitle("Rush Hour");
frame.setSize(400, 300);
frame.setResizable(false);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.setContentPane(contentPane);
}
public RushHourGUI() {
buildGUI();
}
public int checkDirection(Mobil mobil, char m) {
//0 = horizontal, 1 = vertical, 2 = horizontal vertical
if (mobil.getX1() == mobil.getX2()) {
return 0;
} else if (mobil.getY1() == mobil.getY2()) {
return 1;
} else if (mobil.getX2() == -1 && mobil.getY2() == -1) {
return 2;
}
return - 1;
}
public Mobil findCarIndex(char mobil) {
Mobil myCar = new Mobil();
for (int a = 0; a < width; a++) {
for (int b = 0; b < width; b++) {
if (map[a][b] == mobil) {
if (myCar.getX1() == -1 && myCar.getY1() == -1) {
myCar.setX1(a);
myCar.setY1(b);
} else {
myCar.setX2(a);
myCar.setY2(b);
}
}
}
}
return myCar;
}
public void ReadFile() {
int x = 0, y = 0;
String s;
try {
BufferedReader bf = new BufferedReader(new FileReader(new File("D:/map.txt")));
while (null != (s = bf.readLine())) {
//                System.out.println(s);
StringTokenizer st = new StringTokenizer(s, ",");
if (y == 0) {
width = st.countTokens();
map = new char[width][width];
}
x = 0;
while (st.hasMoreTokens()) {
map[y][x] = st.nextToken(",").charAt(0);
x++;
}
y++;
}
} catch (Exception e) {
e.printStackTrace();
}
}
public int checkDirection() {
return- 1;
}
public void updateMapContent() {
for(int a=0 ; a<width ; a++) {
for(int b=0 ; b<width ; b++) {
System.out.print(" "+map[a][b]);
if (map[a][b] != '0' &&  !mapContent.contains(map[a][b])) {
mapContent.add(map[a][b]);
}
}
System.out.println("");
}
}
public void printList() {
System.out.println("My map content:" +mapContent.size());
System.out.println("");
for(int a=0 ; a<mapContent.size() ; a++) {
System.out.print(mapContent.get(a));
}
}
public static void main(String[] args) {
RushHourGUI x = new RushHourGUI();
}
}
package OOP;
import java.awt.BorderLayout;import java.awt.GridLayout;import java.io.BufferedReader;import java.io.File;import java.io.FileReader;import java.util.ArrayList;import java.util.StringTokenizer;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import oop.Mobil;
public class RushHourGUI {    private ArrayList mapContent = new ArrayList();    private JFrame frame;    private JPanel contentPane, garagePanel;    private JButton doButton;    private int width=5;    private char[][] map = new char[width][width];
public void initializePanels() {        contentPane = new JPanel();        contentPane.setLayout(new BorderLayout());
garagePanel = new JPanel();        garagePanel.setLayout(new GridLayout(width, width));    }
public void initializeItems() {        doButton = new JButton("GO");    }
public void initialization() {        initializeItems();        initializePanels();    }
public void buildLayout() {        initialization();//        buat garage begin        for (int a = 0; a < width; a++) {            for (int b = 0; b < width; b++) {                if (map[a][b] != '0') {                    garagePanel.add(new JButton("" + String.valueOf(map[a][b])));                } else {                    garagePanel.add(new JLabel());                }            }        }        //buat garage end        contentPane.add(garagePanel, BorderLayout.CENTER);        contentPane.add(doButton, BorderLayout.SOUTH);    }    
public void printMap() {        for (int a = 0; a < width; a++) {            for (int b = 0; b < width; b++) {                System.out.print(" " + map[a][b]);            }            System.out.println("");        }    }
public void buildGUI() {        System.out.println("");        ReadFile();        printMap();        updateMapContent();        printList();        buildLayout();        frame = new JFrame();        frame.setTitle("Rush Hour");        frame.setSize(400, 300);        frame.setResizable(false);        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        frame.setVisible(true);        frame.setContentPane(contentPane);    }
public RushHourGUI() {        buildGUI();    }    public int checkDirection(Mobil mobil, char m) {        //0 = horizontal, 1 = vertical, 2 = horizontal vertical        if (mobil.getX1() == mobil.getX2()) {            return 0;        } else if (mobil.getY1() == mobil.getY2()) {            return 1;        } else if (mobil.getX2() == -1 && mobil.getY2() == -1) {            return 2;        }        return - 1;    }
public Mobil findCarIndex(char mobil) {        Mobil myCar = new Mobil();        for (int a = 0; a < width; a++) {            for (int b = 0; b < width; b++) {                if (map[a][b] == mobil) {                    if (myCar.getX1() == -1 && myCar.getY1() == -1) {                        myCar.setX1(a);                        myCar.setY1(b);                    } else {                        myCar.setX2(a);                        myCar.setY2(b);
}                }            }        }        return myCar;    }
public void ReadFile() {        int x = 0, y = 0;        String s;
try {            BufferedReader bf = new BufferedReader(new FileReader(new File("D:/map.txt")));
while (null != (s = bf.readLine())) {//                System.out.println(s);                StringTokenizer st = new StringTokenizer(s, ",");                if (y == 0) {                    width = st.countTokens();                    map = new char[width][width];                }                x = 0;                while (st.hasMoreTokens()) {                    map[y][x] = st.nextToken(",").charAt(0);                    x++;                }                y++;            }        } catch (Exception e) {            e.printStackTrace();        }            }    public int checkDirection() {        return- 1;    }    public void updateMapContent() {        for(int a=0 ; a<width ; a++) {            for(int b=0 ; b<width ; b++) {                System.out.print(" "+map[a][b]);                if (map[a][b] != '0' &&  !mapContent.contains(map[a][b])) {                    mapContent.add(map[a][b]);                }            }            System.out.println("");        }    }    public void printList() {        System.out.println("My map content:" +mapContent.size());        System.out.println("");        for(int a=0 ; a<mapContent.size() ; a++) {            System.out.print(mapContent.get(a));        }    }    

public static void main(String[] args) {        RushHourGUI x = new RushHourGUI();    }}

public class Mobil {

    private int x1 = -1;
    private int x2 = -1;
    private int y1 = -1;
    private int y2 = -1;

    public int getX1() {
        return x1;
    }

    public void setX1(int x1) {
        this.x1 = x1;
    }

    public int getX2() {
        return x2;
    }

    public void setX2(int x2) {
        this.x2 = x2;
    }

    public int getY1() {
        return y1;
    }

    public void setY1(int y1) {
        this.y1 = y1;
    }

    public int getY2() {
        return y2;
    }

    public void setY2(int y2) {
        this.y2 = y2;
    }

}

Setelah itu dilanjutkan dengan pelajaran dari Pak Alfon mengenai exception. Exception diajarkan lagi karena banyak yang belum mengerti. Demikian pelajaran pada pertemuan itu. Sampai jumpa minggu depan.


April 23, 2010

OOP week 11

Filed under: Uncategorized — Priscillia @ 1:55 pm

Pada hari Rabu, 21 April 2010 diadakan kelas OOP week ke-11 pada pk 8.20-11.40.  Pada pertemuan OOP tersebut diajarkan mengenai:

JFC adalah singkatan dari Java Foundation Class, yang mencakup kelompok fitur untuk membangun graphics user interface(GUI) dan menambahkan fungsionalitas yang kaya grafis dan interaktivitas untuk aplikasi Java. Ia didefinisikan sebagai berisi fitur di bawah ini.

  • Komponen Swing GUI : Termasuk semua dari tombol untuk membagi panel untuk tabel. Banyak komponen mampu memilah, percetakan, dan drag dan drop, untuk beberapa nama fitur yang didukung.
  • Pluggable Look-and-Feel Support : Tampilan dan nuansa Swing aplikasi yang pluggable, memungkinkan pilihan tampilan dan nuansa. Sebagai contoh, program yang sama dapat menggunakan salah satu Java atau Windows tampilan dan nuansa. Selain itu, platform Java mendukung GTK + terlihat dan terasa, yang membuat ratusan terlihat dan terasa ada yang tersedia untuk Swing program paket. Banyak yang lebih tampak-dan-merasa yang tersedia dari berbagai sumber.
  • Aksesibilitas API : Mengaktifkan teknologi bantu, seperti pembaca layar dan menampilkan Braille, untuk mendapatkan informasi dari antarmuka pengguna.
  • Java 2D API : Memungkinkan pengembang untuk dengan mudah menggabungkan grafis 2D kualitas-tinggi, teks, dan gambar dalam aplikasi dan applet. Java 2D API ekstensif mencakup untuk menghasilkan dan mengirimkan output yang berkualitas tinggi untuk perangkat pencetakan.
  • Internasionalisasi :  Memungkinkan pengembang untuk membangun aplikasi yang dapat berinteraksi dengan pengguna di seluruh dunia dalam bahasa mereka sendiri dan konvensi budaya. Dengan kerangka metode input pengembang dapat membangun aplikasi yang menerima teks dalam bahasa yang menggunakan ribuan karakter yang berbeda, seperti Jepang, Cina, atau Korea.

Swing API sangat kuat, fleksibel – dan besar. API Swing memiliki 18 paket umum:

javax.accessibility javax.swing.plaf javax.swing.text
javax.swing javax.swing.plaf.basic javax.swing.text.html
javax.swing.border javax.swing.plaf.metal javax.swing.text.html.parser
javax.swing.colorchooser javax.swing.plaf.multi javax.swing.text.rtf
javax.swing.event javax.swing.plaf.synth javax.swing.tree
javax.swing.filechooser javax.swing.table javax.swing.undo
1. public void loadMap(String filename) throws SMException {
        String s;
        int x = 0, y = 0;
        Map vs = new HashMap();
        IVehicle v;
        BufferedReader bf = null;

        try {
            bf = new BufferedReader(new FileReader(filename));

            while (null != (s = bf.readLine())) {
                StringTokenizer st = new StringTokenizer(s, ",");
                if (y == 0) {
                    width = st.countTokens();
                    map = new char[width][width];
                }
                x = 0;
                while (st.hasMoreTokens()) {
                    // decode the token
                    map[x][y] = st.nextToken(",").charAt(0);

                    if ('0' != map[x][y]) {
                        String vid = String.valueOf(map[x][y]);
                        v = (IVehicle) vs.get(vid);
                        if (null == v) {
                            v = new SimpleCar();
                            v.setName(vid);
                            vs.put(vid, v);
                        }
                        v.addLocation(x, y);
                    }
                    x++;
                }
                y++;
            }
        } catch (Exception e) {
            map = null;
            vehicles = null;
            throw new SMException(e);
        } finally {
            if (null != bf) {
                try {bf.close();} catch(Exception ignored){}
            }
        }
        vehicles = new HashSet();
        vehicles.addAll(vs.values());
    }

2. private String name;
    private Collection locations = new ArrayList();

    public void addLocation(int x, int y) {
        locations.add(new Point(x, y));
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public boolean isHorizontal() {
        boolean result = true;
        int y = -1, j = 0;
        for (Iterator i = locations.iterator(); i.hasNext(); j++) {
            Point p = (Point) i.next();
            if (j == 0) {
                y = p.y;
            } else if (y != p.y) {
                result = false;
            }
        }
        return result;
    }

    public boolean isVertical() {
        boolean result = true;
        int x = -1, j = 0;
        for (Iterator i = locations.iterator(); i.hasNext(); j++) {
            Point p = (Point) i.next();
            if (j == 0) {
                x = p.x;
            } else if (x != p.x) {
                result = false;
            }
        }
        return result;
    }

    @Override
    public String toString() {
        StringBuffer s = new StringBuffer().append(name).append(":");
        for (Iterator i = locations.iterator(); i.hasNext();) {
            Point p = (Point) i.next();
            s.append("[").append(p.x).append(",").append(p.y).append("]");
        }
        s.append(":");
        if (isHorizontal()) {
            s.append("H");
        }
        if (isVertical()) {
            s.append("V");
        }
        return s.toString();
    }

Demikian pada pelajaran hari ini. Sampai jumpa minggu depan.....

April 16, 2010

OOP week 10

Filed under: Uncategorized — Priscillia @ 8:27 am

Pada hari Kamis, 15 April 2010 diadakan kelas OOP week 10 pada pk 08.20-11.40. Tetapi berhubung diadakan kuliah tamu mengenai Java Mobile maka kelas tersebut selesai pada pk 09.30. Pak alfon mengajar mengenai:

Array Basics

Array adalah sebuah objek wadah yang menampung sejumlah integer. Panjang array dibuat sesuai dengan yang sudah di-declare oleh user. Setelah array dibuat, panjangnya tidak dapat diubah-ubah atau bernilai konstan. Contoh:

Seperti deklarasi untuk variabel jenis lainnya, sebuah deklarasi array memiliki dua komponen: ketik nama array dan array itu, misalnya “int anArray[];” .Jenis Array adalah ditulis sebagai tipe [], kurung kotak adalah simbol khusus yang menunjukkan bahwa variabel ini mengandung  ukuran yang dapat ditampung.  Contoh:

public class W10ArrayBasic {
// Declaring array of months
private final static String[] months = {
"January", "February", "March", "April",
"May", "June", "July", "August",
"September", "October", "November", "December"};
public static void main(String[] args) {
// Declaring array of colors
String[] colors = new String[4];
colors[0] = "Red";
colors[1] = "Green";
colors[2] = "Blue";
colors[3] = "Yellow";
// Declaring 2x2 matrix
int[][] m = new int[2][2];
m[0][0] = 0;
m[0][1] = 1;
m[1][0] = 0;
m[1][1] = 1;
// Printing the content of months
for (int i = 0; i < months.length; i++) {
if (i > 0)
System.out.print(", ");
System.out.print(months[i]);
}
System.out.println("");
for (int a = 0; a < 4; a++) {
if (a > 0)
System.out.print(", ");
System.out.print(colors[a]);
}
System.out.println("");
for(int b = 0; b < 2 ; b++) {
for(int c = 0; c < 2; c++) {
System.out.print(m[b][c]+"");
}
System.out.println("");
}
}
}

Hasil outputnya adalah:

January, February, March, April, May, June, July, August, September, October, November, December
Red, Green, Blue, Yellow
01
01

Catatan : o1 adalah koordinatnya

Copying Arrays

Cara meng-copy array adalah:

public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) 

Contoh:

class ArrayCopyDemo {
    public static void main(String[] args) {
        char[] copyFrom = { 'd', 'e', 'c', 'a', 'f', 'f', 'e',
			    'i', 'n', 'a', 't', 'e', 'd' };
        char[] copyTo = new char[7];

        System.arraycopy(copyFrom, 2, copyTo, 0, 7);
        System.out.println(new String(copyTo));
    }
}

Hasil outputnya adalah:

caffein

Array of Objects

Contoh:

import javax.swing.JOptionPane;

public class W10ArrayOfObjects {

    public static void main(String[] args) {
        // Declare the object reference
        W10ArrayOfObjects o = new W10ArrayOfObjects();
        // Invoke demo method with argument = 2
        o.demo(2);
    }

    /**
     * Actual demo process
     * @param arraySize size of array to produce
     */

    public void demo(int arraySize) {
        // Declare array size
        Contact[] contact = new Contact[arraySize];
        // Get contacts from input console
        for (int i = 0; i < arraySize; i++) {
            contact[i] = readContact();
        }
        // Print the contacts content
        for (int i = 0; i < arraySize; i++) {
            System.out.println(contact[i]);
        }
    }

    /**
     * Read contact information.
     * @return contact object
     */

    public Contact readContact() {
        Contact c = new Contact();
        // Read the name
        c.setName(readInput("Name"));
        // Read the phone
        boolean invalid = true;
        while (invalid) {
            String p = readInput("Phone (###-######)");
            if (p.matches("[0-9]{3}-[0-9]{6,12}")) {
                c.setPhone(p);
                invalid = false;
            }
        }

        // Read the age
        invalid = true;
        while (invalid) {
            String p = readInput("Age");
            if (p.matches("[0-9]{1,2}")) {
                c.setAge(Integer.parseInt(p));
                invalid = false;
            }
        }
        return c;
    }

    /**
     * Read input from default console in
     * @param prompt the prompt to be displayed
     * @return input string
     */

    public String readInput(String prompt) {
        return JOptionPane.showInputDialog(prompt);
    }
}

Passing Arrays to Methods


Two Dimensional Arrays

Contohnya:

List and Maps

Collection kadang-kadang disebut kontainer. Hanya objek yang kelompok beberapa elemen ke dalam sebuah unit tunggal.  Collection digunakan untuk menyimpan, mengambil, memanipulasi, dan berkomunikasi data agregat. Biasanya, mereka merupakan item data yang membentuk kelompok alami, seperti Poker (kumpulan dari kartu), folder mail (kumpulan surat), atau sebuah direktori telepon (pemetaan dari nama ke nomor telepon).

Collection terdiri dari beberapa bagian, yaitu:

  • Interfaces: tipe data abstrak yang mewakili collection. Interface collection memungkinkan untuk dimanipulasi secara independen rincian representasi mereka. Dalam bahasa berorientasi obyek, antarmuka umumnya bentuk hirarki.
  • Implementations: digunakan sebagai struktur data
  • Algorithms: metode yang dapat melakukan penghitungan, seperti pencarian dan menyortir, pada obyek yang mengimplementasikan antarmuka koleksi. Algoritma dikatakan polimorfik: yaitu, metode yang sama dapat digunakan pada berbagai implementasi dari interface koleksi yang sesuai. Pada dasarnya, algoritma tersebut fungsi dapat digunakan kembali.

Manfaat collection adalah sebagi berikut:

  • Mengurangi upaya pemrograman: Dengan menyediakan struktur data dan algoritma yang berguna, Kerangka collection membebaskan user untuk berkonsentrasi pada bagian-bagian penting dari program user bukan pada tingkat-rendah “pipa” diperlukan untuk membuatnya bekerja. Dengan memfasilitasi interoperabilitas antara API tidak berhubungan, Java Framework Koleksi membebaskan Anda dari menulis kode objek adaptor atau konversi untuk menghubungkan API.
  • Meningkatkan kecepatan dan kualitas program: Kerangka collection ini memberikan kinerja tinggi, implementasi berkualitas tinggi yang berguna struktur data dan algoritma. Berbagai implementasi setiap antarmuka saling dipertukarkan, sehingga program dapat dengan mudah disetel dengan beralih collection implementasi. Karena user dibebaskan dari beban struktur menulis data sendiri, user harus lebih banyak waktu untuk meningkatkan kualitas program dan kinerja.
  • Memungkinkan interoperabilitas antara API yang tidak terkait: Interface collection adalah vernakular yang dapat melewati API. Jika jaringan administrasi API memoles suatu kumpulan nama node dan jika user toolkit GUI mengharapkan collection judul kolom, API akan interoperate mulus, meskipun ditulis secara independen.
  • Mengurangi upaya untuk belajar dan menggunakan API baru: Banyak API secara alami mengambil koleksi pada input dan melengkapinya sebagai output. Di masa lalu, masing-masing API tersebut memiliki sub-API kecil yang ditujukan untuk memanipulasi koleksi. Ada sedikit konsistensi antara koleksi iklan hoc ini sub-API, jadi user harus belajar masing-masing dari awal, dan itu mudah untuk membuat kesalahan ketika menggunakannya. Dengan munculnya standar interface collection, masalah pergi.
  • Mengurangi upaya untuk merancang API baru: Ini adalah sisi lain dari keuntungan sebelumnya. Desainer dan pelaksana tidak perlu menciptakan roda setiap kali membuat API yang bergantung pada koleksi, melainkan dapat menggunakan antarmuka koleksi standar.
  • Memupuk perangkat lunak menggunakan kembali: struktur data baru yang sesuai dengan koleksi interface standar yang dapat digunakan kembali oleh alam. Hal yang sama berlaku untuk algoritma baru yang beroperasi pada objek yang mengimplementasikan interface ini.

Contoh:

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import javax.swing.JOptionPane;

public class W10Collection1 {

    public static void main(String[] args) {
        W10Collection1 w = new W10Collection1();
        w.demo();
    }

    /**
     * Actual demo process
     */
    public void demo() {
        // Declare the containers
        Collection aSet = new HashSet();
        Collection aList = new ArrayList();

        // Get contacts from input console
        while (confirmNextInput()) {
            Contact c = readContact();
            aSet.add(c);
            aList.add(c);
        }

        // Print the contacts content
        System.out.println("[HashSet]");
        for (Iterator i = aSet.iterator(); i.hasNext();) {
            System.out.println(i.next());
        }
        System.out.println("[ArrayList]");
        for (Iterator i = aList.iterator(); i.hasNext();) {
            System.out.println(i.next());
        }
    }

    /**
     * Read contact information.
     * @return contact object
     */
    public Contact readContact() {
        Contact c = new Contact();

        // Read the name
        c.setName(readInput("Name"));

        // Read the phone
        boolean invalid = true;
        while (invalid) {
            String p = readInput("Phone (###-######)");
            if (p.matches("[0-9]{3}-[0-9]{6,12}")) {
                c.setPhone(p);
                invalid = false;
            }
        }

        // Read the age
        invalid = true;
        while (invalid) {
            String p = readInput("Age");
            if (p.matches("[0-9]{1,2}")) {
                c.setAge(Integer.parseInt(p));
                invalid = false;
            }
        }
        return c;
    }

    /**
     * Read input from default console in
     * @param prompt the prompt to be displayed
     * @return input string
     */
    public String readInput(String prompt) {
        return JOptionPane.showInputDialog(prompt);
    }

    /**
     * Get user confirmation for another input
     * @return true on yes, false otherwise
     */
    public boolean confirmNextInput() {
        String answer = readInput("Input data? [Y]a/[T]idak");
        return "Y".equalsIgnoreCase(answer);
    }
}

Hashset : output akan diacak oleh program dengan sendirinya
Arrayset : output akan dikeluarkan sesuai dengan urutan input yang dimasukkan oleh user

Demikian pelajaran pada kelas OOP week ke 10. Sampai jumpa minggu depan….. 😀


April 9, 2010

OOP week 9

Filed under: Uncategorized — Priscillia @ 9:29 am

Pada hari Kamis, 8 April 2010 pada pk 8.20-11.40 diadakan kelas OOP week ke 9. Pada awal pelajaran diadakan test untuk menambah nilai UTS. Setelah itu dilanjutkan oleh Pak Trianggoro dengan penjelasan mengenai kuliah tamu pada tanggal 16 April 2010. Setelah itu dilanjutkan pelajaran oleh Pak Alfon mengenai:

1. Characters

Unicode adalah representasi karakter yang hampir semua bahasa memakainya (besarnya 2 bit) untuk menangkap karakter menggunakan substring


Gambar di atas merupakan gambar unicode

  • ASCII

merupakan suatu standar internasional dalam kode huruf dan simbol seperti Hex dan Unicose tetapi ASCII lebih bersifat universal, contohnya 124 adalah untuk karakter “|”. Ia selalu digunakan oleh komputer dan alat komunikasi lain untuk menunjukkan teks. Kode ASCII sebenarnya memiliki komposisi bilangan biner sebanyak 8 bit. Dimulai dari 0000 0000 hingga 1111 1111. Total kombinasi yang dihasilkan sebanyak 256, dimulai dari kode 0 hingga 255 dalam sistem bilangan desimal. (diambil dari http://id.wikipedia.org/wiki/ASCII)

Contoh:

import javax.swing.JOptionPane;

public class W09Chars {
    public static void main(String[] args) {
        char ch = 'Z';
        byte b = 65;

        JOptionPane.showMessageDialog(null, "ASCII code of character " + ch
                + " is " +(int)ch);
        JOptionPane.showMessageDialog(null, "Character with ASCII code "
                + b + " is " + (char)b);
        JOptionPane.showMessageDialog(null, ch + " is " + ((ch > b)?
            " bigger " : " smaller ") + " than " + (char)b);
 }
} 

Hasil untuk contoh di atas adalah:

1. "ASCII code of character Z is 90"
2. "Character with ASCII code 65 is A"
3. "Z is bigger than A"
 

Metode yang dapat digunakan di dalam karakter class dapat dilihat pada java.lang.Character API specification

2. String

import javax.swing.JOptionPane;

public class Vowel {
    public static void main(String[] args) {
    String name;
    int numOfChar, numOfVowelIs = 0;
    char ch;

    name = JOptionPane.showInputDialog(null, "The sentence, please");
    numOfChar = name.length();
    for(int i=0;i<numOfChar;i++) {
        ch = name.charAt(i);

        if(ch == 'a' || ch == 'A' || ch == 'i' || ch == 'I' ||
                ch == 'u' || ch == 'U' || ch == 'o' || ch == 'O') {
            numOfVowelIs++;
        }
    }
    JOptionPane.showInputDialog("Found" + numOfVowelIs + "vowels");
    }
}

Penjelasan untuk contoh di atas adalah: contoh di atas menampilkan menghitung huruf vokal pada kata yang dimasukkan user. user diminta untuk memasukkan input, misalnya saja user memasukkan kata “Furry Night”. Maka akan muncul hasil “found2vowel”.

3. Comparing String

Case 1:
String word1=”Surabaya”;
String word2 = word1;
word1==word2 is true
word1.equals(word2) is true

case2:
String word1=”Surabaya”;
String word2 = new String(“Surabaya”);
word1==word2 is false
word1.equals(word2) is true

Case 3:
String word1=”Surabaya”;
String word2 = “Surakaya”;
word1==word2 is false
word1.equals(word2) is false

String stra, strb, strc;
stra = “Arabica”;
strb = “Robusta”;
strc = strb;
strb = stra;

Contoh:

public class RegionMatchesDemo {
	public static void main(String[] args) {
		String searchMe = "Green Eggs and Ham";
		String findMe = "Eggs";
		int searchMeLength = searchMe.length();
		int findMeLength = findMe.length();
		boolean foundIt = false;
		for (int i = 0; i <= (searchMeLength - findMeLength); i++) {
		   if (searchMe.regionMatches(i, findMe, 0, findMeLength)) {
		      foundIt = true;
		      System.out.println(searchMe.substring(i, i + findMeLength));
		      break;
		   }
		}
		if (!foundIt) System.out.println("No match found.");
	}
}

The output from this program is Eggs.

4. Pattern Matching

String date=”17-08-1945″;

date.matches(“(0-3)(0-9)-(0-1)(0-9)-(0-9){4}”) disebut regular expression
Setelah itu dicek apakah betul atau tidak

Contoh:

import javax.swing.JOptionPane;

public class ValidateClassName {
    private static final String STOP = "STOP";
    private static final String VALID = "VALID";
    private static final String INVALID = "INVALID";
    private static final String VALID_PATTERN = "[A-Z][a-zA-Z0-9_]*";
    public static void main(String[] args) {
        String input,output;

        while(true) {
            input = JOptionPane.showInputDialog(null, "Class name: ");
             if(STOP.equals(input)) break;
            if(input.matches(VALID_PATTERN))
                output = VALID;
            else
                output = INVALID;

            JOptionPane.showMessageDialog(null, output);
        }
    }
 

Penjelasan dari contoh di atas adalah: jika user memasukkan input dengan huruf pertama pada input tersebut menggunakan huruf besar (contoh: Pattern) maka bernilai VALID. Jika user memasukkan input dengan huruf kecil semua (contoh: pattern) maka bernilai INVALID. Untuk menghentikan permintaan input maka user harus mengetikkan kata “STOP”.

5. String Buffer

String yang tidak dapat diubah. Setiap modifikasi String akan menghasilkan nilai String baru, alokasi memori dikompromikan
cth:

StringBuffer message = new StringBuffer();
message.append("Use String Buffer");
message.append("for string itensive manipulation");
System.out.println(message)

Regular expression dapat dilihat pada http://java.sun.com/docs/books/tutorial/essential/regex/index.html

Setelah itu diberikan soal latihan dengan soal:

Tulislah sebuah program kecil yang dapat memutar text!

Jawaban:

import javax.swing.JOptionPane;

public class HurufBerputar {

    int input;
    public static void main(String[] args) {

        String hasil = JOptionPane.showInputDialog(null, "Masukkan kalimat");
        int len = hasil.length();
        HurufBerputar hurufBerputar = new HurufBerputar();
        hurufBerputar.looping(hasil, len);
    }
    public void looping(String hasil, int len)
    {
         String tempString;
         char tempArray;
         //temp=manampung sementara
         for (input=0; input<len; input++)
        {
            tempArray = hasil.charAt(0);
            // charAt = menunjuk mulainya di mana
            tempString = hasil.substring(1, len);
            hasil = tempString+tempArray;
            System.out.println(hasil);
        }
    }
}

Jika user memasukkan input “Universitas Ciputra” maka hasilnya output adalah sebagai berikut:

niversitas CiputraU
iversitas CiputraUn
versitas CiputraUni
ersitas CiputraUniv
rsitas CiputraUnive
sitas CiputraUniver
itas CiputraUnivers
tas CiputraUniversi
as CiputraUniversit
s CiputraUniversita
 CiputraUniversitas
CiputraUniversitas
iputraUniversitas C
putraUniversitas Ci
utraUniversitas Cip
traUniversitas Cipu
raUniversitas Ciput
aUniversitas Ciputr
Universitas Ciputra

Setelah itu dilanjutkan dengan pemberian soal latihan dengan hasil coding:

import javax.swing.JOptionPane;

public class HTML {
    public void makeTags() {
    String tag = JOptionPane.showInputDialog("Masukkan tag");
    String word = JOptionPane.showInputDialog("Masukkan word");
        System.out.println("<"+tag+">"+word+"</"+tag+">");
    }
    public static void main(String[] args) {
        HTML html=new HTML();
        html.makeTags();
    }
}

Penjelasan: Jika user memasukkan tag: “i” dan memasukkan word: “Hello” maka hasilnya adalah “<i>Hello</i>”

Setelah pelajaran selesai oleh Asdos diberikan sebuah homework untuk membuat hangman. Demikian blog saya pada minggu ini. Sampai jumpa minggu depan

import javax.swing.JOptionPane;public class Vowel {
public static void main(String[] args) {
String name;
int numOfChar, numOfVowelIs = 0;
char ch;name = JOptionPane.showInputDialog(null, “The sentence, please”);
numOfChar = name.length();
for(int i=0;i<numOfChar;i++) {
ch = name.charAt(i);if(ch == ‘a’ || ch == ‘A’ || ch == ‘i’ || ch == ‘I’ ||
ch == ‘u’ || ch == ‘U’ || ch == ‘o’ || ch == ‘O’) {
numOfVowelIs++;
}
}
JOptionPane.showInputDialog(“Found” + numOfVowelIs + “vowels”);
}
}SKarakter
Nilai Unicode
(heksadesimal)
Nilai ANSI ASCII
(desimal)
Keterangan
NUL 0000 0 Null (tidak tampak)
SOH 0001 1 Start of heading (tidak tampak)
STX 0002 2 Start of text (tidak tampak)
ETX 0003 3 End of text (tidak tampak)
EOT 0004 4 End of transmission (tidak tampak)
ENQ 0005 5 Enquiry (tidak tampak)
ACK 0006 6 Acknowledge (tidak tampak)
BEL 0007 7 Bell (tidak tampak)
BS 0008 8 Menghapus satu karakter di belakang kursor (Backspace)
HT 0009 9 Horizontal tabulation
LF 000A 10 Pergantian baris (Line feed)
VT 000B 11 Tabulasi vertikal
FF 000C 12 Pergantian baris (Form feed)
CR 000D 13 Pergantian baris (carriage return)
SO 000E 14 Shift out (tidak tampak)
SI 000F 15 Shift in (tidak tampak)
DLE 0010 16 Data link escape (tidak tampak)
DC1 0011 17 Device control 1 (tidak tampak)
DC2 0012 18 Device control 2 (tidak tampak)
DC3 0013 19 Device control 3 (tidak tampak)
DC4 0014 20 Device control 4 (tidak tampak)
NAK 0015 21 Negative acknowledge (tidak tampak)
SYN 0016 22 Synchronous idle (tidak tampak)
ETB 0017 23 End of transmission block (tidak tampak)
CAN 0018 24 Cancel (tidak tampak)
EM 0019 25 End of medium (tidak tampak)
SUB 001A 26 Substitute (tidak tampak)
ESC 001B 27 Escape (tidak tampak)
FS 001C 28 File separator
GS 001D 29 Group separator
RS 001E 30 Record separator
US 001F 31 Unit separator
SP 0020 32 Spasi
! 0021 33 Tanda seru (exclamation)
0022 34 Tanda kutip dua
# 0023 35 Tanda pagar (kres)
$ 0024 36 Tanda mata uang dolar
% 0025 37 Tanda persen
& 0026 38 Karakter ampersand (&)
0027 39 Karakter Apostrof
( 0028 40 Tanda kurung buka
) 0029 41 Tanda kurung tutup
* 002A 42 Karakter asterisk (bintang)
+ 002B 43 Tanda tambah (plus)
, 002C 44 Karakter koma
002D 45 Karakter hyphen (strip)
. 002E 46 Tanda titik
/ 002F 47 Garis miring (slash)
0 0030 48 Angka nol
1 0031 49 Angka satu
2 0032 50 Angka dua
3 0033 51 Angka tiga
4 0034 52 Angka empat
5 0035 53 Angka lima
6 0036 54 Angka enam
7 0037 55 Angka tujuh
8 0038 56 Angka delapan
9 0039 57 Angka sembilan
: 003A 58 Tanda titik dua
; 003B 59 Tanda titik koma
< 003C 60 Tanda lebih kecil
= 003D 61 Tanda sama dengan
> 003E 62 Tanda lebih besar
? 003F 63 Tanda tanya
@ 0040 64 A keong (@)
A 0041 65 Huruf latin A kapital
B 0042 66 Huruf latin B kapital
C 0043 67 Huruf latin C kapital
D 0044 68 Huruf latin D kapital
E 0045 69 Huruf latin E kapital
F 0046 70 Huruf latin F kapital
G 0047 71 Huruf latin G kapital
H 0048 72 Huruf latin H kapital
I 0049 73 Huruf latin I kapital
J 004A 74 Huruf latin J kapital
K 004B 75 Huruf latin K kapital
L 004C 76 Huruf latin L kapital
M 004D 77 Huruf latin M kapital
N 004E 78 Huruf latin N kapital
O 004F 79 Huruf latin O kapital
P 0050 80 Huruf latin P kapital
Q 0051 81 Huruf latin Q kapital
R 0052 82 Huruf latin R kapital
S 0053 83 Huruf latin S kapital
T 0054 84 Huruf latin T kapital
U 0055 85 Huruf latin U kapital
V 0056 86 Huruf latin V kapital
W 0057 87 Huruf latin W kapital
X 0058 88 Huruf latin X kapital
Y 0059 89 Huruf latin Y kapital
Z 005A 90 Huruf latin Z kapital
[ 005B 91 Kurung siku kiri
\ 005C 92 Garis miring terbalik (backslash)
] 005D 93 Kurung sikur kanan
^ 005E 94 Tanda pangkat
_ 005F 95 Garis bawah (underscore)
` 0060 96 Tanda petik satu
a 0061 97 Huruf latin a kecil
b 0062 98 Huruf latin b kecil
c 0063 99 Huruf latin c kecil
d 0064 100 Huruf latin d kecil
e 0065 101 Huruf latin e kecil
f 0066 102 Huruf latin f kecil f
g 0067 103 Huruf latin g kecil
h 0068 104 Huruf latin h kecil
i 0069 105 Huruf latin i kecil
j 006A 106 Huruf latin j kecil
k 006B 107 Huruf latin k kecil
l 006C 108 Huruf latin l kecil
m 006D 109 Huruf latin m kecil
n 006E 110 Huruf latin n kecil
o 006F 111 Huruf latin o kecil
p 0070 112 Huruf latin p kecil
q 0071 113 Huruf latin q kecil
r 0072 114 Huruf latin r kecil
s 0073 115 Huruf latin s kecil
t 0074 116 Huruf latin t kecil
u 0075 117 Huruf latin u kecil
v 0076 118 Huruf latin v kecil
w 0077 119 Huruf latin w kecil
x 0078 120 Huruf latin x kecil
y 0079 121 Huruf latin y kecil
z 007A 122 Huruf latin z kecil
{ 007B 123 Kurung kurawal buka
¦ 007C 124 Garis vertikal (pipa)
} 007D 125 Kurung kurawal tutup
~ 007E 126 Karakter gelombang (tilde)
DEL 007F 127 Delete
0080 128 Dicadangkan
0081 129 Dicadangkan
0082 130 Dicadangkan
0083 131 Dicadangkan
IND 0084 132 Index
NEL 0085 133 Next line
SSA 0086 134 Start of selected area
ESA 0087 135 End of selected area
0088 136 Character tabulation set
0089 137 Character tabulation with justification
008A 138 Line tabulation set
PLD 008B 139 Partial line down
PLU 008C 140 Partial line up
008D 141 Reverse line feed
SS2 008E 142 Single shift two
SS3 008F 143 Single shift three
DCS 0090 144 Device control string
PU1 0091 145 Private use one
PU2 0092 146 Private use two
STS 0093 147 Set transmit state
CCH 0094 148 Cancel character
MW 0095 149 Message waiting
0096 150 Start of guarded area
0097 151 End of guarded area
0098 152 Start of string
0099 153 Dicadangkan
009A 154 Single character introducer
CSI 009B 155 Control sequence introducer
ST 009C 156 String terminator
OSC 009D 157 Operating system command
PM 009E 158 Privacy message
APC 009F 158 Application program command
00A0 160 Spasi yang bukan pemisah kata
¡ 00A1 161 Tanda seru terbalik
¢ 00A2 162 Tanda sen (Cent)
£ 00A3 163 Tanda Poundsterling
¤ 00A4 164 Tanda mata uang (Currency)
¥ 00A5 165 Tanda Yen
¦ 00A6 166 Garis tegak putus-putus (broken bar)
§ 00A7 167 Section sign
¨ 00A8 168 Diaeresis
© 00A9 169 Tanda hak cipta (Copyright)
ª 00AA 170 Feminine ordinal indicator
« 00AB 171 Left-pointing double angle quotation mark
¬ 00AC 172 Not sign
­ 00AD 173 Tanda strip (hyphen)
® 00AE 174 Tanda merk terdaftar
¯ 00AF 175 Macron
° 00B0 176 Tanda derajat
± 00B1 177 Tanda kurang lebih (plus-minus)
² 00B2 178 Tanda kuadrat (pangkat dua)
³ 00B3 179 Tanda kubik (pangkat tiga)
´ 00B4 180 Acute accent
µ 00B5 181 Micro sign
00B6 182 Pilcrow sign
· 00B7 183 Middle do

😀

April 2, 2010

OOP week 8

Filed under: Uncategorized — Priscillia @ 12:51 pm

Pada hari Kamis, 1 April 2010 pk 8.20-11.40 diadakan kelas OOP week ke-7. Pada pertemuan itu diadakan test. Lalu diadakan pelajaran mengenai exception. Exception adalah sebuah event yang terjadi selama pelaksanaan program, yang mengganggu aliran normal instruksi program. Ketika sebuah kesalahan terjadi dalam sebuah metode, metode menciptakan sebuah benda dan memberikannya ke sistem runtime. objek, yang disebut objek exception, berisi informasi tentang kesalahan tersebut, termasuk jenis dan  state dari program saat kesalahan terjadi. Membuat obyek  exception dan memberikannya kepada sistem runtime disebut throwing sebuah exception. Setelah metode throw exception, sistem runtime berupaya untuk menemukan sesuatu untuk menanganinya. Himpunan mungkin “sesuatu” untuk menangani exception adalah daftar memerintahkan metode yang telah dipanggil untuk sampai ke metode mana kesalahan terjadi.

Exception terdiri dari 3 jenis, yaitu:

  • checked exception

Misalnya, aplikasi meminta pengguna untuk nama file input, kemudian membuka file tersebut dengan mengirimkan nama ke konstruktor untuk java.io.FileReader. Biasanya, pengguna memberikan nama file, sehingga pembangunan objek FileReader berhasil, dan pelaksanaan hasil aplikasi normal. Tapi kadang-kadang pengguna memasok nama file yang tidak ada, dan constructor melempar java.io.FileNotFoundException. Sebuah program yang ditulis dengan baik akan menangkap exception ini dan memberitahu user melakukan kesalahan.

  • eror

kondisi yang bersifat eksternal ke aplikasi tersebut, aplikasi biasanya tidak dapat mengatasinya. Sebagai contoh, anggaplah bahwa aplikasi berhasil membuka sebuah file untuk masukan, tetapi tidak dapat membaca file karena kerusakan hardware atau sistem. File yang gagal akan melemparnya ke  java.io.IOError. Sebuah aplikasi dapat memilih untuk menangkap wxception ini, untuk memberitahu user mengalami masalah.

  • runtime exception

Ini biasanya menunjukkan kesalahan pemrograman, seperti kesalahan logika atau penyalahgunaan API. Sebagai contoh, aplikasi yang telah dijelaskan sebelumnya yang melewati nama file ke konstruktor untuk FileReader. Jika kesalahan logika menyebabkan null yang akan dikirimkan ke constructor, constructor akan melempar NullPointerException. Aplikasi ini dapat menangkap pengecualian ini, tapi mungkin lebih masuk akal untuk menghilangkan bug yang menyebabkan pengecualian terjadi.

Contoh:

//Note: This class won't compile by design!
import java.io.*;
import java.util.Vector;

public class ListOfNumbers {

    private Vector vector;
    private static final int SIZE = 10;

    public ListOfNumbers () {
        vector = new Vector(SIZE);
        for (int i = 0; i < SIZE; i++) {
            vector.addElement(new Integer(i));
        }
    }

    public void writeList() {
        PrintWriter out = new PrintWriter(
                            new FileWriter("OutFile.txt"));

        for (int i = 0; i < SIZE; i++) {
            out.println("Value at: " + i + " = " +
                         vector.elementAt(i));
        }

        out.close();
    }
}

import java.io adalah panggilan untuk konstruktor. konstruktor yang menginisialisasi aliran output pada file. Jika file tidak dapat dibuka, constructor suatu melempar IOException. import java.util.Vector adalah panggilan untuk metode kelas Vector’s elementAt, yang melempar ArrayIndexOutOfBoundsException jika nilai argumen yang terlalu kecil (kurang dari 0) atau terlalu besar (lebih dari jumlah elemen yang saat ini terkandung oleh Vektor).

  • Try Block
try {
    code
}
catch and finally blocks . . .

Contoh:

private Vector vector;
private static final int SIZE = 10;

PrintWriter out = null;

try {
    System.out.println("Entered try statement");
    out = new PrintWriter(new FileWriter("OutFile.txt"));
    for (int i = 0; i < SIZE; i++) {
        out.println("Value at: " + i + " = "
                     + vector.elementAt(i));
    }
}
  • Catch Block
try {

} catch (ExceptionType name) {

} catch (ExceptionType name) {

}

Contoh:

try {

} catch (FileNotFoundException e) {
    System.err.println("FileNotFoundException: "
                        + e.getMessage());
    throw new SampleException(e);

} catch (IOException e) {
    System.err.println("Caught IOException: "
                        + e.getMessage());
}
  • Finally Block

finally {
    if (out != null) {
        System.out.println("Closing PrintWriter");
        out.close();
    } else {
        System.out.println("PrintWriter not open");
    }
}
  • Throwable Class and Its Subclasses

Setelah penjelasan di atas, dilanjutkan dengan pembahasan soal UTS yang dilakukan dalam pembagian kelompok. Jawabannya adalah:

1. public class Account {
 private double balance;
 private String ownerName;

 public Account(){

 }

 public void add(double yangDiTambahi){
 this.balance += yangDiTambahi;
 }

 public void deduct(double yangDiKurangi){
 this.balance -= yangDiKurangi;
 }

 public double getCurrentBalance(){
 return balance;
 }

 public String getOwnerName(){
 return ownerName;
 }

 public void setInitialBalance(double yangDiSet){
 this.balance = yangDiSet;
 }

 public void setOwnerName(String namaYangDiSet){
 this.ownerName = namaYangDiSet;
 }
}

public class AccountTransaction {
 public static void main(String[] args) {
 Account a = new Account();
 Account b = new Account();

 a.setOwnerName("Ali");
 a.setInitialBalance(10000);
 b.setOwnerName("Nia");
 b.setInitialBalance(1000000);

 b.deduct(750000); a.add(750000);

 System.out.println("Balance = " + a.getCurrentBalance());
 System.out.println("Account = " + a.getOwnerName());
 System.out.println("Balance = " + b.getCurrentBalance());
 System.out.println("Account = " + b.getOwnerName());

 }
}
2. import javax.swing.JOptionPane;
public class Distance {

 public static void main(String[] args) {

 int x1, x2, y1, y2, c, d;
 String a = JOptionPane.showInputDialog(null,"Please enter first coordinate x1,y1:");
 x1 = Integer.parseInt(input1.substring(0,input1.indexOf(",")));
 y1 = Integer.parseInt(input1.substring(input1.indexOf(",")+1));

 String b = JOptionPane.showInputDialog(null,"Please enter second coordinate x2,y2:");
 x2 = Integer.parseInt(input2.substring(0,input1.indexOf(",")));
 y2 = Integer.parseInt(input2.substring(input1.indexOf(",")+1));

  c = x2-x1;
  d = y2-y1;

 System.out.println(Math.sqrt((Math.pow(c,2)+Math.pow(d, 2))));
 }
}

Demikian pelajaran pada pertemuan itu. Sampai jumpa minggu depan. 😀

March 19, 2010

OOP week 6

Filed under: Uncategorized — Priscillia @ 1:22 pm

Pada hari Kamis, 18 Maret 2010 pk 08.20-11.40 diadakan kelas OOP week ke-6. Pada hari itu yang mengajar adalah Pak Alfon. Pak Alfon menjelaskan tentang:

  • this keyword

– Using this With A Contructor

Dari dalam constructor, juga dapat menggunakan this keyword untuk memanggil constructor lain di kelas yang sama. Hal ini disebut juga explicit constructor invocation.

Contohnya:

public class Rectangle {
    private int x, y;
    private int width, height;
	
    public Rectangle() {
        this(0, 0, 0, 0);
    }
    public Rectangle(int width, int height) {
        this(0, 0, width, height);
    }
    public Rectangle(int x, int y, int width, int height) {
        this.x = x;
        this.y = y;
        this.width = width;
        this.height = height;
    }
    ...
}
 

Pada contoh di atas berisikan satu set constructor.  Setiap constructor menginisialisasikan beberapa atau semua anggota variabel rectangle. Constructor memberikan default value untuk setiap angota yang tidak disediakan oleh argument.

  • Overloading and overriding

– Instance Method

Overriding method memiliki nama yang sama, jumlah dan jenis parameter, dan tipe return. Sebuah overriding method juga dapat kembali ke sebuah subtipe dari jenis dikembalikan oleh overriding method .Hal ini disebut covariant return type

– Class Method

Perbedaan antara menyembunyikan dan meng-override memiliki implikasi penting. Versi overriding mendapatkan metode yang dipanggil adalah satu-satunya di subclass. Versi hidden method akan dipanggil tergantung pada apakah dipanggil dari superclass atau subclass.

Contohnya:

public class Animal {
    public static void testClassMethod() {
        System.out.println("The class method in Animal.");
    }
    public void testInstanceMethod() {
        System.out.println("The instance method in Animal.");
    }
}
public class Cat extends Animal {
    public static void testClassMethod() {
        System.out.println("The class method in Cat.");
    }
    public void testInstanceMethod() {
        System.out.println("The instance method in Cat.");
    }

    public static void main(String[] args) {
        Cat myCat = new Cat();
        Animal myAnimal = myCat;
        Animal.testClassMethod();
        myAnimal.testInstanceMethod();
    }
}
 

Outputnya adalah:

The class method in Animal.
The instance method in Cat.

Summary

Superclass Instance Method Superclass Static Method
Subclass Instance Method Overrides Generates a compile-time error
Subclass Static Method Generates a compile-time error Hides
  • Polymorphism

adalah untuk sebuah prinsip dalam biologi di mana suatu organisme atau spesies dapat mempunyai berbagai bentuk atau tahapan. Prinsip ini juga dapat diterapkan ke pemrograman berorientasi objek dan bahasa-bahasa seperti bahasa Java. Subclass dari kelas dapat menentukan perilaku mereka sendiri yang unik dan belum berbagi beberapa fungsionalitas yang sama dari kelas induk.

Contoh:

public void printDescription(){
 System.out.println("\nBike is in gear " + this.gear + " with a cadence of " +
        this.cadence + " and travelling at a speed of " + this.speed + ". ");
}


public class MountainBike extends Bicycle{
  private String suspension;

  public MountainBike(int startCadence, int startSpeed, int startGear, String suspensionType){
    super(startCadence, startSpeed, startGear);
    this.setSuspension(suspensionType);
  }

  public String getSuspension(){
    return this.suspension;
  }

  public void setSuspension(String suspensionType){
    this.suspension = suspensionType;
  }

  public void printDescription(){
    super.printDescription();
    System.out.println("The MountainBike has a " + getSuspension()
            + " suspension.");
  }
} 


public class RoadBike extends Bicycle{
  private int tireWidth; // In millimeters (mm)

  public RoadBike(int startCadence, int startSpeed, int startGear, int newTireWidth){
    super(startCadence, startSpeed, startGear);
    this.setTireWidth(newTireWidth);
  }

  public int getTireWidth(){
    return this.tireWidth;
  }

  public void setTireWidth(int newTireWidth){
    this.tireWidth = newTireWidth;
  }

  public void printDescription(){
    super.printDescription();
    System.out.println("The RoadBike has " + getTireWidth()
            + " MM tires.");
  }

}


public class TestBikes {
  public static void main(String[] args){
    Bicycle bike01, bike02, bike03;

    bike01 = new Bicycle(20, 10, 1);
    bike02 = new MountainBike(20, 10, 5, "Dual");
    bike03 = new RoadBike(40, 20, 8, 23);

    bike01.printDescription();
    bike02.printDescription();
    bike03.printDescription();

  }
}

Outputnya:

Bike is in gear 1 with a cadence of 20 and travelling at a speed of 10. 

Bike is in gear 5 with a cadence of 20 and travelling at a speed of 10. 
The MountainBike has a Dual suspension.

Bike is in gear 8 with a cadence of 40 and travelling at a speed of 20. 
The RoadBike has 23 MM tires.
  • Variable and method scoping

  • Parameter passing

Parameter mengacu pada daftar variabel pada metode deklarasi. Argumen adalah nilai-nilai aktual yang berlalu ketika method dipanggil.

  • Package

adalah pengelompokan dari jenis akses terkait yang memberikan perlindungan pada manajemen space name. Tipe tersebut adalah classes, interfaces, enumerations, and annotation type. Anotation type menyediakan data tentang sebuah program yang bukan merupakan bagian dari program itu sendiri. Mereka tidak memiliki efek langsung pada kode operasi mereka

Annotation memiliki sejumlah manfaat, di antaranya:

  1. Informasi untuk compiler : penjelasan dapat digunakan oleh compiler untuk mendeteksi kesalahan atau menekan peringatan.
  2. Compiler-time dan deployment-time processing : software tools dapat memproses informasi penjelasan untuk menghasilkan kode, XML file, dan sebagainya.
  3. Runtime processing : beberapa penjelasan yang tersedia untuk diperiksa saat runtime.

Annotations dapat diterapkan pada deklarasi classes, fields methods dan elemen lainnya. Contoh:

@Author(
   name = "Benjamin Franklin",
   date = "3/27/2003"
)
class MyClass() { }

Contoh penerapan soal:

public class Rectangle {

protected double length;

protected double width;

public Rectangle() {

this(0.,0.); //intialize with zero value

}

public Rectangle(double length) {

this(length,length);

}

public Rectangle(double length, double widht) {

setLength(length);

setWidth(width);

}

public void setLength(double length) {

this.length = length;

}

public void setLength(String lenght) {

this.length = Double.parseDouble(lenght);

}

public void setWidth(double width) {

this.width = width;

}

//instance method

public double getArea() {

return length * width;

}
//class method
public static double computeArea(double length,double width) {
return length * width;
}
}



public class TestShapes {
public static void main(String[] args) {
Rectangle square, dice, brick, rectangle;
square = new Rectangle(4.);
dice = new Box(3.);
brick = new Box(4.,3.,2.);
rectangle = new Rectangle(2.,1.);
System.out.println (square);
System.out.println (dice);
System.out.println (brick);
System.out.println (rectangle);
}
}
/* public static void main(String[] args) {
double length = 2.;
double width = 3.;
Rectangle kotak =  new Rectangle();
Rectangle persegipanjang = new Rectangle(5.,2.);
Rectangle bujursangkar = new Rectangle(4.);
kotak.setLength("2.5");
kotak.setWidth(width);
System.out.println(kotak);
System.out.println(persegipanjang);
System.out.println(bujursangkar);
System.out.println(kotak.getArea());
System.out.println(Rectangle.computeArea(length, width));
}
*/



public class Box extends Rectangle {

private double height;

public Box() {

this(0., 0., 0.);

}

public Box(double length, double width, double height) {

super(length, width);

this.height = height;

}

public Box(double size) {

this(size, size, size);

}

@Override

public double getArea() {

return (length * width * 2) + (length * height * 2) + (width * height * 2); 

}

@Override

public String toString() {

return "Box " + length + "x" + width + "x" + height + "=" + getArea();

}

}



public class TestBox {

public static void main(String[] args) {

Box brick = new Box(3.,2.,1.)

System.out.println(brick.getArea());

System.out.println(brick.toString());

} 

}

Setelah itu dilanjutkan oleh Ko Redo dan Ko Franky dengan memberikan soal-soal latihan yang digunakan untuk latihan. Sampai jumpa minggu depan. 😀

March 12, 2010

OOP week 5

Filed under: Uncategorized — Priscillia @ 10:24 am

Pada hari Kamis, 11 Maret 2010 pk 08.20-11.40 diadakan kelas OOP week ke 5. Pada pertemuan tersebut diadakan kuis selama 30 menit dengan 2 soal coding-an. Waktu yang diberikan kurang untuk mengerjakan soal tersebut. Setelah diadakan kuis dilanjutkan dengan pelajaran, yang mengajar adalah Pak Trianggoro. Pelajaran pada hari itu adalah tentang:

  • The if statement :

contoh penerapan soal:

int testScore;
testScore = //get test score input
if (testScore < 70) //pernyataan ini diproses jika testScore kurang dari 70
JOptionPane.showMessageDialog(null, “You did not pass” );
else //pernyataan ini diproses jika testScore selain kurang dari 70
JOptionPane.showMessageDialog(null, “You passed” );

Compound Statement:

if (testScore < 55){
JOptionPane.showMessageDialog(null, “Fail”);
JOptionPane.showMessageDialog(null, “Work Harder”);
} //then block

else {
JOptionPane.showMessageDialog(null, “Pass”);
JOptionPane.showMessageDialog(null, “Proceed Next”);
} //else block

– The Nested-if statements

adalah then dan else menge-blok sebuah if satements yang dapat berisi pernyataan-pernyataan yang valid, termasuk if statements yang lain. Contoh:

if (testScore >= 55) {
if (studentAge < 10) {
System.out.println(“You did a great job”);
}

else {
System.out.println(“You did pass”); //test score >= 55
} //and age >= 10
}

else { //test score < 55
System.out.println(“You did not pass”);
}
if (x < y)
if (x < z)
System.out.print(“Hello”);
else
System.out.print(“Good bye”);
A
if (x < y)
if (x < z)
System.out.print(“Hello”);
else
System.out.print(“Good bye”);
B
Are A and B different?
if (x < y) {
if (x < z) {
System.out.print(“Hello”);
}

else {
System.out.print(“Good bye”);
}
}

  • Boolean expressions : adalah suatu ekspresi yang menghasilkan nilai Boolean, yaitu TRUE atau FALSE. Beberapa operator boolean adalah:

and: &&

or: ||

not: !

Semantics of Boolean Operators (klik pada Semantics of Boolean Operators)

Contoh:

if (temperature >= 65 && distanceToDestination < 2) {
System.out.println(“Let’s walk”);
} else {
System.out.println(“Let’s drive”);
}

  • Comparing objects : dengan tipe data primitif, kita hanya memiliki satu cara untuk membandingkan mereka, tapi dengan objek kita memiliki dua cara untuk membandingkan mereka, yaitu:

kita dapat menguji apakah dua variabel yang menunjuk ke objek yang sama (atau ==)

kita dapat menguji apakah dua objek yang berbeda mempunyai isi yang sama

Contoh using == with objects:

String str1 = new String(“Java”);
String str2 = str1;
if (str1 == str2) {
System.out.println(“They are equal”);
} else {
System.out.println(“They are not equal”);
}

Keterangan: contoh di atas bernilai sama karena str1 dab str2 menunjuk ke objek yang sama

Contoh  using equals with string:

String str1 = new String(“Java”);
String str2 = new String(“Java”);
if (str1.equals(str2)) {
System.out.println(“They are equal”);
} else {
System.out.println(“They are not equal”);
}

Keterangan: contoh di atas bernilai sama karena str1 dab str2 menunjuk ke isi yang sama

  • The switch statement :

Contoh:

String grLevel;
grLevel = JOptionPane.showInputDialog(“Grade (Fresh-1,Soph-2,…):” );
int gradeLevel = Integer.parseInt(grLevel);
switch (gradeLevel) {
case 1: System.out.print(“Go to the Gymnasium”); //pernyataan dijalankan jika gradeLevel=1
break;
case 2: System.out.print(“Go to the Science Auditorium”);
break;
case 3: System.out.print(“Go to Harris Hall Rm A3”);
break;
case 4: System.out.print(“Go to Bolt Hall Rm 101”); //pernyataan dijalankan jika gradeLevel=4
break;
}

  • The while statement :

Contoh:

int sum = 0, number = 1;
while ( number <= 100 ) { //pernyataan dijalankan sepanjang number kurang dari atau sama dengan 100
sum = sum + number;
number = number + 1;
}

Contoh lainnya:

String inputStr;
int age;
inputStr = JOptionPane.showInputDialog(null,
“Your Age (between 0 and 130):”);
age = Integer.parseInt(inputStr);
while (age < 0 || age > 130) {
JOptionPane.showMessageDialog(null,
“An invalid age was entered. Please try again.”);
inputStr = JOptionPane.showInputDialog(null,
“Your Age (between 0 and 130):”);
age = Integer.parseInt(inputStr);
}

– do-while statements

Contoh:

int sum = 0, number = 1;
do {
sum += number;
number++;
} while ( sum <= 1000000 );

– Confirmation Dialog: dapat digunakan untuk meminta pengguna untuk menentukan apakah akan melanjutkan pengulangan atau tidak

Contoh:

boolean keepPlaying = true;
int selection;
while (keepPlaying){
//code to play one game comes here
// . . .
selection = JOptionPane.showConfirmDialog(null,
“Play Another Game?”,
“Confirmation”,
JOptionPane.YES_NO_OPTION);
keepPlaying = (selection == JOptionPane.YES_OPTION);
}

  • The for statement :

Contoh:

int i, sum = 0, number;
for (i = 0; i < 20; i++) {
number = scanner.nextInt( );
sum += number;
}

Pada akhir penjelasan Pak Trianggoro memberi contoh penerapan:
import javax.swing.JOptionPane;

public class HiLoGame {

private int secretNumber, counter;
private String guessNumber;

public HiLoGame() {
secretNumber = (int) (Math.random() * 100);
while (counter <= 6) {
guessNumber = JOptionPane.showInputDialog(null, “Masukkan Tebakan”);
if (Integer.parseInt(guessNumber) > (secretNumber)) {
System.out.println(“HI”);

} else if (Integer.parseInt(guessNumber) > (secretNumber)) {
System.out.println(“LO”);
} else if (Integer.parseInt(guessNumber) > (secretNumber)) {
System.out.println(“”);
} else {
System.out.println(“Correct”);
}
counter++;
}
}

public static void main(String[] args) {
HiLoGame hiLoGame = new HiLoGame();
}
}

Contoh penerapan soal di atas akan membuat permainan menebak angka yang benar kurang dari sama dengan 100. Komputer akan memberikan angka secara random dan user diminta untuk menebak angka tersebut. Kesempatan yang diberikan adalah 5x. jika sudah 6x maka user dinyatakan kalah.

Setelah itu dilanjutkan oleh Pak Alfon dengan memberikan homework sebagai tiket masuk untuk pertemuan minggu depan. Homework tersebut tentang membuat sebuah permainan untuk mencari bomb. Setelah Pak Algon memberikan homework dilanjutkan dengan menampilkan nilai blog pertemuan yang lalu dan kelas pun berakhir

if (testScore < 55){
JOptionPane.showMessageDialog(null, “Fail”);
JOptionPane.showMessageDialog(null, “Work Harder”);
} else {
JOptionPane.showMessageDialog(null, “Pass”);
JOptionPane.showMessageDialog(null, “Proceed Next”);
}

😀

March 4, 2010

OOP week 4

Filed under: Uncategorized — Priscillia @ 3:33 pm

Pada hari Kamis, 4 Maret 2010 pk 8.20-11.40 diadakan kelas OOP pertemuan ke-4. Pada pertemuan ini diadakan latihan-latihan soal dan sebuah homework untuk tiket masuk pada pertemuan berikutnya. Pada pertemuan yang mengajar adalah pak Alfon. Contoh penerapan soal yang diberikan adalah:

public class Account{

private double balance;

private String ownerName;
private int accNumber;

/**

* Costum Constructor

*/

public Account(int newAccNumber, String newOwnerName, double newBalance){

//automatically generated by compiler
setData(newAccNumber, newOwnerName, newBalance);
}

public void print(){
System.out.println(“[” + accNumber
+ ” ” + ownerName
+ “]= ” + balance);
}

public void setBalance(double newBalance){
balance = newBalance;
}

public void setOwnerName(String newOwnerName){
ownerName = newOwnerName;
}

public void setAccNumber(int newAccNumber){
accNumber = newAccNumber;
}

public void setData(int newAccNumber, String newOwnerName, double newBalance){
setAccNumber(newAccNumber);
setOwnerName(newOwnerName);
setBalance(newBalance);
}

public double getBalance(){
//do sth
return balance;
}
}

public class TrxRunner {

public void swapBalance(Account vice, Account versa){
double tempBalance = vice.getBalance();  //double tempBalance : local variable
vice.setBalance(versa.getBalance());
versa.setBalance(tempBalance);
}

public static void main(String[] args){

Account acct1 = new Account(10001, “Stone Giant”, 0.);
Account acct2 = new Account(10002, “Windrunner”, 100.);

acct1.setAccNumber(10001);
acct1.setOwnerName(“Stone Giant”);
acct1.setBalance(0.);

acct1.setData(10001, “Stone Giant”, 0.);

acct1.print();
acct2.print();

new TrxRunner().swapBalance(acct1, acct2);

//acct1.balance += 100.;
//x = x + 1   >>   x++    >>   x += 1

acct1.setBalance(100);

//
acct1.print();
acct2.print();

System.out.println(“Current balance = ” + acct1.getBalance());
}
}

public class ExPassByRef{

public void modify(int a, Account acct){
a += 10;
acct.setOwnerName(“Windrunner”);
}

public static void main(String[] args){
int x = 0;
Account acct1 = new Account(10001, “Stone Giant”, 0.);

System.out.println(“x=” + x);
acct1.print();

new ExPassByRef().modify(x, acct1);

System.out.println(“x= ” + x);
acct1.print();
}
}

– Informasi tersembunyi dan visibilitas data:

  • private : tidak dapat diakses dari luar
  • public : dapat diakses dari luar

– Argumen/parameter adalah jenis khusus dari variabel , digunakan dalam subrutin untuk merujuk pada salah satu bagian data yang disediakan sebagai input ke subrutin. Subrutin atau sub (juga disebut prosedur, metode, fungsi, atau rutin) adalah bagian kode yang lebih besar dalam program yang khusus melakukan tugas dan relatif independen kode yang tersisa.Disebut juga argument. Cth:

sales_tax ganda (double harga)
{ (
    return 0.05 * price ; kembali 0,05 * harga;
} )

diambil dari:

– Constuctor adalah metode khusus yang dijalankan ketika instance dari sebuah kelas baru diciptakan atau konstruktor dipakai untuk membuat objek dari kelas blueprint

– Passing method to metod:

  • Jika dapat melewati tipe data primitif (int, double, dan lain-lain), juga bisa melewati objek menuju methode
  • Ketika melewati sebuah objek, sebenarnya melewati referensi dari sebuah objek
  • Catatan: data duplikat tidak dapat dibuat pada method

– Local variable hanya terdapat di dalam method, dinyatakan di dalam method, dan untuk menyimpan data sementara

Latihan soal di atas adalah mengenai nama nasabah sebuah bank dan saldo nasabah tersebut. Setelah pak Alfon selesai menjelaskan dilanjutkan dengan latihan soal yang diberikan oleh Ko Redo. Ko Redo memberikan beberapa soal. Setelah selesai memberikan soal dilanjutkan dengan memberikan test. Test tersebut adalah:

Ada sebuah toko ice cream bernama “Freeze”. Toko tersebut menjual ice hanya satu jenis saja dan harganya sangat mahal. satu buah ice cream harganya $2s. Toko tersebut memberikan discount sebesar 25% jika membeli 1 pack ice cream. 1 pack ice cream berisi 10 buah.

Dari soal tersebut buatlah java code-nya!

Setelah memberikan test dengan waktu pekerjaan 10 menit dilanjutkan dengan memberikan homework sebagai tiket masuk pada pertemuan minggu depan.  Soalnya adalah:

Buatlah java code untuk sebuah kartu perpustakaan. Setiap kartu pasti dipunyai oleh seorang mahasiswa (nama, nim, dan nomor handphone). Kartu tersebut berguna untuk mencatat apa saja yang dipinjam dan maksimal peminjaman adalah 1 buah buku. Selain itu, kartu tersebut juga bisa menampilkan tanggal peminjaman dan tanggal pengembalian.

Setelah memberikan soal di atas dilanjutkan dengan menampilkan nilai blog dan kelas oop pun berakhir.

Older Posts »

Create a free website or blog at WordPress.com.