Laporan Praktikum Bahasa Pemrograman 1 - Modul 6
MAKALAH
PEMROGRAMAN BERORIENTASI OBJEK
Disusun Untuk Memenuhi Tugas Praktikum Bahasa
Pemrograman 1
Dosen Pengampu: Dede
Irawan, M.Kom
Disusun oleh:
Fitri Nurhayati
20160910015
SI 2016 A
SISTEM INFORMASI
FAKULTAS ILMU KOMPUTER
UNIVERSITAS KUNINGAN
2017
KATA PENGANTAR
Puji
syukur penulis panjatkan kepada Allah swt. yang telah melimpahkan rahmat,
inayah, dan hidayah-Nya sehingga penulis dapat menyelesaikan makalah dengan
tema ” Pemrograman Berorientasi Objek.”
Adapun
tujuan penulisan makalah ini adalah untuk memenuhi tugas praktikum bahasa
pemrograman 1 Semester Ganjil Tahun Pelajaran 2017/2018 Universitas Kuningan.
Selama
penyusunan makalah ini penulis banyak mendapat dukungan moral dan material dari
berbagai pihak. Oleh karena itu, pada kesempatan ini penulis mengucapkan terima
kasih kepada:
1.
Kedua orang tua yang telah memberikan motivasi untuk tetap
bisa mengerjakan makalah ini sampai selesai.
2.
Dede Irawan, M.Kom selaku
dosen pengampu yang telah memberikan arahan motivasi kepada penulis untuk
menyelesaikan makalah ini.
3.
Rekan-rekan yang telah memberikan motivasi kepada penulis
untuk menyelesaikan makalah ini.
Penulis
menyadari bahwa makalah ini masih kurang sempurna. Oleh karena itu, saran dan
kritik yang bersifat membangun dari pembaca sangat penulis harapkan demi
kesempurnaan makalah ini. Semoga makalah ini bermanfaat bagi para pembaca.
Amin.
Kuningan, 08
Desember 2017
Penulis
DAFTAR ISI
KATA PENGANTAR …………………………………………………………………………………
DAFTAR ISI ……………………………………………………………………….…………………
BAB I
PENDAHULUAN
1.1 LATAR BELAKANG
…………………………………………………………………………
1.2 TUJUAN …….………………………………………………………………..…….…………
1.3 MANFAAT
…………………………………………………………………….………………
BAB II
PEMBAHASAN
2.1 Pengertian OOP (Object Oriented Programming) ………………………………………………….….
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 ………………………………………………………………………
2.6 Contoh
program berorientasi objek ……………………………………….……………………………
2.7 POST TEST
……………………………………………………………….……………………
BAB III
PENUTUP
3.1 KESIMPULAN
……………………………………………………………….………………
3.2 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 TUJUAN
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 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:
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:
Ø 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.
3.
Obyek
Orientasi dan Database
Kedua pemrograman berorientasi obyek
dan sistem manajemen database relasional (RDBMSs) sangat umum dalam perangkat
lunak saat ini.Karena database relasional tidak menyimpan objek langsung (meskipun
beberapa RDBMSs memiliki fitur berorientasi objek untuk perkiraan ini), ada
kebutuhan umum untuk menjembatani dua dunia.Masalah menjembatani pemrograman
berorientasi objek mengakses dan pola data dengan database relasional dikenal
sebagai Relational Mismatch Impedansi Object.Ada beberapa pendekatan untuk
mengatasi masalah ini, tetapi tidak ada solusi umum tanpa kelemahan.Salah satu
pendekatan yang paling umum adalah objek relasional pemetaan, seperti yang
ditemukan di perpustakaan seperti Java Data Objects dan Ruby on Rails
‘ActiveRecord.
Ada juga objek database yang dapat digunakan untuk
menggantikan RDBMSs, tetapi ini belum teknis dan komersial sukses sebagai
RDBMSs.
4.
Pemodelan
Dunia Nyata dan Hubungan
OOP dapat digunakan untuk objek dunia
nyata asosiasi dan proses dengan mitra digital. Namun, tidak semua orang setuju
bahwa OOP memfasilitasi dunia nyata pemetaan langsung (lihat Kritik Negatif
bagian) atau bahwa pemetaan dunia nyata bahkan tujuan yang layak.Bertrand Meyer
berpendapat di Object-Oriented Software Konstruksi bahwa program bukanlah model
dunia tetapi model dari beberapa bagian dunia, “Realitas adalah sepupu dua kali
dihapus”. Pada saat yang sama, beberapa keterbatasan utama dari OOP sudah diketahui.
Sebagai contoh, masalah Elips Circle sulit untuk ditangani dengan menggunakan
konsep OOP’s dari warisan.
Namun, Niklaus Wirth (yang mempopulerkan pepatah sekarang
dikenal sebagai hukum di Wirth : “Software semakin lambat lebih cepat dari
perangkat keras menjadi lebih cepat”) kata dari OOP dalam makalahnya, “Ide
Bagus melalui Looking Glass”, paradigma ini erat mencerminkan struktur sistem
“di dunia nyata”, dan oleh karena itu cocok untuk model sistem kompleks dengan
perilaku kompleks (kontras KISS prinsip).
Steve Yegge, dkk. mencatat bahwa bahasa alami merupakan
kekurangan pendekatan OOP yang ketat memprioritaskan hal (benda/kata benda)
sebelum tindakan (metode/verba). Hal ini dapat menyebabkan masalah OOP
menderita berbelit-belit solusi lebih dari pemrograman prosedural.
5.
Desain
OOP dan Flow Control
OOP dikembangkan untuk meningkatkan
reusabilitas dan maintainability dari source code.Representasi transparan
aliran kontrol tidak memiliki prioritas dan dimaksudkan untuk ditangani oleh
compiler.Dengan meningkatnya relevansi paralel dan perangkat keras
multithreaded 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 :
- 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”.
2.6
Contoh
program berorientasi objek
Sintaks program
package
modul_6;
import
java.util.Scanner;
public
class cnth_Program_OOP{
String
Nama;
long
NIM;
String
Fakultas;
String
Prodi;
public cnth_Program_OOP (String Nama,long
NIM,String Fakultas,String Prodi){
this.Nama = Nama;
this.NIM = NIM;
this.Fakultas = Fakultas;
this.Prodi = Prodi;
}
public
void Data(){
System.out.println("\n==============================");
System.out.println("Nama : "+ this.Nama);
System.out.println("NIM : "+ this.NIM);
System.out.println("Fakultas : "+
this.Fakultas);
System.out.println("Prodi : "+ this.Prodi);
}
public static void main(String args[]){
Scanner sc = new Scanner(System.in);
Scanner in = new Scanner(System.in);
String Nama,Fakultas,Prodi;
long NIM;
System.out.print("Input Nama = ");
Nama = sc.nextLine();
System.out.print("Input NIM = ");
NIM = sc.nextLong();
System.out.print("Input Fakultas =
");
Fakultas = in.nextLine();
System.out.print("Input Prodi = ");
Prodi = in.nextLine();
cnth_Program_OOP hasil = new cnth_Program_OOP(Nama,NIM,Fakultas,Prodi);
hasil.Data();
}
}
Running
Program
2.7 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, BacaData,
TulisData, RataRata dan StandarDeviasi.
Sintaks
program
package modul_6;
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;
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("Data
Ke-"+(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));
}
}
Running
Program
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.
DAFTAR
FUSTAKA
Komentar
Posting Komentar