LAPORAN PRAKTIKUM BAHASA PEMROGRAMAN
1
MODUL VI
“ PEMROGRAMAN BERORIENTASI OBJEK ”
Dosen
: Dede
Irawan, M.Kom
Disusun
oleh:
Aam
Stamrotul Puadah
20160910001
SI
2016 A
FAKULTAS ILMU KOMPUTER
SISTEM INFORMASI
UNIVERSITAS KUNINGAN
Jl. Cut Nyak Dhien No. 36 A Cijoho Kuningan Telp/Fax. (0232)874824
KATA
PENGANTAR
Assalamu’alaikum
Warahmatullahi Wabarakatuh,
Puji syukur kita panjatkan kehadirat Allah SWT
karena atas limpahan rahmat dan karunia-Nya kita dapat menyelesaikan laporan
kegiatan kewirausahaan yang merupakan salah satu tugas bahasa pemrograman 1.
Semoga dengan adanya laporan ini dapat menambah wawasan.
Dalam
penulisan laporan ini mungkin jauh dari kata sempurna, maka dari itu penyusun
meminta kritik dan saran yang membangun demi perbaikan laporan ini diwaktu yang
akan datang.
Wassalamu’alaikum
Warahmatullahi Wabarakatuh
Kuningan,
8 Desember 2017
Penyusun
DAFTAR ISI
KATA
PENGANTAR
DAFTAR ISI
BAB
I PENDAHULUAN
1.1 Latar
belakang
1.2 Rumusan
Masalah
1.3 Tujuan
BAB II PEMBAHASAN
2.1 Pengertian
OOP
2.2 Konsep Dasar dari Pemrograman Berorientasi Objek
(OOP)
2.3 Bahasa Pendukung OOP
2.4 Desain Pola OOP
2.5 Kritik Para Ahli Mengenai OOP
BAB
III ISI
3.1
Contoh Program
3.3
Post test
BAB
IV PENUTUP
4.1 Kesimpulan
4.2
Saran
DAFTAR
PUSTAKA
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 kedalam 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 softwaremenjadi
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 datacenderung ”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. Objekmerupakan
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.
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 berbasisobjek. 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 :
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.
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 Objectsdan 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 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.
2.5 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 tipeuntuk 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”, “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”.
BAB III
ISI
3.1 Contoh Program
Syntax
package modul_6;
class Kotak{
double
Panjang;
double
Lebar;
double
Tinggi;
void
Hasil(){
System.out.println("Volume kotak : "+ (Panjang*Lebar*Tinggi));
}
}
public class Latihan_2 {
public
static void main(String[] args){
Kotak k1;
k1
= new Kotak();
k1.Panjang=5;
k1.Lebar=3;
k1.Tinggi=2;
k1.Hasil();
}
}
Hasil running
3.2 Post Test
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, baca data, tulis data, rata-rata dan standar deviasi.
Syntax
import java.util.Scanner;
public class post_test{
double
ratarata;
double
deviasi;
public
post_test(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 : ");
jml
= in.nextInt();
double[] data = new double [jml];
data = TulisData(jml);
post_test A1 = new post_test(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("Enter 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
deviasi = 0;
for(int
i=0; i<data.length; i++){
deviasi += Math.pow (data[i] - ratarata,2);
}
return
Math.sqrt((deviasi)/(data.length));
}
BAB IV
PENUTUP
4.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.
4.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
Tidak ada komentar:
Posting Komentar