Anda di halaman 1dari 15

BAB II PEMBAHASAN A.

Konsep PBO Pemrograman Berorientasi Objek (Object - Oriented Programming) Merupakan paradigma pemrograman yang berorientasikan kepada objek. Semua data dan fungsi di dalam paradigma ini dibungkus dalam kelaskelas atau objek-objek. Bandingkan dengan logika pemrograman terstruktur. Setiap objek dapat menerima pesan, memproses data, dan mengirim pesan ke objek lainnya,Model data berorientasi objek dikatakan 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, dan pendekatan OOP lebih mudah dikembangkan dan dirawat. Konsep dasar dari Pemrograman Berorientasi Objek Pemrograman orientasi-objek menekankan konsep berikut: Kelas kumpulan atas definisi data dan fungsi-fungsi dalam suatu unit untuk suatu tujuan tertentu. Sebagai contoh 'class of dog' adalah suatu unit yang terdiri atas definisi-definisi data dan fungsi-fungsi yang menunjuk pada berbagai macam perilaku/turunan dari anjing. Sebuah class adalah dasar dari modularitas dan struktur dalam pemrograman berorientasi object. Sebuah class secara tipikal sebaiknya dapat dikenali oleh seorang non-programmer sekalipun terkait dengan domain permasalahan yang ada, dan kode yang terdapat dalam sebuah class sebaiknya (relatif) bersifat mandiri dan independen (sebagaimana kode tersebut digunakan jika tidak menggunakan OOP). Dengan modularitas, struktur dari sebuah program akan terkait dengan aspek-aspek dalam masalah yang akan diselesaikan melalui program tersebut. Cara seperti ini akan menyederhanakan pemetaan dari masalah ke sebuah program ataupun sebaliknya. Objek - membungkus data dan fungsi bersama menjadi suatu unit dalam sebuah program komputer, objek merupakan dasar dari modularitas dan struktur dalam sebuah program komputer berorientasi objek. Abstraksi - 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.

Enkapsulasi - Memastikan pengguna sebuah objek tidak dapat mengganti keadaan dalam dari sebuah objek dengan cara yang tidak layak; hanya metode dalam objek tersebut yang diberi izin 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. Polimorfisme melalui pengiriman pesan. Tidak bergantung kepada pemanggilan subrutin, bahasa orientasi objek dapat mengirim pesan; metode tertentu yang berhubungan dengan sebuah pengiriman pesan tergantung kepada objek tertentu di mana pesa 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 tunggal 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. Dengan menggunakan OOP maka dalam melakukan pemecahan suatu masalah kita tidak melihat bagaimana cara menyelesaikan suatu masalah tersebut (terstruktur) tetapi objek-objek apa yang dapat melakukan pemecahan masalah tersebut. Sebagai contoh anggap kita memiliki sebuah departemen yang memiliki manager, sekretaris, petugas administrasi data dan lainnya. Misal manager tersebut ingin memperoleh data dari bag administrasi maka manager tersebut tidak harus mengambilnya langsung tetapi dapat menyuruh petugas bag administrasi untuk mengambilnya. Pada kasus tersebut seorang manager tidak harus mengetahui bagaimana cara mengambil data tersebut tetapi manager bisa mendapatkan data tersebut melalui objek petugas adminiistrasi. Jadi untuk menyelesaikan suatu masalah dengan kolaborasi antar objek-objek yang ada karena setiap objek memiliki deskripsi tugasnya sendiri B. C. 3 Menggunakkan Objek Pemrograman Berorientasi Objek (Object Oriented Programming) merupakan teknik membuat suatu program berdasarkan objek.Untuk lebih memudahkan pemahaman tentang objek, saya beri sebuah contoh : Meja, Kursi, Jam Dinding dan yang lainnya merupakan contoh objek. Objek yang disebutkan tadi umumnya berada didalam sebuah ruangan, ruangan apabila kita melihatnya dari sebuah rumah bisa juga dikategorikan sebuah objek dan rumah jika dilihat dari cara pandang yang lebih luas lagi juga

merupakan objek. Jadi sebuah Objek merupakan suatu bentuk atau model yang tergantung dari cara pandang objek dimaksud. Meja, Kursi, Jam Dinding ada dalam sebuah Ruangan. Ruang A, Ruang B, dan Ruang yg lain berada dalam sebuah Rumah. Rumah 1, Rumah 2 dan Rumah yang lain juga berada didalam suatu tempat yang lebih luas yaitu Bumi, Dst. Dan bukan tidak mungkin didalam Objek Jam Dinding terdapat objek-objek yang lain yang lebih kecil misalnya Batterai, Gear, dll. Cara pandang kita dari sebuah Ruangan, Rumah atau Bumi merupakan Class apabila kita melihatnya dalam Pemrograman.

Setiap objek memiliki Atribut dan Method. Atribut adalah segala sesuatu yang berhubungan dengan karakteristik objek. Seperti Tipe, Model, Pintunya, Kusennya menggunakan kayu apa?, Warna Catnya, merupakan salah satu atribut dari Rumah. Sedangkan Method dari Rumah adalah dapat melindungi dari panas, hujan, angin. Jadi Method merupakan Fungsi atau segala sesuatu yang dapat dilakukan Objek. D. Menciptakan Kelas Kelas memiliki peran penting dalam paradigma pemrograman berorientasi objek. Kelas bagaikan sebuah pabrik yang siap memproduksi objek-objek yang kita butuhkan. Untuk dapat menciptakan sebuah objek, kita harus menciptakan kelasnya. Kelas inilah yang dalam runtime program akan menciptakan objek yang inginkan. Singkatnya kelas a6dalah cetak biru bagi objek yang ingin kita ciptakan. Perlu diperhatikan bahwa umumnya tidak ada batasan jumlah objek yang dapat diciptakan melalui sebuah kelas. Namun terkadang ada kelas-kelas yang memang dirancang untuk menciptakan tidak lebih dari satu objek.

Objek-objek yang tercipta dari sebuah kelas disebut instans dari kelas tersebut. Instans ini akan mempunyai variabel dan metode yang disebut variabel instans dan metode instans. Namun ada juga variabel kelas yang berlaku bagi kelas itu sendiri sehingga akan berlaku juga untuk semua instans dari kelas tersebut. Anda dapat melihat kode (Listing) contoh kelas sederhana dibawah ini.

package com.arih; import java.io.*; public class KelasKita implements InterfaceKita1, InterfaceKita2 extends SuperKelas { // deklarasi variabel private String variabelString;

// konstruktor kelas tanpa parameter public KelasKita() { // baris program }

// konstruktor kelas dengan satu parameter bertipe int public KelasKita(int paramInt) { // baris program

// metode publik dengan satu parameter // dan tidak mengembalikan nilai public void metodeSatu(int parameterInt) { // baris program return; }

// metode publik dengan dua parameter dan mengembalikan nilai int public int metodeSatu(int parameterInt, double parameterDouble) { // baris program return; } Deklarasi Kelas Pendeklarasian kelas dapat dimulai dengan pernyataan package. Pernyataan seperti baris pertama dari kode diatas berarti kelas tersebut adalah bagian dari package com.arih. Hirarki package di sini secara konseptual sama dengan konsep pohon, di mana ada node akar dan bercabang terus oleh node anak. Pernyataan ini tidak harus ada dalam setiap kode program kelas. Hanya bila program Anda memiliki banyak kelas dan ingin disusun menurut hirarki tertentu barulah Anda perlu meletakkan pernyataan seperti ini. Biasanya hirarki package mengikuti hirarki domain vendor. Dalam kasus ini, arih.comnama situs saya. Setelah pernyataan package, kita dapat meletakkan baris-baris pernyataan import. Pernyataan import digunakan untuk mendaftarkan nama lengkap dari kelas-kelas yang kita impor agar di dalam kelas ini nantinya kita tidak lagi perlu menuliskan nama lengkap secara hirarkis sebuah kelas. Contohnya di Listing1

kita meletakkan baris import java.io.*;, artinya semua kelas yang berada di dalam package java.io dapat kita panggil dalam kelas kita langsung dengan nama kelas, tanpa nama package. Jadi bila kita ingin menggunakan kelas java.io.InputStreamReader, kita dapat langsung menuliskan InputStreamReader tanpa mesti membubuhkan java.io di depannya. Dalam kasus tertentu kemudahan ini dapat terganggu bila ada dua kelas dengan nama yang sama namun dari package berbeda yang keduanya kita impor. Akibatnya penggunaan nama kelas tersebut akan menyebabkan ambiguitas. Pemecahannya adalah dengan menggunakan nama lengkap, atau minimal nama package yang berbeda untuk kedua kelas tersebut. Baris-baris pernyataan impor ini sebenarnya hanya berfungsi sebagai pembantu agar penulisan kode program lebih mudah dan lebih singkat. Jadi hal ini tidak wajib dilakukan. Selama Anda merasa senang menulis nama lengkap suatu kelas yang biasanya cukup panjang, silahkan tidak menggunakan fasilitas impor. Kalaupun Anda menggunakan fasilitas ini, biasakanlah untuk tetap mengetahui nama lengkap dari kelas-kelas yang Anda gunakan. Dengan begitu Anda tidak akan kesusahan bila ingin melihat dokumentasi API Java untuk kelas tersebut. E. Menggunakan Kelas Dalam Program Setiap bahasa pemrograman pasti memiliki setidaknya satu class agar program tersebut dapat berjalan. Java disebut bahasa pemrograman berorientasi objek murni karena memiliki banyak class. Sangat mudah untuk mendeklarasikan class dalam java, berikut adalah contoh format class dalam java. attribute_akses class namaKelas { //isi dari kelas } Untuk nama kelas tidak boleh ada spasi bila nama kelas menggunakan lebih dari satu kalimat. Contoh class untuk luas lingkaran kita beri nama "class LuasLingkaran". Untuk attribute access kalian dapat mengisinya dengan "public, protected, private, atau tidak mengisinya sama sekali". F. Kelas Dengan Method Class pada bahasa pemrograman java merupakan sebuah kode program yang mendefinisikan semua rincian spesifik dari suatu class yang diperlukan dalamprogram. Format umum Class adalah berikut ini class namaclass [extends SuperclassName] [implement interface] {

[deklarasi variabel;] [deklarasi method;] } Adapula extend yang digunakan untuk menunjukan bahwa namaclass adalah subclass dari SuperclassName. Example : class Point { int x,y; void init (int a,int b) { x = a; y = b; } Void PrintPoint () { System.out.println(x= +x); System.out.println(y= +y); } } class TestClass extends Point { public state void main (String arg []) { Point P = new Point();

P.init(10,20); P.PrintPoint(); } } Pada sintax diatas ,Point p dikenal dengan istilah referensi objek yaitu variabel yang merujuk pada suatu class.Operator new pada contoh diatas digunakan untuk menciptakan objek baru dengan menjalankan method konstruktor pada suatu class. Operator dot (.) digunakan untuk mengakses variabel dan methode di dalam objek. G. Kata Kunci This Kata kunci this sangat berguna untuk menunjukkan suatu member dalam classnya sendiri. This dapat digunakan baik untuk data member maupun untuk function member, serta dapat juga digunakan untuk konstruktor. Adapun format penulisannya adalah : this.data_member merujuk pada data member this.function_member() merujuk pada function member this( ) merujuk pada konstruktor Contoh: public class Siswa{ private int nrp; public setNrp(int nrp) { this.nrp=nrp; } }

H. Lingkup Variabel Variabel yang dideklarasikan di dalam ruang lingkup (scope) atau blok tertentu hanya akan dikenali di dalam lingkup bersangkutan saja. Dalam Pemograman Java, blok diawali dengan tanda { dan di akhiri dengan tanda }.Dalam bahasa pascal, tanda tersebut dengan kata kunci begin dan end.

Secara umum, sebenarnya kita tidak akan mengalami kesulitan ketika ingin mendeklarasikan suatu variabel. Meski demikian, alangkah baiknya jika kita memahami aturan-aturan standar dan jenis-jenis variabel di Java.

* Deklarasi Deklarasi variabel dilakukan untuk menyimpan suatu penempatan di memori, memberinya nama, dan mendefinisikan tipe data yang dapat digunakan di variabel tersebut. Dengan demikian, deklarasi minimal mendefinisikan tipe data dan nama (identifier). int i; int j; Pada kasus tipe referensi, deklarasi variabel mendeklarasikan variabel object reference. Dalam konteks Java, referensi objek adalah sebuah nilai yang menyatakan suatu objek. Point p; Sebenarnya kita juga bisa mendeklarasikan lebih dari satu variabel dalam satu baris, namun cara ini kurang disukai. int i, j; Tidak seperti bahasa C dan C++, yang membedakan istilah deklarasi dan definisi, di Java tidak ada deklarasi yang terpisah dari definisi. * Jenis dan Scope Java mendefinisikan empat jenis variabel, meliputi variabel instans (field nonstatis), variabel kelas (field statis), variabel lokal, dan parameter. Java juga menggunakan istilah field, data member, dan member variable yang mengacu pada variabel instans (instance) dan variabel kelas. Selain itu,

istilah variabel sendiri juga kerap digunakan, di mana ia mengacu pada semua jenis variabel. Lokasi di mana suatu variabel dideklarasikan secara implisit juga menetapkan ruang lingkupnya. Ruang lingkup variabel didefinisikan sebagai blok kode di mana variabel dapat diacu melalui namanya. Dengan demikian, ruang lingkup variabel instans dan variabel kelas mencakup seluruh body kelas. * Inisialisasi Setelah mendeklarasikan variabel, kita juga bisa melanjutkan inisialisasi untuk menspesifikasikan initial value bagi variabel. Langkah ini dilakukan dengan menugaskan (meng-assign) nilai ke variabel; proses ini dikenal sebagai penugasan (assignment). int i = 10; Dalam kasus variabel lokal, inisialisasi mutlak diperlukan sebelum variabel dapat digunakan. Kondisi ini sangat kontras sekali dengan field, di mana nilai default yang akan digunakan sebagai nilai awal jika variabel tidak diinisialisasi. Penggunaan variabel lokal tanpa inisialisasi berpotensi memicu kesalahaan saat kompilasi. * Access Modifier Access modifier (atau specifier) menyatakan apakah kelas-kelas lain dapat menggunakan variabel member ataukah tidak. Dengan demikian, dalam konteks variabel, konsep access modifier ini hanya dapat diterapkan pada field saja. Ada empat tingkatan akses yang bisa kita gunakan menspesifikasikan visibilitas suatu variabel: private, default dispesifikasikan), protected, dan public. Access Modifier untuk (tidak

Visibilitas private Variabel hanya bisa diakses dari kelas yang mendeklarasikannya (current kelas). Default Variabel dapat diakses dari current kelas dan paket.

protected Variabel dapat diakses dari current kelas, subkelas, dan paket. public Variabel bisa diakses oleh siapa saja, baik current kelas ataupun kelas lain. I. Penentu akses private dan public Pada pemrograman berorientasi objek, akses terhadap suatu variabel instan diluar kelas biasanya tidak diperkenankan. Sebagai penggantinya, disediakan metode yang diperlukan untuk mengakses variable instant. Berkaitan dengan boleh/tidaknya suatu variable instant diakses dari luar kelas ,Java menyediakan penentu akses. Dua diantara penentu akses yang tersedia adalah private dan public. o public berarti bahwa pengaksesan statu variable instan atau metode dapat dilakukan dari luar kelas o private berarti bahwa pengaksesan statu variable instan atau metode hanya dapat dilakukan didalam kelas;tidak bisa diakses dari luar kelas J. Metode Class Pada prinsipnya kita telah memanfaatkan Class mulai dari awal pertemuan, dan kita akan membahasnya lebih spesifik. Class namaClass { Tipe-data namaVariabel; Tipe-data namaMethod(parameter list) { Tipe-data namaVariabel; // ini adalah variable lokal //implementasi dari Method; } static { // static initialize untuk menginisialisasi nilai awal variable static } } Jenis variable pada class : 1. Variabel instant, variable yang menampung state/property masing-masing instance class (object). 2. Variabel class, variable yang menampung data yang dapat dipakai secara bersama oleh instance class (object), diawali dengan kata static. 3. Variabel lokal, variable yang dideklarasikan dalam method dan digunakan untuk pengolahan data dalam method tersebut.

4. Variabel konstanta, variable yang nilainya tidak dapat diubah, diawali dengan kata static final (secara konvensi nama variable konstanta ditulis dengan huruf besar) Jenis method pada class : 1. Metode instant, adalah metode yang dikaitkan dengan instan class tertentu. Sewaktu metode instant dipanggil, ia mengakses ke data yang terdapat pada instan yang dikaitkan. 2. Metode class, adalah metode yang dikaitkan dengan class secara keseluruhan, bukan dengan instant tertentu. Anda memanggil metode ini dengan nama class, bukan dengan nama variable instant, diawali dengan kata static, dan bersifat final (tidak dapat dioveriding oleh subclassnya). 3. Metode main, adalah metode yang dideklarasikan pada level paling atas yang merupakan titik awal eksekusi program (kecuali pada applet). 4. Metode abstrak, adalah metode yang belum ada implementasi pada class yang mendefinisikannya, dan harus diimplementasikan pada subclass, diawali dengan kata abstract, dan class tersebut juga harus dideklarasikan sebagai abstract. 5. Metode final, adalah metode yang tidak dapat dioveriding oleh subclass, diawali dengan kata final. 6. Metode native, adalah metode yang akan ditulis dengan bahasa java karena spesifik terhadap platform tertentu. (pengembang java dapat memanfaatkan C sebagai bahasa native). Access Specifier untuk variable : Jenis variable Lingkup pengaksesan Daur hidup Variabel instant Tunduk terhadap kondisi berikut : 1. private hanya metode dalam class yang dapatm mengakses 2. public sembarang class dapat mengakses. 3. friendly kelas atau sembarang class dalam paket 4. protected sembarang subclass dari class dapat mengakses. Saat instance diciptakan hingga tidak ada lagi referensi terhadap instance.Variabel class Tunduk terhadap lingkup yang sama dengan variable instance Saat kelas dimuat hingga tidak ada lagi referensi terhadap class tersebut. Variabel lokal Kode didalam blok yang sama Saat kode blok masih aktif. Access Specifier untuk method : Access Specifier Lingkup pengaksesan Pemakaian Public Metode dapat diakses sembarang class Antarmuka eksternal class anda.

Private Metode dapat diakses oleh metode dalam class yang sama. Metode untuk pemakaian internal class (tidak berhubungan dengan pamakai class)Tidak secara eksplicit disebutkan (friendly) Metode dapat diakses oleh metode didalam class atau metode dalam class lain yang berada pada paket yang sama. Metode yang anda inginkan dapat diakses oleh kelas yang berkaitan Protected Metode dapat diakses oleh metode dalam subclass dari class tersebut Metode yang ingin diakses oleh subclass dari class tersebut.

Contoh Metoda Class class Finance { public static double futureValue(double initial, double term, double rate) { return initial*Math.pow(1+rate,term); }

public static double futureValueAnnuity(double payment, double term, double rate) { return payment*(Math.pow(1+rate,term)-1)/rate; } }

Suatu metode class tidak perlu dibuat instantnya untuk pemakaian metodanya. import javax.swing.*; import java.awt.*; import java.awt.event.*; class testFinance { public static void main(String[] args) { final JFrame frame = new JFrame("Annuity Future Value"); JLabel label1 = new JLabel("Jumlah Cicilan :"); JLabel label2 = new JLabel("Jangka waktu :"); JLabel label3 = new JLabel("Suku Bunga Pasar :");

final JLabel fValue = new JLabel("Future value :"); final JTextField textField1 = new JTextField(20); final JTextField textField2 = new JTextField(20); final JTextField textField3 = new JTextField(20); JButton button = new JButton("Kalkulasi"); button.setMnemonic('K'); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { double payment, term, rate; long futureValue; payment = Double.parseDouble(textField1.getText()); rate = Double.parseDouble(textField2.getText()); term = Double.parseDouble(textField3.getText()); futureValue = (long) Finance.futureValueAnnuity(payment,rate,term); fValue.setText("FutureValue : " + futureValue); } }); frame.getContentPane().setLayout(new FlowLayout()); frame.getContentPane().add(label1); frame.getContentPane().add(textField1); frame.getContentPane().add(label2); frame.getContentPane().add(textField2); frame.getContentPane().add(label3); frame.getContentPane().add(textField3); frame.getContentPane().add(button); frame.getContentPane().add(fValue); frame.setSize(300,300); frame.show(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

Daftar Pustaka
http://blog.josescalia.net/2009/09/loop-perulangan-dalam-java.html http://java.lyracc.com/artikel/java-untuk-pemula/blok-perulangan-danpercabangan http://java.lyracc.com/belajar/java-untuk-pemula/perulangan