Laporan
Praktikum Bahasa Pemrograman 1
Modul
VI
Dosen
pengampu Dede Irawan, M.Kom
“PEMROGRAMAN BERORIENTASI OBJEK”
Disusun
Oleh :
Reny
Hernawati
20160910053
SI
A 2016
Universitas
Kuningan
Jl.Cut
Nyak Dien No. 36A Cijoho, Kuningan
Telp.
(0232)874824
KATA
PENGANTAR
Alhamdulillah, puji syukur
saya panjatkan ke Hadirat Allah SWT, karena hanya dengan berkat-Nya saya dapat
menyelesaikan makalah ini. Tak lupa shalawat serta salam semoga dilimpahkan
kepada junjungan kita Nabi Besar Muhammad SAW yang telah membawa kita dari alam
gelap ke alam yang terang benderang, dari alam jahiliyah ke alam yang penuh
berkah ini. Saya mengucapkan terima kasih kepada :
Bapak Dede Irawan, M.Kom
selaku dosen Praktikum Bahasa Pemrograman 1.
Saya menyusun makalah ini
dengan sungguh – sungguh dan semampu saya. Saya berharap dengan adanya makalah
ini dapat memberikan pengalaman maupun pelajaran yang berarti bagi siapa saja
yang membacanya.
Makalah ini dibuat sebagai
salah satu laporan praktikum bahasa pemrogaman 1. Makalah ini saya buat satu jilid yang berisi
tentang “Pemrograman Berorientasi Objek”.
Akhir kata, manusia tidak
ada yang sempurna, begitu pula dengan makalah ini jauh dari kata sempurna. Oleh
karena itu saran dan kritik yang membangun sangat saya nantikan demi kesempurnaan
makalah ini.
DAFTAR
ISI
KATA PENGANTAR
DAFTAR ISI
BAB I PENDAHULUAN
A.
LATAR BELAKANG
B.
RUMUSAN MASALAH
C.
TUJUAN PENULISAN
BAB II PEMBAHASAN
- Pengertian OOP (Object Oriented Programming)
- Konsep Dasar dari Pemrograman Berorientasi Objek (OOP)
- Bahasa Pendukung OOP
- Desain Pola OOP
- Kritik Para Ahli Mengenai OOP
F.
Contoh program OOP
BAB III PENUTUP
A.
KESIMPULAN
B.
DAFTAR PUSTAKA
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.
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 Penulisan
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
- 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).
- 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 dimana 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 harus
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
- 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, dimana 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 :
- 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.
- 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).
- 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 .
- Bahasa dengan sebagian besar fitur objek (kelas, metode, warisan, usabilitas), tetapi dalam bentuk jelas asli. Contoh : Oberon (Oberon-1 atau Oberon-2).
- 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.
- 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 DesainDataa
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.
- 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”.
- Contoh Program OOP
import java.util.Scanner;
public class contoh{
String Nama;
String Alamat;
int Umur;
public contoh(String nama,String
alamat, int umur){
this.Nama = nama;
this.Alamat = alamat;
this.Umur = umur;
}
public void info(){
System.out.println("\nNama = "+this.Nama);
System.out.println("Alamat =
"+this.Alamat);
System.out.println("Umur = "+this.Umur);
}
public static void main(String
args[]){
Scanner masuk = new
Scanner(System.in);
System.out.print("Masukkan
Nama : ");
String nm = masuk.nextLine();
System.out.print("Masukkan
Alamat : ");
String alamat = masuk.nextLine();
System.out.print("Masukkan
Umur : ");
int Umur = masuk.nextInt();
contoh oop = new
contoh(nm,alamat,Umur);
oop.info();
}
}
- Script
- Hasil Running
POST TEST
1. Buat kelas yang mengimplementasikan fungsi – fungsi statistic sederhana
yaitu rata – rata dan standar deviasi. Kelas ini mempunyai dua data yaitu
Jumlah (jumlah data) dan Data (larik yang mempunyai data). Method yang dimiliki
ada lima yaitu Konstruktor, BacaData, TulisData, RataRata dan StandarDeviasi.
- · Script
import
java.util.Scanner;
public class
Latihan_03 {
double ratarata;
double deviasi;
public Latihan_03(double
ratarata, double deviasi){
this.ratarata = ratarata;
this.deviasi = deviasi;
}
void BacaData(){
System.out.println("Rata
- rata = "+ratarata);
System.out.println("Standar Deviasi = "+deviasi);
}
public static void main(String[]
args) {
Scanner in = new
Scanner(System.in);
int jml;
double rata, dv;
System.out.print("
Jumlah Data yang akan Diinputkan : ");
jml = in.nextInt();
double[] data = new double
[jml];
data = TulisData(jml);
Latihan_03 A1 = new
Latihan_03(ratarata(data), StandarDeviasi(data));
A1.BacaData();
}
public static double[]
TulisData(int jml){
Scanner in = new
Scanner(System.in);
double[] data = new double[jml];
for(int i=0; i<jml; i++){
System.out.print("Masukan Data-"+(i+1)+" : ");
data[i] = in.nextDouble();
}
return(data);
}
public static double ratarata (double [] data){
double total = 0;
for(int i=0; i<data.length;
i++){
total += data[i];
}
return total / data.length;
}
public static double
StandarDeviasi (double[] data){
double ratarata = ratarata
(data);
double deviasi = 0;
for(int i=0; i<data.length;
i++){
deviasi += Math.pow (data[i]
- ratarata,2);
}
return
Math.sqrt((deviasi)/(data.length));
}
}
- · Hasil Running
BAB
III
PENUTUP
A.
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.
Daftar pustaka
- http://ciepoetrytriia.blogspot.co.id/2011/12/contoh-program-java-untuk-pemrograman.html
- http://afrizalseptember.blogspot.co.id/2014/12/makalah-pemograman-berorentasi-objek.html
Tidak ada komentar:
Posting Komentar