komputasi berbasis object

24
Konsep Berbasis Object (Object-Oriented Concept) Lukito Edi Nugroho

Upload: ahmadamminudin89

Post on 06-Aug-2015

60 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Komputasi Berbasis Object

Konsep Berbasis Object (Object-Oriented Concept)

Lukito Edi Nugroho

Page 2: Komputasi Berbasis Object

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 dan interoperabilitas• Tools OO dalam komputasi terdistribusi

Page 3: Komputasi Berbasis Object

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

Page 4: Komputasi Berbasis Object

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

Page 5: Komputasi Berbasis Object

Object dan Interaksinya

pembeli kasir pelayan

pesan & bayar

siapkan burger

siapkan kentang

siapkan minum

sajikan

Skenario: restoran cepat-saji

Page 6: Komputasi Berbasis Object

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 (tujuan bahasa Simula-67) 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

Page 7: Komputasi Berbasis Object

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

Page 8: Komputasi Berbasis Object

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

Page 9: Komputasi Berbasis Object

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

Page 10: Komputasi Berbasis Object

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.

Page 11: Komputasi Berbasis Object

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)

Page 12: Komputasi Berbasis Object

Object

Sebuah instance (perwujudan nyata) dari suatu kelas tertentu

public class SegiEmpat { int panjang; int lebar; string warna;

public SegiEmpat(string w, int p, int l) { panjang = p; lebar = l; warna = w; }

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

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

SegiEmpat sPutih = new SegiEmpat(“putih”, 15,10);

SegiEmpat sOrange = new SegiEmpat(“orange”, 30,15);

Page 13: Komputasi Berbasis Object

Definisi Kelas dan Object

public class SegiEmpat { int panjang; int lebar; string warna;

public SegiEmpat(string w, int p, int l) { panjang = p; lebar = l; warna = w; }

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

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

field, menunjukkan atribut/property

constructor, untuk menciptakanobject (instance) baru denganproperty tertentu

methods atau member functions,mendeskripsikan behaviour atauaktivitas yang bisa dijalankan

memanggil constructor untuk membentukobject baru

Page 14: Komputasi Berbasis Object

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

Page 15: Komputasi Berbasis Object

Enkapsulasi

public class SegiEmpat { int panjang; int lebar; string warna;

public SegiEmpat(string w, int p, int l) { panjang = p; lebar = l; warna = w; }

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

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

setWarna(string w)

Pihak luar (object lain) melihat sPinksebagai sebuah “kotak hitam” yangtidak terlihat isinya, kecuali fields danmethods yang memang dideklarasikan secara publik

Object lain tidak bisa melihat apa yang dilakukan sPink secara internal

Page 16: Komputasi Berbasis Object

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

Page 17: Komputasi Berbasis Object

Inheritance

“bentuk”

poligon ellips

lingkaran

persegipanjang

segitiga

bujursangkar

Page 18: Komputasi Berbasis Object

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)

Page 19: Komputasi Berbasis Object

Polymorphism

• Poly: banyak; morphism: bentuk sebuah fitur (generik) bisa diimplementasikan dengan berbagai cara

• Polymorphism diimplementasikan dengan mekanisme inheritance dan overriding

hewan

anjing“menggonggong”

kucing“mengeong”

kuda“meringkik”

“bersuara”

Page 20: Komputasi Berbasis Object

OO dan Interoperabilitas

• Konsep abstraksi dan enkapsulasi membuat “batas” yang tegas antara bagian yang bersifat publik dan bagian yang bersifat privat Abstraksi menjelaskan hal-hal yang terlihat dari luar

(bersifat publik) Enkapsulasi menyembunyikan detil-detil yang tidak perlu

terlihat dari luar (bersifat privat)

• Independensi antara aspek publik dan privat dieksploitasi untuk menangani isu interoperabilitas: implementasi layanan dapat dilakukan tanpa harus tergantung pada siapa yang mengaksesnya

Page 21: Komputasi Berbasis Object

Pemisahan Publik – Privat

Nasi goreng

Mie goreng

Mie bakso

“pesan nasi goreng”

“memasak nasi goreng”

publik privat

Pemilik warung (server) dapat memasak nasi goreng (implementasilayanan) dengan berbagai cara tanpa harus tergantung pada siapa yang memesannya (client).

Page 22: Komputasi Berbasis Object

Interoperabilitas di Level Aplikasi

Aplikasi #1 Aplikasi #2

Bahasa ASistem operasi BDatabase C

Bahasa XSistem operasi YDatabase Z

Network P Network Q

Hardware M Hardware N

Page 23: Komputasi Berbasis Object

Solusi Berbasis OO

X

Y

Z

interface

implementasi

Publik Privat

server(object

implementation)client

Page 24: Komputasi Berbasis Object

Tools dan Teknologi

• Remote Procedure Calling (RPC) – tidak berbasis OO, tetapi telah menggunakan konsep pemisahan dengan interface

• Remote Method Invocation (RMI) – RPC versi Java• Common Object Request Broker Architecture

(CORBA) – arsitektur sistem terdistribusi berbasis OO• OLE/COM, DCOM, .NET – solusi interoperabilitas dari

Microsoft• J2EE – suite pengembangan aplikasi enterprise

berbasis Java