SIDE

Selasa, 08 September 2009

TUGAS BP 2 TENTANG OOP

OBJECT ORIENTED PROGRAMMING

A. PENDAHULUAN

Sejarah OOP

Object-Oriented Programming (OOP) adalah sebuah pendekatan untuk pengembangan / development suatu software dimana dalam struktur software tersebut didasarkan kepada interaksi object dalam penyelesaian suatu proses/tugas. Interaksi tersebut mengambil form dari pesan-pesan dan mengirimkannya kembali antar object tersebut. Object akan merespon pesan tersebut menjadi sebuah tindakan /action atau metode. Jika kita mencoba melihat bagaimana tugas disekitar kita diselesaikan, kita akan mengetahui bahwa kita berinteraksi dalam sebuah object-oriented world. Jika akan bepergian kita pasti berinteraksi dengan object mobil. Sebagai sebuah object, mobil berisi object-object lain yang berinteraksi untuk melakukan tugasnya membawa kita.

Object-oriented programs terdiri dari objects yang berinteraksi satu sama lainnya untuk menyelesaikan sebuah tugas. Seperti dunia nyata, users dari software programs dilibatkan dari logika proses untuk menyelesaikan tugas. Contoh, ketika kamu mencetak sebuah halaman diword processor, kamu berarti melakukan inisialisasi tindakan dengan mengklik tombol printer. Kemudian kamu hanya menunggu respon apakah job tersebut sukses atau gagal, sedangkan proses terjadi internal tanpa kita ketahui. Tentunya setelah kamu menekan tombol printer, maka secara simultan object tombol tersebut berinteraksi dengan object printer untuk menyelesaikan job tersebut.

Konsep OOP dimulai pertengahan 1960-an dengan sebuah bahasa program SIMULA kemudian dilanjutkan di era 70-an dengan SMALLTALK. Meskipun developer software tidak secara intensif mengembangkan OOP, tetapi metodologi object-oriented tetap digunakan.

Pada pertengahan 80-an, bahasa OOP seperti C++ dan Eifle menjadi popular diantara programmer computer. Popularitas OOP berlanjut pada tahun 90-an, banyak pengembang software menggunakan konsep OOP seperti Java dll. Di tahun 2002, versi terakhir dari Visual Studio, Microsoft memperkenalkan bahasa OOP baru yaitu C# (dibaca C-sharp) serta upgrade Visual Basic, dan ini merupakan sebuah bahasa OOP sesungguhnya.


Mengapa menggunakan OOP?

Mengapa OOP dibangun dalam sebuah paradigma yang luas untuk menyelesaikan masalah bisnis? 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:

*Programs 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 Models dalam programming models.

*Mungkin dapat bekerja dengan baik pada saat terisolasi tapi tidak pada saat terintegrasi dengan sistem lain.

Sebagai hasilnya, banyak developer software beralih ke object-oriented methodologies dan programming languages untuk memecahkan masalah ini. Keuntungan dari object-oriented methodologies adalah sebagai berikut:

*Langkah ini merupakan sebuah transisi intuitive dari business analysis models menuju software implementation models.

*Kemampuan untuk memaintain dan menerapkan perubahan dalam program ini lebih efisien dan dengan cepat.

*Kemampuan untuk lebih efektif menciptakan sistem software dengan menggunakan sebuah team proses, yang mengijinkan seorang spesialis untuk bekerja hanya pada bagiannya saja.

*Kemampuan untuk menggunakan kembali komponen kode dalam suatu program dan membeli komponen dari developer lain untuk meningkatkan fungsi program mereka dengan usaha minimal.

*Integration lebih baik dengan pasangan bebas dalam distributed computing systems.

*Meningkatkan integration dengan modern operating systems.

*Kemampuan untuk menciptakan GUI yang lebih intuitive bagi users.


Karakteristik OOP

Dalam section ini, kita akan melihat beberapa konsep dasar dan term-term yang umum untuk seluruh bahasa OOP.

1. Objects

Jika kita pikir maka kita sekarang hidup dalam sebuah dunia object-oriented. Kamu adalah object. Kamu berinteraksi dengan object lain. Untuk menulis tugas ini kami berinteraksi dengan object komputer. Ketika saya bangun pagi, saya merespon pesan suara object alarm jam. Faktanya, kamu adalah object dengan data-data seperti tinggi dan warna rambut. Kamu mempunyai metode-metode yang kamu akan lakukan, seperti makan dan berjalan.

Jadi, apa itu objects? Dalam term OOP, object adalah sebuah structure yang menggabungkan data dan prosedur untuk bekerja bersama-sama. Contoh, jika kamu tertarik dalam pelacakan data yang dihubungkan dengan produk, kamu akan menciptakan sebuah object produk yang bertanggung jawab untuk me-maintenance dan bekerja dengan data yang bersinggungan dengan produk. Jika kamu ingin kemampuan mencetak dalam aplikasi kamu, kamu harus bekerja dengan sebuah object printer yang bertanggung jawab untuk data serta metode yang digunakan untuk berinteraksi dengan printermu.


-- > Abstraction

Ketika kamu berinteraksi dengan object-object di dunia ini, kamu sering hanya konsentrasi dengan sebuah bagian dari propertiesnya. Tanpa kemampuan untuk mensarikan/abstract atau menyaring untuk dibuang properties object yang asing / tidak ada hubungannya, maka kamu akan menemukan kesulitan untuk memproses informasi yang kebanyakan membombarding kamu. Sebagai hasil abstraction, ketika 2 orang berbeda berinteraksi dengan object yang sama, mereka sering setuju dengan bagian yang berbeda atas atribut. Ketika kami mengendarai mobil, kami perlu tahu kecepatan serta tujuan yang akan dicapai.

Karena mobil itu otomatis, maka kami tidak perlu tahu berapa RPMs dari mesinnya, jadi kami akan membuang informasi ini. Tapi informasi ini sangat diperlukan oleh mekanik atau pembalap.

Ketika membangun objects dalam aplikasi OOP, adalah penting untuk menggabungkan konsep abstraction ini. Jika kamu membangun aplikasi shipping, kamu harus membangun object produk dengan atribut seperti ukuran dan berat. Warna adalah contoh informasi yang tidak ada hubungannya dan harus dibuang. Tetapi ketika kamu membangun order-entry application, warna menjadi penting dan harus termasuk atribut object produk.


--> Encapsulation

Ciri penting lainnya dari OOP adalah encapsulation. Encapsulation adalah sebuah proses dimana tidak ada akses langsung ke data yang diberikan, bahkan hidden. Jika kamu ingin mendapat data, kamu harus berinteraksi dengan object yang bertanggung jawab atas dara tersebut. Dalam contoh inventory, jika kita ingin melihat atau mengupdate informasi atas produk, kita seharusnya bekerja melalui object produk. Untuk membaca data, kita mengirimkan pesan ke object produk, kemudian object produk akan membaca pesan dan mengirim pesan balik ke kamu.

Object produk mendefinisikan bahwa operasi dapat dilakukan pada data produk. Jika kamu mengirim pesan untuk memodifikasi data dan jika object produk menentukan bahwa permintaan itu valid maka permintaan tersebut akan dilakukan dan akan mengirimkan pesan balik bersama hasilnya.

Pikirkan mengenai Human Resource Department (HRD), yang meng-encapsulasi informasi mengenai karyawan. Mereka menentukan bagaimana data ini dapat digunakan da dimanipulasi. Setiap permintaan data karyawan atau permintaan untuk mengupdate datanya harus dijalankan melalui mereka. Contoh lain, network security. Setiap permintaan informasi security atau perubahan kebijakan security harus dilakukan melalui network administrator. Data security di-encapsulate dari user network.

Dengan melakukan encapsulasi pada data, berarti kamu membuat data dari sistemmu lebih secure dan terpercaya. Karena kamu mengetahui bagaimana data diakses dan operasi apa yang sedang berjalan pada data. Hal ini membuat maintenance program menjadi lebih mudah. Kamu juga dapat memodifikasi metode yang digunakan untuk kerja pada data, dan jika kamu tidak merubah bagaimana metode itu diminta dan tipe response dikirim balik, maka kamu tidak dapat merubah object lain dengan menggunakan metode tersebut. Pikirkan ketika kamu mengirim surat melalui pos. Kamu membuat permintaan ke kantor pos agar mengantar surat, dan bagaimana kantor pos menyelesaikannya kita tidak perlu tahu. Jika ada perubahan rute yang digunakan, maka hal itu tidak mempengaruhi keinginan untuk kirim surat lewat kantor pos. Kamu tidak perlu tahu prosedur internal yang digunakan oleh kantor pos untuk mengantar surat.


--> Polymorphism

Polymorphisms adalah kemampuan 2 buah object yang berbeda untuk merespon pesan permintaan yang sama dalam suatu cara yang unik. Contoh, saya melatih anjing saya dengan perintah untuk menggonggong dan juga saya melatih burung untuk merespon perintah saya untuk berkicau. Saya lakukan latihan untuk merespon kepada mereka dengan perintah lisan. Melalui polymorphism saya tahu bahwa anjing dan burung akan merespon dengan gonggongan atau kicauan.

Bagaimana hal ini berhubungan dengan OOP? Kamu dapat membuat objects yang dapat merespon pesan yang sama dalam implementasi yang unik. Contohnya, kamu dapat mengirim pesan print ke object printer yang akan mencetak pada printer, dan kamu juga dapat mengirim pesan yang sama ke object screen yang akan menuliskan pada screen monitor. Dalam OOP, kamu menerapkan tipe polymorphism melalui proses yang disebut overloading. Kamu dapat mengimplementasikan metode yang berbeda pada sebuah object yang mempunyai nama yang sama.


--> Inheritance

Banyak objects diklasifikasikan menurut hirarki. Contoh, kamu dapat mengklasifikasikan sebuah mobil yang mempunyai karakteristik umumnya mobil, seperti mempunyai ban, mesin, serta body. Keturunan berikutnya diklasifikasikan dengan atribut umum seperti ukuran, jumlah roda, isi silinder dll atau mengklasifikasikan mereka atas dasar daya angkutnya. Contoh, ada kendaraan komersial atau kendaraan pribadi, ada truk atau mobil penumpang. Kamu menggunakan inheritance dalam OOP untuk mengklasifikasikan objects dalam program sesuai karakteristik umum dan fungsinya. Hal ini akan membuat pekerjaan bersama object lebih mudah dan lebih intuitif. Hal ini juga membuat programming lebih mudah karena memungkinkan kita untuk mengkombinasikan karakteristik umum kedalam object parent dan mewariskan karakteristik ini ke child object.


--> Aggregation

Aggregation adalah kondisi ketika object berisi gabungan dari object-object yang berbeda dan bekerja bersama. Contoh mesin pemotong rumput terdiri dari object roda, objects mesin, object pisau dll. Object mesinpun merupakan gabungan dari berbagai object. Kemampuan untuk menggunakan aggregation dalam OOP adalah satu feature yang powerful yang memungkinkan model menjadi akurat.


2. Class

Java bersifat full objek, yang mengadopsi dari bahasa-bahasa pendahulunya, salah satunya adalah C++. Namun, setiap bahasa pemrograman memiliki karakteristik masing-masing. Di java terdapat istilah 'everything is an object'.

Sebelum memulai, sudahkah anda mengerti cara menulis, kompilasi dan mengeksekusi program java? Jika belum, anda dapat melihat tutorial yang membahas cara menampilkan tulisan 'Hello World' di website http://hmif.org.

Pengertian class di dalam pemrograman berorientasi objek dapat diartikan sebagai design atau cetakan untuk membuat berbagai objek. Objek sendiri dapat dikatakan sebagai instance atau perwujudan dari class.

Kita ambil contoh dalam kehidupan sehari-hari semisal class mobil, objek dari classclass mahasiswa, objek dari class mahasiswa dapat berupa nim, nama, ipk. Sebelum memasuki pembahasan tentang class anda harus memahami bahwa, class yang membentuk sejumlah objek bukan sebaliknya. mobil adalah merk, warna, tahun produksi. Contoh lain lagi adalah

Di dalam Java untuk membuat sebuah class harus memiliki ketentuan sebagai berikut :

class namaClass {

property;

property;

metode1( ) { }

metodeN( ) { }

}

Sebelumnya kita telah membuat class pada tutorial menampilkan tulisan Hello World di layar console, yang mendeklarasikan method main sebagai awal eksekusi. Method main ini adalah suatu keharusan jika program kita ingin dieksekusi.

Siapkan diri anda untuk memasuki dunia pemrograman berorientasi objek, terlebih Java adalah bahasa pemrograman yang full objek. Kita akan membuat sebuah class mahasiswa yang memiliki property berupa nama, nim, alamat. Dibawah ini adalah contoh untuk membuat class mahasiswa tersebut :

class Mahasiswa {

String nama; // property nama dengan tipe data String

String nim; // property nim dengan tipe data String

String alamat; // property alamat dengan tipe data String

}

class AksesClass {

public static void main(String[] args) { // awal eksekusi (method main)

Mahasiswa mhs = new Mahasiswa(); // membuat objek dari class Mahasiswa

mhs.nama = “aku”; // mengisikan property nama

mhs.nim = “2004470099”; // mengisikan property nim

mhs.alamat = “Bekasi”; // mengisikan property alamat

System.out.println(“Nama Mahasiswa : “ + mhs.nama); // menampilkan nama

System.out.println(“Nim Mahasiswa : “ + mhs.nim); // menampilkan nim

System.out.println(“Alamat Mahasiswa : “ + mhs.alamat); // menampilkan alamat

}

}

Penjelasan program :

Kita membuat class Mahasiswa, untuk membuat sebuah class harus diawali dengan kata kunci class kemudian diikuti dengan nama class. Di dalam class Mahasiswa kita mendeklarasikan tiga buah property atau variabel instan yaitu nama, nim dan alamat bertipe data String.

Selanjutnya kita mendeklarasikan class yang bernama AksesClass yang mendeklarasikan method main sebagai awal eksekusi. Di dalam class AksesClass kita membuat instance atau objek dengan menggunakan kata kunci new

// mhs adalah variabel yg merujuk ke class Mahasiswa, dengan variabel ini kita // dapatmengakses property yang terdapat di class Mahasiswa

Mahasiswa mhs = new Mahasiswa();

// dengan variabel mhs kita dapat mengkakses property

// nama, melalui operator . (titik) kita mengisikan nilainya

mhs.nama = “aku”;

// menampilkan nama mahasiswa, dengan cara mhs.nama

System.out.println(“Nama Mahasiswa : “ + mhs.nama);

Method

Method dapat diartikan sebagai function ataupun procedure atau bisa juga diartikan sebagai block kode yang akan melakukan fungsi-fungsi khusus. Pendeklarasian method di Java adalah sebagai berikut :

Tipe data primitif / Tipe data class namaMethod(tanpa parameter / parameter) {

Fungsifungsi;

}

Di materi ini juga akan diperkenalkan kata kunci return. Berikut ini contoh program dari sebuah class yang memiliki method.

class Mahasiswa {

int usia;

String nama;

void setNilai(String namaMhs, int usiaMhs) {

nama = namaMhs;

usia = usiaMhs;

}

String cetakData() {

return "Nama : " + nama + " Usia : " + usia; }

}

class AksesClass {

public static void main(String[] args) {

Mahasiswa mhs = new Mahasiswa();

mhs.setNilai("aku", 23);

System.out.println(mhs.cetakData());

}

}

Penjelasan program :

Di dalam class Mahasiswa kita mendeklarasikan method setNilai yang memiliki dua parameter untuk mengisikan nilai property nama dan usia. Di dalam class Mahasiswamethod yang bernama cetakDataString yang mengembalikan nilai maka kita harus menggunakan kata kunci return. kita juga mendeklarasikan sebuah untuk menampilkan nilai dari property nama dan usia, karena bertipe data

Lalu selanjutnya di dalam class AksesClass kita membuat instance atau objek dari class Mahasiswa. Selanjutnya kita mengisikan metode setNilai dengan tipe data String dan integer.

Overloading Method

Yang dimaksud dengan Overloading Method adalah kita boleh mendeklarasikan nama method yang sama di dalam sebuah class, namun harus diperhatikan walaupun nama method boleh sama, tetapi daftar parameter yang dilewatkan haruslah berbeda.

Contoh dibawah ini akan memberikan gambaran tentang Overloading Method :

class Manusia {

String nama;

int usia;

void cetak(String namaManusia) { // method yang akan di-overload

nama = namaManusia;

System.out.println(“Nama : “ + nama);

}

void cetak(int usiaManusia) { // overloading method cetak

usia = usiaManusia;

System.out.println(“Usia : “ + usiaManusia);

}

}

Konstruktor

Pengertian dari konstruktor adalah fungsi yang secara otomatis dieksekusi setiap kali melakukan instance (membuat objek dari suatu class). Jika anda pernah mencoba C++, maka dikenal pula dengan destructor, namun di Java tidak mengenal istilah destructor, tapi jika diperlukan anda bisa menggunakan fungsi yang terdapat di Java sebagai pengganti destructor. Konstruktor sangat mirip dengan method, namun ada hal-hal yang harus diperhatikan dalam mendeklarasikan konstruktor, yaitu :

- nama konstruktor harus sama dengan nama class

- tidak boleh mengembalikan nilai, (void) sekalipun

- untuk melakukan overload, syaratnya sama dengan overload method

Program di bawah ini akan memberikan gambaran pendeklarasian konstruktor :

class Manusia {

int usia; // property usia bertipe data int

String nama; // property nama bertipe data String

Manusia(int usiaManusia) { // konstruktor berparameter int

usia = usiaManusia;

System.out.println(“Usia : “ + usia);

}

Manusia(String namaManusia) { // overload konstruktor

nama = namaManusia;

System.out.println(“Nama : “ + nama);

}

}

class AksesManusia {

public static void main(String[] args) {

Manusia mns = new Manusia(“Aku”);

Manusia mns2 = new Manusia(20);

}

}

Kata kunci this, static

Kata kunci this digunakan untuk merujuk ke property yang terdapat di dalam sebuah class.

class Manusia {

int usia;

String nama;

// nama property di parameter, sama dengan nama property di class Manusia

void setManusia(String nama, int usia) {

this.usia = usia; // menggunakan kata kunci this

this.nama = nama; // jika tanpa this maka akan terjadi kesalahan

}

void cetakManusia() {

System.out.println(“Nama : “ + nama + “ Usia : “ + usia);

}

}

class AksesManusia {

public static void main(String[] args) {

Manusia mns = new Manusia()

mns.setManusia(“aku”, 22);

mns.cetakManusia();

}

}

Kata kunci static adalah untuk membuat variabel atau property, method, block kode, berlaku tidak hanya terbatas pada satu objek saja, namun pada seluruh objek yang kita buat dari sebuah class.

Jika method ataupun property di deklarasikan dengan sifat static, maka kita dapat menggunakannya tanpa harus terlebih dahulu membuat instance dari class bersangkutan. Itulah kenapa kita bisa memanggil method main tanpa harus membuat instance dari class yang mendeklarasikannya. Contoh di bawah ini akan memberikan gambaran tentang pengunaan kata kunci static.

class Manusia;

static int usia = 10;

static String nama = “aku”;

}

class AksesManusia {

public static void main(String[] args) {

Manusia a = new Manusia();

Manusia b = new Manusia();

System.out.println(“Nama : “ + a.nama);

System.out.println(“Usia : “ + Manusia.usia);

b.usia = 20;

b.nama = “kamu”;

System.out.println(“Nama : “ + b.nama);

System.out.println(“Usia : “ + a.usia);

}

}

Kata kunci Akses (public, private, protected, no modifier)

Access Levels

Modifier Class Package Subclass Luar Class

public Y Y Y Y

protected Y Y Y N

no modifier Y Y N N

private Y N N N

Demikianlah, sedikit pembahasan tentang Object Oriented Programming di Java. Walaupun tidak membahas secara mendalam, namun cukup mengantarkan anda memahami sedikit tentang OOP. Anda dapat mempelajari lebih jauh melalui tutorial dari situs java.

Membutuhkan waktu yang tidak sedikit untuk memahami konsep dasar Pemrograman Berorientasi Objek. Namun, diharapkan anda tidak menyerah begitu saja. Sangat banyak kegunaannya jika anda mengerti OOP, karena bahasa-bahasa pemrograman yang banyak digunakan di Industri Software hampir semuanya berorientasi Objek.


**TUGAS oop yang dipapan :


#include "iostream.h"
class persegi_panjang
{
private:
int panjang, lebar, luas;

public:
void input()
{
cout<<"masukkan panjang=";
cin>>panjang;
cout<<"masukkan lebar=";
cin>>lebar;
}
void hitung()
{
luas=panjang*lebar;
}
void output()
{
cout<<"Luas="< }
};
void main()
{
persegi_panjang O;
O.input();
O.hitung();
O.output();
}

0 komentar:

Posting Komentar

 
© 2011 PENGETAHUAN BUKAN BATASAN IMAJINASI | Except as noted, this content is licensed under Creative Commons Attribution 2.5.
For details and restrictions, see the Content License | Recode by Ardhiansyam | Based on Android Developers Blog