OBJEC
ORIENTED DESIGN
Dosen : Dr. Hendra Jaya, S.Pd. M.T
Nama : Chaidir Syamsul
Nim : 1524133027
Genetic Computer
School – Universitas Negeri Makassar
KATA PENGANTAR
Puji syukur kehadirat Tuhan Yang
Maha Esa atas segala rahmatNYA sehingga makalah ini dapat tersusun hingga
selesai.
Dan harapan saya semoga makalah ini dapat
menambah pengetahuan dan pengalaman bagi para pembaca, Untuk ke depannya dapat
memperbaiki bentuk maupun menambah isi makalah ini agar menjadi lebih baik
lagi.
karena keterbatasan pengetahuan maupun pengalaman saya, saya yakin masih banyak kekurangan dalam makalah ini, Oleh karena itu saya sangat mengharapkan saran dan kritik yang membangun dari pembaca demi kesempurnaan makalah ini.
karena keterbatasan pengetahuan maupun pengalaman saya, saya yakin masih banyak kekurangan dalam makalah ini, Oleh karena itu saya sangat mengharapkan saran dan kritik yang membangun dari pembaca demi kesempurnaan makalah ini.
Makassar, 16
september 2017
DAFTAR ISI
BAB
I PENDAHULUAN
1.1.Latar
belakang .................................................................................... i
1.2.Rumusan
masalah
1.3.Tujuan
dan manfaat............................................................................. i
BAB
II PEMBAHASAN
2.1.Pengertian
OOP (Objec Oriented Programing) ................................ 1
BAB
III PENUTUP
3.1.KESIMPULAN............................................................................... 15
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.
ConversionConversion EmoticonEmoticon