BAB I
PENDAHULUAN
1.1. 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.2. 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?
1.3. 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.
BAB II
PEMBAHASAN
2.1. 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 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).
2.2 Konsep Dasar
dari Pemrograman Berorientasi Objek (OOP)
Pemrograman Orientasi Objek (Object Oriented Programming)
menekankan konsep sebagai berikut :
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.
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.
Bahasa pemrograman yang mendukung Metode pendekatan Objek Oriented
Programing antara lain:
-
Visual
Foxpro
-
Java
-
C++
-
Pascal
-
SIMULA
-
Smaltalk
-
Ruby
-
Python
-
PHP
-
C#
-
Delphi
-
Eiffel
-
Perl
-
Adobe
Flash AS 3.0
2.3. 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.
2.4. 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
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 .
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:
·
Mencipta Pola : Pola Metode Pabrik, Pabrik Abstrak Pola, Pola Singleton, Builder Pola, dan Pola Prototype.
·
Struktural Pola : Pola Adapter, Bridge Pola, Pola Komposit, dekorator Pola, Pola Facade, kelas Terbang Pola, dan Pola Proxy.
·
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.
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.
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.
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 coding, pengembang
kontrol aliran transparan menjadi lebih penting, sesuatu yang keras untuk
mencapai dengan OOP.
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.
2.5. Kritik
Para Ahli Mengenai OOP
Sejumlah peneliti terkenal dan
programmer telah menganalisis utilitas
dari OOP, antara lain :
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”.
Sebuah studi oleh Potok et al. telah menunjukkan tidak ada perbedaan yang signifikan dalam
produktivitas antara OOP dan pendekatan prosedural.
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.
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.
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.
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”.
Richard Mansfield, penulis dan mantan editor Hitung majalah,
menyatakan bahwa “seperti tak terhitung mode intelektual lainnya selama
bertahun-tahun (“relevansi”, “komunisme”, “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”.
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.
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”.
BAB III
PENUTUP
3.1. 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.
3.2 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.
DAFTAR PUSTAKA
http://id.wikipedia.org/wiki/Pemrograman_berorientasi_objek.
en.wikipedia.org/wiki/Object-oriented_programming.
0 comments:
Post a Comment