PERTEMUAN 6 Frame

1.   Pengertian Frame dalam GUI Java :
      Membuat frame baru dengan inisialisasi kosong. Semua properti akan diatur      kemudian.
     
Kelas JFrame merupakan kelas yang paling sering digunakan untuk membuat program Java jenis aplikasi. Nama lengkapnya adalah javax.swing.JFrame. Silsilah dari kelas JFrame adalah:

java.lang.Object
_
java.awt.Component
_
java.awt.Container
_
java.awt.Window
_
java.awt.Frame
_
javax.swing.JFrame


Ada beberapa konstruktor yang dapat digunakan, yaitu:

1.
JFrame()
Membuat frame baru dengan inisialisasi kosong. Semua properti akan diatur kemudian.
2.
JFrame(GraphicsConfiguration gc)
Membuat frame baru dengan memberikan nilai awal untuk GraphicsConfiguration.
3.
JFrame(String title)
Membuat frame baru dengan memberikan nilai awal untuk title bar.
4.
JFrame(String title, GraphicsConfiguration gc)
Membuat frame baru dengan memberikan nilai awal untuk title dan GraphicsConfiguration.

Contoh menggunakan kelas JFrame - JFrame dengan TitleBar


1. Nama file: Contoh_2_1.java

 package bab2;

import javax.swing.SwingUtilities;
import javax.swing.JFrame;

public class Contoh_2_1 implements Runnable
{
    public void run()
    {
        JFrame.setDefaultLookAndFeelDecorated(true);
        JFrameTitleBar jftb = new JFrameTitleBar();
    }
  
    public static void main(String argumen[])
    {
        SwingUtilities.invokeLater(new Contoh_2_1());
    }
}

2. Nama file: JFrameTitleBar.java


package package2;

import javax.swing.JFrame;
import javax.swing.WindowsConstants;

public class JFrameTitleBar extends JFrame
{
    public JFrameTitleBar()
    {
        super("Contoh 2.1: JFrame dengan Titlebar");
        setSize(400, 200);
        setDefaultCloseOperation(WindowsConstants.EXIT_ON_CLOSE);
        setVisible(true);
    }
  
}
Cara menjalankan:

  1. Buat direktori dengan nama, misalnya bab2
  2. Buat direktori baru dengan nama src dan build di dalam direktori bab2
  3. Buat direktori baru dengan nama classes di dalam direktori build
  4. Ketik kedua file JFrameTitleBar.java dan Contoh_2_1.java dengan editor yang paling disukai kemudian simpan pada direktori src
  5. Masuk ke direktori src melalui terminal (IGOS Nusantara atau Linux) atau Command Prompt (Windows)
  6. Jika pada IGN atau Linux, ketikkan perintah berikut: javac –d ../build/classes *.java
  7. Jika pada Windows, ketikkan perintah berikut: javac –d ..\build\classes *.java
  8. Untuk menjalankan, masuk ke direktori classes
  9. Ketik perintah berikut: java bab2.Contoh_2_1
Setelah langkah ke-9 akan muncul seperti gambar berikut:





Keterangan JFrameTitleBar.java

1.
package bab2;
Kata kunci package digunakan untuk mendeklarasikan paket baru. Pada contoh tersebut nama paket adalah bab2. Menggunakan paket sifatnya opsional. Namun, sangat dianjurkan untuk menggunakan paket pada setiap program Java yang dibuat mulai Java versi 1.4.

2.
import javax.swing.JFrame;
Kata kunci import digunakan apabila pembuat program tidak ingin menuliskan nama lengkap untuk setiap kelas yang digunakannya. Misalnya apabila ingin menggunakan kelas javax.swing.JFrame, maka cukup ditulis dengan JFrame jika sudah dilakukan import.

3.
public class JFrameTitleBar extends JFrame
Baris perintah tersebut digunakan untuk mendeklarasikan kelas baru dengan nama JFrameTitleBar yang merupakan turunan dari kelas JFrame, sehingga silsilah kelas JFrameTitleBar adalah sebagai berikut:

java.lang.Object

java.awt.Component
java.awt.Container
java.awt.Window
java.awt.Frame
javax.swing.JFrame
bab2.JFrameTitleBar

4.
super("Contoh 2.1: JFrame dengan Titlebar");
Kata kunci super() digunakan untuk memanggil konstruktor kelas induk dari kelas yang dibuat sekarang. Dalam hal ini, kelas induknya adalah JFrame. Pemanggilan metode super() harus diletakkan pada baris pertama.

5.
setSize(400, 200);
Metode setSize(int panjang, int lebar) merupakan metode yang diwariskan dari kelas java.awt.Window. Metode ini digunakan untuk mengatur ukuran panjang dan lebar window dalam satuan piksel.

6.
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
Metode setDefaultCloseOperation(int) digunakan untuk menangani kejadian saat tanda silang di pojok kanan atas pada window diklik. Ada beberapa konstanta dari kelas WindowConstants yang dapat digunakan sesuai dengan yang diinginkan.

7.
setVisible(true);
Metode setVisible() merupakan metode yang diwariskan dari kelas java.awt.Window. Metode ini digunakan untuk memunculkan atau menyembunyikan window. Argumen yang dapat dimasukkan adalah true atau false.

Keterangan Contoh_2_1.java


public class Contoh_2_1 implements Runnable

{
public void run()
{
……..
}
public static void main(String args[])
{
SwingUtilities.invokeLater(new Contoh_2_1());
}
}
Baris perintah tersebut digunakan untuk membuat thread agar aman saat menggunakan komponen Swing. Dalam setiap aplikasi setidaknya memiliki satu buah thread. Keterangan lebih lanjut dapat dilihat pada situs: http://java.sun.com/javase/6/docs/api/javax/swing/package-summary.html#threading. Untuk selanjutnya, apabila menggunakan komponen Swing, maka akan menggunakan cara yang sama seperti baris perintah tersebut.

1. JFrame.setDefaultLookAndFeelDecorated(true);

Metode setDefaultLookAndFeelDecorated(boolean lafd) ini digunakan untuk memastikan bahwa JFrame tersebut akan mengikuti dekorasi window (border, judul dan sebagainya) sesuai dengan look and feel yang diaktifkan sekarang. Jika lafd diisi dengan true, maka tampilan dekorasi window akan ditampilkan sesuai dengan look and feel yang diaktifkan. Apabila tidak ada look and feel tertentu yang diaktifkan, maka akan digunakan look and feel standar Java yaitu OceanTheme seperti yang dapat dilihat pada Gambar 2.2. Tampilan dekorasi window akan sama pada setiap sistem operasi yang digunakan, misalnya Linux dan Windows.

2.
JFrameTitleBar jftb = new JFrameTitleBar();
Baris perintah tersebut digunakan untuk membuat objek dari kelas JFrameTitleBarjftb dan sekaligus menginisialisasi dengan memanggil konstruktornya.
dengan nama

PERTEMUAN 4 Method, Array

1.Class Java Method

public class JavaMethod{
    public void cetak(String param){
        System.out.println(">>" + param);
    }
    public int jumlah(int a, int b){
        cetak("DALAM method jumlah()");
        return a+b;
    }
    public static void main (String args[]){
        JavaMethod m=new JavaMethod();
        m.cetak("Hello Method"); //Argument
        m.cetak("Oke..");
        m.cetak("Hasil : " + m.jumlah(10,10));
    }
}


2.Class Method_Overloading


public class MethodOverloading{
    public void cetak(String param){
        System.out.println(">>" + param);
    }
    public void cetak(String judul, String isi){
        cetak(judul.toUpperCase());
        cetak(isi);
    }
    public int jumlah(int a, int b){
        cetak("DALAM method jumlah()");
        return a+b;
    }
    public static void main (String args[]){
        MethodOverloading m=new MethodOverloading();
        m.cetak("Hello Method"); //Argument
        m.cetak("Oke..");
        m.cetak("Hasil : " + m.jumlah(10,10));
        m.cetak("Java programming", "java is 100% OOP!");
    }
}

ARRAY

 





PERTEMUAN 5 PhoneBook

1. Class Utama
import java.io.*;
public class Utama
{
    public static void main (String[]args) throws Exception
    {
        Phonebook [] p=new Phonebook[10];
        int Pilihan;
        int counterm=0;
        String nama,alamat,notelp;   
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        //Phonebook kontak = new Phonebook();
        do
        {
        System.out.println("==================");
        System.out.println("    Phone Book      ");
        System.out.println("==================");
        System.out.println("1. TAMBAH KONTAK");
        System.out.println("2. CARI KONTAK");
        System.out.println("3. HAPUS KONTAK");
        System.out.println("4. LIHAT SEMUA KONTAK");
        System.out.println("5. KELUAR");
        System.out.print("Masukkan Pilihan Anda    :");
        Pilihan = Integer.parseInt(in.readLine());
        switch (Pilihan)
        {
            case 1:
            {
                System.out.print("Nama :");
                nama=in.readLine();
                //kontak.setNama(in.readLine());
                System.out.print("Alamat :");
                alamat=in.readLine();
                //kontak.setAlamat(in.readLine());
                System.out.print("No Telp :");
                notelp=in.readLine();
                //kontak.setTelp(in.readLine());
                p[counterm] = new Phonebook (nama,alamat,notelp);
               
                counterm+=1;
            }
            break;
            case 2:
            {
               
            }
            break;
            case 3:
            {
               
            }
            break;
            case 4:
            {
                for (int i=0; i<=counterm-1;i++)
                {
                    System.out.println(p[i].displayinfo());
                    System.out.println();
                }
            }
        }
       
        }
        while (Pilihan != 5);   
    }
   
}

2. Class PhoneBook

//---------------------------
// Super Kelas Phonebook
//---------------------------
class Phonebook
{
    //atribut
    private String nama="";
    private String alamat="";
    private String notelp="";
   
    //metode-constructor
    public Phonebook (String nm,String al,String tlp)
    {
        nama=nm;
        alamat=al;
        notelp=tlp;
    }
   
    //modifier
    public void setNama(String nm)
    {
        this.nama=nm;
    }
   
    public void setAlamat(String al)
    {
        this.alamat=al;
    }
   
    public void setTelp(String tlp)
    {
        this.notelp=tlp;
    }
   
    //accessor
    public String getNama()
    {
        return nama;
    }
   
    public String getAlamat()
    {
        return alamat;
    }
   
    public String getTelp()
    {
        return notelp;
    }
    public String displayinfo()
    {
        return("Nama :"+nama+"\nAlamat :"+alamat+"\nNO Telp :"+notelp);
    }
}

PERTEMUAN 4 Quiz Kelompok

Jawaban Quiz1

 1.


 2. 



3.

Procedure Hari_Ini
            Begin
                        dbms_output_put_line (‘hari ini hari selasa’)
            End;

4.
Untuk menampilkan employee_id, last_name, dan salary dari table employees yang ingin mencari last_name dan mempunyai huruf tengah “u” serta mencari gaji yang sudah mempunyai rata-rata yang diperoleh dari table salary.


5.


6.
    a. V_CUSTID di posisi 1 : 400
    b. V_CUSTNAME di posisi 1 : Shape up Sports of Club Imports of Club Jansports of Club
    c. V_NEW_CUSTID di posisi 2 : 600
    d. V_NEW_CUSTNAME di posisi 1 : Jansports of Club
    e. V_CUSTID di posisi 2 : 3120
    f. V_CUSTNAME di posisi 2 : The Women Sports Club

7.
DECLARE
            Nilai1 number(5):=0;
            Nilai2 number(5):=0;
            Hasil number(5):=0;

    BEGIN
            Nilai1:=&nilai1;
            Nilai2:=&nilai2;
            Hasil:=(nilai1/nilai2)+nilai2;
            dbms_output.put_line(hasil);
    End;

PERTEMUAN 3 Writing Executable Statements

PL / SQL Sintaks Blok dan Pedoman
Literal
- Karakter dan tanggal literal harus diapit
tanda kutip tunggal.
 v_name := 'Henderson';
- Bilangan dapat nilai-nilai sederhana atau ilmiah
notasi.
A slash (/) menjalankan PL / SQL blok dalam sebuah file script
atau dalam beberapa tools seperti PLUS * iSQL.

Kode Comenting
Prefix single-line komentar dengan dua strip (--).
Tempatkan komentar banyak baris antara simbol-simbol
/ * dan * /.
Contoh:
DECLARE
...
v_sal NUMBER (9,2);
BEGIN
/* Compute the annual salary based on the
monthly salary input from the user */
v_sal := :g_monthly_sal * 12;
END; -- This is the end of the block 

Fungsi SQL dalam PL / SQL
Tersedia dalam laporan prosedural:
- Single-nomor baris
- Single-baris karakter
- Jenis data konversi
- Tanggal
- Timestamp
- Terbesar dan TERKECIL
- fungsi Miscellaneous

Tidak tersedia dalam laporan prosedural :
- deCODE
- Kelompok fungsi

Contoh :
Membangun milis untuk perusahaan
v_mailing_address := v_name||CHR(10)||
v_address||CHR(10)||v_state||
CHR(10)||v_zip; 
 Mengkonversi nama karyawan untuk huruf kecil :
v_ename := LOWER(v_ename);

Data Jenis Konversi
Konversi data ke tipe data yang sebanding.
Campuran jenis data dapat mengakibatkan kesalahan dan mempengaruhi
kinerja.
Konversi fungsi:
- TO_CHAR
- TO_DATE
- TO_NUMBER


DECLARE
v_date DATE := TO_DATE('12-JAN-2001', 'DD-MON-YYYY');
BEGIN
. . .
Data Jenis Konversi
Pernyataan ini menghasilkan kesalahan kompilasi jika
v_date variabel dideklarasikan sebagai tipe data DATE.

v_date := 'January 13, 2001';

kesalahan, gunakan konversi TO_DATE
fungsi.Untuk memperbaiki

v_date := TO_DATE ('January 13, 2001','Month DD, YYYY');
 Kualifikasi suatu Identifier
kualifikasi bisa label dari dilampiri
blok.
Kualifikasi sebuah identifier dengan menggunakan awalan label blok.
Kualifikasi bisa label dari dilampiri
blok.
Kualifikasi sebuah identifier dengan menggunakan awalan label blok.

<<outer>>
DECLARE
birthdate DATE;
BEGIN
DECLARE
birthdate DATE;
BEGIN
...
outer.birthdate :=
TO_DATE('03-AUG-1976',
'DD-MON-YYYY');
END;
....
END;


<<outer>>
DECLARE
v_sal NUMBER(7,2) := 60000;
v_comm NUMBER(7,2) := v_sal * 0.20;
v_message VARCHAR2(255) := ' eligible for commission';
BEGIN
DECLARE
v_sal NUMBER(7,2) := 50000;
v_comm NUMBER(7,2) := 0;
v_total_comp NUMBER(7,2) := v_sal + v_comm;
BEGIN
v_message := 'CLERK not'||v_message;
outer.v_comm := v_sal * 0.30;
END;
v_message := 'SALESMAN'||v_message;
END; 

PERTEMUAN 2 Declaring Variables

Strukur Umum PL/SQL

PL/SQL bekerja server-side yang mana PL/SQL ini sesungguhnya akan dijalankan di server basisdata. Truz apa implikasinya? Karena berjalan server-side, kode-kode PL/SQL ini sangat efisien untuk operasi-operasi yang melibatkan data dalam volume besar serta meminimalisir lalu lintas di jaringan komputer pada aplikasi-aplikasi client-server. PL/SQL sangat portable dan merupakan bahasa transaksi berkinerja tinggi serta merupakan bahasa yang menawarkan keunggulan-keunggulan seperti berikut:
  • Dukungan penuh terhadap SQL. PL/SQL memungkinkan kita untuk menggunakan semua sintaks manipulasi data SQL, kendali cursor, dan perintah-perintah pengendali transaksi, sehingga kita dapat memanipulasi basis data oracle secara fleksibel dan aman. PL/SQL mendukung penuh seluruh tipe data SQL seperti yang didefinisikan oleh Oracle 10g, mengurangi konversi yang mungkin akan terjadi antara aplikasi dan basis data. Digabungkan dengan akses langsung yang dilakukan oleh SQL, tipe data yang terbagi mengintegrasikan PL/SQL dengan kamus data(data dictionary) milik basis data oracle 10g. Atribut-atribut %TYPE dan %ROWTYPE memungkinkan kode-kode kita beradaptasi dengan perubahan definisi tabel. Sebagai contoh, atribut %TYPE mendeklarasikan peubah (variable)berbasis pada jenis kolom basis data. Jika type kolom berubah, peubah kita akan menggunakan type yang benar saat aplikasi dijalankan (run-time environment).
  • Kinerja yang lebih baik. Jika aplikasi kita cenderung bekerja dengan volume data yang besar, kita dapat menggunakan blok PL/SQL untuk mengelompokkan pernyataan-pernyataan SQL sebelum mengirimnya ke server basis data Oracle 10g untuk dieksekusi. Hal ini akan secara dramatis mengurangi “biaya” komunikasi antar-aplikasi kita dengan sistem basis data Oracle 10g. Prosedur-prosedur tersimpan PL/SQL akan dikompilasi sekali saja dan disimpan dalam bentuk yang langsung dapat dieksekusi, sehingga pemanggilan prosedur dapat berlangsung dengan cepat dan efisien.
  • Produktifitas yang lebih tinggi. PL/SQL menambahkan kemampuan-kemampuan prosedural yang bersifat sama dalam semua lingkungan. Saat kita mahir menggunakan PL/SQL dengan salah satu tools yang dimiliki oleh Oracle 10g, kita dapat mentransfer pemahaman kita pada tools yang lain, sehingga sangat meningkatkan produktifitas. Sebagai contoh, script yang ditulis menggunakan suatu tools dapat digunakan oleh tools yang lain.
  • Skalabilitas. Prosedur-prosedur tersimpan yang ditulis menggunakan PL/SQL meningkatkan skalabilitas dengan cara memusatkan pemrosesan aplikasi server-side(di sisi server). Fasilitas memori terbagi (shared memory) dari server terbagi (shared server) memungkinkan basis data Oracle 10g mendukung ribuan pengguna.
  • Kemudahan dipelihara. Sekali divalidasi, prosedur tersimpan (stored procedure) yang ditulis menggunakan bahasa PL/SQL dapat digunakan oleh sejumlah aplikasi. Jika definisinya berubah, hanya prosedur tersimpa yang bersangkutan yang dipengaruhi, bukannya aplikasi-aplikasi yang memanggilnya. Hal ini menyederhanakan pemeliharaan. Selain itu, memelihara stored procedure di server lebih mudah dibandingkan memelihara beberapa salinannya di banyak komputer client.Pada dasarnya ada 3 jenis objek PL/SQL yang paling dasar, yaitu stored procedure, dan stored function serta trigger, dimana ketiganya merupakan bagian dari beberapa objek PL/SQL lainnya yang dapat disebutkan di bawah ini.
  • Packages, adalah kumpulan prosedur dan fungsi yang secara logika berhubungan. Pada package ini ada yang dinamakan sebagai spec (spesifikasi), yang merupakan antarmuka ke aplikasi pengguna. Spec ini mendeklarasikan peubah-peubah (variables), jenis-jenisnya, konstanta2, exception (pengecualian), serta cursor, yang tersedia untuk dimanfaatkan oleh pengguna.
  • Package Body, merupakan tubuh program yang secara penuh mendefinisikan cursor serta sub program, serta juga digunakan untuk mengimplementasikan spec. Tubuh program ini merupakan rincian implementasi deklarasi dan pada umumnya tersembunyi dari aplikasi yang dibuat opeh pengguna.
  • Type Body, merupakan kumpulan metode-metode (prosedur-prosedur dan fungsi-fungsi) yang behubungan dengan tipe data yang didefinisikan pengguna.
  • Procedure, merupakan blok PL/SQL yang melaksanakan aksi tertentu yang sifatnya spesifik.
  • Functions, merupakan blok PL/SQL yang mengembalikan suatu nilai tunggal menggunakan perintah RETURN.
  • Trigger, merupakan nlok PL/SQL yang tereksekusi saat even tertentu terjadi di basis data. Even-even ini mungkin berbasis pada tabel seperti saat baris, tertentu ditambahkan ke suatu tabel. Trigger dapat juga merupakan even-even basis data, seperti misalnya even yang terjadi saat pengguna login ke basis data.
contoh penulisan 
Struktur Blok PL/SQL
Terdapat tiga bagian:
  • Bagian pendeklarasian tipe data (opsional)
  • Bagian penulisan perintah
  • Bagian eksepsi (opsional)
Bentuk umum PL/SQL
DECLARE
 variabel tipe_data;
 konstanta CONSTANT tipe_data := nilai;
 ...
BEGIN
 statement_1;
 statement_2;
 ...
EXCEPTION
 WHEN nama_eksepsi THEN statement_untuk_mengatasi_error;
 ...
END;
Contoh paling sederhana
BEGIN
 DBMS_OUTPUT.PUT_LINE(‘Belajar Oracle’);
END;
Catatan: Untuk melihat hasil, setting terlebih dahulu variabel sistem SERVEROUTPUT dengan menuliskan : SET SERVEROUTPUT ON
Contoh dengan eksepsi
SET SERVEROUTPUT ON
DECLARE
 X Integer;
BEGIN
 X := ‘Belajar Oracle’;
 DBMS_OUTPUT.PUT_LINE( TO_CHAR(X) );
EXCEPTION
 WHEN VALUE_ERROR THEN
  DBMS_OUTPUT.PUT_LINE (‘Kesalahan pada pengisisan
  nilai’);
END;
/
Contoh Studi Kasus
Prosedur debit_account di bawah ini memiliki kegunaan untuk menarik uang sejumlah tertentu dari rekening bank. Prosedur ini menerima parameter formal nomor rekening(acc_id) dan jumlah penarikan (debit_amount), kemudian menghitung saldo (balance) yang baru. Jika saldo (new_balance) lebih kecil dari nol, prosedur akan melompat ke rutin kesalahan (EXCEPTION) ; Jika tidak, ia akan dengan segera meperbarui rekening bank.
PROCEDURE debit_account (acct_id INTEGER, debit_amount REAL) IS
–- BAGIAN DEKLARASI
 old_balance REAL;
 new_balance REAL;
 overdrawn EXCEPTION;
–- PROGRAM PL/SQL
BEGIN
 SELECT bal INTO old_balance FROM accts
  WHERE acct_no = acct_id;
 new_balance:= old_balance – debit_amount;
 IF new_balance < 0 THEN
  RAISE overdrawn;
 ELSE
 UPDATE accts SET bal = new_balance
  WHERE acct_no = acct_id;
END IF;
COMMIT;
EXCEPTION
 WHEN overdrawn THEN
- - KODE UNTUK MENANGANI KESALAHAN DILETAKKAN DI SINI
END debit_account;
/
Bagian deklarasi mendeklarasikan peubah-peubah PL/SQL, exception, serta cursor. Bagian yang dapat dieksekusi memuat kode PL/SQL dan pernyataan-pernyataan SQL, dan dapat mengandung blok-blok bersarang (nested blocks). Penanganan eksepsi (exception handler) memuat kode-kode yang akan dipanggil saat exception (mirip dengan error) terjadi, entah menggunakan kode eksepsi yang telah terdefinisi sebelumnya (seperti NO_DATA_FOUND atau ZERO_DIVIDE) atau kode eksepsi yang kelak kita definisikan sendiri.

Referensi : http://blog.uin-malang.ac.id/irfandz/2010/10/17/mengenal-pl-sql/

PERTEMUAN 3 Attribute

 
Atribut adalah nama-nama property dari sebuah kelas yang menjelaskan batasan nilainya dari property yang dimiliki oleh sebuah kelas tersebut. Atribut dari sebuah kelas mempresentasikan property-property yang dimiliki oleh kelas tersebut. Atribut mempunyai tipe yang menjelaskan tipe instanisasinya. Hanya sebuah instanisasi dari kelas (objek) yang dapat mengubah nilai dari atributnya. Keadaan (state) dari sebuah objek dijelaskan dengan nilai dari atribut-atribut yang dimilikinya (selain keberadaan hubungan dengan objek lainnya). Dalam sebuah kelas atribut hanya dinyatakan keberadaan dan batasan nilainya saja, sedangkan dalam sebuah objek atributnya sudah dinyatakan nilai dan menjelaskan kedudukan / keadaan dari objek tersebut. Pengertian atribut, definisi atribut, atribut, properti, unik, nilai, identitas, operasi, siswa, objek, karakter
 
Referensi : http://id.shvoong.com/social-sciences/communication-media-studies/2062065-pengertian-atribut/