Perbandingan Pemrograman Berorientasi Obyek dengan Pemrograman Terstruktur



Paradigma bahasa pemrograman memberikan model untuk programmer dalam menulis listing program. Paradigma perbedaan dalam bahasa  pemrograman sebagai berikut : 
  • Pemrograman tidak terstruktur atau Programming Monolithic
  •  Pemrograman prosedural
  •  Pemrograman structural
  •  Pemrograman Berorientasi Objek


Pemrograman tidak terstruktur atau Programming Monolithic :
  •  Seluruh permasalahan ini diselesaikan sebagai blok tunggal.
  •  Semua data bersifat global dan tidak ada keamanan.
  •  Perintah melompat diperbolehkan jump dan banyak menggunakan perintah go to
  •  Cocok untuk permasalah kecil.
  •  Sulit untuk melacak kesalahan program 
Gambar 1. Bahasa pemrograman


Contoh bahasa pemrograman yang termasuk dalam Programming Monolithic adalah Assembly Language, BASIC.  


 Pemrograman prosedural
Masalah yang diberikan dibagi dalam beberapa sub masalah tergantung pada fungsinya. Masalah disebut prosedur atau Metode. Prosedur apapun dapat dipanggil pada setiap saat selama pelaksanaan program. Program ini memiliki variabel global dan lokal.
Fitur Pemrograman berorientasi prosedur:
  Program besar yang terbagi dalam fungsi kecil atau Prosedur.
  Menggunakan Pendekatan pemrograman Top-Down.
  Data bergerak bebas dari satu fungsi ke yang lain.
 Sebagian besar fungsi berbagi data umum.

  Penekanan diberikan untuk algoritma. Kekurangan:
  Sangat sulit mengidentifikasi data yang digunakan oleh yang berfungsi.
  Sulit untuk melacak kesalahan program  

Pemrograman Terstruktur
Program ini dibagi menjadi modul dan modul tersebut kemudian dibagi menjadi fungsi. Penggunaan Pernyataan go to dihapus atau dikurangi. Setiap modul dapat bekerja independen satu sama lain.
 Pemrograman berorientasi obyek
 Program ini dibagi menjadi jumlah unit kecil yang disebut Object. Data dan fungsi merupakan properti objek.
  Data dari objek hanya dapat diakses oleh fungsi yang terkait dengan objek tersebut.
 Fungsi satu objek dapat mengakses fungsi objek lain. 
Fitur pemrograman berorientasi obyek
  Penekanan diberikan pada data daripada prosedur.
 Masalah dibagi menjadi obyek.
 Struktur data dirancang sedemikian rupa sehingga mereka mengatur objek.
 Data dan fungsi yang diikat bersama-sama.
 Penyembunyian data adalah mungkin.
 Data baru dan fungsi dapat dengan mudah dibuat.
  Obyek dapat berkomunikasi satu sama lain dengan menggunakan fungsi.
  Pendekatan bottom-up yang digunakan dalam membuat program 
Perbedaan antara Pemrograman Berorientasi Terstruktur dan Obyek

Dengan menggunakan OOP maka dalam melakukan pemecahan suatu masalah kita tidak melihat bagaimana cara menyelesaikan suatu masalah tersebut (terstruktur) tetapi objek-objek apa yang dapat melakukan pemecahan masalah tersebut. Sedangkan untuk pemrograman terstruktur, menggunakan prosedur/tata cara yang teratur untuk mengoperasikan data struktur. Untuk tata nama, keduanya pun memiliki tatanan yang sama walaupun memiliki pengertian tersendiri.
Object oriented menggunakan “method” sedangkan terstruktur menggunakan “function”. Bila di OOP sering didengar mengenai “objects” maka di terstruktur kita mengenalnya dengan ”modules”. Begitu pula  halnya dengan “message” pada OO dan “argument” pada terstruktur. “attribute” pada OO juga memiliki tatanan nama yang sepadan dengan “variabel” pada pemrograman terstruktur.
Pemrograman prosedural akan dikatakan lebih baik apabila dalam segala situasi melibatkan kompleksitas moderat atau yang memerlukan signifikan kemudahan maintainability. Manfaat yang dirasakan dalam penggunaan pemrograman prosedural adalah kemampuan kembali menggunakan kode yang sama tanpa menggunakan kode yang berbeda ataupun mengkopinya kembali. Dengan menggunakan “goto”, memudahkan programmer melacak kumpulan data sehingga menghindarkan pemrograman terstruktur menjadi seperti spagethii code.
Pemrograman berorientasikan objek dikatakan lebih baik apabila 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. 
c. Rangkuman
 Pengembangan berorientasi objek merupakan cara pikir baru tentang perangkat lunak berdasarkan abstraksi yang terdapat dalam dunia nyata. Dalam konteks pengembangan menunjuk pada bagian awal dari siklus hidup pengembangan sistem, yaitu survei, analisis, desain, implementasi, dan pemeliharaan sistem. Hal yang lebih penting dalam pengembangan berorientasi objek adalah konsep mengindentifikasi dan mengorganisasi domain aplikasi dibandingkan dengan fokus penggunaan bahasa pemrograman, berorientasi objek atau tidak. Object adalah gabungan antara beberapa data dan fungsi yang masing-masing bekerja bersama-sama dan tidak dapat dipisahkan. Gabungan dari data dan fungsi tersebut akan membentuk suatu object-object yang aktif. Dari kumpulan beberapa object yang sama akan membentuk struktur baru yang disebut class.
Pemrograman berorientasi obyek (Inggris: object-oriented programming disingkat OOP) merupakan paradigma pemrograman yang berorientasikan kepada obyek. Semua data dan fungsi di dalam paradigma ini dibungkus dalam kelas-kelas atau obyek-obyek. Bandingkan dengan logika pemrograman terstruktur. Setiap obyek dapat menerima pesan, memproses data, dan mengirim pesan ke obyek lainnya. Pemrograman terstruktur adalah suatu proses untuk mengimplementasikan urutan langkah untuk menyelesaikan suatu masalah dalam bentuk program. Selain pengertian diatas Pemrograman Terstruktur adalah suatu aktivitas pemrograman dengan memperhatikan urutan langkah-langkah perintah secara sistematis, logis, dan tersusun berdasarkan algoritma yang sederhana dan mudah dipahami. Prinsip dari pemrograman terstruktur adalah Jika suatu proses telah sampai pada suatu titik/langkah tertentu ,maka proses selanjutnya tidak boleh mengeksekusi langkah sebelumnya/kembali lagi ke baris sebelumnya, kecuali pada langkah–langkah untuk proses berulang (Loop).


 Kegiatan Belajar 2 : Perangkat Lunak Pemrograman Berorientasi Obyek
a.      Tujuan Pembelajaran

Setelah mengikuti kegiatan belajar 2 ini siswa diharapkan dapat :

             1) Memahami alur kerja perangkat lunak pemrograman berorientasi obyek
 2) Menyajikan perangkat lunak pemrograman berorientasi obyek  
      
b. Uraian Materi
1) Alur kerja perangkat lunak pemrograman berorientasi obyek
 Mengapa memilih Java sebagai perangkat lunak pemrograman berorientasi obyek?
 Java  diciptakan  oleh  suatu  tim  yang  dipimpin  oleh  Patrick Naughton dan James Gosling dalam suatu proyek dari Sun Micro System yang memiliki kode Green dengan tujuan untuk menghasilkan bahasa komputer sederhana yang dapat dijalankan di peralatan sederhana dengan tidak terikat pada arsitektur tertentu. Mulanya disebut OAK, tetapi karena OAK sendiri merupakan nama dari bahasa pemrograman komputer yang sudah ada. Maka Sun mengubahnya menjadi Java.
Sun kemudian meluncurkan browser dari Java yang disebut Hot Java yang mampu menjalankan applet. Setelah itu teknologi Java diadopsi oleh Netscape yang memungkinkan program Java dijalankan di browser Netscape yang kemudian diikuti Internet Explorer. Karena keunikanya dan kelebihanya, teknologi Java  mulai menarik banyak vendor seperti IBM, Symantec, Inprise, dan lain-lain. Sun merilis versi awal Java secara resmi pada awal tahun 1996 yang kemudian terus berkembang hingga muncul JDK 1.1, kemudian JDK 1.2 yang mulai disebut sebagai versi Java2 karena banyak mengandung peningkatan dan perbaikan. Perubahan utama adalah adanya Swing yang merupakan teknologi GUI (Graphical User Interface) yang mampu menghasilkan window yang portabel. Dan pada tahun 1998–1999 lahirlah teknologi J2EE. Diawali dengan servlet dan EJB kemudian diikuti JSP. Java juga menjadi  lebih  cepat  populer  di  lingkungan  server  side  dikarenakan kelebihanya di lingkungan.  
2) Arsitektur teknologi
java Java  adalah suatu  teknologi  di  dunia  software  komputer,  yang merupakan suatu bahasa pemrograman, dan sekaligus suatu platform. Sebagai bahasa pemrograman, Java dikenal sebagai bahasa pemrograman tingkat tinggi. Java mudah dipelajari, terutama bagi programmer yang telah mengenal C/C++.  Java  merupakan  bahasa  pemrograman  berorientasi  objek  yang merupakan paradigma pemrograman masa depan. Sebagai bahasa pemrograman Java dirancang menjadi handal dan aman. Java juga dirancang agar dapat  dijalankan di semua platform. Dan juga dirancang untuk menghasilkan aplikasi–aplikasi dengan performansi yang terbaik, seperti aplikasi database Oracle 8i/9i yang core-nya dibangun menggunakan bahasa pemrograman Java. Sedangkan Java bersifat neutral architecture, karena Java Compiler yang digunakan untuk mengkompilasi kode program Java dirancang untuk menghasilkan kode yang netral terhadap semua arsitektur perangkat keras yang disebut sebagai Java Bytecode. 

Sebagai sebuah platform, Java terdiri atas dua bagian utama, yaitu:
 Java Virtual Machine (JVM).
 Java Application Programming Interface (JavaAPI). 
Sun membagi arsitektur Java membagi tiga bagian, yaitu:
 Enterprise Java (J2EE) untuk aplikasi berbasis web, aplikasi sistem tersebar dengan beraneka ragam klien dengan kompleksitas yang tinggi. Merupakan superset dari Standar Java
                 Standar Java (J2SE), ini adalah yang biasa dikenal sebagai bahasa Java.
 Micro  Java  (J2ME)  merupakan  subset  dari  J2SE  dan  salah  satu aplikasinya yang banyak dipakai adalah untuk wireless device / mobile device




1.       Java API
Beberapa fitur yang ditawarkan Java API antara lain sebagai berikut:
a.       Applet
Program Java  yang  dapat  berjalan di atas browser,  yang dapat membuat halaman HTML lebih dinamis dan menarik.
b.      Java Networking
 Sekumpulan  API  (Application  Programming  Interface)  yang menyediakan fungsi–fungsi untuk aplikasi–aplikasi jaringan, seperti penyediaan akses untuk TCP, UDP, IP Adrress dan URL. Tetapi Java Networking tidak menyediakan akses untuk ICMP dikarenakan  alasan  sekuriti  dan  pada  kondisi  umum  hanya administrator ( root ) yang bisa memanfaatkan protokol ICMP.
c.       JavaDatabase Connectivity (JDBC)
 JDBC menyediakan sekumpulan API yang dapat digunakan untuk mengakses database seperti Oracle, MySQL, PostgreSQL, Microsoft SQL Server.
d.      Java Security
 Java Security menyediakan sekumpulan API untuk mengatur security dari aplikasi Java baik secara high level atau low level, seperti public/private key management dan certificates
e.       JavaSwing
 Java Swing menyediakan sekumpulan API untuk membangun aplikasi– aplikasi GUI (Graphical User Interface) dan model GUI yang diinginkan bisa bermacam–macam, bisa model Java, model Motif/CDE atau model yang dependent terhadap platform yang digunakan.
f.        Java RMI
 Java  RMI  menyediakan  sekumpulan  API  untuk  membangun aplikasi– aplikasi Java yang mirip dengan model RPC (Remote Procedure Call) jadi object-object Java bisa di call secara remote pada jaringan komputer.
g.       Java2D/3D
Java 2D/3D menyediakan sekumpulan API untuk membangun grafik– grafik 2D/3D yang menarik dan juga akses ke printer.
h.      Java Server Pages
Berkembang dari Java Servlet yang digunakan untuk menggantikan aplikasi–aplikasi CGI, JSP (Java Server Pages) yang mirip ASP dan PHP merupakan alternatif terbaik untuk solusi aplikasi Internet.
i.        JNI (Java Native Interface)
 JNI menyediakan sekumpulan API yang digunakan  untuk mengakses fungsi – fungsi pada library (*.dll atau *.so) yang dibuat dengan bahasa pemrograman yang lain seperti C, C++, dan Basic.
j.        JavaSound
Java  Sound  menyediakan  sekumpulan  API  untuk  manipulasi sound.
k.       Java IDL + CORBA
Java IDL (Interface Definition Language) menyediakan dukungan Java  untuk  implementasi CORBA  (Common  Object Request Broker) yang merupakan model distributed-Object untuk solusi aplikasi besar di dunia networking.

l.        JavaCard
Java Card utamanya digunakan untuk aplikasi–aplikasi pada smart card, yang sederhana wujudnya seperti SIM Card pada handphone.
m.    JTAPI (Java Telephony API)
 Java Telepony API menyediakan sekumpulan  API untuk memanfaatkan devices–devices telepony, sehingga akan cocok untuk aplikasi–aplikasi CTI (Computer Telephony Integration) yang dibutuhkan seperti ACD (Automatic Call Distribution), PC- PBX .

                                                
Berdasarkan white paper resmi dari SUN, Java memiliki karakteristik sebagai berikut :
 Sederhana
Bahasa pemrograman Java menggunakan sintaks mirip dengan C++ namun sintaks pada Java telah banyak diperbaiki terutama menghilangkan penggunaan pointer yang rumit dan multiple inheritance. Java juga menggunakan automatic memory allocation dan memory garbage collection.
 Berorientasi objek (ObjectOriented)
 Java mengunakan pemrograman berorientasi objek yang membuat program dapat dibuat secara modular dan dapat dipergunakan kembali. Pemrograman berorientasi objek memodelkan dunia nyata ke dalam objek dan melakukan interaksi antar objek-objek tersebut.
  Dapat didistribusi dengan mudah
 Java dibuat untuk membuat aplikasi terdistribusi secara mudah dengan adanya libraries networking yang terintegrasi pada Java.
 Interpreter Program
 Java dijalankan menggunakan interpreter yaitu Java Virtual Machine (JVM). Hal ini menyebabkan sourcecode Java yang telah dikompilasi menjadi Java bytecodes dapat dijalankan pada plat form yang berbeda-beda. 
 Robust
 Java mempunyai reliabilitas yang tinggi. Compiler pada  Java  mempunyai kemampuan mendeteksi error secara lebih teliti dibandingkan bahasa pemrograman lain. Java mempunyai runtime Exception handling untuk membantu mengatasi error pada pemrograman.

  Aman
Sebagai bahasa pemrograman untuk aplikasi internet dan terdistribusi, Java memiliki beberapa mekanisme keamanan untuk menjaga aplikasi tidak digunakan untuk merusak system computer yang menjalankan aplikasi tersebut.
  ArchitectureNeutral
Program Java merupakan platform independent. Program cukup mempunyai satu buah versi yang dapat dijalankan pada platform yang berbeda dengan Java VirtualMachine.
  Portable
 Source code maupun program Java dapat dengan mudah dibawa ke platform yang berbeda-beda tanpa harus dikompilasi ulang.
 Performance
 Performance pada Java sering dikatakan kurang tinggi.Namun performance Java dapat ditingkatkan menggunakan kompilasi Java lain seperti buatan Inprise, Microsoft  ataupun  Symantec  yang  menggunakan  Just  In  Time Compilers (JIT).
  Multithreaded
Java mempunyai kemampuan untuk membuat suatu program yang dapat melakukan beberapa pekerjaan secara sekaligus dan simultan.
 Dinamis
 Java didesain untuk dapat dijalankan pada lingkungan yang dinamis. Perubahan pada suatu class dengan menambahkan properties ataupun  method dapat dilakukan tanpa menggangu program yang menggunakan class tersebut. 
Sebagai sebuah bahasa pemrograman, Java dapat membuat seluruh bentuk aplikasi, desktop, web dan lainnya, sebagaimana dibuat dengan menggunakan bahasa pemrograman konvensional yang lain. Java  adalah  bahasa  pemrograman yang  berorientasi  objek  (OOP)  dan  dapat
dijalankan pada berbagai platform system operasi. Perkembangan Java tidak hanya terfokus  pada satu sistem operasi, tetapi dikembangkan untuk berbagai  sistem operasi dan bersifat open source. Sebagian fitur dari Java antara lain:
 Java Virtual Machine (JVM)
 JVM adalah sebuah mesin imajiner (maya) yang bekerja dengan menyerupai aplikasi pada sebuah  mesin nyata. JVM menyediakan spesifikasi hardware  dan platform dimana kompilasi kode Java terjadi. Spesifikasi inilah yang membuat aplikasi berbasis Java menjadi bebas dari platform manapun karena proses kompilasi diselesaikan oleh JVM. Aplikasi program Java diciptakan dengan file teks berekstensi .java. Program ini dikompilasi menghasilkan satu berkas bytecode berekstensi .class atau lebih. Bytecode adalah serangkaian instruksi serupa instruksi kode mesin. Perbedaannya adalah kode mesin harus dijalankan pada sistem komputer dimana kompilasi ditujukan, sementara bytecode berjalan pada java interpreter yang tersedia di semua platform sistem komputer dan sistem operasi.
 Garbage Collection
 Banyak bahasa pemrogaman lain yang mengizinkan seorang programmer mengalokasikan memori pada saat dijalankan. Namun, setelah menggunakan alokasi memori tersebut, harus terdapat cara untuk menempatkan kembali blok memori tersebut supaya program lain dapat menggunakannya. Dalam C, C++ dan bahasa lainnya, adalah programmer yang mutlak bertanggung jawab akan hal ini. Hal ini dapat menyulitkan bilamana programmer tersebut alpa untuk mengembalikan blok memori sehingga menyebabkan situasi yang dikenal dengan nama memory leaks. Program Java melakukan garbage collection yang berarti program tidak perlu menghapus sendiri objek–objek yang tidak digunakan lagi. Fasilitas ini mengurangi beban pengelolaan memori oleh programmer dan mengurangi atau mengeliminasi sumber kesalahan terbesar yang terdapat pada bahasa yang memungkinkan alokasi dinamis.
 Code Security
 Code  Security  terimplementasi  pada  Java  melalui  penggunaan  Java  Runtime Environment (JRE). Java menggunakan model pengamanan 3 lapis untuk melindungi sistem dari untrusted Java Code.
1.       Pertama, class-loader menangani pemuatan kelas Java ke runtime interpreter. Proses ini menyediakan pengamanan dengan memisahkan kelas–kelas  yang berasal dari local disk dengan kelas–kelas yang diambil dari jaringan. Hal ini membatasi aplikasi Trojan karena kelas–kelas yang berasal dari local disk yang dimuat terlebih dahulu.
2.        Kedua, byte code verifie rmembaca byte code sebelum dijalankan dan menjamin byte code memenuhi aturan–aturan dasar bahasa Java.
3.        Ketiga, manajemen keamanan menangani keamanan tingkat aplikasi dengan mengendalikan apakah program berhak mengakses sumberdaya seperti system file, port jaringan, proses eksternal dan system windowing. 
Setelah seluruh proses tersebut selesai  dijalankan, barulah kode  program di eksekusi.
 Fase-Fase pemrograman Java Gambar di bawah ini menjelaskan aliran proses kompilasi dan eksekusi sebuah program Java

                                          

Langkah pertama dalam pembuatan sebuah program berbasis Java adalah menuliskan kode program pada text editor. Contoh text editor yang dapat digunakan antara lain: notepad, vi, emacs dan lain sebagainya. Kode program yang dibuat kemudian tersimpan dalam sebuah berkas berekstensi .java. Setelah membuat dan menyimpan kode program, kompilasi file yang berisi kode program tersebut dengan menggunakan Java Compiler. Hasil dari kompilasi berupa berkas byte code dengan ekstensi .class. Berkas yang mengandung byte code tersebut kemudian akan dikonversikan oleh Java Interpreter menjadi bahasa mesin sesuai dengan jenis dan platform yang digunakan