Anda di halaman 1dari 13

BAB I

PENDAHULUAN

A. Latar Belakang
Pemrograman Berorientasi Objek (Object Oriented Programming atau OOP)
merupakan paradigma pemrograman yang berorientasikan kepada objek. Objek adalah
struktur data yang terdiri dari bidang data dan metode bersama dengan interaksi mereka
untuk merancang aplikasi dan program komputer. Semua data dan fungsi di dalam
paradigma ini dibungkus dalam kelas-kelas atau objek-objek. Bandingkan dengan
logika pemrograman terstruktur. Setiap objek dapat menerima pesan, memproses data, dan
mengirim pesan ke objek lainnya. Pada jaman sekarang, banyak bahasa pemrograman yang
mendukung OOP.
OOP adalah paradigma pemrograman yang cukup dominan saat ini, karena mampu
memberikan solusi kaidah pemrograman modern. Meskipun demikian, bukan berarti
bahwa pemrograman prosedural sudah tidak layak lagi. OOP diciptakan karena dirasakan
masih adanya keterbatasan pada bahasa pemrograman tradisional. Konsep dari OOP sendiri
adalah semua pemecahan masalah dibagi ke dalam objek. Dalam OOP data dan fungsi-
fungsi yang akan mengoperasikannya digabungkan menjadi satu kesatuan yang dapat
disebut sebagai objek. Proses perancangan atau desain dalam suatu pemrograman
merupakan proses yang tidak terpisah dari proses yang mendahului, yaitu analisis dan
proses yang mengikutinya. Pembahasan mengenai orientasi objek tidak akan terlepas dari
konsep objek seperti inheritance atau penurunan, encapsulation atau pembungkusan,
dan polymorphism atau kebanyakrupaan. Konsep-konsep ini merupakan fundamental
dalam orientasi objek yang perlu sekali dipahami serta digunakan dengan baik, dan
menghindari penggunaannya yang tidak tepat.
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.

1
B. Rumusan Masalah
1. Pengertian OOP (Object Oriented Programming)?
2. Apa saja konsep dasar dari pemrograman berorientasi objek (OOP)?
3. Bahasa yang mendukung OOP meliputi apa saja?
4. Bagaimanakah desain pola dalam OOP?
5. Bagaimanakah kritik para ahli mengenai OOP?

C. Tujuan dan Manfaat


1. Dapat mengetahui pengertian OOP (Object Oriented Programming) secara umum.
2. Dapat mengetahui konsep dasar dari pemrograman berorientasi objek (OOP).
3. Dapat mengetahui bahasa yang mendukung OOP.
4. Dapat mengetahui desain pola apa saja dalam OOP.
5. Dapat mengetahui beberapa kritik para ahli mengenai OOP

2
BAB II
PEMBAHASAN

A. Pengertian OOP (Object Oriented Programming)


Banyak orang pertama kali belajar program menggunakan bahasa yang tidak
berorientasi objek. Program non-OOP mungkin salah satu daftar panjang dari
perintah. Lebih program yang kompleks akan kelompok daftar perintah ke
dalam fungsi atau subrutin masing-masing yang mungkin melakukan tugas
tertentu. Dengan desain semacam ini, biasanya untuk data program untuk dapat diakses
dari setiap bagian dari program tersebut. Sebagai program tumbuh dalam ukuran,
memungkinkan fungsi apapun untuk memodifikasi setiap bagian dari data berarti bahwa
bug dapat memiliki dampak yang luas jangkauannya.
Sebaliknya, pendekatan berorientasi objek mendorong para programmer untuk
tempat data di mana tidak langsung dapat diakses oleh seluruh program. Sebaliknya data
diakses dengan memanggil tertulis fungsi khusus, yang biasa disebut metode, baik yang
dibundel dengan data atau warisan dari ”objek kelas” dan bertindak sebagai perantara untuk
mengambil atau memodifikasi data tersebut. Pemrograman yang membangun yang
menggabungkan data dengan satu set metode untuk mengakses dan mengelola data tersebut
disebut objek.
Sebuah program berorientasi objek biasanya akan mengandung berbagai jenis
objek, masing-masing jenis yang sesuai untuk jenis tertentu dari data yang kompleks untuk
dikelola atau mungkin ke objek dunia nyata atau konsep seperti rekening bank, pemain
hoki, atau buldoser. Sebuah program mungkin berisi beberapa salinan dari setiap jenis
objek, satu untuk setiap objek dunia nyata program ini berurusan dengan OOP. Sebagai
contoh, ada bisa menjadi salah satu rekening bank untuk setiap account objek dunia nyata
di sebuah bank tertentu. Setiap salinan dari objek rekening bank akan sama dalam metode
ini menawarkan untuk memanipulasi atau membaca data, tetapi data dalam setiap objek
akan berbeda mencerminkan sejarah yang berbeda dari setiap account.
Objek dapat dianggap sebagai pembungkus data mereka dalam satu set fungsi yang
dirancang untuk memastikan bahwa data yang digunakan tepat, dan untuk membantu
dalam menggunakan. Metode ini objek biasanya akan mencakup pemeriksaan dan
perlindungan yang khusus untuk jenis data objek berisi. Sebuah objek juga dapat
menawarkan sederhana digunakan, metode standar untuk melakukan operasi tertentu pada
data, sementara menyembunyikan secara spesifik tentang bagaimana tugas-tugas yang
dicapai. Dengan cara ini perubahan dapat dibuat dengan struktur internal atau metode
obyek tanpa memerlukan bahwa sisa program dimodifikasi. Pendekatan ini juga dapat

3
digunakan untuk menawarkan metode standar di berbagai jenis objek. Sebagai contoh,
beberapa jenis benda mungkin menawarkan metode cetak. Setiap jenis objek yang
mungkin menerapkan metode cetak dalam cara yang berbeda, yang mencerminkan jenis
data yang berbeda masing-masing berisi, tetapi semua metode cetak yang berbeda mungkin
disebut dengan cara standar yang sama dari tempat lain di program ini. Fitur-fitur ini
menjadi berguna terutama ketika lebih dari satu programmer berkontribusi kode untuk
proyek atau ketika tujuannya adalah untuk menggunakan kembali kode di antara proyek.
Pemrograman berorientasi obyek memiliki akar yang dapat ditelusuri ke tahun
1960-an. Sebagai perangkat keras dan software menjadi semakin kompleks, pengelolaan
sering menjadi perhatian. Para peneliti mempelajari cara untuk menjaga kualitas software
dan pemrograman berorientasi objek yang dikembangkan sebagian untuk mengatasi
masalah-masalah umum dengan sangat menekankan diskrit, unit dapat digunakan kembali
logika. Teknologi ini berfokus pada data daripada proses, dengan program yang terdiri dari
modul mandiri (kelas), setiap contoh (objek) yang berisi semua informasi yang dibutuhkan
untuk memanipulasi data struktur sendiri (anggota). Hal ini berbeda dengan yang
ada pemrograman modular yang telah dominan selama bertahun-tahun yang difokuskan
pada fungsi dari sebuah modul, bukan data spesifik, tetapi juga disediakan
untuk penggunaan kembali kode, dan cukup dapat digunakan kembali unit-diri dari logika
pemrograman, memungkinkan kolaborasi melalui penggunaan modul terkait
(subrutin). Pendekatan yang lebih konvensional, yang masih tetap, cenderung untuk
mempertimbangkan data dan perilaku secara terpisah.
Program berorientasi objek dengan demikian dapat dilihat sebagai
kumpulan objek berinteraksi, yang bertentangan dengan model konvensional, di mana
program dipandang sebagai daftar tugas (subrutin) untuk melakukan. Dalam OOP, setiap
objek dapat menerima pesan, pengolahan data, dan mengirim pesan ke objek
lainnya. Setiap objek dapat dilihat sebagai ”mesin” independen dengan peran yang berbeda
atau tanggung jawab. Tindakan (metode) pada obyek-obyek yang terkait erat dengan objek.
Sebagai contoh, OOP struktur data cenderung ”membawa operator sendiri main dengan
mereka” (atau setidaknya ”mewarisi” mereka dari obyek yang sama atau kelas).

B. Konsep Dasar dari Pemrograman Berorientasi Objek (OOP)

Pemrograman Orientasi Objek (Object Oriented Programming) menekankan


konsep sebagai berikut :

4
1. Kelas
Kelas merupakan 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
atau turunan dari anjing. Sebuah class adalah dasar dari modularitas dan struktur dalam
pemrograman berorientasi objek. 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.

2. Objek
Objek berfungsi 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.

3. Abstraksi
Abstraksi dapat didefinisikan sebagai 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.

4. Enkapsulasi
Enkapsulasi berfungsi 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.

5
5. Polimorfisme
Polimorfisme dapat berwujud 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
pesan 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.

6. Inheritas
Konsep inheritas mempunyai fungsi 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 adanya konsep dasar tersebut di atas, maka dengan menggunakan OOP
kita dapat melakukan pemecahan suatu masalah tanpa 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 bagian administrasi, maka manager
tersebut tidak harus mengambilnya langsung tetapi dapat menyuruh petugas bagian
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.

6
C. Bahasa Pendukung OOP
Bahasa pertama yang memiliki fitur-fitur utama dari sebuah bahasa berorientasi
objek yaitu Simula (1967). Organisasi ini dibentuk untuk membuat program simulasi, di
mana apa yang kemudian disebut objek adalah informasi perwakilan paling
penting. Smalltalk (1972-1980) ini bisa dibilang contoh kanonik, dan yang satu dengan
yang banyak teori pemrograman berorientasi objek adalah dikembangkan. Mengenai
derajat orientasi objek, berikut beberapa perbedaan dapat dibuat:
1. Bahasa disebut “murni” bahasa OOP, karena segala isinya diperlakukan secara konsisten
sebagai objek, dari primitif seperti karakter dan tanda baca, semua jalan sampai ke seluruh
kelas, prototipe, blok, modul, dan lain-lain. Mereka dirancang khusus untuk memfasilitasi,
bahkan menegakkan, metode OOP. Contoh : Scala, Smalltalk, Eiffel, Ruby, JADE, dan
Emerald.
2. Bahasa pemrograman yang dirancang terutama untuk OOP, tapi dengan beberapa elemen
prosedural. Contoh : C + + , C #, VB.NET, Java, dan Python. (Catatan : C # dan
VB.NET eksklusif bagian Microsoft's NET Framework adalah dan platform
pengembangan. Kompilasi keduanya sama (bahasa menengah IL). Meskipun ada beberapa
perbedaan membangun, mereka minimal dan dalam konteks pengelompokan ini, beberapa
mungkin menganggap mereka bagian dari satu bahasa dengan hanya dua mesin sintaks
(terjemahan).
3. Bahasa yang secara historis bahasa prosedural, tetapi telah diperpanjang dengan beberapa
fitur OOP. Contoh : Visual Basic (berasal dari DASAR), Fortran
2003, Perl, COBOL 2002, PHP, dan ABAP .
4. Bahasa dengan sebagian besar fitur objek (kelas, metode, warisan, usabilitas), tetapi dalam
bentuk jelas asli. Contoh : Oberon (Oberon-1 atau Oberon-2).
5. Bahasa dengan tipe data abstrak dukungan, tetapi tidak semua fitur-orientasi obyek,
kadang-kadang disebut bahasa berbasis objek. Contoh : Modula-2 (dengan enkapsulasi
yang sangat baik dan menyembunyikan informasi), liat, dan CLU .
Dalam beberapa tahun terakhir, pemrograman berorientasi objek telah menjadi
sangat populer di bahasa pemrograman dinamis. Python, Ruby dan Groovy adalah bahasa
dinamis dibangun di atas prinsip-prinsip OOP, sedangkan Perl dan PHP telah
menambahkan fitur berorientasi objek sejak Perl 5 dan PHP 4, dan ColdFusion sejak versi
6.

7
D. Desain Pola OOP
Tantangan desain berorientasi objek yang ditujukan oleh beberapa
metodologi. Paling umum dikenal sebagai pola desain dimodifikasikan oleh
Gamma dkk. Lebih luas lagi, istilah ”pola desain” dapat digunakan untuk mengacu pada
setiap diulang, solusi umum untuk masalah umum yang terjadi dalam desain perangkat
lunak. Beberapa masalah ini sering terjadi memiliki implikasi dan solusi khusus
pengembangan berorientasi objek.
Beberapa Desain Pola OOP antara lain :
1. Warisan dan Perilaku Subtyping
Hal ini untuk menganggap warisan yang menciptakan semantik ”adalah sebuah”
hubungan, dan dengan demikian untuk menyimpulkan bahwa benda instansi
dari subclass selalu dapat dengan aman digunakan sebagai benda pengganti instansi
dari superclass. Intuisi ini sayangnya palsu dalam bahasa OOP kebanyakan, khususnya di
semua orang yang memungkinkan bisa berubah objek. Polimorfisme Subtipe sebagai
ditegakkan oleh Checker dalam bahasa OOP (dengan objek bisa berubah) tidak dapat
menjamin subtyping perilaku dalam konteks apapun. Perilaku subtyping ini diputuskan
pada umumnya, sehingga tidak dapat dilaksanakan oleh program (compiler). Kelas atau
objek hierarki perlu hati-hati dirancang mempertimbangkan kemungkinan menggunakan
salah yang tidak dapat dideteksi sintaktis. Masalah ini dikenal sebagai prinsip substitusi
Liskov .
2. Pola Desain Gang Empat
Design Patterns: Elements of Reusable Object-Oriented Software adalah buku
yang berpengaruh yang diterbitkan pada tahun 1995 oleh Erich Gamma, Richard
Helm, Ralph Johnson, dan John Vlissides, kadang-kadang santai disebut “Gang
Empat”. Seiring dengan mengeksplorasi kemampuan dan perangkap pemrograman
berorientasi obyek, itu menggambarkan 23 masalah pemrograman umum dan pola untuk
memecahkan masalah tersebut. Pada April 2007, buku itu dalam pencetakan 36 nya. Buku
ini menjelaskan pola-pola sebagai berikut:
a. Mencipta Pola : Pola Metode Pabrik, Pabrik Abstrak Pola, Pola Singleton, Builder Pola,
dan Pola Prototype.
b. Struktural Pola : Pola Adapter, Bridge Pola, Pola Komposit, dekorator Pola, Pola
Facade, kelas Terbang Pola, dan Pola Proxy.
c. Perilaku Pola : Rantai Tanggung Jawab Pola, Pola Command, Interpreter Pola, Pola
Iterator, Mediator Pola, Pola Memento, Observer Pola, Pola Negara, Strategi
Pola, Template Metode Pola, dan Pola Pengunjung.

8
3. Obyek Orientasi dan Database
Kedua pemrograman berorientasi obyek dan sistem manajemen database
relasional (RDBMSs) sangat umum dalam perangkat lunak saat ini. Karena database
relasional tidak menyimpan objek langsung (meskipun beberapa RDBMSs memiliki fitur
berorientasi objek untuk perkiraan ini), ada kebutuhan umum untuk menjembatani dua
dunia. Masalah menjembatani pemrograman berorientasi objek mengakses dan pola data
dengan database relasional dikenal sebagai Relational Mismatch Impedansi Object. Ada
beberapa pendekatan untuk mengatasi masalah ini, tetapi tidak ada solusi umum tanpa
kelemahan. Salah satu pendekatan yang paling umum adalah objek relasional pemetaan,
seperti yang ditemukan di perpustakaan seperti Java Data Objects dan Ruby on
Rails ‘ActiveRecord.
Ada juga objek database yang dapat digunakan untuk menggantikan RDBMSs,
tetapi ini belum teknis dan komersial sukses sebagai RDBMSs.
4. Pemodelan Dunia Nyata dan Hubungan
OOP dapat digunakan untuk objek dunia nyata asosiasi dan proses dengan mitra
digital. Namun, tidak semua orang setuju bahwa OOP memfasilitasi dunia nyata pemetaan
langsung (lihat Kritik Negatif bagian) atau bahwa pemetaan dunia nyata bahkan tujuan
yang layak. Bertrand Meyer berpendapat di Object-Oriented Software Konstruksi bahwa
program bukanlah model dunia tetapi model dari beberapa bagian dunia, “Realitas adalah
sepupu dua kali dihapus”. Pada saat yang sama, beberapa keterbatasan utama dari OOP
sudah diketahui. Sebagai contoh, masalah Elips Circle sulit untuk ditangani dengan
menggunakan konsep OOP’s dari warisan.
Namun, Niklaus Wirth (yang mempopulerkan pepatah sekarang dikenal
sebagai hukum di Wirth : “Software semakin lambat lebih cepat dari perangkat keras
menjadi lebih cepat”) kata dari OOP dalam makalahnya, “Ide Bagus melalui Looking
Glass”, paradigma ini erat mencerminkan struktur sistem “di dunia nyata”, dan oleh karena
itu cocok untuk model sistem kompleks dengan perilaku kompleks (kontras KISS prinsip).
Steve Yegge, dkk. mencatat bahwa bahasa alami merupakan kekurangan
pendekatan OOP yang ketat memprioritaskan hal (benda/kata benda)
sebelum tindakan (metode/verba). Hal ini dapat menyebabkan masalah OOP menderita
berbelit-belit solusi lebih dari pemrograman prosedural.
5. Desain OOP dan Flow Control
OOP dikembangkan untuk
meningkatkan reusabilitas dan maintainability dari source code. Representasi
transparan aliran kontrol tidak memiliki prioritas dan dimaksudkan untuk ditangani
oleh compiler. Dengan meningkatnya relevansi paralel dan perangkat keras multithreaded

9
coding, pengembang kontrol aliran transparan menjadi lebih penting, sesuatu yang keras
untuk mencapai dengan OOP.
6. Desain Tanggung Jawab dan Driven Desain Data
Desain Berbasis Tanggung Jawab mendefinisikan kelas dalam hal kontrak, yaitu
kelas harus didefinisikan sekitar tanggung jawab dan informasi yang sama. Hal ini kontras
dengan Wirfs-Brock dan Wilkerson dengan desain data-driven, di mana kelas didefinisikan
di sekitar struktur data yang harus dipegang. Para penulis berpendapat bahwa desain
tanggung jawab-driven adalah lebih baik.

E. Kritik Para Ahli Mengenai OOP


Sejumlah peneliti terkenal dan programmer telah menganalisis utilitas dari OOP,
antara lain :
1. Richard Stallman menulis pada tahun 1995, dia menambahkan bahwa OOP
untuk Emacs tidak secara jelas, perbaikan OOP saya gunakan ketika bekerja di Mesin
Lisp sistem jendela, dan aku tidak setuju dengan pandangan biasa bahwa itu adalah cara
yang unggul untuk program”.
2. Sebuah studi oleh Potok et al. telah menunjukkan tidak ada perbedaan yang signifikan
dalam produktivitas antara OOP dan pendekatan prosedural.
3. Christopher J. Tanggal menyatakan bahwa perbandingan kritis OOP dengan teknologi lain,
pada khususnya relasional adalah sulit karena tidak adanya upon dan ketat definisi yang
disepakati dari OOP. Darwen mengusulkan landasan teoritis pada OOP yang menggunakan
OOP sebagai semacam disesuaikan sistem tipe untuk mendukung RDBMS.
4. Alexander Stepanov menyarankan bahwa OOP memberikan sudut pandang terbatas
matematis dan menyebutnya “hampir sebanyak tipuan sebagai Artificial Intelligence”. Dia
belum melihat bagian yang menarik dari kode yang berasal dari orang-orang OOP.
5. Paul Graham telah menyarankan bahwa tujuan dari OOP adalah untuk bertindak sebagai
”mekanisme menggiring” yang membuat programmer biasa-biasa saja dalam organisasi
biasa-biasa saja dari “melakukan banyak kerusakan yang terlalu”. Hal ini adalah
pengorbanan dengan memperlambat programmer produktif yang tahu bagaimana
menggunakan lebih kuat dan lebih kompak teknik.
6. Joe Armstrong, penemu utama Erlang, mengatakan “Masalah dengan bahasa berorientasi
objek yang mereka punya semua ini lingkungan implisit bahwa mereka membawa sekitar
dengan mereka inginkan. Anda punya pisang, tapi apa yang Anda punya adalah gorila
memegang pisang dan seluruh hutan”.
7. Richard Mansfield, penulis dan mantan editor Hitung majalah, menyatakan bahwa “seperti
tak terhitung mode intelektual lainnya selama bertahun-tahun (“relevansi”, “komunisme”,

10
“modernisme”) sejarah penuh dengan mereka. OOP akan bersama kita sampai akhirnya
realitas menegaskan dirinya. Seluruh generasi programmer didoktrinasi terus berbaris
keluar dari akademi, berkomitmen untuk OOP dan hanya OOP untuk sisanya hidup
mereka”. Ia juga mengatakan “OOP adalah untuk menulis sebuah program, apa yang akan
melalui keamanan bandara adalah untuk terbang”.
8. Rich Hickey, pencipta Clojure, menjelaskan sistem objek sebagai atas model sederhana
dari dunia nyata. Dia menekankan ketidakmampuan OOP ke waktu model benar, yang
semakin semakin bermasalah sebagai sistem perangkat lunak menjadi lebih bersamaan.
9. Carnegie-Mellon University Profesor Robert Harper Maret 2011 menulis: “Dan semester
ini Licata dan aku mengajar kursus baru di pemrograman fungsional untuk tahun pertama
jurusan CS calon ... Pemrograman Berorientasi Obyek dihilangkan sepenuhnya dari
kurikulum pengantar, karena keduanya anti-modular dan anti-paralel sifatnya, dan
karenanya tidak cocok untuk suatu kurikulum CS modern. Sebuah program baru yang
diusulkan pada metodologi desain berorientasi objek akan ditawarkan di tingkat sophomore
bagi siswa yang ingin belajar topik ini”.

11
BAB III
PENUTUP

A. Kesimpulan
Dari makalah di atas penyusun dapat mengambil kesimpulan :
Pemrograman Berorientasi Objek (Object Oriented Programming atau OOP)
merupakan paradigma pemrograman yang berorientasikan kepada objek. OOP adalah
paradigma pemrograman yang cukup dominan saat ini, karena mampu memberikan solusi
kaidah pemrograman modern. Pemrograman Orientasi Objek (Object Oriented
Programming) menekankan beberapa konsep, yaitu kelas, objek, abstraksi, enkapsulasi,
polimorfisme, dan inheritas. Python, Ruby dan Groovy adalah bahasa dinamis dibangun di
atas prinsip-prinsip OOP, sedangkan Perl dan PHP telah menambahkan fitur berorientasi
objek sejak Perl 5 dan PHP 4, dan ColdFusion sejak versi 6. Desain pola OOP antara lain :
1) Warisan dan Perilaku Subtyping, 2) Pola Desain Gang Empat, 3) Obyek Orientasi
dan Database, 4) Pemodelan Dunia Nyata dan Hubungan, 5) Desain OOP dan Flow
Control, 6) Desain Tanggung Jawab dan Driven Desain Data. Beberapa ahli juga
mengkritik OOP, antara lain : Richard Stallman, Potok et al., Christopher J.
Tanggal, Alexander Stepanov, Paul Graham, Joe Armstrong, Richard Mansfield, Rich
Hickey, dan Carnegie-Mellon University Profesor Robert Harper.

B. Saran
Setelah mengetahui pengertian dan seluk beluk semua tentang OOP, kita dapat
mengambil segi positif dari penggunaan OOP dalam pemrograman, walaupun masih
terdapat kelemahan-kelemahan OOP dalam pemrograman.

12
DAFTAR PUSTAKA

http://id.wikipedia.org/wiki/Pemrograman_berorientasi_objek.
en.wikipedia.org/wiki/Object-oriented_programming.
www.bengkelprogram.com/data-artikel-779.0.bps.

13

Anda mungkin juga menyukai