Rabu, 03 September 2014

PEMROGRAMAN BERORIENTASI OBJEK

Edit Posted by with No comments
Apa itu PBO?
          OOP/PBO merupakan paradigma pemrograman yang popular saat ini yang telah menggantikan teknik pemrograman berbasis prosedur. Object Oriented Programing yang berarti pula Pemrograman Beorientasi Objek sudah ditemukan sekitar tahun 1960 dan dikembangkan pada permulaan tahun 1970.

Pemrograman Berorientasi Objek (Object Oriented Programming/OOP) merupakan pemrograman yang berorientasikan kepada objek, dimana semua data dan fungsi dibungkus dalam class-class atau object-object. Setiap object dapat menerima pesan, memproses data, mengirim, menyimpan dan memanipulasi data. Beberapa object berinteraksi dengan saling memberikan informasi satu terhadap yang lainnya.
          Masing-masing object harus berisikan informasi mengenai dirinya sendiri dan dapat dihubungkan dengan Object yang lain. Pemrograman berorientasi objek berbeda dengan pemrograman prosedural yang hanya menggunakan satu halaman kebawah untuk mengerjakan banyak perintah atau statement. Penggunaan pemrograman berorientasi objek sangat benyak sekali, contoh : java, php, perl, c#, cobol, dan lainnya.
          Dalam konsep Pemrograman Berorientasi Objek dikenal beberapa istilah umum, yaitu:
- Attribute
Definisi dan Gambaran Umum Atribut
          Atribut dari sebuah kelas adalah variabel global yang dimiliki sebuah kelas, Atribut dapat memiliki hak akses private, public maupun protected.
Sebuah atribut yang dinyatakan sebagai private hanya dapat diakses secara langsung oleh kelas yang membungkusnya, sedangkan kelas lainnya tidak dapat mengakses atribut ini secara langsung.
          Sebuah atribut yang dinyatakan sebagai public dapat diakses secara langsung oleh kelas lain di luar kelas yang membungkusnya.
Sebuah atribut yang dinyatakan sebagai protected tidak dapat diakses secara langsung oleh kelas lain di luar kelas yang membungkusnya, kecuali kelas yang mengaksesnya adalah kelas turunan dari kelas yang membungkusnya.
          Atribut juga biasa disebut state/ properties/ field merupakan bagian yang dimiliki oleh sebuah class yang tidak melakukan operasi, tetapi kepadanya dilakukan operasi sehingga dapat merubah nilai dari attribute tersebut.
Karakteristik Atribut
          Dalam class, atribut disebut sebagai variabel. Atribut dapat membedakan antara satu object dengan object yang lain. Sebagai contoh, pada class : mahasiswa, terdapat object mahasiswa si A, dan object mahasiswa si B.
          Yang membedakan antara object si A dan si B adalah NPM-nya (Nomor Pokok Mahasiswa) yang merupakan atribut dari object tersebut. Pada atribut, terdapat pula dua istilah variabel, yaitu Instance Variabel dan Class Variable.
Dimana pada tiap variabel memiliki karakteristik tersendiri, diantaranya :
Pada Instance Variabel à tiap object memiliki instance variabel dan menyimpan nilainya tersendiri.
          Sedangkan pada Class Variabel à atribut yang dimiliki oleh semua object yang berasal dari class yang sama, serta semua object memiliki nilai class variabel yang sama. atribut yang dimiliki object dari class yang sama.
- Method
Definisi dan Gambaran Umum Method
          Method adalah fungsi atau prosedur yang dibuat oleh seorang programmer didalam suatu Class. Dengan kata lain, method pada sebuah kelas hampir sama dengan fungsi atau prosedur pada pemrograman prosedural.
          Pada sebuah method di dalam sebuah kelas juga memiliki izin akses seperti halnya atribut pada kelas, izin akses itu antara lain private, public dan protected yang memiliki arti sama pada izin akses atribut yang telah dibahas sebelumnya. Sebuah kelas boleh memiliki lebih dari satu method dengan nama yang sama asalkan memiliki parameter masukan yang berbeda sehingga kompiler atau interpreter dapat mengenali method mana yang dipanggil.
          Hal ini dinamakan overloading. Di dalam sebuah kelas, terdapat juga yang disebut sebagai method atau atribut statis yang memiliki kata kunci static. Maksud dari statis di sini adalah method yang dapat diakses secara berbagi dengan semua objek lain tanpa harus membuat objek yang memiliki method statis tadi (tanpa proses new), tapi sebuah method statis mempunyai keterbatasan yaitu hanya dapat mengakses atribut atau method lain di dalam kelas yang membungkusnya yang juga bersifat statis. Method statis biasanya diimplementasikan untuk method main.
Karakteristik Method
          Didalam suatu class, behavior disimpan dalam bentuk Method. Method merupakan serangkaian statemen / perintah (perintah = baris program) dalam suatu class yang menghandle task tertentu. Method merupakan hal-hal yang bisa dilakukan oleh object dari suatu class.
Method didefinisikan pada class akan tetapi dipanggil melalui object. Method memiliki peranan diantaranya :
– merubah nilai atribut dari suatu object,
– menerima informasi dari object lain, dan
– mengirim informasi ke obyek lain untuk melakukan suatu task (cara obyek berkomunikasi dengan obyek lain adalah dengan menggunakan method).
- Class
          Merupakan model yang berisi kumpulan attribute dan method dalam suatu unit untuk suatu tujuan tertentu. Sebagai contoh class manusia memiliki attribute berat, tinggi, usia kemudian memiliki method makan, minum, tidur. Method dalam sebuah class dapat merubah attribute yang dimiliki oleh class tersebut. Sebuah class merupakan dasar dari modularitas dan struktur dalam pemrograman berorientasi object.
Definisi dan Gambaran Umum Class
          Class didefinisikan sebagai sebuah blueprint(denah), atau prototipe, yang mendefiniskan variabel-variabel dan metode-metode yang umum untuk semua objek dari n jenis tertentu (n maksudnya jumlah tertentu). Sebuah kelas menyerupai sebuah struktur yang merupakan tipe data sendiri, misalkan tipe data titik yang terdiri dari koordinat x dan y. Bahasa Java telah menggunakan sebuah kelas untuk menyatakan tipe data titik karena bahasa pemrograman Java merupakan bahasa pemrograman berorientasi objek murni sehingga tidak mengenal struktur, melainkan mengenal apa yang disebut dengan kelas.
          Perbedaan sebuah kelas dengan sebuah struktur adalah sebuah kelas dapat berdiri sendiri dan dapat digunakan untuk berbagai keperluan kelas-kelas yang lain, sedangkan sebuah struktur tidak dapat berdiri sendiri. Sebuah kelas lebih fleksibel untuk digunakan oleh kelas lain tanpa harus membongkar kode program utama, sedangkan jika digunakan struktur maka kode program harus dibongkar unuk disalin bagian strukturnya ke kode program utama yang lain.
          Sebuah file dapat terdiri dari berbagai kelas, namun biasanya pada bahasa pemrograman Java sebuah file hanya terdiri dari satu kelas yang disimpan dengan nama kelas, misal file List.java berisi kelas List. Namun jika kelas yang dibuat misalnya public class nama_kelas, maka kelas itu harus disimpan dalam satu file hanya untuk satu kelas. Setelah dilakukan kompilasi maka pada Java akan ada sebuah file .class yang berisi bytecode dari setiap kelas.
          Jika sebuah file terdiri dari dua kelas, maka setelah dilakukan kompilasi akan dihasilkan dua buah file .class yang nantinya akan dibaca oleh interpreter Java saat program dieksekusi. Sebuah kelas saat program dieksekusi dan perintah new dijalankan, maka akan dibuat sebuah objek. Class adalah template untuk pembuatan objek. Class juga memiliki anggota, diantaranya : atribut dan method.
Pemahaman singkatnya :
• Class merupakan pola / template yang menggambarkan kumpulan object yang mempunyai sifat dan perilaku yang sama.
• Class merupakan struktur data dari object (blueprint dari sebuah object), dan proses pembuatan object dari sebuah class disebut juga dengan instantiation.
• Class merupakan definisi data dan fungsi dari suatu hal (benda, konsep, dll).
• Di dalam class dideklarasikan variabel dan method yang dimiliki oleh obyek
Karakteristik Class
          Class memiliki beberapa karakteristik, diantaranya : anggota class terdiri dari atribut dan method. Tiap-tiap anggota class memiliki control pengaksesan tersendiri, maksudnya adalah apakah anggota class tersebut dapat diakses dengan bebas (dengan tipe public) atau hanya dapat diakses melalui sebuah interface.
          Dalam hal ini, interface adalah device yang digunakan untuk komunikasi antar object berbeda yang tidak memiliki hubungan apapun. Interface bisa dikatakan sebagai protokol komunikasi antar object tersebut.
- Object
          Merupakan perwujudan dari class, setiap object akan mempunyai attribute dan method yang dimiliki oleh class-nya, contohnya: amir, ahmad, yani merupakan object dari class manusia. Setiap object dapat berinteraksi dengan object lainnya meskipun berasal dari class yang berbeda.
Definisi dan Gambaran Umum Object
          Object merupakan sesuatu yang memiliki identitas (nama), pada umumnya juga memiliki data tentang dirinya maupun object lain dan mempunyai kemampuan untuk melakukan sesuatu dan bisa bekerja sama dengan objek lainnya. Pada dasarnya semua benda yang ada di dunia dapat dianggap sebagai sebuah object. Rumah, mobil, sepeda motor, meja, dan komputer merupakan contoh-contoh object yang ada di dunia nyata. Object adalah implementasi dari class. Secara sederhananya, dapat dikatakan terdiri dari properti (atribut) dan method.
Pemahaman singkatnya :
• Objek merupakan sebuah objek khusus yang digunakan untuk mengakses anggota objek (atribut atau method) dari dalam objek itu sendiri.
• Apabila terdapat variabel lain yang memiliki nama yang sama dengan nama atribut di dalam objek, “this” dapat digunakan untuk merujuk ke atribut objek.
Karakteristik Object
          Setiap object memiliki dua karakteristik yang utama, yaitu atribut dan behavior. Atribut merupakan status object dan behavior merupakan tingkah laku dari object tersebut.
          Contoh sederhana adalah sepeda. Object sepeda memiliki atribut : pedal, roda, dan gigi, kecepatan serta memiliki tingkah laku seperti pacu dan rem. Sama seperti penggambaran di dunia nyata, pengembangan program dengan konsep OOP juga menggunakan model object yang akan menyimpan atributnya dalam variabel dan tingkah lakunya dalam method atau fungsi-fungsi/prosedur. Deskripsinya :
Contoh objek : Sepeda
– Sepeda memiliki atribut ( state ) : pedal, roda, jeruji, dan warna.
– Sepeda memiliki tingkah laku ( behaviour ) : kecepatannya menaik, kecepatannya menurun, dan perpindahan gigi sepeda.
Dalam pengembangan perangkat lunak berorientasi objek, objek dalam perangkat lunak akan menyimpan state-nya dalam variabel dan menyimpan informasi tingkah laku ( behaviour ) dalam method-method atau fungsi-fungsi/prosedur.
Konsep-konsep dalam OOP/PBO :
- Abstraction
          Adalah suatu cara untuk melihat suatu object dalam bentuk yang lebih sederhana. Sebagai contoh kita tidak melihat sebuah mobil sebagai ribuan komponen elektronik, sistem mekanik dengan empat buah ban, jok, stir kemudi dan sebagainya. Dengan Abstraction, suatu sistem yang kompleks dapat dipandang sebagai kumpulan subsistem-subsistem yang lebih sederhana, seperti halnya mobil merupakan suatu sistem yang terdiri atas berbagai subsistem, seperti subsistem kemudi, subsistem pengereman dan sebagainya.
          Abstraksi merupakan kemampuan sebuah program untuk melewati aspek informasi yang diproses olehnya, yaitu kemampuan untuk memfokus pada inti. Setiap objek dalam sistem melayani sebagai model dari “pelaku” abstrak yang dapat melakukan kerja, laporan dan perubahan keadaannya, dan berkomunikasi dengan objek lainnya dalam sistem, tanpa mengungkapkan bagaimana kelebihan ini diterapkan.
          Proses, fungsi atau metode dapat juga dibuat abstrak, dan beberapa teknik digunakan untuk mengembangkan sebuah pengabstrakan.
- Encapsulation
          Merupakan suatu mekanisme untuk menyembunyikan atau memproteksi suatu proses dari kemungkinan interferensi atau penyalahgunaan dari luar sistem dan sekaligus menyederhanakan penggunaan sistem tersebut.
          Memastikan pengguna sebuah objek tidak dapat mengganti keadaan dalam dari sebuah objek dengan cara yang tidak layak. Hanya metode dalam objek tersebut yang diberi ijin untuk mengakses keadaannya. Setiap objek mengakses interface yang menyebutkan bagaimana objek lainnya dapat berinteraksi dengannya. Objek lainnya tidak akan mengetahui dan tergantung kepada representasi dalam objek tersebut.
- Inheritance
          Merupakan konsep mewariskan attribute dan method yang dimiliki oleh sebuah class kepada class turunannya. Dengan konsep ini class yang dibuat cukup mendefinisikan attribute dan method yang spesifik didalamnya, sedangkan attribute dan method yang lebih umum akan didapatkan dari class yang menjadi induknya.
          Mengatur polimorfisme dan enkapsulasi dengan mengijinkan objek didefinisikan dan diciptakan dengan jenis khusus dari objek yang sudah ada.Objek-objek ini dapat membagi (dan memperluas) perilaku mereka tanpa haru mengimplementasi ulang perilaku tersebut (bahasa berbasis-objek tidak selalu memiliki inheritas.)
- Polymorphism
          Merupakan konsep yang memungkinkan digunakannya suatu interface yang sama untuk memerintah suatu object agar melakukan suatu tindakan yang mungkin secara prinsip sama tetapi secara proses berbeda.
Model data berorientasi objek disebut dapat memberi fleksibilitas yang lebih, kemudahan mengubah program dan digunakan luas dalam teknik piranti lunak skala besar. Lebih jauh lagi, pendukung OOP mengklaim bahwa OOP lebih mudah dipelajari bagi pemula dibanding dengan pendekatan sebelumnya selain itu pendekatan OOP lebih mudah dikembangkan dan dirawat.
          Polimorfisme melalui pengiriman pesan. Tidak bergantung kepada pemanggilan subrutin, bahasa orientasi objek dapat mengirim pesan, dengan metode tertentu yang berhubungan dengan sebuah pengiriman pesan tergantung kepada objek tertentu di mana pesan tersebut dikirim.
          Contohnya, bila sebuah burung menerima pesan “gerak cepat”, dia akan menggerakan sayapnya dan terbang. Bila seekor singa menerima pesan yang sama, dia akan menggerakkan kakinya dan berlari. Keduanya menjawab sebuah pesan yang sama, namun yang sesuai dengan kemampuan hewan tersebut. Ini disebut polimorfisme karena sebuah variabel tungal dalam program dapat memegang berbagai jenis objek yang berbeda selagi program berjalan, dan teks program yang sama dapat memanggil beberapa metode yang berbeda di saat yang berbeda dalam pemanggilan yang sama. Hal ini berlawanan dengan bahasa fungsional yang mencapai polimorfisme melalui penggunaan fungsi kelas-pertama.

Kamis, 20 Desember 2012

Persistence - Record Management System

Edit Posted by with No comments
Persistence merupakan sebuah API dari MIDP yang dapat menyimpan data dari aplikasi didalam local device. Data akan di simpan pada non-volatile memori di dalam device.
Record Management System adalah sebuah database system yang berorientasi record bagi MIDP device.
Record Store adalah sebuah koleksi dai record-record dimana Record Id di dalam Record Store selalu uniqe. Pada saat sebuah record dihapus, record id-nya tidak bisa digunakan kembali.

Yuk kita lihat contoh dari persistence :












Bagaimana source code nya? yuk lihat dan coba bareng-bareng :)

package ListMenu; 

import javax.microedition.lcdui.*;
import javax.microedition.rms.*;
import javax.microedition.midlet.*;

import java.io.*;

public class ListMenu extends MIDlet implements CommandListener{
    private Display display;
    private List list;
    private Command cmdKeluar;
    private Command cmdKembali, cmdHasil, cmdbalik, cmdSimpan;
    private TextField soal1, soal2, soal3, soal4, soal5, id;
    private Form form;
    int nilai1, nilai2, nilai3, nilai4, nilai5;
    int Nakhir;
    private RecordStore rs;
    private RecordEnumeration re;
    private Alert alert;

    public ListMenu() {
        form = new Form("Menu Utama");
        cmdKeluar = new Command("Keluar", Command.EXIT, 0);
        cmdKembali = new Command("Kembali", Command.BACK, 1);
        cmdbalik = new Command("Kembali", Command.BACK, 1);
        cmdHasil = new Command("Hasil", Command.OK, 2);
        cmdSimpan = new Command("Simpan", Command.OK, 2);
        alert = new Alert(null);
        alert.setTimeout(Alert.FOREVER);

        list = new List(null, Choice.IMPLICIT);

        rs = null;
        // membuat atau membuka record store
        try
        {
            rs = RecordStore.openRecordStore("db_KodeBar", true);
        }
        catch (RecordStoreException RSE) //check kalau error = exception
        {
            alert.setString("Record store tidak dapat dibuka. " +"Aplikasi akan dihetikan");
            alert.setType(AlertType.ERROR);
            display.setCurrent(alert, null);
            System.exit(1);
        }
    }

    public void startApp() {
        display = Display.getDisplay(this);
        display.setCurrent(form);
        menuList();
    }

    public void pauseApp() {
    }

    public void destroyApp(boolean unconditional) {
        notifyDestroyed();
    }

    public void menuList(){
        list = new List("Menu Utama", List.IMPLICIT);
        list.append("Latihan Berhitung", null);
        list.append("Skor", null);
        list.append("Keluar", null);
        list.setCommandListener(this);
        display.setCurrent(list);
    }

    public void UJIAN(){
        form = new Form("Latihan Berhitung");
        soal1 = new TextField("1. 2+3 = ?", "", 100, TextField.DECIMAL);
        soal2 = new TextField("2. 8/2 = ?", "", 100, TextField.DECIMAL);
        soal3 = new TextField("3. 3*4 = ?", "", 100, TextField.DECIMAL);
        soal4 = new TextField("4. 7-3 = ?", "", 100, TextField.DECIMAL);
        soal5 = new TextField("5. (7-3)*2 = ?", "", 100, TextField.DECIMAL);
        form.append(soal1);
        form.append(soal2);
        form.append(soal3);
        form.append(soal4);
        form.append(soal5);
        form.setCommandListener(this);
        form.addCommand(cmdKembali);
        form.addCommand(cmdHasil);
        display.setCurrent(form);
    }
  

    public void nama(){
        form = new Form("SIMPAN HASIL");
        id = new TextField("Masukkan nama anda : ","", 100, TextField.ANY);
        form.append(id);
        form.setCommandListener(this);
        form.addCommand(cmdSimpan);
        form.addCommand(cmdbalik);
        display.setCurrent(form);
    }

  
    public void commandAction(Command c, Displayable d) {
       if (c == cmdKeluar){
           destroyApp(true);
       }
       if(c.getLabel()=="Simpan"){
           alert.setType(AlertType.INFO);
           if (!id.equals(null)) //cek jika var ada isi nya
           {
               tambahRecord(id.getString());
               alert.setString("Data lengkap !, Data sudah disimpan di RMS, untuk melihat gunakan pilihan menu'nilai tertinggi' pada menu utama");
               display.setCurrent(alert);
               display.setCurrent(alert, list);        
               }
           else //jika data kosong
           {
               alert.setString("Data Kurang !, isikan nama anda terlebih dahulu.");
               display.setCurrent(alert, form); 
           }
       }
       if(c.getLabel()=="Nilai Tertinggi"){
       lihatRecord();
       }
       else if (c == cmdHasil){
               nama();
       }
       else if (c == cmdbalik){
           UJIAN();
       }else if (c == cmdKembali){
          menuList();
       }else{
           List menu = (List) display.getCurrent();
           switch (menu.getSelectedIndex()){
               case 0:
                   UJIAN();
                   break;
               case 1:
                   lihatRecord();
                   break;
               case 2:
                   destroyApp(true);
           }
       }
    }

public void tambahRecord(String id)
{
    int a = Integer.parseInt(soal1.getString());
    int b = Integer.parseInt(soal2.getString());
    int c = Integer.parseInt(soal3.getString());
    int d = Integer.parseInt(soal4.getString());
    int e = Integer.parseInt(soal5.getString());
    if(a == 5){
        a=2;
    }
    else if(a != 5){
        a=0;
    }
    if(b==4){
        b=2;
    }
    else if(b != 4){
        b=0;
    }
    if(c==12){
        c=2;
    }
    else if(c != 12){
        c=0;
    }
    if(d==5){
        d=2;
    }
    else if(d !=2 ){
        d=0;
    }
    if(e==10){
        e=2;
    }
    else if(e != 10){
        e=0;
    }
  
  
    Nakhir = a + b + c + d + e;
  byte[] temp = null;
  try
  {
      //kosntruktor baos dan dos
      ByteArrayOutputStream baos = new ByteArrayOutputStream();
      DataOutputStream dos = new DataOutputStream(baos);
      //cari fungsi ini ByteArrayOutputStream dan DataOutputStream di internet

      dos.writeUTF(id);// tulis var pada dos
      dos.writeInt(Nakhir);
      temp = baos.toByteArray();
  }
  catch (IOException ioe)
  {
      ioe.printStackTrace();
  }
  try
  {
      rs.addRecord(temp, 0, temp.length); //masukan data pada RecordStore
  } catch (RecordStoreNotOpenException rsnoe) {
    rsnoe.printStackTrace();
  } catch (RecordStoreException rse) {
    rse.printStackTrace();
  }
}
public void lihatRecord() {
    byte[] temp = null;
    list.setTitle("Nilai Tertinggi");
    list.deleteAll();
  
    try
    {
        re = rs.enumerateRecords(null, null, false); //enumerasi record
        while (re.hasNextElement()) //jk elemen rs lbh dr satu
        {
            int i = re.nextRecordId();
            temp = rs.getRecord(i);
            ByteArrayInputStream bais = new ByteArrayInputStream(temp);
            DataInputStream dis = new DataInputStream(bais);

            try
            {
                String id = dis.readUTF();
                //Integer Nakhir = dis.readUTF();
                list.append(id + " = "+ Nakhir +" \n",null);// tampilkan
            }
            catch (IOException ioe) {ioe.printStackTrace();}
      }
      list.addCommand(cmdKembali);
      list.setCommandListener(this);
      display.setCurrent(list);
    }
    catch (InvalidRecordIDException invID) {invID.printStackTrace();}
    catch (RecordStoreNotOpenException rsnoe) {rsnoe.printStackTrace();}
    catch (RecordStoreException rse) {rse.printStackTrace();}

  }
}



Kamis, 29 November 2012

GameCanvas , Thread dan Sprite

Edit Posted by with 1 comment
Pengertian GameCanvas
GameCanvas adalah sebuah class yang terdapat pada package javax.microedition.lcdui.game.*  yang merupakan turunan dari Canvas. GameCanvas memiliki fitur2 tambahan yang lebih fokus ke game. seperti : bisa menangkap keystates (tombol yang dipencet), dan off-screen buffering.
GC adalah sebuah kanvas yang akan kita gambar, baik string, images, sprite, atau shape dasar (kotak, lingkaran, dll).
karena GC digambar perframe (tergantung FPS), setiap proses penggambaran, dilakukan di kanvas yang sama. Karena itu, misalnya kita menggambar kotak di posisi 10,10 dan bergerak ke posisi 100,100 dengan pertambahan x dan y tiap framenya.
ClassGameCanvas menyediakan fungsi-fungsi penting dalam menangani interface game. Merupakan turunan dari Class Canvas (commands, input events, etc.), dengan penambahan fitur antara lain kemampuan game yang spesifik seperti: off-screen graphic buffer dan kemampuan untuk mengetahui status key-key input dari key-key pada HP. Kelas GameCanvas pada MIDP 2.0 telah mengusung fitur-fitur penting yang mengatasi masalah yang ada pada MIDP 1.0.
 Perbedaan antara Canvas dan GameCanvas :
Untuk menggunakan Canvas, buat subclass-nya, definisikan method paint().
Di dalam method paint(), gunakan Graphics untuk merender gambar pda screen
Ketika ingin mengubah sesuatu dan mengupdate-nya pada screen, maka harus memanggil method repaint(), kemudian system memanggil paint() sekali lagi untuk penggambaran.

Pengertian Thread
Thread memungkinkan sebuah aplikasi java untuk melakukan banyak aktivitas/operasi secara simultan (serentak)
Thread adalah unit fundamental dari eksekusi program. Setiap aplikasi minimal memiliki sebuah thread untuk menjalankan kode.
Aplikasi yang memiliki dua thread atau lebih, biasa disebut dengan multithread application

Istilah dalam thread :
Running, saat thread sedang menjalankan kode (live thread).
Ready, saat thread siap untuk mengeksekusi kode (live thread).
Suspended, saat thread sedang menunggu external event (live thread).
Terminated, saat  thread selesai mengeksekusi kode (dead thread)/

Menggunakan Class Counter

Thread - Lab Activity




Pengertian Sprite
Sprite adalah istilah yang sering muncul untuk mengolahan grafis animasi pada sebuah game. Sebagian besar objek pada sebuah game dikategorikan sebagai grafis khusus yang disebut sprites. Sprite dapat berupa karakter utama.
Frame dapat dibuat secara terurut ataupun tidak terurut, namun pada umumnya sprite ditampilkan secara terurut untuk memudahkan pengkodean.
Sprite-Lab Activity


 

Kamis, 01 November 2012

Record Management System - Mobile Computing

Edit Posted by with No comments
Record Management System adalah sebuah database system yang berorietasi record bagi MIDP device dengan menggunakan DataInputSystem, DataOutputStream, ByteArrayInputStream dan ByteArrayOutputStream untuk mendapatkan dan menyimpan sebagai tipe data dari record stores.
MIDP spesification membutuhkan minimal 8kB yang telah dipesan sebagai persistence storage. Sebuah MIDlet yang menggunakan RMS akan menspesifikasikan beberapa byte yang dibutuhkan, ukuran ini ditentukan dalam JAR manifest dan application descriptor (JAD) menggunakan MIDlet-Data-Size.
Contoh penggunaan Record Management System dengan menggunakan software Netbeans:








Source Code nya adalah :
import javax.microedition.lcdui.*;
import javax.microedition.io.*;
import javax.microedition.rms.*;
import javax.microedition.midlet.*;

import java.io.*;

public class RMSTugas extends MIDlet implements CommandListener{
    private Display display;
    private List list;
    private Command cmdKeluar;
    private Command cmdKembali, cmdHasil, cmdbalik, cmdSimpan;
    private TextField soal1, soal2, soal3, soal4, soal5, id;
    private Form form;
    int nilai1, nilai2, nilai3, nilai4, nilai5;
    int Nakhir;
    private RecordStore rs;
    private RecordEnumeration re;
    private Alert alert;

    public RMSTugas() {
        form = new Form("MENU UTAMA");
        cmdKeluar = new Command("Keluar", Command.EXIT, 0);
        cmdKembali = new Command("Kembali", Command.BACK, 1);
        cmdbalik = new Command("Kembali", Command.BACK, 1);
        cmdHasil = new Command("Hasil", Command.OK, 2);
        cmdSimpan = new Command("Simpan", Command.OK, 2);
        alert = new Alert(null);
        alert.setTimeout(Alert.FOREVER);

        list = new List(null, Choice.IMPLICIT);

        rs = null;
        // membuat atau membuka record store
        try
        {
            rs = RecordStore.openRecordStore("db_KodeBar", true);
        }
        catch (RecordStoreException rse) //check kalau error = exception
        {
            alert.setString("Record store tidak dapat dibuka. " +"Aplikasi akan dihetikan");
            alert.setType(AlertType.ERROR);
            display.setCurrent(alert, null);
            System.exit(1);
        }
    }

    public void startApp() {
        display = Display.getDisplay(this);
        display.setCurrent(form);
        menuList();
    }

    public void pauseApp() {
    }

    public void destroyApp(boolean unconditional) {
        notifyDestroyed();
    }

    public void menuList(){
        list = new List("MENU UTAMA", List.IMPLICIT);
        list.append("UJIAN", null);
        list.append("Nilai Tertinggi", null);
        list.append("Keluar", null);
        list.setCommandListener(this);
        display.setCurrent(list);
    }

    public void UJIAN(){
        form = new Form("UJIAN");
        soal1 = new TextField("1. 2+3 = ?", "", 100, TextField.DECIMAL);
        soal2 = new TextField("2. 8/2 = ?", "", 100, TextField.DECIMAL);
        soal3 = new TextField("3. 3*4 = ?", "", 100, TextField.DECIMAL);
        soal4 = new TextField("4. 7-3 = ?", "", 100, TextField.DECIMAL);
        soal5 = new TextField("5. (7-3)*2 = ?", "", 100, TextField.DECIMAL);
        form.append(soal1);
        form.append(soal2);
        form.append(soal3);
        form.append(soal4);
        form.append(soal5);
        form.setCommandListener(this);
        form.addCommand(cmdKembali);
        form.addCommand(cmdHasil);
        display.setCurrent(form);
    }
 

    public void nama(){
        form = new Form("SIMPAN HASIL");
        id = new TextField("Masukkan nama anda : ","", 100, TextField.ANY);
        form.append(id);
        form.setCommandListener(this);
        form.addCommand(cmdSimpan);
        form.addCommand(cmdbalik);
        display.setCurrent(form);
    }

 
    public void commandAction(Command c, Displayable d) {
       if (c == cmdKeluar){
           destroyApp(true);
       }
       if(c.getLabel()=="Simpan"){
           alert.setType(AlertType.INFO);
           if (!id.equals(null)) //cek jika var ada isi nya
           {
               tambahRecord(id.getString());
               alert.setString("Data lengkap !, Data sudah disimpan di RMS, untuk melihat gunakan pilihan menu'nilai tertinggi' pada menu utama");
               display.setCurrent(alert);
               display.setCurrent(alert, list);       
               }
           else //jika data kosong
           {
               alert.setString("Data Kurang !, isikan nama anda terlebih dahulu.");
               display.setCurrent(alert, form);
           }
       }
       if(c.getLabel()=="Nilai Tertinggi"){
       lihatRecord();
       }
       else if (c == cmdHasil){
               nama();
       }
       else if (c == cmdbalik){
           UJIAN();
       }else if (c == cmdKembali){
          menuList();
       }else{
           List menu = (List) display.getCurrent();
           switch (menu.getSelectedIndex()){
               case 0:
                   UJIAN();
                   break;
               case 1:
                   lihatRecord();
                   break;
               case 2:
                   destroyApp(true);
           }
       }
    }

public void tambahRecord(String id)
{
    int a = Integer.parseInt(soal1.getString());
    int b = Integer.parseInt(soal2.getString());
    int c = Integer.parseInt(soal3.getString());
    int d = Integer.parseInt(soal4.getString());
    int e = Integer.parseInt(soal5.getString());
    if(a == 5){
        a=2;
    }
    else if(a != 5){
        a=0;
    }
    if(b==4){
        b=2;
    }
    else if(b != 4){
        b=0;
    }
    if(c==12){
        c=2;
    }
    else if(c != 12){
        c=0;
    }
    if(d==5){
        d=2;
    }
    else if(d !=2 ){
        d=0;
    }
    if(e==10){
        e=2;
    }
    else if(e != 10){
        e=0;
    }
 
 
    Nakhir = a + b + c + d + e;
  byte[] temp = null;
  try
  {
      //kosntruktor baos dan dos
      ByteArrayOutputStream baos = new ByteArrayOutputStream();
      DataOutputStream dos = new DataOutputStream(baos);
      //cari fungsi ini ByteArrayOutputStream dan DataOutputStream di internet

      dos.writeUTF(id);// tulis var pada dos
      dos.writeInt(Nakhir);
      temp = baos.toByteArray();
  }
  catch (IOException ioe)
  {
      ioe.printStackTrace();
  }
  try
  {
      rs.addRecord(temp, 0, temp.length); //masukan data pada RecordStore
  } catch (RecordStoreNotOpenException rsnoe) {
    rsnoe.printStackTrace();
  } catch (RecordStoreException rse) {
    rse.printStackTrace();
  }
}
public void lihatRecord() {
    byte[] temp = null;
    list.setTitle("Nilai Tertinggi");
    list.deleteAll();
 
    try
    {
        re = rs.enumerateRecords(null, null, false); //enumerasi record
        while (re.hasNextElement()) //jk elemen rs lbh dr satu
        {
            int i = re.nextRecordId();
            temp = rs.getRecord(i);
            ByteArrayInputStream bais = new ByteArrayInputStream(temp);
            DataInputStream dis = new DataInputStream(bais);

            try
            {
                String id = dis.readUTF();
                //Integer Nakhir = dis.readUTF();
                list.append(id + " = "+ Nakhir +" \n",null);// tampilkan
            }
            catch (IOException ioe) {ioe.printStackTrace();}
      }
      list.addCommand(cmdKembali);
      list.setCommandListener(this);
      display.setCurrent(list);
    }
    catch (InvalidRecordIDException invID) {invID.printStackTrace();}
    catch (RecordStoreNotOpenException rsnoe) {rsnoe.printStackTrace();}
    catch (RecordStoreException rse) {rse.printStackTrace();}

  }
}

Rabu, 03 Oktober 2012

Lab Activity 3 - High Level User Interface

Edit Posted by with No comments
High level user interface berguna untuk membangun aplikasi sederhana , berupa aplikasi text based. Selain itu High level user interface ini dipakai saat membuat aplikasi yang digunakan banyak device (portability).
Aplikasi yang menggunakan High level user interface ini memiliki kesamaan tampilan walaupun pada device yang berbeda.
Unsur-unsur pada High level user interface antara lain: Display , Displayable , Title , Screen , Item , Alert , List , Textbox , Form , ChoiceGroup , Date Field , String Item , Image Item dan  Text Field

Pada lab activity akan memuat aplikasi yang menggabungkan beberapa unsur dari high level user interface.
langkah-langkahnya yaitu :

1. Jalankan software NetBeans IDE 7.0.1
2. Buat project baru dengan cara File-> New Project , pilih kategori  Java ME lalu pada kotak sebelah kanan pilih Projects Mobile Application. kemudian klik Next >
3. Selanjutnya kita tentukan nama project dan lokasi penyimpanan. kemudian klik Next >
4. Pilih platform. kita juga dapat memilih gambar emulator sesuai dengan pilihan kita. kemudian klik Next >
5. Klik Finish
6. Selanjutnya buat java class dengan cara klik kanan pada project kemudian pilih new -> Java Class, lalu ketikkan nama file-nya.
7. Kita mulai mengetik program di lembar kerja, ketikkan sesuai dengan source code di bawah ini :




 8. Setelah selesai kita jalankan programnya dengan cara klik kanan pada project dan pilih run akan muncul

 9. Isikan Form secara lengkap


10. Jika terdapat form yang kosong , akan ada peringatan

 11. Jika sudah semuanya terisi klik save, kemudian akan muncul :


 semoga bermanfaat



Selasa, 25 September 2012

Lab Activity 2 : Membuat MIDlet sederhana menggunakan NetBeans Mobility Pack

Edit Posted by with No comments
Sebuah aplikasi dari MIDP disebut sebagai MIDlet. Application Management Software (AMS) dari device ini akan bergerak mengikuti method create, start, pause, dan destroy dalam MIDlet.
MIDlet adalah bagian dari paket javax.microedition.midlet. Sebuah MIDlet harus menjadi turunan dari class MIDlet. Ia dapat meminta parameter-parameter yang dibutuhkan dari AMS seperti yang telah didefinisikan pada aplication descriptor (JAD)
Langkah - Langkah Membuat MIDlet sederhana :
NetBeans  dan NetBeans Mobility Pack harus sudah terinstall di komputer Anda.

1. Buka Netbeans
2. Setelah Netbeans Terbuka, buat new Project
    File - New Project , pilih Java ME
    

3. Isi judul project, misal : Hello World
    Tentukan direktori penyimpanan project, lalu klik next untuk konfigurasi lanjutan atau finish

    
4. Klik pada Source di atas editor
    Lalu ketikan code seperti di bawah ini :



 
Setelah selesai dan tidak ditemui error, jalankan program dengan mengklik ikon Run
Maka akan ada tampilan emulator sebagai berikut
 
 
Semoga bermanfaat

Selasa, 18 September 2012

Lab Activity 1 (Pemrogaman Berbasis Objek Review)

Edit Posted by with No comments
Lab Activity ini kembali membahas tentang salah satu program berbasis objek, projek nya berupa class 'Bank', class 'Nasabah' dan class 'Budi'.
dalam program ini menunjukkan salah datu contoh program yang menggunakan konsep OOP, langkah-langkah membuat project nya dapat di lihat di bawah ini :
  • Membuat Java Project 




  •  Membuat Package

  • Membuat Class

  • Tampilan Eclipse

  • Mengisi bank.java


  •  Mengisi nasabah.java

  • Membuat Class budi sebagai turunan dari kelas nasabah



  • hasil Run 1 :


Percobaan 2
  • Selanjutnya, kita akan mencoba melakukan sedikit modifikasi class Bank dengan melakukan overloading constructornya
  • Melakukan modifikasi juga pada class Nasabah menjadi seperti ini

 

  • dan melakukan modifikasi pula pada class Budi
  • Hasil Run :

Percobaan 3

  • Modifikasi selanjutnya yaitu menggunakan constructor lain untuk membuat objek pada class Bank yang ada pada class Nasabah
  • Hasil Run

Semoga Bermanfaat