MATERI OOP
2
Enkapsulasi merupakan pernyataan untuk pembungkusan sesuatu
(capsulate). Kalo dalam dunia nyata seperti ini : Kalo kita mau bikin rekening
di salah satu bank, maka kita akan memberikan data diri dan “uang pangkal”.
Lalu tanpa kita tahu apa yang terjadi, kita dikasih buku tabungan yang
merupakan bukti kalo rekening kita udah dibikin. Nah gitu kira-kira
enkapsulasi. Kita hanya memberi data, apa yang kita mau, dan akhirnya tanpa
tahu urusan apa yang terjadi dalam pihak internal, kita menerima apa yang kita
mau.
Dalam implementasinya di java, enkpasulasi ditandai dengan
memberikan private ke semua variabel yang ada di dalam suatu kelas (bukan kelas
Main/Driver pastinya), dan pengaksesan terhadap variabel tersebut digunakan
‘setter’ dan ‘getter’ bagi variabel yang memerlukan (kan gak semua variabel
perlu nilai balikan/masukan).
Satu hal yang perlu diingat dalam
konsep OOP, setiap satu program yang merepresentasikan suatu sistem/model
minimal memiliki 2 kelas, yaitu kelas pemrosesan dan kelas Main/Driver untuk
memanggil kelas pemrosesan. Dan berikut aturan lainnya (Cuma sebagai bentuk
standar dan bukan keharusan):
-
Nama Kelas ditulis dalam huruf
kapital untuk huruf pertama dari nama tersebut, contoh jika ingin menuliskan
kelas ‘mobil mewah’ maka nama kelas nantinya ditulis ‘MobilMewah’
-
Variabel dalam konsep OOP disebut
atribut yang diakses dengan setter dan getter-nya. (lebih jelas lihat contoh
implementasi)
-
Satu kelas terdiri dari banyak
prosedur pemrosesan, setter dan getter termasuk dalam prosedurnya. Prosedur
dalam konsep OOP disebut metode atau method.
-
Penulisan method diawali huruf
kecil, contoh untuk ‘setter atribut nomor plat mobil’ diberikan nama
‘setNoPlatMobil’.
Sekarang contoh implementasi :
Kita akan membuat sebuah prosedur
penentuan nilai genap/ganjil atau bilangan prima(tidak terlalu
merepresentasikan konsep OO, tapi untuk belajar kayaknya cocok2 aja menurut
gw). Berarti kita harus membuat satu kelas penghitung dan satu kelas driver
(Main). Implementasi berikut menggunakan Netbeans, ok silahkan diikuti
langkah2nya.
-
Pertama, bikin project dengan nama
AngkaPrima di Netbean File –> New Project –> Pilih Kategori Java, dan
Java Application
-
Kedua, buat sebuah kelas OlahAngka
seperti gambar :
(Klik Kanan pada Paket angkaprima,
lalu pilih New –> Java Class, Isi nama Kelas dengan nama ‘OlahAngka’ dan
tekan Finish dan terbentuklah kelas OlahAngka)
-
Ketiga, sebagai langkah selanjutnya,
kita harus membuat method untuk menentukan apakah angka yang diolah adalah
bilangan genap/ganjil. Tapi sebelumnya buatlah atribut angka yang akan diolah
lengkap dengan setter-getter nya. Cara membuat seperti ini :
1.
Ketik ‘private int angka’ yang
berarti kita akan membentuk suatu atribut angka bertipe data integer dengan
karakter private (hanya bisa diakses oleh kelas itu saja)
2.
Buatlah setter getter dari atribut
ini (kali ini netbeans sangat membantu karena tidak usah ditulis manual cukup
lakukan seperti ini : klik kanan di nama atribut tersebut lalu klik )
3.
Ketika muncul pilihannya, pilih set
dan get untuk membuat keduanya. Seperti gambar kedua dibawah :
-
Setelah terbentuk method set dan
get, berarti kita akan membuat satu method untuk menentukan apakah bilangan itu
genap atau ganjil. Logikanya gini, Kalo dibagi 2 gak ada sisanya berarti
bilangan tersebut adalah bilangan ganjil, dan sebaliknya untuk genap.
-
Karena ada 2 kondisi, maka kita
bikin dengan menggunakan sebuah fungsi (method yang mengembalikan nilai).
Fungsi yang kita gunakan bertipe boolean. Artinya jika mengembalikan nilai
benar/true, maka berarti nilai genap, sedangkan jika mengembalikan nilai salah
berarti bilangan tersebut merupakan bilangan ganjil.
-
Fungsi tersebut kita namakan isGenap
yang akan mengembalikan nilai true jika bilangan dapat dibagi 2, dan
mengembalikan false jika tidak bisa dibagi 2. Pembagian 2 ini dilakukan dengan
menggunakan operator mod. Operator mod akan mengembalikan nilai sisa dari hasil
operasi. Jadi contohnya gini :
-
5 mod 2 = 1 (Sisa 5 dibagi 2 itu 1)
-
10 mod 4 = 2
-
10 mod 2 = 0
-
Dengan keterangan diatas, berarti
kita dapat membuat fungsi isGenap dengan kode berikut : (mod dalam java
dituliskan dengan %)
public boolean isGenap() {
if
(this.angka % 2 == 0) {
return
true;
}
else {
return
false;}
}
-
Setelah itu, untuk menentukan
bilangan prima atau tidak kita tambahkan kode seperti berikut :
-
Kode diatas dimaksud untuk
menentukan bilangan prima dengan langkah seperti ini :
1.
Bilangan prima merupakan bilangan
yang tidak habis dibagi bilangan lain kecuali oleh dirinya sendiri dan 1.
2.
Karna itu, untuk setiap bilangan
yang dimasukkan, di cek satu persatu dari satu hingga bilangan tersebut. Jika
ditemukan hasil pembagian bersisa 0, berarti bilangan itu habis dibagi.
3.
Bilangan prima dengan definisi
diatas, berarti mempunyai jumlah habis dibagi (status_nol) bernilai 2, yaitu
untuk pembagian terhadp dirinya sendiri dan angka 1.
4.
Karena itu setiap status_nol
bernilai 2, maka akan dikembalikan nilai true yang berarti bilangan input
adalah bilangan prima, dan sebaliknya.
-
Setelah itu, kita tinggal memanggil
fungsi2 tersebut di kelas Main dengan kode :
-
Baris pertama berarti membetntuk
objek dari kelas OlahAngka, yang nantinya method dari kelas tersebut dipanggil
pada pengkondisian.
-
Baris Kedua merupakan kelas Scanner
yang meminta input user, silahkan lihat posting-an sebelumnya.
-
Baris kelima merupakan pemanggilan
setter untuk memasukkan angka ke dalam atribut bilangan yang ada di kelas
OlahAngka. Dan seterusnya
-
Nah, mengapa gw pake getAngka untuk
mengambil nilai dari angka yang udah kita input sebelumnya? Hal ini karena
sifat dari object oriented programming yang memang hanya memberikan akses
terhadap setter dan getter (enkapsulasi). Lalu mengapa tidak menuliskan angka
yang ada seperti dibaris kelima? Hal ini dikarenakan bisa jadi ada pengolahan
dari angka tersebut yang mengubah nilainya. Jadi kita harus mengambilnya dari
kelas tempat diolahnya angka tersebut, dan bukan angka aslinya sebelum
dilakukan pengolahan.
Oh, dan hasil running seperti yang
tercantum :
Kode Selengkapnya Seperti ini :
//OlahAngka.java
public
class OlahAngka {
private int angka;
public int getAngka() {
return angka;
}
public void setAngka(int angka) {
this.angka = angka;
}
public boolean isGenap() {
if (this.angka % 2 == 0) {
return true;
} else {
return false;
}
}
public boolean isPrima() {
int
status_nol = 0;
for
(int i = 1; i <= this.angka; i++) {
if (this.angka % i == 0) {
status_nol++; } }
if (status_nol == 2) {
return true; }
else return false } }
//Main.java
import
java.util.Scanner;
/**
*
* @author Arby
*/
public
class Main {
public static void main(String[] args) {
// TODO code application logic here
OlahAngka oa = new OlahAngka();
Scanner s = new Scanner(System.in);
System.out.println("Masukkan angka
yang ingin di-cek : ");
int angka = s.nextInt();
oa.setAngka(angka);
if
(oa.isGenap()&&oa.isPrima()){
System.out.println("Angka
"+oa.getAngka()+" adalah bilangan genap prima");
}
else if
(!oa.isGenap()&&oa.isPrima()){
System.out.println("Angka
"+oa.getAngka()+" adalah bilangan ganjil prima");
}
else if
(oa.isGenap()&&!oa.isPrima()){
System.out.println("Angka
"+oa.getAngka()+" adalah bilangan genap");
}
else if
(!oa.isGenap()&&!oa.isPrima()){
System.out.println("Angka
"+oa.getAngka()+" adalah bilangan ganjil");
Bahasa prosedural mengatur program
dalam mode barisan linier yang bekerja dari atas ke bawah. Dengan kata lain,
program adalah kumpulan dari tahapan yang dijalankan setelah yang lain
berjalan. Programming tipe ini bekerja dengan baik untuk
program kecil yang berisi code relative sedikit, tetapi pada saat program
menjadi besar, mereka cenderung susah untuk di-manage dan di-debug. Dalam
usaha untuk me-manage program, struktur programming diperkenalkan
cara untuk mem-break down code-code tersebut melalui functions dan
procedures.
Ini adalah sebuah langkah perbaikan,
namun pada saat program dijalankan dalam sebuah fungsi bisnis yang kompleks dan
berinteraksi dengan sistem lain, maka kelemahan dari struktur metodologi
programming muncul kepermukaan meliputi:
Program menjadi lebih susah untuk
dimaintain. Fungsi yang tersedia, susah untuk diubah tanpa harus mempengaruhi
fungsi sistem secara keseluruhan.
Programming tidak baik untuk team
development. Programmers harus mengetahui setiap aspek bagaimana program itu
bekerja dan tidak menyebabkan terisolasi usaha mereka atas aspek yang lain dari
sistem.
Butuh usaha yang keras untuk
menterjemahkan Business Modelsdalam programming models.
Mungkin dapat bekerja dengan baik
pada saat terisolasi tapi tidak pada saat terintegrasi dengan sistem lain.
Istilah-istilah pada OOP antara lain
:
- Kelas (Class)
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 (Object)
Membungkus data dan fungsi bersama
menjadi suatu unit dalam sebuah program komputer, objekmerupakan dasar
dari modularitas dalam sebuah program komputer berorientasi objek.
- Abtraksi (Abstraction)
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 (Encapsulation)
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.
- Polimorfisme (Polymorphism)
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 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.
- Inheritas (inheritance)
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.)
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 administrasi. Jadi untuk
menyelesaikan suatu masalah dengan kolaborasi antar objek-objek yang ada karena
setiap objek memiliki deskripsi tugasnya sendiri.
Pemrograman Berorientasi Objek
(Object Oriented Programming) merupakan teknik membuat suatu program
berdasarkan objek. Pengembangan program OOP dapat dilakukan dengan mudah karena
dapat mengurangi duplikasi kode dan mengurangi kesalahan program.
Program Java dapat dibedakan menjadi
dua jenis :
- Applet, adalah program yang dibuat
dengan Java, dapat diletakkan pada web server dan di akses melalui web browser.
- Aplikasi, adalah program yang
dibuat dengan Java yang bersifat umum dan dapat dijalankan secara langsung.
Versi Java yang telah dirilis oleh
Sun Microsystems atau yang lebih dikenal dengan J2SDK (Java 2 System
Development Kit) antara lain:
1. J2ME (Java Micro Edition)
2. J2SE ( Java Standard Edition)
3. J2EE (Java 2 Entrprise Edition)
dimana urutan dari yang tertinggi adalah J2EE, J2SE, J2ME
2. J2SE ( Java Standard Edition)
3. J2EE (Java 2 Entrprise Edition)
dimana urutan dari yang tertinggi adalah J2EE, J2SE, J2ME
Selain J2SDK ada pengembangan yang lain
tergolong sebagai IDE (Integrated Development Environment), contohnya adalah
Semantic Cafe, Borland Jbuilder.
Untuk mendownload software Java
Development Kit (JDK)
- masuk ke dalam situshttp://java.sun.com/javase/downloads/index.jsp
- pilih paket JDK versi terbaru, klik tombol Download
Pada OOP ada dua istilah yang sering
digunakan yaitu class dan objek.
Class berisi kumpulan dari
objek-objek, sedangkan objek merupakan sebuah bentuk model yang tergantung dari
cara pandang terhadap objek yang dimaksud.
Untuk lebih memudahkan pemahaman
tentang class dan objek, sebagai contoh: sebuah class Kereta api mempunyai
objek antara lain gerbong, rel, rem, tempat duduk dan yang lainnya. Setiap
objek memiliki atribut dan metode. Atribut adalah segala sesuatu yang
berhubungan dengan karakteristik dari objek misalnya warna, bentuk atau
fasilitas dari Kereta Api tersebut. Sedangkan Metode dari Kereta Api tersebut
adalah kecepatan sehingga dapat berjalan dengan cepat di tengah kemacetan. Jadi
metode merupakan fungsi atau segala sesuatu yang dapat dilakukan Kereta Api
sebagai objek.
contoh :
public class KrtApi {
int gerbong;
String fasilitas;
}
int gerbong;
String fasilitas;
}
public class KeretaApi {
public static void main(String[] args)
{
// membuat object
KrtApi kereta=new KrtApi();
// memanggil atribut dan memberi nilai
kereta.gerbong= 4;
kereta.fasilitas= “AC” ;
System.out.println(“Jumlah Gerbong:”+ kereta.gerbong);
System.out.println(“Fasilitas :”+ kereta.fasilitas);
}
}
public static void main(String[] args)
{
// membuat object
KrtApi kereta=new KrtApi();
// memanggil atribut dan memberi nilai
kereta.gerbong= 4;
kereta.fasilitas= “AC” ;
System.out.println(“Jumlah Gerbong:”+ kereta.gerbong);
System.out.println(“Fasilitas :”+ kereta.fasilitas);
}
}
Karakteristik Pemrograman
Berorientasi Objek
1. Abstraction
Yaitu kumpulan objek yang saling berinteraksi.
2. Enkapsulasi
Yaitu menyembunyikan suatu proses dalam sistem untuk menghindari interferensi dan
menyederhanakan penggunaan sistem itu sendiri
3. Inheritance (Pewarisan)
Suatu class dapat mewariskan atribut dan metode kepada class lain.
4. Polymorphism
Suatu objek dapat memiliki berbagai bentuk sebagai objek dari classnya sendiri.
1. Abstraction
Yaitu kumpulan objek yang saling berinteraksi.
2. Enkapsulasi
Yaitu menyembunyikan suatu proses dalam sistem untuk menghindari interferensi dan
menyederhanakan penggunaan sistem itu sendiri
3. Inheritance (Pewarisan)
Suatu class dapat mewariskan atribut dan metode kepada class lain.
4. Polymorphism
Suatu objek dapat memiliki berbagai bentuk sebagai objek dari classnya sendiri.
Contoh Program Inheritance (Pewarisan)
public class KeretaEkonomi extends
KeretaApi {
public void setTarif(int tarif) {
System.out.println(“Tarif :”+ tarif);
}
}
System.out.println(“Tarif :”+ tarif);
}
}
public class KeretaEkonomiBeraksi {
public static void main(String[] args) {
public static void main(String[] args) {
KeretaEkonomi kereta = new
KeretaEkonomi();
// Memanggil method di object
System.out.println(“Tarif Kereta Ekonomi
jakarta – Bogor”);
kereta.setTarif(2500);
}
}
kereta.setTarif(2500);
}
}
contoh praktikum
TUGAS OOP II
MAIN CLASS
import java.io.DataInputStream;
public class coba {
public static void main(String[] args) throws Exception {
String[]nmbrg = new String[50];
int[]jum = new int[100];
int[]hrg = new int[100];
DataInputStream karakter = new DataInputStream(System.in);
System.out.print("Masukan Bulan Penjualan : ");
String bulan=karakter.readLine();
System.out.print("Masukan jumlah data : ");
String jml=karakter.readLine();
int data = Integer.valueOf(jml).intValue();
for(int i=0;i<data;i++) {
System.out.print("Nama Barang
Ke-"+(i+1)+" = ");
String nm=karakter.readLine();
nmbrg[i]=nm;
System.out.print("Jumlah :
");
String jlh=karakter.readLine();
int jumlah =
Integer.valueOf(jlh).intValue();
jum[i]=jumlah;
System.out.print("Harga Rp.:
");
String har=karakter.readLine();
int harga =
Integer.valueOf(har).intValue();
hrg[i]=harga; }
int[]
jumlah = null;
int[]
total = null;
String
[] barang = null;
int []
harga = null;
kelas1 hapsah = new kelas1();
hapsah.namaBulan(bulan);
kelas2 hapsah1 = new kelas2 (barang, harga, jumlah, total);
hapsah1.tampilBarang(data, barang, harga, jumlah, total);
}
}
KELAS BARU
public class kelas1 ;
public
void namaBulan(String bulan1) {
String
bulan = null;
System.out.println("LAPORAN
PENJUALAN PT. HAPSAH");
System.out.println("BULAN
: "+bulan);
}
}
KELAS BARU YANG KE2
public class kelas2 {
public kelas2 (String[] barang, int[] harga, int[] jumlah,
int[] total) {}
String[]nmbrg = new String[50];
int[]jum = new int[100];
int[]hrg = new int[100];
void tampilBarang(int data, String [] barang, int [] harga,
int [] jumlah, int [] total){
System.out.println("================================================");
System.out.println("NO
NAMA BARANG JUMLAH HARGA
TOTAL ");
System.out.println("================================================");
int tpenj=0;
for(int i=0;i<data;i++) {
System.out.println((i+1)+" "+nmbrg[i]+" "+jum[i]+" "+hrg[i]+" "+(jum[i]*hrg[i]));
tpenj = tpenj + (jum[i]*hrg[i]); }
System.out.println("================================================");
System.out.println("TOTAL BARANG : "+data);
System.out.println("TOTAL PENJUALAN : "+tpenj); }
}
0 komentar:
Posting Komentar