• Tidak ada hasil yang ditemukan

BAB II PEMBAHASAN 2.1. Pengertian Object Oriented Programing ( OOP ) - BAB II petruk.pdf

N/A
N/A
Protected

Academic year: 2018

Membagikan "BAB II PEMBAHASAN 2.1. Pengertian Object Oriented Programing ( OOP ) - BAB II petruk.pdf"

Copied!
21
0
0

Teks penuh

(1)

7

PEMBAHASAN

2.1. Pengertian Object Oriented Programing ( OOP )

Object Oriented Programming (OOP) atau dalam bahasa Indonesia disebut Pemrograman berorientasi objek adalah suatu metode pemrograman yang berbasiskan pada objek. secara singkat pengertian dari OOP adalah koleksi objek yang saling berinteraksi dan saling memberikan informasi satu dengan yang lainnya atau Setiap objek dapat menerima pesan, memproses data, dan mengirim pesan ke objek lainnya.

(2)

2.1.1 Encapsulation (pembungkusan) - Variabel dan method dalam suatu obyek dibungkus agar terlindungi Untuk mengakses, variabel dan method yang sudah dibungkus tadi perlu interface Setelah variabel dan method dibungkus, hak akses terhadapnya bisa ditentukan. Konsep pembungkusan ini pada dasarnya merupakan perluasan dari tipe data struktur

2.1.2 Inheritance (pewarisan) - Sebuah class bisa mewariskan atribut dan method-nya ke class yang lain Class yang mewarisi disebut superclass Class yang diberi warisan disebut subclass Sebuah subclass bisa mewariskan atau berlaku sebagai superclass bagi class yang lain => disebut multilevel inheritance.

Keuntungan Penggunaan Pewarisan :

Subclass memiliki atribut dan method yang spesifik yang membedakannya dengan superclass, meskipun keduanya mirip (dalam hal kesamaan atribut dan method).

(3)

reuse. Class-class yang didefinisikan dengan atribut dan method yang bersifat umum yang berlaku baik pada superclass maupun subclass disebut dengan abstract class.

2.1.3 Polymorphism”polimorfisme”(perbedaan bentuk) - Polimorfisme artinya penyamaran dimana suatu bentuk dapat memiliki lebih dari satu bentuk.

2.2. Perbedaan Object Oriented Programming (OOP) dengan Procedural Programmming

1. Pemrograman Prosedural Fungsi dan data menjadi satu kesatuan yang disebut obyek sedangkan Pemrograman Prosedural Diselesaikan dalam bentuk prosedur atau fungsi.

2. Pemrograman Prosedural Obyek-obyek dalam OOP bersifat aktif sedangkan Pemrograman Prosedural Program merupakan urut-urutan Instruksi.

(4)

4. Pemrograman Prosedural Fungsi dan prosedur digunakan untuk memanipulasi data Pemrograman Prosedural Sedangkan data sendiri bersifat pasif Kesimpulan Perbedaan antara prosedural dan OOP :

Prosedural : Fokus pada bagaimana cara komputer

menangani masalah.

OOP : Fokus pada masalah yang ditangani dengan

menggunakan komputer.

Dengan OOP, kita dapat mengimplementasikan objekt data yang tidak hanya memiliki ciri khas (attribut), melainkan juga memiliki metode untuk memanipulasi attribut tersebut. Singkatnya, OOP memiliki keunggulan dari konsep pemrograman terstruktur, selain itu juga memiliki kemampuan untuk mengimplementasikan objek dalam kehidupan nyata.

2.3. Konsep dasar dari Pemrograman Berorientasi Objek

Pemrograman orientasi-objek menekankan konsep berikut:

(5)

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.

(6)

2.3.3. 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 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.

(7)

berbeda dalam pemanggilan yang sama. Hal ini berlawanan dengan bahasa fungsional yang mencapai polimorfisme melalui penggunaan fungsi kelas-pertama. 2.3.5. Inheritas - 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.

(8)

untuk menyelesaikan suatu masalah dengan kolaborasi antar objek-objek yang ada karena setiap objek memiliki deskripsi tugasnya sendiri.

2.4. Pemrograman Berorientasi Objek (OOP)

Sebuah sistem yang dibangun berdasarkan metode berorientasi objek adalah sebuah sistem yang komponennya di-enkapsulasi menjadi kelompok data dan fungsi, yang dapat mewarisi atribut dan sifat dari komponen lainnya, dan komponen-komponen tersebut saling berinteraksi satu sama lain.

Object adalah abstraksi dari sesuatu yang mewakili sesuatu pada dunia nyata. Pada pemrograman berorientasi objek, Objek adalah entitas pada saat run time. Objek mempunyai siklus hidup : diciptakan, dimanipulasi, dihancurkan. Sebuah objek dapat diacu lewat namanya atau lewat referensinya (addressnya).

Class adalah kumpulan objek yang mempunyai atribut yang sama. Clas adalah definisi statik dari entitas.

Entitas : Entitas adalah salah satu dari berikut ini:

(9)

Tujuh langkah untuk mendapatkan hasil (SW) yang

memuaskan[Meyer97]:

1. Object based modular structure, sistem dimodularisasi berdasarkan struktur objek

2. Data abstraction, objek harus dideskripsikan sebagai implementasi dari ADT

3. Automatic memory management, objek yang sudah tidak dibutuhkan lagi harus di-dealokasi oleh sistem pemroses bahasa tanpa perlu intervensi pemrogram

4. Classes, setiap type yang tidak sederhana adalah sebuah modul, setiap modul adalah type tingkat tinggi

5. Inheritance, sebuah Class dapat didefinisikan berdasarkan ekstensi atau restriksi dari kelas lain

6. Polymorphism and dynamic binding, entitas program harus dimungkinkan untuk mengacu kepada lebih dari satu kelas dan operasi harus dimungkinkan untuk lebih dari satu kelas

(10)

2.5. Keunggulan dan Kelemahan OOP

2.5.1. Pengembangan sistem dengan metoda OOP dapat meningkatkan :

1. Produktifitas

2. Kecepatan pengembangan 3. Kualitasperangkat lunak 4. Kemudahan pemeliharaan

2.5.2. Kelemahan dari struktur metodologi programming muncul kepermukaan meliputi:

1. Program menjadi lebih susah untuk di maintain.

2. Fungsi yang tersedia, susah untuk diubah tanpa harus mempengaruhi fungsi sistem secara keseluruhan.

3. Programming tidak baik untuk team development. Programmer harus mengetahui setiap aspek bagaimana program itu bekerja dan tidak menyebabkan terisolasi usaha mereka atas aspek yang lain dari sistem.

(11)

2.5.3. Keunggulan dari objek-oriented methodologies adalah sebagai berikut:

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

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.

(12)

2.6. Kelas (Class) dan Objek (Object)

2.6.1. Kelas (Class) - Kelas merupakan bentuk logik dimana seluruh bahasa berorientasi objek dibangun. Kelas mendefinisikan bentuk dan sifat/kelakuan/perilaku objek. Kelas adalah template atau prototype yang mendefinisikan type objek, sarana pengkapsulan kumpulan data-data dan method-method yang mengolah data-data tersebut, adalah cetakan objek, jadi objek harus merupakan instant suatu kelas. Sebuah kelas dapat melahirkan lebih dari satu instance.

(13)

Untuk menciptakan (menghidupkan) objek, diperlukankonstruktor. Untuk mematikan (menghancurkan) objek, diperlukan destructor Kelas mempunyai:

Atribut (data, konstanta, properti). Nilai atribut pada saat run time menyatakan “keadaan” (state) dari objek yang merupakan instans

dari kelas ybs. Beberapa bahasa pemrograman mendefinisikan atribut harus sebuah Kelas, atau beberapa bahasa memperbolehkan atribut dideklarasi sebagai kelas atau type dasar (numerik: integer/float, character, boolean)

(14)

dan “proses” apa yang akan dikerjakan ketika mehod

dieksekusi. Prekondisi dan Post kondisi dapat dituliskan sebagai asersi (pada beberapa bahasa), sedangkan proses dinyatakan dalam komentar. Parameter prosedur/fungsi dalam OOP selalu parameter input, tidak pernah ada parameter output atau parameter input/output:

 Fungsi dirancang untuk melahirkan sebuah

objek baru (range, hasil) dari objek input. Parameter fungsi selalu merupakan parameter input, karena fungsi akan memetakan semua objek input (domain) menjadi sebuah objek lain (range), tanpa mengganggu state dari objek input.

 Prosedur dirancang untuk mengubah state dari

(15)

makalah ini untuk mewakili atribut dan/atau method.

Deklarasi Kelas :

// Hubungan dengan kelas lain Class X // Nama Kelas

// feature: Atribut

// feature: Method

// invarian kelas End Class X;

Simple Class : hanya mempunyai field Class Point

// atribut x,y : integer End class Point x

(16)

Klasifikasi Kelas :

Model program berorientasi objek yang termasuk paling “lama” dan

mendasar adalah model MVC dari Smaltalk, dimana setiap aplikasi dipandang terdiri dari tiga jenis kelas :

Modeler adalah representasi dari domain persoalan yang akan diprogram. Viewer bertugas untuk menampilkan objek “domain”

sesuai dengan jenis objek ke antarmuka pengguna (misalnya di lingkungan GUI : layar/windows), sedangkan Controler bertugas untuk mengatur interaksi dan aliran data/pesan antara Modeler dan Viewer. Objek dilahirkan berdasarkan definisi kelas, dan ketika eksekusi program akan “hlang”. Jika objek harus dapat disimpan

secara permanen, maka modeler juga harus merepresentasipersistent objek(pada pemrograman prosedural menjadi arsip eksternal, external file)

 Klasifikasi kelas dari sudut pandang instansiasinya :

kelas “biasa”, instansnya adalah objek, siap dipakai semua

featurenya

kelas abstrak : instance bukan objek.

(17)

 Klasifikasi kelas dari sudut pandang Booch :

ADT : definisi type dan method

Mesin : punya state dan behavior, pasif Proses : objek aktif

 Klasifikasi kelas dari sudut pandang UML :

Boundary entity : objek-objek yang menjadi antarmuka interaksi.

Domain entity : objek

Controler : objek pengendali yang mengendalikan semua objek yang ada.

 Klasifikasi kelas dari sudut pandang Coadd:

Domain problem Interface

 Hubungan Antar Kelas Antara sebuah kelas dengan kelas yang lain

ada hubungan yaitu :

Client-Supplier atau inheritance. Hubungan Client-Supplier Pada hubungan Client-Suplier, sebuah kelas Client memakai kelas Supplier. Hubungannya adalah hubungan “kontrak”.

(18)

oleh Client, dan menjanjikan akan memenuhi “kontrak”, yaitu

memenuhi prekondisi yang ditentukan. Client wajib mentaati aturan (prekondisi) yang tertulis sebelum memakai services yang disediakan oleh Supplier.

Hubungan yang lebih simple, sederhana ini lebih disarankan untuk dipakai!

Definisi : Kelas A adalah Client dari kelas B dan B adalah Supplierdari Kelas A jika A mengandung definisi entitas e: B. Entitas adalah :

Atribut argumen formal dari rutin hasil evaluasi fungsi Hubungan Inheritance Padahubungan Inheritance, sebuah kelas turunan (descendant, heir, child,…) mewarisi kelas

leluhur (parent, …).

Karena mewarisi, maka “semua” atribut dan method kelas bapak akan “dibawa”, secara intrinsik menjadi bagian dari

kelas anak. Dalam beberapa keadaan, membawa secara intrinsik semua atribut dan method tidak dikehendaki. Maka pemroses bahasa menyediakan sarana untuk :

a) menambah feature baru,

b) mengubah atau menggantikan feature yang diwarisi , c) menghapus feature yang diwarisi,

(19)

Ini menimbulkan persoalan yang tidak sederhana. Karena penghapusan menimbulkan beberapa konsekuensi berbahaya, maka sedikit sekali metodologi/bahasa yang membolehkan penghapusan feature yang diwarisi.

Feature visibility dalam sebuah kelas Scope" dalam pemrograman procedural, yaitu :

a) Private, feature yang "visible" hanya untuk kelas dimana feature tersebut didefinisikan

b) Protected, feature yang "disembunyikan" terhadap kelas Client, tetapi "visible" untuk kelas turunan.

c) public, feature yang "visible", dapat dipakai oleh semua kelas lain (Client, turunan).

(20)

1) Private inheritance : semua feature yang diwarisi menjadi private dalam kelas anak, tanpa peduli visibility pada Parent. Pemakaiannya mendukung information hiding dan maintainability dari feauture yang diwarisi karena dengan cara ini, perubahan pada ancestor tidak mempengaruhi anak. Tetapi, penggunaannya harus hati-hati sebab menimbulkan nonconformity terhadap parent, sebab apa yang visible di parent : menyalahi subtyping, spesialisasi dan substitusi polimorfik.

2) Protected inheritance : semua feature yang mempunyai visibility protected pada parent, tetap protected pada Child, sedangkan yang public pada parents, menjadi protected pada Child.

3) Public inheritance : semua feature yang diwarisi mempunyai visibility yang sama dengan visibility pada parent (jika public maka tetap public; jika private tetap private; dst)

 Jenis inheritance :

(21)

merupakan simbol sebuah kelas, maka hubungan inheritance digambarkan sebagai berikut. Arti dari gambar tersebut: B mewarisi A. B adalah turunan dari A.

Multiple inheritance :sebuah kelas turunan mewarisi lebih dari satu kelas bapak (Join) Multiple inheriance menimbulkan beberapa persoalan : jika ternyata ada feature di kelas-kelas leluhur yang ternyata “konflik”. Konflik yang terjadi mungkin

adalah :

a) konflik nama

b) konflik “body” (untuk method) Tidak semua bahasa

mensupport repeated inheritance, tetapi menyediakan mekanisme lain untuk merealisasi konsep ini.

c) Repeated inheritance : sebuah kelas turunan mewarisi lebih dari satu kelas bapak, dan kelas bapak tersebut mempunyai leluhur yang sama.

2.7. Lingkup akses OOP :

1. Public : dapat diakses/dipakai kelas apapun

2. Friend : hanya kelas tertentu yang boleh mengakses 3. Private : hanya kelas yang bersangkutan yang boleh

memakai Penentuan lingkup akses terhadap feature merupakan bagian yang harus dirancang. Sebenarnya, dalam perancangan yang murni OO, sebaiknya “friend”

Referensi

Dokumen terkait

Kondisi SM Rimbang Baling sangat memprihatinkan saat ini, dan sangat disayangkan jika pada akhirnya, pemasalahan yang terjadi di kawasan konservasi menyebabkan

analyze and identify entrepreneur behaviour on business performance especially to Small Medium Enterprise (SMEs) banana processing in South Garut.. The study was

"roses pengeluaran sputum dari paruparu, bronkus dan trakea yang dihasilkan oleh klien "roses pengeluaran sputum dari paruparu, bronkus dan trakea yang dihasilkan oleh

Adapun hipotesis dalam penelitian ini adalah penggunaan metode snowball throwing dapat meningkatkan prestasi belajar siswa dan pencapaian KKM mata pelajaran IPS materi

Pada saat Peraturan Daerah ini mulai berlaku, Peraturan Daerah Kabupaten Nomor 7 Tahun 2001 tentang Retribusi dan Sewa Pemakaian Kekayaan Daerah (Lembaran Daerah

Manfaat dari perancangan ini untuk memberikan informasi dan mengajak masyarakat kota semarang khususnya bagi wanita, maupun seorang ibu untuk mengetahui bagaimana cara

1.4.2.3 Mengidentifikasi spiritualitas anak dalam hubungan anak orang lain. 1.4.2.4 Mengidentifikasi spiritualitas anak dalam hubungan

”Penggunaan Limbah Pertanian Sebagai Biofumigan untuk mengendalikan Nematoda Puru Akar (Meloidogynespp.) pada Tanaman Kentang ”. Dibimbing oleh Lisnawita dan