0% menganggap dokumen ini bermanfaat (0 suara)
194 tayangan18 halaman

Makalah Pemrograman

Makalah ini membahas dasar-dasar pemrograman berorientasi objek. Pemrograman berorientasi objek menekankan konsep kelas, objek, abstraksi, dan enkapsulasi. Kelas merupakan kumpulan definisi data dan fungsi dalam satu unit. Objek membungkus data dan fungsi menjadi satu unit. Abstraksi memfokuskan pada inti informasi yang diproses. Enkapsulasi memastikan hanya metode dalam objek yang dapat mengakses keadaannya.

Diunggah oleh

Bagus Andhika
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
194 tayangan18 halaman

Makalah Pemrograman

Makalah ini membahas dasar-dasar pemrograman berorientasi objek. Pemrograman berorientasi objek menekankan konsep kelas, objek, abstraksi, dan enkapsulasi. Kelas merupakan kumpulan definisi data dan fungsi dalam satu unit. Objek membungkus data dan fungsi menjadi satu unit. Abstraksi memfokuskan pada inti informasi yang diproses. Enkapsulasi memastikan hanya metode dalam objek yang dapat mengakses keadaannya.

Diunggah oleh

Bagus Andhika
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 18

MAKALAH DASAR-DASAR PEMROGRAMAN

PEMROGRAMAN BEORIENTAS OBJEK

DOSEN : Bpk. REFLI NOVIARDI S.Kom., M.Kom

D
I
S
U
S
U
N
OLEH :
Ade Abu Darda (NIM : 1821011)
Ayu Febriyanti BR Tanggang (NIM : 1821002)
Bagus Andhika (NIM : 1821016)
Nera Azzura (NIM : 1821009)

INSTITUT TEKNOLOGI BATAM


FAKLUTAS TEKNOLOGI INFORMASI
SISTEM INFORMASI
2018/2019
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 sepertiinheritance 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.
BAB II

PEMROGRAMAN BERORIENTASI OBJEK

A. 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
pada 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).
 
B. 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 classsecara 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 danstruktur 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
Contoh : Program menghitung luas persegi panjang dan segitiga

#include <iostream>
using namespace std;

class PersegiPanjang{
int panjang,lebar;
public:
int luas(){
return (panjang*lebar);
}
void set_values(int x,int y){
panjang = x;
lebar = y;
}
};

class Segitiga{
int alas,tinggi;
public:
float luas(){
return (alas*tinggi*0.5);
}
void set_values(int a, int t){
alas = a;
tinggi = t;
}
};

int main(){
PersegiPanjang Kotak1;
PersegiPanjang Kotak2;
Segitiga Segitiga1;
Segitiga Segitiga2;
Kotak1.set_values(10,10);
Kotak2.set_values(5,5);
Segitiga1.set_values(7,6);
Segitiga2.set_values(3,7);
cout << “Luas Kotak 1 adalah ” << Kotak1.luas() << endl;
cout << “Luas Kotak 2 adalah ” << Kotak2.luas() << endl;
cout << “Luas Segitiga 1 adalah ” << Segitiga1.luas() << endl;
cout << “Luas Segitiga 2 adalah ” << Segitiga2.luas() << endl;
}

C. Bahasa Pendukung OOP

Bahasa pertama yang memiliki fitur-fitur utama dari sebuah bahasa berorientasi
objek yaitu Simula (1967). Organisasi ini dibentuk untuk membuatprogram
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, danABAP .
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 PHPtelah menambahkan fitur berorientasi objek sejak Perl 5
dan PHP 4, danColdFusion sejak versi 6. 

D. 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.
Karenadatabase 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
melaluiLooking 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)
sebelumtindakan (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 maintainabilitydari 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
untukEmacs 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
tipeuntuk 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
fungsionaluntuk 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”.

E. Kelebihan

1. Multiplatform. Pada hal ini yang dimaksud dengan multiplatform adalah


dapat dijalankan diberbagai sistem operasi sekaligus. Dengan
menggunakan prinsip tulis sebuah program kemudian dikompail dapat
dijalankan disegala program sesuai platform yang ada.
2. OOP (Object Oriented Programming) makudnya adalah semua aspek yang
terdapat di java berorientasi objek. Dalam hal ini sangat memudahkan
dalam hal membuat program karena semua berdasarkan objek atau class,
serta memudahkan dalam hal mendesain, mencari kesalahan dan juga
mengembangkan program yang telah kita rencanakan atau kita buat.
3. Bergaya C++. Karena syntax dalam pembuatan program yang terdapat di
java sama persis dengan C++ maka banyak pemrogram yang bermula dari
menggunakan C++ banyak beralih menggunakan pemrograman yang
berbasis objek (dalam hal ini adalah java).

4. Perpustakaan kamus bahasa yang lengkap. Artinya dalam java terdapat


kamus bahasa yang lengkap untuk memudahkan pemrogram untuk
membangun dan menggembangkan program yang telah dibuat.

5. Pengumpulan sampah yang otomatis. Memiliki fasilitas pengaturan


memori sehingga para pemrogram tidak perlu lagi repot mengatur memori
yang akan digunakannya.

F. Kekurangan

1. Mudah didekomplikasi. Dekomplikasi adalah proses membalikan kod


menjadi kode sumber.
2. Penggunaan memori yang banyak.
3. Tulis sekali - perbaikan dimana saja.
BAB III

PENUTUPAN

- 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 danPHP telah menambahkan fitur berorientasi objek sejak Perl 5
dan PHP 4, danColdFusion sejak versi 6. Desain pola OOP antara lain : 1)
Warisan dan PerilakuSubtyping, 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.

- Saran

Setelah mengetahui pengertian dan seluk beluk semua tentang OOP, kita dapat
mengambil segi positif dari penggunaan OOP dalam pemrograman, walaupun
masih terdapat kelemahan-kelemahan OOP dalam pemrograman.

DAFTAR PUSTAKA

http://id.wikipedia.org/wiki/Pemrograman_berorientasi_objek.
en.wikipedia.org/wiki/Object-oriented_programming.
www.bengkelprogram.com/data-artikel-779.0.bps

Anda mungkin juga menyukai