Komputasi Berbasis Object (Object-Oriented Computing)

Document Sample
Komputasi Berbasis Object (Object-Oriented Computing) Powered By Docstoc
					               Kelompok 2 :
 Eka Satryawati              (14000277)
 Mohamad Sahlani             (14000341)
 Embun Fajar Wati            (14000345)
 Andrie Abrianto             (14000348)
 Dwi Wiratmoko               (14000349)
Pembahasan
 Konsep OOP
 Konsep UML
 Implementasi OOP at Java
Materi :
• Paradigma berbasis obyek (object-
  oriented/OO)
• Mengapa OO ?
• Pemrograman OO
• Konsep-konsep dalam OOP
     Kelas dan obyek
     Mekanisme OO: encapsulation, inheritance,
     dan polymorphism
OO Sebagai Paradigma
Pemrograman
• Paradigma pemrograman: pandangan
  mendasar terkait tentang formulasi sebuah
  solusi dalam bahasa pemrograman
• Paradigma pemrograman menjelaskan
  tentang perspektif/pandangan
  pemrogram tentang program yang akan
  dibuatnya
• Pemrograman berbasis obyek (OOP)
  mendasarkan pada konsep object dan
  interaksinya
Konsep Object
•   Dalam paradigma berbasis object, “object” adalah
    representasi sebuah entitas yang memiliki makna
    tertentu yang menjadi perhatian si pemandang 
    object memiliki abstraksi tertentu bagi si
    pemandang
     Contoh: dalam sistem akademik di kampus, beberapa
      kandidat object adalah: mahasiswa, dosen, kelas, mata
      kuliah, kurikulum, praktikum, laboratorium, perpustakaan,
      KRS, KHS, …
•   Object dapat menerima pesan (message),
    mengolah data, dan mengirimkan pesan ke object
    lain  membentuk interaksi antar object
•   Object bersifat independen: tiap object dapat
    dipandang sebagai sebuah entitas mandiri yang
    memiliki peran atau tanggung jawab tertentu
Object dan Interaksinya

   pembeli                   kasir                     pelayan
             pesan & bayar
                                     siapkan burger

                                     siapkan kentang

                                     siapkan minum

                                         sajikan




             Skenario: restoran cepat-saji
Object dan Representasi Lingkup
Permasalahan
   Object dan interaksinya dapat digunakan untuk
    merepresentasikan lingkup permasalahan
     Object merepresentasikan entitas-entitas yang dianggap
      penting dalam skenario permasalahan
     Interaksi antar object menggambarkan bentuk-bentuk
      relasi antar entitas di dalam skenario permasalahan
 OO sebagai tool untuk memodelkan sistem di dunia
  nyata
   setiap sistem selalu dapat digambarkan melalui
  object-object penyusunnya dan bagaimana object-
  object tersebut saling berinteraksi
 Dalam software engineering: OO analysis  OO
  design  OO programming
Kelebihan OO Sebagai Model
Representasi
 Natural: mengikuti cara berpikir
  manusia (manusia memandang
  dunianya sebagai kumpulan object yang
  berinteraksi)
 Abstraksi: menjelaskan makna sebuah
  entitas secara cepat dan mudah
 Enkapsulasi: dapat menyembunyikan
  detil yang tidak perlu
 Modular: object adalah entitas yang
  independen
Pemrograman dan Bahasa
Pemrograman Berbasis OO
 Merealisasikan entitas-entitas object dalam
  desain software (OOD) dalam bahasa
  pemrograman
 Bahasa pemrograman berbasis object
  menyediakan mekanisme untuk bekerja
  dengan:
       kelas dan object
       methods
       inheritance
       polymorphism
       reusability
Pemrograman dan Bahasa
Pemrograman Berbasis OO
   Ragam bahasa pemrograman berbasis OO
     Bahasa OO “murni”  semua diperlakukan
      secara konsisten mengikuti teori OO dan
      “memaksa” pemrogram mengikutinya. Contoh:
      Smalltalk, Eiffel, Ruby
     Bahasa yang dirancang untuk OOP, tetapi
      dengan beberapa elemen prosedural. Contoh:
      Java (program utama/entry point)
     Bahasa yang aslinya prosedural, tetapi
      kemudian ditambah fitur-fitur OO. Contoh: C++,
      Perl, PHP
Konsep-Konsep dalam OOP:
Kelas (Class)
   Mendefinisikan karakteristik abstrak dari
    sebuah entitas
     Property (statis) – fields, atribut
     Behaviour (dinamika) – fitur, methods
     Contoh: abstraksi “sepeda” memiliki property
      “punya roda”, “punya rantai”, dsb., dan
      behaviour “bisa berjalan”, “bisa berbelok”, dsb.
   Sebagai abstraksi dari sebuah entitas,
    definisi kelas harus mencerminkan
    karakteristik sebenarnya dari entitas tsb.
Kelas
   Kelas merupakan “cetakan” (template) untuk
    instance (wujud nyata) entitas-entitas yang
    direpresentasikannya
     Sebuah kelas dapat melahirkan lebih dari satu
     instance




         satu template

                                    banyak instance
                                     (wujud nyata)
Object
    Sebuah instance (perwujudan nyata) dari suatu kelas tertentu




public class SegiEmpat {
  int panjang;
  int lebar;
  string warna;
                                                 SegiEmpat sPink = new SegiEmpat(“pink”, 20,10);
    public SegiEmpat(string w, int p, int l) {
      panjang = p; lebar = l; warna = w;         SegiEmpat sPutih = new SegiEmpat(“putih”, 15,10);
    }
                                                 SegiEmpat sOrange = new SegiEmpat(“orange”, 30,15);
    public setWarna (string w) {
      warna = w;
    }
}
Definisi Kelas dan Object
public class SegiEmpat {
  int panjang;                                   field, menunjukkan atribut/property
  int lebar;
  string warna;
                                                    constructor, untuk menciptakan
    public SegiEmpat(string w, int p, int l) {      object (instance) baru dengan
      panjang = p; lebar = l; warna = w;            property tertentu
    }

    public setWarna (string w) {                   methods atau member functions,
      warna = w;
                                                   mendeskripsikan behaviour atau
    }
}                                                  aktivitas yang bisa dijalankan


SegiEmpat sPink = new SegiEmpat(“pink”, 20,10);



                              memanggil constructor untuk membentuk
                              object baru
Enkapsulasi
   Enkapsulasi: lokalisasi fitur-fitur sebuah object (fields dan
    methods) dalam definisi object tersebut
   Enkapsulasi menyembunyikan property dan behaviour
    object dari pihak luar (object yang lain)  object lain
    melihat object ini sebagai “black box” saja
   Enkapsulasi memisahkan antara bagian publik (yang
    bisa dilihat oleh pihak luar (object lain) dan bagian privat
    (internal object itu sendiri) dengan tegas  fitur ini
    memberi keleluasaan/independensi untuk bekerja
    dengan aspek internal tanpa harus bergantung pada
    aspek publik/eksternal  berguna untuk menangani
    berbagai persoalan interoperabilitas
Enkapsulasi
public class SegiEmpat {                            Pihak luar (object lain) melihat sPink
  int panjang;
  int lebar;
                                                    sebagai sebuah “kotak hitam” yang
  string warna;                                     tidak terlihat isinya, kecuali fields dan
                                                    methods yang memang dideklarasikan
    public SegiEmpat(string w, int p, int l) {      secara publik
      panjang = p; lebar = l; warna = w;
    }

    public setWarna (string w) {
      warna = w;
    }
}

                                                                         setWarna(string w)
SegiEmpat sPink = new SegiEmpat(“pink”, 20,10);            sPink

                                                  Object lain tidak bisa
                                                  melihat apa yang dilakukan
                                                  sPink secara internal
Inheritance (Pewarisan Sifat)
   Dalam dunia OO, beberapa object memiliki sifat/ciri yang
    mirip dengan yang lain  sebuah kelas object dapat
    didefinisikan dari kelas yang lain
     Kemiripan ini membentuk hubungan sifat yang bersifat hirarkis
     “pesawat penyergap adalah sebuah pesawat terbang yang
      dilengkapi dengan persenjataan dan dapat terbang melebihi
      kecepatan suara”
      ○ “pesawat penyergap” memiliki ciri yang sama dengan “pesawat
        terbang”  “pesawat penyergap” mewarisi sifat “pesawat terbang”
      ○ “pesawat penyergap” memiliki ciri yang lebih khusus dibandingkan
        “pesawat terbang”  “pesawat penyergap” adalah subclass dari
        “pesawat terbang”
     Dalam OOP, hubungan inheritance (pewarisan sifat) ini
      diimplementasikan melalui definisi kelas: sebuah kelas dapat
      didefinisikan dari kelas yang lain
Inheritance
                             “bentuk”




               poligon                   ellips




                   persegi
                   panjang
                                        lingkaran
    segitiga


                    bujur
                   sangkar
Inheritance
   Dalam pohon hirarki inheritance, sebuah subclass
    mewujudkan abstraksi yang lebih spesifik dari
    superclassnya: subclass = superclass + (fitur-fitur baru)
     Subclass dapat menambahkan fields dan methods baru
     Subclass dapat mengambil alih (override) method milik superclass
      dan mengubah implementasi method tersebut
   Manfaat inheritance:
     Pemanfaatan kembali (reuse) kelas
     Menyediakan model yang bersifat generik (abstract class);
      implementasi spesifiknya bisa dilakukan kemudian (mungkin oleh
      pemrogram yang berbeda)
Polymorphism
 Poly: banyak; morphism: bentuk  sebuah fitur
  (generik) bisa diimplementasikan dengan
  berbagai cara
 Polymorphism diimplementasikan dengan
  mekanisme inheritance dan overriding
                         hewan
                       “bersuara”




          anjing         kucing       kuda
      “menggonggong”   “mengeong”   “meringkik”
Sejarah
Unified Modeling Language (UML)
 Tahun 1994, Grady Boch dan James
  Rumbaugh bergabung untuk
  menggunakan metode berorientasi objek.
 Ivan Jacobson bergabung pada tahun
  1995, dan mereka bertiga fokus membuat
  suatu bahasa pemodelan objek standar
  sebagai ganti dari pendekatan atau
  metode objek standar. Berdasarkan kerja
  mereka dan hasil kerja lainnya pada
  industri, Unified Modeling Language
  (UML) versi 1.0 dirilis pada tahun 1997.
   Unified Modeling Language (UML) tidak
    menentukan metode untuk sistem-sistem
    pengembangan, tetapi sudah diterima luas sebagai
    standar untuk pemodelan objek.
   Object Management Gorup/OMG, badan standar
    industri, mengadopsi UML pada bulan November
    1997 dan terus bekerja sama untuk
    meningkatkannya berdasarkan kebutuhan industri.
   Pada saat ini, salah satu industri telah merilis
    sebuah sofware yang mendukung UML yaitu Visual
    Paradigm 6.4 Interprise edition. Berbagai industri
    juga bermunculan dan mendukung penggunaan
    UML dengan berbagai produk, diantaranya Rational
    Rose, SmartDraw, dan lain-lain.
Definisi
Unified Modeling Language (UML)
 Unified Modeling Language (UML) merupakan satu
  kumpulan konvensi pemodelan yang digunakan untuk
  menentukan atau menggambarkan sebuah sistem
  software yang terkait dengan objek (Whitten L. Jeffery et
  al, 2004). Sementara menurut Henderi (2007: 4)
 Unified Modeling Language (UML) adalah sebuah
  bahasa pemodelan yang telah menjadi standar dalam
  industri software untuk visualisasi, merancang, dan
  mendokumentasikan sistem perangkat lunak.
 Bahasa Pemodelan UML lebih cocok untuk pembuatan
  perangkat lunak dalam bahasa pemrograman berorientasi
  objek (C+ , Java, VB.NET), namun demikiantetap dapat
  digunakan pada bahasa pemrograman prosedural (Ziga
  Turck, 2007)
UML dan Implementasinya.
   Unified Modeling Language (UML) biasa digunakan untuk
    1. Menggambarkan batasan sistem dan fungsi-fungsi sistem
       secara umum, dibuat dengan use case dan actor
    2. Menggambarkan kegiatan atau proses bisnis yang
       dilaksanakan secara umum, dibuat dengan interaction
       diagrams
    3. Menggambarkan representasi struktur statik sebuah
       sistem dalam bentuk class diagrams
    4. Membuat model behavior ”yang menggambarkan
       kebiasaan atau sifat sebuah sistem” dengan state
       transition diagrams
    5. Menyatakan arsitektur implementasi fisik menggunakan
       component and development diagrams
    6. Menyampaikan atau memperluas fungsionality dengan
       stereotypes (Ziga Turck, 2007)
UML dan Diagram-diagram
 use case diagram
 class diagram
 statechart diagram
 activity diagram
 sequence diagram
 collaboration diagram
 component diagram
 deployment diagram
Use Case diagram
 Use case diagram menggambarkan
  fungsionalitas yang diharapkan dari
  sebuah sistem. Yangditekankan adalah
  “apa” yang diperbuat sistem, dan bukan
  “bagaimana”.
 Sebuah use case merepresentasikan
  sebuah interaksi antara aktor dengan
  sistem.
Contoh : Use Case Diagram
Class Diagram
   Class adalah sebuah spesifikasi yang jika
    diinstansiasi akan menghasilkan sebuah objek
    dan merupakan inti dari pengembangan dan
    desain berorientasi objek.
   Class menggambarkan keadaan
    (atribut/properti) suatu sistem, sekaligus
    menawarkan layanan untuk memanipulasi
    keadaan tersebut metoda/fungsi).
   Class diagram menggambarkan struktur dan
    deskripsi class, package dan objek beserta
    hubungan satu sama lain seperti containment,
    pewarisan, asosiasi, dan lain-lain.
Class memiliki tiga area pokok :

1. Nama (dan stereotype)
2. Atribut
3. Metoda
                      Nama Kelas

                       Attribute



                           Metoda
Sifat dari Attribut dan Metoda
   Private, tidak dapat dipanggil dari luar
    class yang bersangkutan
   Protected, hanya dapat dipanggil oleh
    class yang bersangkutan dan anak-anak
    yang mewarisinya
   Public, dapat dipanggil oleh siapa saja
   Class dapat merupakan implementasi dari sebuah
    interface, yaitu class abstrak yang hanya memiliki
    metoda.
   Interface tidak dapat langsung iinstansiasikan, tetapi
    harus diimplementasikan dahulu menjadi sebuah class.
   Dengan demikian interface mendukung resolusi metoda
    pada saat run-time.
Hubungan Antar Class
1. Asosiasi, yaitu hubungan statis antar class. Umumnya
    menggambarkan class yang memiliki atribut berupa class lain,
    atau class yang harus mengetahui eksistensi class lain. Panah
    navigability menunjukkan arah query antar class.
2. Agregasi, yaitu hubungan yang menyatakan bagian (“terdiri
    atas..”).
3. Pewarisan, yaitu hubungan hirarkis antar class. Class dapat
    diturunkan dari class lain dan mewarisi semua atribut dan
    metoda class asalnya dan menambahkan fungsionalitas baru,
    sehingga ia disebut anak dari class yang diwarisinya. Kebalikan
    dari pewarisan adalah generalisasi.
4. Hubungan dinamis, yaitu rangkaian pesan (message) yang di-
    passing dari satu class kepada class lain. Hubungan dinamis
    dapat digambarkan dengan menggunakan sequence diagram.
Statechart Diagram

   Statechart diagram menggambarkan transisi
    dan perubahan keadaan (dari satu state ke
    state lainnya) suatu objek pada sistem
    sebagai akibat dari stimuli yang diterima.

   Pada umumnya statechart diagram
    menggambarkan class tertentu (satu class
    dapat memiliki lebih dari satu statechart
    diagram).
Activity Diagram
   Activity diagrams menggambarkan berbagai alir
    aktivitas dalam sistem yang sedang dirancang,
    bagaimana masing-masing alir berawal, decision yang
    mungkin terjadi, dan bagaimana mereka berakhir.
   Activity diagram juga dapat menggambarkan proses
    paralel yang mungkin terjadi pada beberapa eksekusi.
   Activity diagram merupakan state diagram khusus, di
    mana sebagian besar state adalah action dan sebagian
    besar transisi di-trigger oleh selesainya state
    sebelumnya (internal processing).
   Oleh karena itu activity diagram tidak menggambarkan
    behaviour internal sebuah sistem (dan interaksi antar
    subsistem) secara eksak, tetapi lebih menggambarkan
    proses-proses dan jalur-jalur aktivitas dari level atas
    secara umum.
Sequence Diagram
 Sequence diagram menggambarkan interaksi antar
  objek di dalam dan di sekitar sistem (termasuk
  pengguna, display, dan sebagainya) berupa message
  yang digambarkan terhadap waktu.
 Sequence diagram terdiri atar dimensi vertikal
  (waktu) dan dimensi horizontal (objek-objek yang
  terkait).
 Sequence diagram biasa digunakan untuk
  menggambarkan skenario atau rangkaian langkah-
  langkah yang dilakukan sebagai respons dari sebuah
  event untuk menghasilkan output tertentu.
 Diawali dari apa yang men-trigger aktivitas tersebut,
  proses dan perubahan apa saja yang terjadi secara
  internal dan output apa yang dihasilkan.
 Masing-masing objek, termasuk aktor,
  memiliki lifeline vertikal.
 Message digambarkan sebagai garis
  berpanah dari satu objek ke objek
  lainnya.
 Pada fase desain berikutnya, message
  akan dipetakan menjadi operasi/metoda
  dari class.
 Activation bar menunjukkan lamanya
  eksekusi sebuah proses, biasanya
  diawali dengan diterimanya sebuah
  message.
   Untuk objek-objek yang memiliki sifat khusus, standar UML
    mendefinisikan icon khusus untuk objek boundary, controller dan
    persistent entity.
Langkah-Langkah Penggunaan UML
Berikut ini adalah tips pengembangan piranti lunak dengan
   menggunakan UML:
1. Buatlah daftar business process dari level tertinggi untuk
   mendefinisikan aktivitas dan proses yang mungkin muncul.
2. Petakan use case untuk tiap business process untuk
   mendefinisikan dengan tepat fungsionalitas yang harus
   disediakan oleh sistem. Kemudian perhalus use case
   diagram dan lengkapi dengan requirement, constraints dan
   catatan-catatan lain.
3. Buatlah deployment diagram secara kasar untuk
   mendefinisikan arsitektur fisik sistem.
4. Definisikan requirement lain (non-fungsional, security dan
   sebagainya) yang juga harus disediakan oleh sistem.
5. Berdasarkan use case diagram, mulailah membuat activity
   diagram.
6. Definisikan objek-objek level atas (package atau
   domain) dan buatlah sequence dan/atau
   collaboration diagram untuk tiap alir pekerjaan.
   Jika sebuah use case memiliki kemungkinan alir
   normal dan error, buatlah satu diagram untuk
   masing-masing alir.
7. Buarlah rancangan user interface model yang
   menyediakan antarmuka bagi pengguna untuk
   menjalankan skenario use case.
8. Berdasarkan model-model yang sudah ada,
   buatlah class diagram. Setiap package atau
   domain dipecah menjadi hirarki class lengkap
   dengan atribut dan metodanya. Akan lebih baik
   jika untuk setiap class dibuat unit test untuk
   menguji fungsionalitas class dan interaksi dengan
   class lain.
9. Setelah class diagram dibuat, kita dapat melihat
   kemungkinan pengelompokan class menjadi
   komponen-komponen. Karena itu buatlah
   component diagram pada tahap ini. Juga,
   definisikan tes integrasi untuk setiap komponen
   meyakinkan ia berinteraksi dengan baik.
10. Perhalus deployment diagram yang sudah dibuat.
   Detilkan kemampuan danrequirement piranti
   lunak, sistem operasi, jaringan, dan sebagainya.
   Petakan komponen ke dalam node.
11. Mulailah membangun sistem. Ada dua pendekatan
    yang dapat digunakan :
   • Pendekatan use case, dengan meng-assign setiap
     use case kepada tim pengembang tertentu untuk
     mengembangkan unit code yang lengkap dengan
     tes.
   • Pendekatan komponen, yaitu meng-assign setiap
   komponen kepada tim pengembang tertentu.
12. Lakukan uji modul dan uji integrasi serta perbaiki
    model berserta codenya. Model harus selalu sesuai
   dengan code yang aktual.
13. Piranti lunak siap dirilis.
Tool Yang Mendukung UML
Saat ini banyak sekali tool pendesainan yang mendukung
  UML, baik itu tool komersial maupun opensource.
  Beberapa diantaranya adalah:
  • Rational Rose (www.rational.com)
  • Together (www.togethersoft.com)
  • Object Domain (www.objectdomain.com)
  • Jvision (www.object-insight.com)
  • Objecteering (www.objecteering.com)
  • MagicDraw (www.nomagic.com/magicdrawuml)
  • Visual Object Modeller (www.visualobject.com)
 Data seluruh tool yang mendukung UML, lengkap beserta
  harganya (dalam US dolar) bisa anda pelajari di situs
  http://www.objectsbydesign.com/tools/umltools_byCompan
  y.html . Disamping itu, daftar tool UML berikut fungsi dan
  perbangingan kemampuannya juga dapat dilihat di
  http://www.jeckle.de/umltools.htm.
Pengenalan Java
   Java menurut definisi dari Sun Microsystem
    adalah nama untuk sekumpulan teknologi yang
    membuat perangkat lunak dan menjalankan
    perangkat lunak pada komputer standalone
    ataupun pada lingkungan jaringan. Java2 adalah
    generasi kedua dari Java platform. Java berdiri di
    atas sebuah mesin intepreter yang diberi nama
    Java Virtual Machine (JVM).
   JVM inilah yang akan membaca bytecode dalam
    file .class dari suatu program sebagai
    representasi langsung program yang berisi
    bahasa mesin. Oleh karena itu bahasa Java
    disebut sebagai bahasa pemrograman yang
    portable, karena dapat dijalankan pada berbagai
    sistem operasi, asalkan pada sistem operasi
    tersebut terdapat JVM.
Platform Java
   Platform Java terdiri dari sekumpulan library,
    compiler, debugger dan alat lain yang dipaket
    dalam Java Development Kit (JDK).
   Java 2 adalah generasi yang sekarang sedang
    berkembang dari platform Java. Agar sebuah
    program Java dapat dijalankan, maka file dengan
    ekstensi .java harus dikompilasi menjadi file
    bytecode. Untuk menjalankan file byte-code
    tersebut dibutuhkan JRE (Java Runtime
    Environment) yang memungkinkan pemakai
    untuk menjalankan program Java, hanya
    menjalankan tidak membuat kode baru lagi. JRE
    terdiri dari JVM dan library Java yang digunakan.
3 Buah Edisi Java :
 J2EE (Java 2 Enterprise Edition)
 J2SE (Java 2 Second Edition)
 J2ME (Java 2 Micro Edition)
J2EE (JAVA 2 ENTERPRISE EDITION)
   J2EE adalah kelompok dari beberapa API (Application
    Programming Interface) dari Java dan teknologi selain
    Java. J2EE dirancang untuk membuat aplikasi yang
    rumit. J2EE sering dianggap sebagai middle-ware atau
    teknologi yang berjalan di server, namun sebenarnya
    J2EE tidak hanya terbatas untuk itu. Faktanya J2EE
    juga mencakup teknologi yang dapat digunakan di
    semua lapisan dari sebuah sistem informasi.

   Implementasi J2EE menyediakan kelas dasar dan
    API dari Java yang mendukung pengembangan dan
    rutin standard untuk aplikasi client maupun server,
    termasuk aplikasi yang berjalan di web browser.
J2SE (JAVA 2 SECOND EDITION)
   J2SE adalah inti/ dasar dari bahasa
    pemrograman Java. JDK (Java
    Development Kit) adalah salah satu tool
    dari J2SE untuk mengkompilasi dan
    menjalankan program Java. Tool J2SE
    yang salah satunya adalah JDK 1.5 dapat
    diunduh pada http://java.sun.com/j2se/,
    dimana JDK merupakan tool open source
    dari Sun.
J2ME (JAVA 2 MICRO EDITION)
 J2ME adalah lingkungan
  pengembangan yang dirancang untuk
  meletakan perangkat lunak Java pada
  barang elektronik beserta perangkat
  pendukungnya.
 Pada J2ME, jika perangkat lunak
  berfungsi baik pada sebuah perangkat,
  maka belum tentu juga berfungsi baik
  pada perangkat yang lainnya.
 J2ME membawa Java ke dunia informasi,
  komunikasi, dan perangkat komputasi selain
  perangkat komputer desktop yang biasanya
  lebih kecil dibandingkan perangkat komputer
  desktop.
 J2ME biasa digunakan pada telepon selular,
  pager, personal digital assistants (PDA) dan
  sejenisnya.
   J2ME adalah bagian dari J2SE, karena itu tidak
    semua librabry yang ada pada J2SE dapat
    digunakan pada J2ME.
   Tetapi J2ME mempunyai beberapa library khusus
    yang tidak dimiliki J2SE. Arsitektur J2ME dapat
    dilihat seperti pada gambar berikut ini
 Teknologi J2ME juga memiliki beberapa
  keterbatasan, terutama jika diaplikasikan pada
  ponsel.
 J2ME sangat tergantung pada perangkat (device)
  yang digunakan, bisa dari segi merek ponsel dan
  dukungan terhadap teknologi J2ME. Misalnya, jika
  sebuah ponsel tidak memiliki kamera, maka jelas
  J2ME pada ponsel tersebut tidak dapat
  mengakses kamera.
 Keterbatasan lainnya adalah pada ukuran
  aplikasi, karena memori pada ponsel sangat
  terbatas. Sebagian ponsel tidak mengijin-kan
  aplikasi J2ME menulis pada file, karena alasan
  keamanan.
 Configuration merupakan Java Library
  minimum dan kemampuan yang dimiliki oleh
  para pengembang J2ME, maksudnya adalah
  sebuah moblile device dengan kemampuan
  Java akan dioptimalkan agar sesuai.
 Configuration hanyalah mengatur hal-hal
  tentang kesamaan sehingga dapat dijadikan
  ukuran kesesuaian antar device. Misalnya
  sebuah lampu sepeda dapat digunakan oleh
  berjenis-jenis sepeda.

Dalam J2ME telah didefinisikan dua buah
  konfigurasi yaitu :
     CLDC (Connected Limited Device
      Configuration) Untuk perangkat kecil.
     CDC (Connected Device Configuration) Untuk
      perangkat yang lebih besar.
   Profile berbeda dengan configuration, profile
    membahas sesuatu yang spesifik untuk
    sebuah perangkat. Sebagai contoh misalnya,
    sebuah sepeda dengan merek tertentu tentu
    mempunyai ciri spesifik dari sepeda lainnya.

   Dalam J2ME terdapat dua buah profile yaitu
    MIDP (Mobile Information Device Profile) dan
    Foundation Profile. Keterhubungan antara
    configuration dan profile yang ada pada
    J2ME beserta jenis mesin virtualnya dapat
    dilihat pada gambar dibawah ini.
 CLDC (Connected Limited Device Configuration)
  adalah perangkat dasar dari J2ME berupa library
  dan API yang diimplementasikan pada J2ME,
  seperti yang digunakan pada telepon selular,
  pager dan PDA. Perangkat tersebut sangat
  terbatas pada memori, sumber daya dan
  kemampuan memproses.
 Spesifikasi CLDC pada J2ME adalah spesifikasi
  minimal dari package, kelas, dan sebagian fungsi
  JVM yang dikurangi agar dapat diimplemen-
  tasikan dengan keterbatasan sumber daya pada
  alat-alat tersebut. JVM yang digunakan disebut
  KVM (Kilobyte Virtual Machine).
 CDC (Connected Device Configuration)
  merupakan komunitas proses pada Java yang
  memiliki standardisasi.
 CDC terdiri dari virtual machine dan library
  dasar untuk dipergunakan pada profile
  industri.
 Implementasi CDC pada J2ME adalah source
  code yang menyediakan sambungan dengan
  macam-macam platform.
Perbandingan antara CLDC
dengan CDC sebagai berikut :
 MIDP (Mobile Information Device Profile)
  adakal spesifikasi untuk sebuah profil J2ME.
  MIDP memiliki lapisan di atas CLDC, API
  tambahan untuk daur hidup aplikasi,
  antarmuka, jaringan, dan penyimpan-an
  persisten.
 Pada saat ini terdapat MIDP 1.0 dan MIDP 2.0,
  fitur tambahan pada MIDP 2.0 adalah
  terdapat API untuk multimedia, terdapat
  dukungan memainkan tone, tone sequence,
  dan file WAV walaupun tanpa adanya Mobile
  Media API (MMAPI).
 KVM (Kilobyte Virtual Machine) adalah paket
  JVM yang dirancang untuk perangkat yang
  kecil. KVM mendukung sebagian dari fitur-fitur
  JVM, tidak mendukung operasi floating-point
  dan finalisasi objek. KVM diimplementasikan
  dengan menggunakan C, sehingga sangat
  mudah beradaptasi pada tipe platform yang
  berbeda
 CVM (C-Virtual Machine) adalah paket JVM
  yang digunakan pada CDC. CVM mempunyai
  seluruh fitur-fitur dari virtual machine yang
  dirancang untuk perangkat yang memerlukan
  fitur-fitur Java 2 Virtual Machine.
 MIDlet adalah aplikasi yang ditulis untuk
  MIDP. Aplikasi MIDlet adalah bagian dari
  kelas javax.microedition.midlet. MIDlet yang
  didefinisikan pada MIDP. MIDlet berupa
  sebuah kelas abstrak yang merupakan sub
  kelas dari bentuk dasar aplikasi sehingga
  antaramuka antara aplikasi J2ME dan
  aplikasi manajemen pada perangkat dapat
  terbentuk.
 JAD (Java Application Descriptor) digunakan
  untuk mendeskripsikan isi aplikasi untuk
  keperluan pemetaan. File JAD bersisi
  deskripsi file JAR (Java Archive) dan
  pemetaan atribut MIDlet, sedangkan file JAR
  berisi kumpulan kelas dan resource.
   OTA (Over The Air) mengacu pada beberapa teknologi
    jaringan tanpa kabel. Dengan menggunakan OTA,
    provider MIDlet dapat menginstal MIDlet pada web
    server dan menyediakan link untuk mengunduh via
    WAP atau internet microbrowser.
   J2ME WTK (J2ME Wireless Tool Kit) adalah alat yang
    menyediakan lingkungan emulator, dokumentasi,
    beserta contoh-contoh aplikasi Java untuk perangkat
    kecil (small device). J2ME WTK berbasiskan pada
    CLDC dan MIDP.
   J2ME WTK adalah program yang meniru kerja ponsel
    yang mendukung MIDP atau yang biasa disebut
    emulator.
   Oleh karena itu, belum tentu MIDlet yang berjalan di
    emulator juga berjalan pada ponsel yang sebenarnya,
    karena juga tergantung pada kemampuan dan
    kapasitas ponsel yang digunakan.
Untuk memulai Implementasi OOP di Java
apakah yang harus di persiapkan…????
 Pastikan sebuah Platform Java seperti
  Java Development Kit (JDK).
 Dan Edisi-edisi yang sudah di sediakan
  oleh Java itu sendiri, seperti :
     J2EE (Java 2 Enterprise Edition)
     J2SE (Java 2 Second Edition)
     J2ME (Java 2 Micro Edition)
     NetBeans 6.7.1
     Modul UML (Free Download Plugin UML)
    Sudah terinstall dengan baik.
Design UML
Langkah-langkah pembuatan :
 Pilih New Project pada Menu Bar  pilih UML pada Choose Project
   Categories




   Pada Project pilih Java  Platform Model
   Berikan nama pada Project Name  tentukan Project Location
    dimana project ini akan disimpan pada Folder yang sudah kita
    tentukan sebelumnya untuk memudahkan kita dalam pencarian,
    contoh :

   D:\LatJava




   Kemudian, akan
    tampil gambar
    berikut :
   Pilih Class Diagram pada Diagram Type karena memang pada
    latihan ini kita menggunakan sebuah kelas diagram untuk
    mengimplementasikan sedangkan untuk pemahaman UML sendiri
    kita bisa mempelajari pada buku yang membahas UML

   Berikan nama pada Diagram Name contoh :
    BangunRuangClassDiagram  klik Finish untuk menyelesaikan
    pembuatan Class Diagram
   Pilih sebuah Class Interface pada Menu Palette  Drag
    pada Class Interface  Drop pada lingkungan kerja kita 
    atur pada

   properties atau double klik pada objek class name pada
    Class Interface untuk memberikan nama pada Class
    tersebut seperti yang terlihat pada gambar dibawah ini
 Klik kanan pada Class Interface  pilih Create Operation
 Interface ini kita beri nama BangunRuang2Dimensi yang terdiri dari
  objek Segitiga, Segiempat, dan Lingkaran

   Membuat Class Diagram Segitiga : klik pada Menu Palette  pilih
    Class Diagram lakukan Drag & Drop pada objek tersebut
   Beri nama pada objek tersebut Segitiga  klik kanan pada objek  pilih
    Create Attribute (berupa Alas dan Tinggi)  hilangkan kata int unnamed
    ganti dengan double Alas dan Tinggi




   Klik pada objek SegiTiga sehingga tampil menu disamping objek yang kita
    pilih  pilih implementation pada saat meng-klik  tahan dan tarik objek
    tersebut sampai menyentuh sebuah objek Bangun Ruang 2Dimensi
 Selanjutnya buat sebuah objek baru yaitu Prisma
 Pada Class Prisma kita hanya membutuhkan attribute Tinggi
  Prisma (Polymorfisme)

   Untuk Alas dan Tinggi kita bisa ambil attribute tersebut pada
    kelas Segitiga dengan cara : klik pada objek Prisma  akan
    muncul menu di samping kanan objek  pilih Generalization




   Klik button OK
   Drag & Drop Package pada Menu Palette  berikan nama pada Package dengan
    BangunRuangUAS  klik pada objek Package




   Package adalah sebuah kontainer atau kemasan yang dapat digunakan untuk
    mengelompokkan kelas- kelas (dan juga interface-interface) yang terkait (karena
    jenisnya/fungsinya/alasan lain), sehingga memungkinkan beberapa kelas yang
    bernama sama disimpan dalam package yang berbeda.
   Klik pada Containment  lakukan koneksi dari masing-masing objek dengan cara
    mengklik Containment  hubungkan dengan semua objek yang ada
Membangun Aplikasi Java
Console
   Aplikasi yang dijalankan dengan Command Line Interface
     Langkah-langkah pembuatan :
   Klik pada Menu Bar  klik File  pilih New Project  pilih Java pada menu Choose
    Project  pilih Java Application pada Project  tekan tombol Next
   Buatlah nama project sesuai dengan nama UML Bangun Ruang, contoh :
    BangunRuang  klik Finish
   Lakukan proses Generate Code dengan cara klik kanan pada Mouse  arahkan
    pada Bangun Ruang Package pada UML  klik tombol OK
   Ubahlah listing program yang sudah di generate seperti
    pada gambar          operations / method




           PrismaSegitiga.java               Segitiga.java
                                 attribute

   Super : fungsi ini menunjukan bahwa setiap Class yang
    mengacu pada Class yang lain dan dianggap bahwa Class
    tersebut adalah sebagai Class yang menurunkan sifat
   Super.getLuas() : fungsi ini mengambil perhitungan luas dari
    segitiga karena generalization.
   Operations/method adalah instruksi pemrosesan yang
    menjadi bagian dari objek.
   Attribute adalah sesuatu yang dimiliki oleh objek.
 Source Code pada Class Main

        package bangunruang;
        public class Main {
                                                                Constructor
                     public static void main(String[] args) {
Instance / object
                     Segitiga segi3 = new Segitiga(); //pemanggilan class
                     segi3.setAlas(10); //pemanggilan method
                     segi3.setTinggi(20);
                     System.out.println("===========Segitiga================");
                     System.out.println("Lebar : " + segi3.getAlas));
                     System.out.println("Panjang : " + segi3.getTinggi());
                     System.out.println("Luas : " + segi3.getLuas());
                     System.out.println("Keliling : " + segi3.getKeliling());
                     System.out.println("===========End Segitiga=============");

                     PrismaSegitiga prisma = new PrismaSegitiga();
                     prisma.setAlas(40);
                     prisma.setTinggi(50);
                     prisma.setTinggiPrisma(20);
                     System.out.println("=========Prisma Segitiga============");
                     System.out.println("Lebar Balok : "+ prisma.getAlas());
                     System.out.println("Panjang Balok : "+ prisma.getTinggi());
                     System.out.println("Tinggi Balok : "+ prisma.getTinggiPrisma());
                     System.out.println("Valume Balok : "+ prisma.getVolume());
                     System.out.println("========End Prisma Segitiga=========");

         //Constructor : nama sama dengan kelas tetapi tidak mengembalikan nilai
//Instance Prisma Segitiga Ke Segitiga Metode Pholymorphisme
 //Maka nilai Tinggi and Method getVolume akan hilang
 //Dari bawah ke atas bisa Class

Segitiga segi3_2 = new PrismaSegitiga();

 segi3_2.setAlas(60);
 segi3_2.setTinggi(70);

 System.out.println("=========Segitiga dari Prisma
Baru===========");
 System.out.println(“Alas : " + segi3_2.getAlas());
 System.out.println(“Tinggi : " + segi3_2.getTinggi());
 System.out.println("Luas : " + segi3_2.getLuas());
 System.out.println("Keliling : " + segi3_2.getKeliling());
 System.out.println("=======End Segitiga dari Prisma Baru
=========");
 //atau instance prisma segitiga di samakan dengan instance segitiga
//dari segitiga dan prisma segitiga
//segi3_2 =blk; //cara pemaksaan

//casting  menyerupakan, pemaksaan tapi lebih sopan
segi3_2 = (Segitiga)prisma;

System.out.println("=========Segitiga Instance dari Prisma=========");
System.out.println(“Alas = " + segi3_2.getAlas());
System.out.println(“Tinggi = " + segi3_2.getTinggi());
System.out.println("Luas = " + segi3_2.getKeliling());
System.out.println("Keliling = " + ssegi3_2.getLuas());
System.out.println("=====End Segitiga Instance dari Prisma=========");

//Polimorphisme dengan menggunakan Implement
//dari Segitiga ke 2D
BangunRuang2DInt bangun2DInt = new Segitiga();
BangunRuang2DInt bangun2DInt2 = segi3;
BangunRuang2DInt bangun2DInt3 = new PrismaSegitiga();
BangunRuang2DInt bangun2DInt4 = prisma;
System.out.println("=========Interface 2D dari Segitiga========");
System.out.println("Luas : " + bangun2DInt2.getLuas());
System.out.println("Keliling : " + bangun2DInt2.getKeliling());
System.out.println("=======End Interface 2D dari Segitiga ======");
        //dari Balok ke 3D
        BangunRuang3DInt bangun3DInt = new PrismaSegitiga();
        BangunRuang3DInt bangun3DInt2 = prisma;

        //casting
        BangunRuang3DInt bangun3Dint2a = (BangunRuang3DInt)prisma;

        System.out.println("=========Interface Balok ke 3D===========");
        System.out.println("Volume Balok : " + bangun3DInt2.getVolume());
        System.out.println("=======End Interface Balok ke 3D =========");

        /*Tidak bisa
         * BangunRuang3DInt bangun3Dint2 = segi3;
         * PrismaSegitiga prisma = new Segitiga(); */
    }
}
       Membangun Aplikasi Java
             Desktop
  Aplikasi yang dijalankan dalam bentuk GUI (Graphical User Interface)
Langkah-langkah pembuatan :
 Lakukan Build pada Bangun Ruang Console untuk membuat suatu File
   Library yang berekstensi JAR (Java Archive).
 File ini adalah sebuah pengelompokan dari banyak File Java atau bisa
   disebut juga dengan sebuah Package dari sebuah File dengan tujuan agar
   bisa menjamin bahwa nama yang digunakan tetap unik juga untuk
   mengontrol visibility class atau interface yang ada didalam.
o   Klik kanan pada Bangun Ruang Dekstop yang sudah kita
    buat  pilih properties




o   Pada list menu di samping kiri pilih Libraries  klik tombol
    AddJAR/Folder di sebelah kanan form
   Cara membuat sebuah Form dengan menggunakan JFrameMain (Frame
    Utama) : klik kanan pada Packages  pilih New  pilih JFrame Form




   Buatlah tampilan menu dengan drag & drop MenuBar. Menu dengan JMenu
    dan submenu dengan JMenuItem yang terdapat di Palette.
                     •                             JFrmMain.java
                                        Swing Menus     Variable Name             Text

                                          JMenu       jMnuBangunRuang2D     Bangun Ruang 2D
                                         JMenuItem        jMniSegitiga          Segitiga
                                          JMenu       jMnuBangunRuang3D     Bangun Ruang 3D
                                         JMenuItem     jMniPrismaSegitiga    Prisma Segitiga
                                          JMenu             jMnuFile              File
                                         JMenuItem         jMniKeluar            Keluar
   Setelah membuat menu, kemudian membuat desain JFrame berikut dengan
    cara drag & drop JLabel, JTextField, dan JButton pada Palette.
   Untuk mengubah nama variabel dan text yang ditampilkan dengan cara
    mengubah di Propertiesnya.
   Berikut desain JFrame yang harus dibuat :


                                              JTextField

                                             JButton

                                              JLabel
   Keterangan JFrame :
            FrmSegitiga.java                                 FrmPrismaSegitiga.java
     Swing       Variable Name    Text       Swing Controls        Variable Name            Text
    Controls

     JLabel         Segitiga     Segitiga        JLabel            Prisma Segitiga     Prisma Segitiga
     JLabel          Alas         Alas           JLabel                 Alas            Alas Segitiga
    JTextField      jTxtAlas        0           JTextField         jTxtAlasSegitiga          0
     JLabel          Tinggi      Tinggi          JLabel                 Tinggi         Tinggi Segitiga
    JTextField     jTxtTinggi       0           JTextField        jTxtTinggiSegitiga         0
     Jbutton       jBtnHitung    Hitung          Jbutton              jBtnHitung           Hitung
     JLabel          Luas         Luas           JLabel             TinggiPrisma       Tinggi Prisma
    JTextField     jTxtLuas         0           JTextField         jTxtTinggiPrisma          0
     JLabel         Keliling     Keliling        JLabel                Volume          Volume Prisma
    JTextField    jTxtKeliling      0           JTextField           jTxtVolume              0

   JTextField digunakan untuk menginput nilai
   JLabel digunakan hanya untuk tampilan dan tidak bisa menginput nilai
   JButton digunakan untuk menjalankan perhitungan atau proses
   Masing-masing mempunyai event yang bisa dibuat dengan cara klik kanan pada
    Button / Label / Text Field pilih Events  … (terdapat banyak event sesuai
    kebutuhan)
   Events, yaitu objek untuk mewakili peristiwa klik atau tombol ditekan
    Source Code (diubah pada event)

JFrmMain.java
    private void jmniSegiTigaActionPerformed(java.awt.event.ActionEvent evt) {
       if (frmsegitiga == null) {
           frmsegitiga = new FrmSegiTiga(); }
       showForm(frmsegitiga); }                           Events
     private void jmniPrismaSegitigaActionPerformed(java.awt.event.ActionEvent evt) {
        if (frmprismasegitiga == null) {
            frmprismasegitiga = new FrmPrismaSegitiga(); }
        showForm(frmprismasegitiga); }

     private void jmniKeluarActionPerformed(java.awt.event.ActionEvent evt) {
        System.exit(0); }

     private void showForm(Object obj) {
          JInternalFrame jf = null;
          if (obj instanceof JInternalFrame) {
              jf = (JInternalFrame) obj;
              if (!jf.isVisible()) {
                  jDesktopPane1.add(jf); }
              jf.setVisible(true);
              try {
                  jf.setMaximum(true);
                  jf.setSelected(true);
              } catch (java.beans.PropertyVetoException e) {
                  e.printStackTrace(); } } }
FrmSegitiga.java
    private void jbtnHitungActionPerformed(java.awt.event.ActionEvent evt) {
       Segitiga segi3=new Segitiga();
       segi3.setAlas(Double.parseDouble(jtxtAlas.getText()));
       segi3.setTinggi(Double.parseDouble(jtxtTinggi.getText()));

         jtxtLuas.setText(segi3.getLuas() + "");
         jtxtKeliling.setText(segi3.getKeliling() + "");
     }

FrmPrismaSegitiga.java
    private void jbtnHitungActionPerformed(java.awt.event.ActionEvent evt) {
       PrismaSegitiga pr=new PrismaSegitiga();
       pr.setAlas(Double.parseDouble(jtxtAlas.getText()));
       pr.setTinggi(Double.parseDouble(jtxtTinggi.getText()));
       pr.setTinggiPrisma(Double.parseDouble(jtxtTinggiPrisma.getText()));

         jtxtVolume.setText(pr.getVolume() + "");
     }

    Double.parseDouble : untuk mengkonversi nilai dari tipe string ke double
    getText() : untuk mendapatkan nilai yang diinput
    setText() : untuk menampilkan nilai
Membangun Aplikasi Web Di Java
  Aplikasi yang dijalankan di browser yang berbentuk web
Langkah-langkah pembuatan :
 Klik file → new project lalu pilih web → web application.
   Kemudian pilih tombol next
   Beri nama pada Project Name : BangunRuangWeb → klik tombol Next




   Pilih server GlassFish V2 → klik tombol Next → klik Finish. Setelah itu akan
    muncul file index.jsp
   Kopikan gambar-gambar yang dibutuhkan ke dalam folder
    BangunRuangWeb/Web yang ada di NetBeansProjects.
   Berikut ini adalah gambar-gambar yang sudah dikopikan ke dalam
    folder :




   Buatlah file jar yang berasal dari BangunRuang dengan cara : klik
    kanan pada BangunRuangWeb → pilih Properties → pilih Libraries →
    klik tombol Add JAR/Folder.
   Buatlah file jar yang berasal dari BangunRuang dengan cara : klik
    kanan pada BangunRuangWeb → pilih Properties → pilih Libraries →
    klik tombol Add JAR/Folder
   Pilih di folder NetBeansProjects/BangunRuang/dist/BangunRuang.jar
    → klik tombol OK → klik tombol OK lagi.
   Buatlah file-file JSP dengan cara : klik kanan di BangunRuangWeb → Web
    Pages → Pilih New → JSP
   Berilah nama JSP File Name : Balok → setelah itu pilih tombol Finish
     Source code yang harus diubah :
                                                     Source code Java ditandai dengan <% %>
    Segitiga.jsp
         <%@page import="bangunruang.*"%>
         <%      String tinggi= request.getParameter("tinggi") == null ? "0":request.getParameter("tinggi");
                 String alas = request.getParameter("alas") == null ? "0":request.getParameter("alas");
Pembuatan tabel Segitiga st = new Segitiga();
                 st.setAlas(Double.parseDouble(alas));          Pemanggilan halaman index.jsp
                 st.setTinggi(Double.parseDouble(tinggi)); %>
         <a href="index.jsp">Home</a> <br>
         <table align="center" border="2" bgcolor="#fabc5a" cellpadding="5" cellspacing="0">
         <caption align="top"><H1>SEGI TIGA<H1></caption> <tr><th>
         <img width="160" height="160" src="122px-Triangle.Equilateral.svg.png" align="left">        Menyisipkan gambar
         Segitiga adalah nama suatu bentuk yang dibuat dari tiga sisi yang berupa garis
         lurus dan tiga sudut. Matematikawan Euclid yang hidup sekitar tahun 300 SM menemukan bahwa
         jumlah ketiga sudut di suatu segi tiga adalah 180 derajat. Hal ini memungkinkan kita menghitung
         besarnya salah satu sudut bila dua sudut lainnya sudah diketahui.
         </th></tr>
         <tr><td><Form>
               <img width='200' height='150' src='S3.png' align="left">
                                        Membuat text untuk menginput              Nama variabel harus sama
               <pre>Tinggi : </pre><input type=text name=tinggi value=<%=tinggi%>>
               <pre>Alas : </pre><input type=text name=alas value=<%=alas%>>
            <br><input type=submit Value=Hitung>
         </Form></td></tr>
         <tr><td> <pre> Luas : <%=st.getLuas() %></pre>
                   <pre> Keliling : <%=st.getKeliling() %></pre>       Membuat button hitung
            </td></tr></table>



                                       Membuat label                Pemanggilan method di Java
PrismaSegitiga.jsp
     <%@page import="bangunruang.*"%>
     <%       String tinggi= request.getParameter("tinggi") == null ? "0":request.getParameter("tinggi");
              String alas = request.getParameter("alas") == null ? "0":request.getParameter("alas");
              String tinggiP = request.getParameter("tinggiP") == null ? "0":request.getParameter("tinggiP");
              PrismaSegitiga pri = new PrismaSegitiga();
              pri.setAlas(Double.parseDouble(alas));
              pri.setTinggi(Double.parseDouble(tinggi));
              pri.setTinggiPrisma(Double.parseDouble(tinggiP)); %>
     <a href="index.jsp">Home</a>
     <br>
     <table align="center" border="2" bgcolor="#fabc5a" cellpadding="5" cellspacing="0" >
     <caption align="top"><H1>PRISMA SEGITIGA<H1></caption>
     <tr><th>
           <img width="160" height="160" src="220px-Prisma.JPG" align="left">
     Dalam geometri, prisma adalah bangun ruang tiga dimensi yang dibatasi oleh alas dan tutup
     identik berbentuk segi-n dan sisi-sisi tegak berbentuk segiempat. Dengan kata lain prisma
     adalah bangun ruang yang mempunyai penampang melintang yang selalu sama dalam bentuk dan ukuran.
        </th></tr>
     <tr><td><Form >
        <img width="200" height="150" src="prisma.jpg" align="left">
        <pre>Alas         : <input type=text name=alas value=<%=alas%>></pre>
        <pre>Tinggi        : <input type=text name=tinggi value=<%=tinggi%>> </pre>
        <pre>Tinggi Prisma : <input type=text name=tinggiP value=<%=tinggiP%>></pre>
        <input type=submit Value=Hitung>
     </Form></td></tr>
        <tr><td>
              <pre>Volume : <%=pri.getVolume()%> </pre>
           </td></tr>
     </table>
 Membangun Aplikasi Mobile
  Aplikasi yang dijalankan di mobile / handphone
Langkah-langkah pembuatan :
 Pilih File → New Project → pilih Mobility → MIDP Application → klik tombol
   Next
 Berilah nama pada Project Name : BangunRuangMobile → klik tombol Next
 Pilih MIDP 2.0 → klik tombol Next → klik tombol Finish.
   Copy semua file dari .java dari
    NetBeansProjects/BangunRuang ke dalam folder
    bangunruangmobile
   Bukalah BangunRuang.java yang bersimbol penggaris dan
    pensil di dalam BangunRuangMobile → pilih tab Flow
   Berilah nama JSP File Name : PrismaSegitiga → setelah itu
    pilih tombol Finish
  Splash screen : tampilan yang kita lihat pertama kali waktu kita
   menjalankan sebuah aplikasi.
 Splash screen ini biasanya ditampilkan untuk mengurangi kejenuhan user
   sewaktu program masih dalam tahap inisialisasi.
Cara membuat splash screen :
 Pilih di dalam Pallete → Splash Screen, buat di dalam flow → tariklah garis
   dari started ke Splash Screen.
 Untuk mengganti Text di Splash Screen → ubah di Properties → Text →
   Ketik Wait until background task is complete ...
   Untuk membuat image di Splash Screen : ubah di properties →
    klik kotak kecil yang ada di image → pilih image1 → lalu pilih
    file gambar yang sudah ada.




   Untuk membuat garis pada flow, dengan cara menarik garis
    dari screen command atau exit command atau splash screen ke
    form yang dituju
   Cara membuat frmWelcome :
    Pilih di dalam Pallete → Form.
    Buatlah di dalam flow → ubah properties → instance name (nama form)
    menjadi frmWelcome dan Title (judul yang akan ditampilkan di mobile)
    menjadi Welcome.




   Klik kanan pada frmWelcome yang sudah ada di dalam layar Flow → pilih
    New/Add → pilih Screen Command → ganti instance name menjadi
    scrBangunRuang2D
   Buatlah satu Screen Command lagi dan ubah instance name
    menjadi scrBangunRuang3D.
   Screen Command : tampilan di layar handphone untuk menuju
    ke form yang diinginkan
   Untuk membuat Exit Command : klik kanan pada form pilih
    New/Add → pilih Exit Command
   Exit Command : tampilan di layar untuk instruksi keluar dari
    form
   Untuk membuat List : pilih di Pallette → List.
   Untuk membuat List Element di dalam List : klik kanan pada list
    → pilih List Element.
   Untuk membuat Back Command : klik kanan pada form/list →
    pilih New/Add → pilih Back Command
   Back Command : tampilan di layar untuk kembali ke form
    yang dituju
   Buatlah tampilan menjadi seperti berikut :
   Keterangan Flow :
    (frm:Form, scr:Screen Command, list:List)
    Screen untuk masing-masing list, form welcome dan splash screen :
                                                            List Element




DateField
   Screen untuk masing-masing form :

                                                                     TextField

                                                                    StringItem




   TextField : untuk menginput nilai
   Cara membuat TextField : klik kanan pada device screen seperti gambar diatas  New/Add
     Text Field
   StringItem : untuk menampilkan hasil perhitungan
   Cara membuat StringItem : klik kanan pada device screen seperti gambar diatas  New/Add
     String Item
   DateField : untuk menampilkan tanggal dan waktu
   ListElement : bagian dari List
   Cara membuat DateField dan ListElement hampir sama dengan TextField dan String Item,
    hanya saja pilihan terakhir yang berbeda
ListBangunRuang2D                                          ListBangunRuang3D
    Type          Properties      Value                       Type        Properties           Value

 List Element       String       Segitiga                  List Element      String        Prisma Segitiga



frmWelcome                                                 SplashScreen
   Type         Instance Name     Properties    Value
                                                           Sudah dibahas sebelumnya

 DateField         Tanggal        Input Mode    Date

 DateField         Waktu          Input Mode    Time



frmSegitiga                                                frmPrismaSegitiga

   Type         Instance Name      Properties   Value         Type         Instance Name        Properties      Value

 TextField        txtAlasSG           Label      Alas       TextField        txtAlasPS             Label         Alas

 TextField        txtTinggiSG         Label     Tinggi      TextField        txtTinggiPS           Label        Tinggi

 StringItem       strLuasSG           Label      Luas       TextField     txtTinggiprismaPS        Label     Tinggi Prisma

 StringItem      strKelilingSG        Label     Keliling    StringItem      strVolumePS            Label       Volume
   Source Code yang perlu diubah di dalam commandAction() :

    Segitiga

    else if (command == scrHitungSegitiga) {               Untuk Mengambil nilai yang diinput
               Segitiga sg = new Segitiga();
               sg.setAlas(Double.parseDouble(txtAlasSG.getString()));
               sg.setTinggi(Double.parseDouble(txtTinggiSG.getString()));
               strLuasSG.setText(sg.getLuas() +"");
               strKelilingSG.setText(sg.getKeliling()+"");
    }


    PrismaSegitiga

    else if (command == scrHitungPrismaSegitiga) {
                PrismaSegitiga ps = new PrismaSegitiga();
                ps.setAlas(Double.parseDouble(txtAlasPS.getString()));
                ps.setTinggi(Double.parseDouble(txtTinggiPS.getString()));
                ps.setTinggiPrisma(Double.parseDouble(txtTinggiprismaPS.getString()));
               strVolumePS.setText(ps.getVolume() +"");
    }
-- SEKIAN DAN TERIMA KASIH --

				
DOCUMENT INFO
Shared By:
Categories:
Tags:
Stats:
views:240
posted:7/30/2012
language:
pages:109