Pemrograman Event Driven


UNIVERSITAS GUNADARMA
Fakultas Teknologi Industri


PENULISAN ILMIAH

Pemrograman Event Driven

 

Nama                        Achmad Rusmanto                          (50415070)

                                      Eduardus Nico                                 (52415107)

                                      Irfan Sabdho Musthofa                  (53415436)

                                      Muhammad Luthfan Ghifari         (53415961)

                                      Muhammad Raihan Albab             (54415726)

                                      Rosiyana Dwi Anggarani                (54415485)

Fakultas                    Teknologi Industri

Jurusan                     Teknik Informatika

Dosen Pembimbing  :  Octarina Budi Lestari, ST., MMSI.


Diajukan Guna Melengkapi Tugas Kelompok Penulisan Ilmiah Mata Kuliah Algoritma dan Pemrograman C Semester 1


JAKARTA
2015



Kata Pengantar

Assalamualaikum Wr. Wb.
Syukur Alhamdulillah penulis panjatkan kepada Allah SWT karena dengan rahmat dan hidayah-Nya sehingga penulis dapat menyelesaikan Penulisan Ilmiah ”Pemrograman Event Driven” tepat pada waktunya.
Adapun tujuan penulisan ilmiah ini dibuat guna melengkapi tugas kelompok pertama dalam mata kuliah Algoritma dan Pemrograman C Semester 1, dan juga berguna untuk meningkatkan wawasan, pengetahuan serta pengalaman penulis dibidang Teknik Informatika yang akan datang.
Penulis menyadari bahwa masih banyak kekurangan-kekurangan yang terdapat dalam tugas penulisan ilmiah ini, untuk itu penulis mengharapkan dengan segala kerendahan hati kepada para pembaca untuk memberikan saran dan kritik yang bersifat membangun kepada penulis guna tercapainya penulisan yang lebih baik lagi di masa depan nanti.
Terselesaikannya penulisan ini berkat dukungan, bantuan, dorongan, petunjuk dan saran-saran dari berbagai pihak. Oleh sebab itu penulis ingin mengucapkan terima kasih kepada:
1.      Prof. Dr. Hj. E. S. Margianti, S.E., M.M., selaku Rektor Universitas Gunadarma.
2.      Prof. Drs. Syahbuddin, MSc., Ph.D., selaku Dekan Fakultas Teknologi Industri Universitas Gunadarma.
3.      Dr. Ing. Adang Suhendra, SSi., SKom.,MSc., selaku Ketua Jurusan Teknik Informatika Fakultas Teknologi Industri Universitas Gunadarma.
4.      Octarina Budi Lestari, ST., MMSI., selaku Dosen Pembimbing yang telah meluangkan waktu dan memberikan saran serta masukan.
5.      Keluarga penulis yang tidak dapat disebutkan satu per satu atas dukungan dan dorongan penuh baik secara moril maupun materil.
6.      Serta pihak-pihak lainnya yang tidak dapat disebutkan atas bantuan dalam membagi informasi kepada penulis.





Daftar Isi

Sampul                                                                                                                      
Kata Pengantar                                                 
Daftar Isi                                                                                                                       
1.      Pendahuluan                                                                                                              
1.1.      Latar Belakang Masalah   
1.2.      Batasan Masalah 
1.3.      Tujuan Masalah     
1.4.      Sistematika Penulisan      
2.      Tinjauan Pustaka                                                                                                           
2.1.      Algoritma dan Pemrograman 
2.2.      Tipe Data dan Variabel dalam Pemrograman     
2.3.      Pemrograman Event Driven                       
3.      Analisa dan Pembahasan                                                                                           
3.1.      Pemrograman Berorientasi Objek 
3.2.      C++ Builder 
3.3.      Synchronous dan Asynchronous I/O      
4.      Penutup                                                                                                                        
Sumber                                                                                                                                                     








Bab 1
Pendahuluan

1.1.         Latar Belakang Masalah
Dalam mempelajari ilmu teknologi komputer, Bahasa pemrograman merupakan suatu wahana untuk menuangkan pikiran manusia yang dapat

1.2.         Batasan Masalah
Pada penulisan ilmiah dengan judul ... ini membahas tentang:
1.      Pengertian dari Algoritma dan Pemrograman
2.      Definisi dari Tipe Data dan Variabel dalam pemrograman
3.      Penjelasan, contoh, serta pendalaman materi dari pemrograman Event Driven

1.3.         Tujuan Masalah
Berdasarkan batasan masalah yang telah dikemukakan sebelumnya, maka penulisan ilmiah ini bertujuan untuk:
1.      Untuk mengetahui pengertian dari Algoritma dan Pemrograman
2.      Untuk mengetahui definisi dari Tipe Data dan Variabel dalam pemrograman
3.      Untuk mengetahui penjelasan, contoh, serta pendalaman materi dari pemrograman Event Driven

1.4.         Sistematika Penulisan
Sistematika penulisan ini dilakukan dalam empat bab dan masing-masing bab akan dirinci lagi menjadi subbab berdasarkan penguraiannya. Secara garis besar, sistematika penulisan pada masing-masing bab adalah sebagai berikut.

BAB I    :  PENDAHULUAN
Bab ini menguraikan pendahuluan tentang Latar Belakang Masalah, Batasan Masalah, Tujuan Masalah, dan Sistematika Penulisan.

BAB II   :  TINJAUAN PUSTAKA
Bab ini berisi tinjauan pustaka tentang pengenalan Algoritma dan Pemrograman dan materi pemrograman Event Driven.

BAB III :  ANALISA DAN PEMBAHASAN
Bab ini menganalisa dan membahas secara detail tentang Event Driven, seperti Pemrograman Berorientasi Objek, C++ Builder, Synchronous dan Asynchronous I/O berserta keunggulannya.

BAB IV :  PENUTUP
Bab ini berisi tentang kesimpulan yang diperoleh dari hasil pembahasan dalam penulisan ini.







Bab 2
Tinjauan Pustaka

2.1.         Algoritma dan Pemrograman
Pemrograman dalam kegiatan paradigma prosedural dilakukan dengan memberikan serangkaian perintah yang berurutan dan logis. Dalam bab ini akan dibahas hal-hal yang menjadi dasar dalam pemrograman  prosedural, meliputi definisi algoritma dan konstruktor pemrograman prosedural, serta konsep Input, Proses, dan Output yang sangat lazim dalam dunia pemrograman prosedural.
Algoritma adalah serangkaian langkah-langkah yang tepat, terperinci, logis, dan terbatas untuk menyelesaikan suatu masalah. Langkah yang tepat artinya serangkaian langkah tersebut selalu benar untuk menyelesaikan masalah yang diberikan. Langkah yang tidak memberikan hasil yang benar untuk domain masalah yang diberikan bukanlah sebuah algoritma.
Langkah yang terperinci artinya setiap langkah diberikan secara detail dan dapat dieksekusi oleh komputer, instruksi seperti “angkat sedikit ke kiri” merupakan contoh instruksi yang tidak tepat, karena “sedikit” tidak menyatakan sesuatu yang tepat.
Langkah yang logis artinya setiap langkah yang diberikan harus dapat diterima oleh akal dan pikiran. Karena komputer hanya mengerti kata-kata yang masuk akal, sehingga komputer tidak dapat berpikir  untuk mengerti perintah yang diterimanya.
Langkah yang diberikan harus terbatas, artinya suatu saat langkah harus berhenti, jika langkah tidak pernah berhenti (misalnya: “ambil air, masukan ke bak mandi, ulangi ambil air, dan seterusnya”) maka serangkaian langkah itu tidak disebut sebagai algoritma (jika: “ambil air, masukkan ke bak mandi, ulangi ambil air sampai bak mandi penuh”, maka bisa disebut sebagai algoritma, namun langkah ambil air, masukkan ke bak mandi, harus diperinci agar dapat dimengerti oleh komputer). Elemen Pemrograman Prosedural yang penting adalah:
1.      Program Utama
2.      Tipe
3.      Konstanta
4.      Variabel
5.      Ekspresi, Operator, dan operand
6.      Struktur Data
7.      Instruksi dasar
8.      Program Moduler
9.      File ksternal
10.  Rekurens
Konstruktor ini tidak untuk dipelajari secara berurutan, namun semua perlu dipelajari dan dimengerti untuk dapat membuat suatu program dengan baik. Sekumpulan aksi dalam pemrograman prosedural bisa dibagi menjadi tiga bagian-bagian penting yaitu: input, proses, dan output. Bagian input, proses, dan output dikerjakan secara sekuensial, dan dalam setiap bagian pasti ada input, proses, dan output.

2.2.         Tipe Data dan Variabel dalam Pemrograman
Salah satu komponen utama program adalah variabel. Variabel adalah objek di mana informasi dinamis disimpan. Ketika Anda menuliskan nama Anda saat hendak membuat account baru atau proses login ke website, nama yang Anda masukkan akan disimpan dalam variabel sebelum diproses lebih lanjut.
Tidak semua variabel memiliki karakteristik yang sama. Informasi yang dapat disimpan oleh variabel ditentukan berdasarkan jenis atau tipe data variabel terebut. Terdapat berbagai jenis tipe data dalam setiap bahasa pemrograman. Namun, kali ini kita akan melihat beberapa jenis tipe data yang umumnya ada pada hampir seluruh bahasa pemrograman. Tipe-tipe data tersebut antara lain sebagai berikut:
1.      Tipe data Karakter (character/char)
Jenis tipe data ini hanya memungkinkan sebuah variabel menyimpan informasi sebuah single karakter, seperti huruf “P”,, “c”, “7”, atau “@”.
2.      Tipe data String
Tipe data string ini memungkinkan variabel menyimpan informasi untaian karakter, seperti kata atau kalimat. Dalam contoh sebelumnya, nama yang Anda gunakan pada web form, informasi tersebut akan disimpan dalam variabel bertipe data string.
3.      Tipe data Integer (int)
Jenis tipe data integer digunakan jika ingin menyimpan informasi angka (bilangan bulat) dalam variabel, tetapi bukan bilangan pecahan. Hal ini berarti nilai “7” akan menjadi nilai integer yang valid.
4.      Tipe data Floating Point Number (float)
Jika Anda bermaksud menyimpan informasi angka dengan format pecahan atau angka desimal, floating point adalah jenis tipe data yang sesuai. Angka “65,00” secara teknis merupakan nilai bertipe floating point meskipun nilai tersebut juga dapat direpresentasikan sebagai nilai “65”. Jenis tipe data ini membutuhkan ukuran memory yang lebih besar dibandingkan jenis tipe data angka integer.
5.      Tipe data Boolean (bool)
Jenis tipe data ini biasanya digunakan hanya untuk merepresentasikan dua kondisi, yakni nilai TRUE dan FALSE atau daatberarti bernilai 1 dan 0 atau kondisi ON dan OFF. Jenis tipe data ini merupakan jenis yang paling sederhana, teapi cukup sering digunakan dalam setiap pemrograman.
6.      Tipe data Array
Jenis tipe data aray sering disebut juga sebagai tipe data larik. Tipe data ini pada dasarnya merupakan kumpulan sejumlah variabel bertipe data sama dengan ukuran tertentu, yang tersusun secara runtun. Ada beragam variasi dari tipe data array, bergantung pada bahasa pemrograman yang digunakan. Sebagai contoh, nilai “1”, “2”, “3”, “4”, dan “5” dapat Anda simpan ke dalam variabel bertipe data array dengan ukuran aray “5” (5 buah nilai, mulai dari 1 sampai dengan 5) yang memiliki kumpulan nilai bertipe integer atau secar sederhana dapat dikatakan array of integer values.
Setiap variabel yang terdapat dalam array dapat diakses dengan menggunakan komponen indeks dari tiap-tiap variabel trseut. Namun, perlu Anda ketahui bahwa variabel pertama yang ada dalam array bukan memiliki indeks 1, melainkan indeks 0. Menyimpan nilai-nilai tersebut ke dalam variabel bertipe data array akan memudahkan kit untuk melakukan manipulasi terhadap setiap data yang ada dalam array tersebut. perlu diketahui bahwa jenis tipe data string sebenarnya merupakan kumpulan variabel bertipe karakter atau bisa dikatakan array of characters.

2.3.         Pemrograman Event Driven

Konsep event-driven yaitu suatu program yang pengeksekusiannya didasarkan atas kejadian (event) tertentu. Kejadian-kejadian itu sendiri, mempunyai kode program sendiri yang disimpan dalam sebuah fungsi (yang dirancang untuk melaksanakan tugas khusus).Pada dasarnya, konsep pemrograman visual ini sama dengan pemrograman procedural, yaitu pemrograman yang memiliki input, proses dan output. Namun, ada satu penambahan yang berbeda, yaitu konsep pemilihan untuk mengeksekusi proses programnya. Konsep inilah yang digunakan untuk menjalankan eventnya. C++ Builder, merupakan bahasa pemrograman yang berkemampuan luas dan sangat canggih yang didukung oleh object-object yang sangat kuat, canggih dan lengkap. Hal itu dimaksudkan agar pengguna dapat lebih mudah dalam merancang, membuat dan menyelesaikan aplikasi yang diinginkan.

Event driven programming adalah paradigma pemrogrman yang jalannya program ini  ditentukan oleh event / peristiwa  yaitu sensor keloaran atau tindakan pengguna ( mouse klik, tombol ) atau pesan dari program lain. Event-driven programming juga dapat didefinisikan sebagai aplikasi teknik arsitektur yang memiliki aplikasi utama loop yang jelas ke bawah dibagi dua bagian: yang pertama adalah kegiatan seleksi (atau aktivitas deteksi), dan yang kedua adalah penanganan event. Dalam sistem yang sama dapat dicapai dengan menggunakan interrupts bukan sebuah lingkaran utama terus berjalan, dalam hal ini mantan bagian arsitektur sepenuhnya berada di hardware. Event-driven program dapat ditulis dalam bahasa apa pun, walaupun tugas yang mudah dalam bahasa yang menyediakan tingkat tinggi  seperti closures.








Bab 3
Analisa dan Pembahasan

3.1.         Pemrograman Berorientasi Objek 
Pemrograman berorientasi objek ( Bahasa Inggris: object oriented programming disingkat OOP) merupakan paradigma pemrograman yang berorientasikan kepada objek. 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. 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, OOP lebih mudah dipelajari bagi pemula dibanding dengan pendekatan sebelumnya, dan pendekatan OOP lebih mudah dikembangkan dan dirawat.
Pemrograman berorientasi objek (Inggris: object-oriented programming disingkat OOP) merupakan paradigma pemrograman yang berorientasikan kepada objek. 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. Bahasa pemrograman yang mendukung OOP antara lain:
1.      Visual Foxpro
2.      Java
3.      C++
4.      Pascal (bahasa pemrograman)
5.      Visual Basic.NET
6.      SIMULA
7.      Smalltalk
8.      Ruby
9.      Python
10.  PHP
11.  C#
12.  Delphi
13.  Eiffel
14.  Perl
15.  Adobe Flash AS 3.0
Sementara itu pemrograman berorientasi objek juga memliki beberapa keuntungan seperti:
1.      Maintenance, program lebih mudah dibaca dan dipahami, dan pemrograman berorientasi obyek mengontrol kerumitan program hanya dengan mengijinkan rincian yang dibutuhkan untuk programmer.
2.    Pengubahan program (berupa penambahan atau penghapusan fitur tertentu); perubahan yang dilakukan antara lain menyangkut penambahan dan penghapusan dalam suatu database program misalnya.
3.  Dapat digunakannya obyek-obyek sesering yang diinginkan, kita dapat menyimpan obyek-obyek yang yang dirancang dengan baik ke dalam sebuah tolkit rutin yang bermanfaat yang dapat disisipkan kedalam kode yang baru dengan sedikit perubahan atau tanpa perubahan pada kode tersebut.
Jadi, sangat jelas sekal bahwa pemrograman berorientasi objek sangat cocok sekali digunakan dalam kasus pembuatan software yang rumit dan kompleks karena memberikan berbagai kemudahan kepada pemrogram seperti yang telah disebutkan diatas. Permodelan yang mana yang lebh bagus? itu tergantung dari kebutuhan dan dari sudut pandang mana anda melihatnya. Yang perlu anda ingat adalah tujuan dari pemodelan itu sendiri, yang mana agar pada akhir proyek sistem dapat diperoleh sistem informasi yang memenuhi kebutuhan pemakai, tepat waktu dan sesuai anggaran, serta mudah digunakan, dimengerti dan dipelihara
Istilah-Istilah yang biasa digunakan pada pemrograman berorientasi objek (Inggris: object-oriented programming disingkat OOP), yaitu:
1.      Objek
Untuk mempermudah pemahaman, maka disini akan dijelaskan melalui analogi. Pada dasarnya semua benda yang adadi dunia nyata dapat dianggap sebagai objek. Misalnya rumah, mobil, sepeda, motor, gelas, komputer, meja, sepatu, dll. Setiap objek memiliki atribut sebagai status (state) dan tingkah laku sebagai behavior. Contoh objek: Motor. Maka atribute (state) nya adalah pedal, roda, jeruji, speedometer, warna, jumlah roda. Sedangkan tingkah laku (behavior) nya adalah kecepatan menaik, kecepatan menurun, dan perpindahan gigi motor.
Analogi pemrograman berorientasi objek sama dengan penggambara pada dunia nyata seperti contoh di atas. Dalam OOP, state disimpan pada variabel dan tingkah laku disimpan pada method.
Dalam bahasa teoretis OOP, Objek berfungsi untuk membungkus data dan fungsi bersama menjadi satu unit dalam sebuah program komputer. Objek merupakan dasar dari modularitas dan struktur dalam sebuah program komputer berorientasi objek.
2.      Class
Definisi class yaitu template untuk membuat objek. Class merupakan prototipe atau blue prints yang mendefinisikan variabel-variabel dan method-method secara umum. Objek merupakan hasil instansiasi dari suatu class. Proses pembentukan objek dari suatu kelas disebut sebagai instantiation. Objek disebut juga sebagai instances.
Dalam bahasa teoretis OOP, class 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/turunan dari anjing. Sebuah class adalah dasar dari modularitas dan struktur dalam pemrograman berorientasi object.
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.
3.      Attributes
Atribut adalah data yang membedakan antara objek satu dengan yang lainnya. Contoh Objek: VolcanoRobot ( a volcanic exploration vehicle), mempunyai atribut sebagai berikut:
Status              →        exploring, moving, returning home
Speed              →        in miles per hour
Temperature    →        in Fahrenheit degrees
Dalam class, atribut sering disebut sebagai variabel. Atribut dibedakan menjadi dua jenis yaitu Instance Variable dan Class Variable.
Instance variable adalah atribut untuk tiap objek dari kelas yang sama. Tiap objek mempunyai dan menyimpan nilai atributnya sendiri. Jadi, tiap objek dari class yang sama bokeh mempunyai nilai yang sama atau berbeda.
Class Variable adalah atribut untuk semua objek yang dibuat dari class yang sama. Semua objek mempunyai nilai atribut yang sama. Jadi semua objek dari class yang sama mempunyai hanya satu nilai yang value nya sama.
4.      Behavior
Behavior / tingkah laku adalah hal-hal yang bisa dilakukan oleh objek dari suatu class. Behavior dapat digunakan untuk mengubah nilai atribut suatu objek, menerima informasi dari objek lain, dan mengirim informasi ke objek lain untuk melakukan suatu tugas (task). 
check current temperature
begin a survey
report its current position
Dalam class, behavior disebut juga sebagai methods. Methods sendiri adalah serangkaian statements dalam suatu class yang menghandle suatu task tertentu. Cara objek berkomunikasi dengan objek yang lain adalah dengan menggunakan method.
5.      Abstraksi
Abstraksi adalah 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.
Konsep Konsep yang biasa digunakan pada pemrograman berorientasi objek (Inggris: object-oriented programming disingkat OOP), yaitu:
1.      Enkapsulasi (Encapsulation)
Pembungkusan variabel dan method dalam sebuah obyek yang terlindungi serta menyediakan interface untuk mengakses variabel tersebut. Variabel dan method yang dimiliki oleh suatu objek, bisa ditentukan hak aksesnya. Dalam OOP, konsep enkapsulasi sebenarnya merupakan perluasan dari struktur dalam bahasa C. Contoh: jam tangan. Dalam hal ini, penting sekali untuk mengetahui waktu, sedangkan cara jam mencatat waktu dengan baik antara jam bertenaga baterai atau bertenaga gerak tidaklah penting kita ketahui.
Dengan kata lain enkapsulasi berfungsi untuk memastikan pengguna sebuah objek tidak dapat mengganti keadaan dalam/dari sebuah objek dengan cara yang tidak layak; hanya metode dalam objek tersebut yang diberi izin 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.
2.      Pewarisan (Inheritance)
Pewarisan merupakan pewarisan atribut dan method dari sebuah class ke class lainnya. Class yang mewarisi disebut superclass dan Class yang diwarisi disebut subclass. Subclass bisa berlaku sebagai superclass bagi class lainya, disebut sebagai multilevel inheritance. Contoh: terdapat class sepeda dan sepeda gunung. Sepeda termasuk superclass.  Sepeda gunung termasuk subclass. Hal ini dikarenakan sepeda gunung memiliki variabel dan method yang dimiliki oleh sepeda.
Prinsip dasar inheritance yaitu persamaan-persamaan yang dimiliki oleh beberapa kelas dapat digabungkan dalam sebuah class induk sehingga setiap kelas yang diturunkannya memuat hal-hal yang spesifik untuk kelas yang bersangkutan. Keuntungan dari pewarisan antara lain:
1.      Subclass menyediakan state/behaviour yang spesifik yang membedakan dengan superclass, sehingga memungkinkan programmer untuk menggunakan ulang source code dari superclass yang telah ada.
2.      Programmer dapat mendefinisikan superclass khusus yang bersifat generik, yang disebut abstract class (abstraksi), untuk mendefinisikan class dengan tingkah laku dan state secara umum.
3.      Single & Multiple Inheritance
Bahasa C adalah contoh multiple inheritance. Suatu class diperbolehkan untuk mempunyai lebih dari satu superclass. Variabel dan method yang diwariskan merupakan kombinasi dari superclass-nya. Java adalah contoh single inheritance. Suatu class hanya boleh mempunyai satu superclass.
4.      Multilevel Inheritance
Suatu subclass bisa menjadi superclass bagi class yang lain.
5.      Polimorfisme
Polimorfisme adalah kemampuan suatu obyek untuk mempunyai lebih dari satu bentuk. Polimorfisme tidak bergantung kepada pemanggilan subrutin. 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 tungal 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.


3.2.         C++ Builder
C++ Builder adalah sebuah aplikasi yang diguakan untuk pengembangan dengan memanfaatkan keistimewaan konsep-konsep antar muka grafis dalam Microsoft Windows. Aplikasi yang di hasilkan C++ Builder berkait erat dengan Windows itu sendiri sehingga dibutuhkan pengetahuan bagaimana cara kerja dari Windows. C++ Builder adalah aplikasi pemograman yang menghasilkan program aplikasi yang beroprasi di bawah lingkungan Windows. C++ Builder merupakan bahasa pengembangan dari dari bahasa C sebelumnya yaitu C++. C++ Builder merupakan merk dagang atau produk dari Borland Internasional Inc. yang telah banyak menghasilkan bahasa-bahasa pemograman yang sangat handal Seperti layaknya bahasa pemograman yang berobjek Visual lainnya. C++ Builder ini mempunyai kelebihan antara lain digolongkan ke dalam kelompok RAD (Rapid Application Development), yang merupakan sebuah perangkat pemograman yang mampu membuat aplikasi dengan mudah dan cepat. C++ Builder juga tergolong kelompok bahasa pemograman yang menggunakan prinsip Event Driven. Keunggulannya dari C++ Builder ini adalah dalam bagian pengembangan DataBase, dalam pemograman database ini, terutama dalam pemograman yang yang sangat sederhana sekali, Anda sudah dapat menjalankan program tersebut tanpa harus menuliskan sebaris kode. Jika Anda sudah pernah mempelajari bahasa pemograman lainnya seperti Borlan Delphi, Visual Basic, ataupun bahasa visual lainnya, maka anda akan dapat dengan mudah mempelajari C++ Builder ini, perbedaannya hanya struktur pemograman saja, yang perlu di ingat adalah kelompok pemograman C ini seperti halnya C, C++, dan C++ Builder merupakan bahasa pemograman yang menggunakan Case Sensitive yaotu program akan mengecek penggunaan huruf besar maupun huruf kecil. Dalam pemograman Visual banyak istilah dan konsep untuk menyebut "Sesuatu" yang membentuk sebuah aplikasi. Istilah tersebut memiliki arti yang sama dalam lingkungan pemograman Visual yang lain, seperti misalnya objek, properti, dan event.
Konsep dari Event Driven yaitu suatu program yang pengeksekusiannya didasarkan atas kejadian (event) tertentu. Kejadian-kejadian itu sendiri telah mempunyai kode program sendiri yang disimpan dalam sebuah fungsi (yang dirancang untuk melaksanakan tugas khusus). Pada dasarnya, konsep pemrograman visual ini sama dengan pemrograman procedural, yaitu pemrograman yang memiliki input, proses dan output. Namun, ada satu penambahan yang berbeda, yaitu konsep pemilihan untuk mengeksekusi proses programnya. Konsep inilah yang digunakan untuk menjalankan eventnya. C++ Builder, merupakan bahasa pemrograman yang memiliki suatu kemampuan luas dan sangat canggih yang didukung oleh object-object yang sangat kuat, canggih dan lengkap. Hal itu dimaksudkan agar pengguna dapat lebih mudah dalam merancang, membuat dan menyelesaikan aplikasi yang diinginkan.


3.3.   Synchronous dan Asynchronous I/O
Asynchronous disini berarti non-blocking I/O. Ini berarti setiap operasi asynchronousharus segera mungkin mengembalikan nilai agar program tidak perlu menunggu proses baca tulis ke I/O. I/O sendiri adalah komponen sebuah mesin atau komputer untuk urusan input dan output data. Komponen I/O memiliki kecepatan baca tulis jauh lebih kecil dari kecepatan prosesor dalam memproses data. Kebalikan dari asynchronous, sebuah program yang menjalankan operasi synchronous akan menunggu operasi itu selesai baru kemudian program dapat melanjutkan operasi lainnya.
Sedangkan istilah event driven disini sama saja dengan istilah event based programming yaitu urutan atau flow program ditentukan oleh sebuah events. Jika diartikan secara bahasaevent itu sama dengan kejadian, sedangkan Wiki mendefinisikan events ini dengan perubahan pada sebuah kondisi objek. Perpindahan mouse dari window satu ke window lain, penekanan tut-tut keyboard, sampai pada request halaman website. Paling dasar sekaligus terpenting dari event driven ini adalah event handler atau callback. Callback ini merupakan sebuah fungsi atau subroutine yang bisa disebut sebagai pendapat/argument pada operasi-operasi asynchronous. Dia akan dipanggil sekali setelah operasi selesai dilakukan.
Di dalam NodeJS terdapat operasi-operasi yang sifatnya synchronous danasynchronous, tapi keunggulan NodeJS ini ada pada non-blocking I/O alias asynchronous nya. Asynchronous dan event-driven yang ada pada NodeJS ini disebut-sebut sebagai bentuk pemrograman baru dari pendahulunya, multi-threaded. Berikut adalah dua program yang mengerjakan operasi yang sama tapi berbeda, satu dapat menggunakan synchronous dan yang satunya lagi dapat menggunakan asynchronous.
var fs = require('fs');
try {
 var data = fs.readFileSync('README.md', 'ascii');
 console.log(data);
}catch (err) {
 console.error("There was an error opening the file:");
 console.log(err);
}
Operasi membaca atau memperoleh data file yang dilakukan program diatas, menggunakan operasi synchronous readFileSync(). Program tidak akan melanjutkan operasi lain sebelum readFileSync() selesai dieksekusi dan mengembalikan teks file README.md. Ketika menggunakan operasi synchronous terkadang juga mengembalikan exception atau kesalahan, sehingga penggunaan try/catch harus dilakukan untuk kestabilan dan debugging program. Pemrograman seperti diatas tentu tidak asing lagi bagi Anda, karena hampir semua pemrograman yang Anda lakukan memiliki operasi synchronous seperti diatas.
var fs = require('fs');
fs.readFile('README.md', 'ascii', function(err,data){
 if(err) {
 console.error("Could not open file: %s", err);
 process.exit(1);
 }
console.log(data.toString('ascii'));
});
Program ini sama dengan program yang pertama, yaitu mendapatkan isi dari sebuah file README tapi bedanya pada penggunaan fungsi operasi asynchronous. Pada program yang kedua ini menggunakan fungsi asynchronous readFile(). Semua fungsi asynchronous nodejs adalah memiliki argument callback yang biasanya harus dilaukan pemasukan pada akhir parameter. Fungsi readFile() diatas memiliki callback yang akan beroperasi untuk display isi file ke console. Ini dilakukan jika operasi readFile() selesai dilakukan. Kemudahan Asynchronous I/O dan Event-driven NodeJS
1.      Independent Code
Prinsipnya semua operasi yang dependent terhadap operasi asynchronous dapat diletakkan pada callback operasi asynchronous tersebut. Hal ini tentunya dapat menciptakan blok-blok operasi yang independent terhadap yang lain.
2.      Nested Callbacks
Pada pemrograman synchronous, fungsi operasi tergantung pada operasi lain yang berada pada baris atasnya, ini yang dinamakan dengan linier sequence. Tetapi pada nodejs dengan dukungan asynchronous dan event driven nya, urutan eksekusi operasi dapat dilakukan dengan nested callbacks. Ini bukan dari atas ke bawah seperti pada linier sequence, tapi secara prinsip fungsi callback dieksekusi setelah fungsi asynchronous selesai dilakukan.
var fs = require('fs');
var Filename='README.md';
fs.chmod(Filename, 777, function (err) { 
 fs.rename(Filename, "READ.md", function (err) {
 fs.stat("READ.md", function (err, stats) {
 var isFile = stats.isFile();
  });
 });
});
Pada contoh program diatas, terdapat tiga operasi yang dilakukan. Mengubahpermission file README.md, mengubah nama file README.md dan terakhir mendapatkan informasi seputar file READ.md. Callback fungsi chmod() merupakan fungsi rename(), sedangkan callback rename() adalah stat(). Dengan cara nested callbacks seperti inilah urutan eksekusi program dilakukan.
3.      Parallelisation
Non-blocking I/O pada NodeJS memungkinkan untuk menjalankan operasi-operasi secara pararel. Kode program berikut adalah contoh parallelisation operasi fungsistat(). Tujuan dari program ini adalah menghitung total size file pada sebuah direktori.
var fs = require('fs');
var count = 0,
 totalBytes = 0;
fs.readdir(".", function (err, filenames) {
 var i;
 count = filenames.length;
 for (i = 0; i < filenames.length; i++) {
 fs.stat("./" + filenames[i], function (err, stats) {
 totalBytes += stats.size;
 count--;
 if (count === 0) {
 console.log(totalBytes);
 }
 });
 }
 });
Fungsi stat() akan dilakukan pada masing-masing file. Tiap fungsi stat() akan dijalankan secara pararel satu dengan lainnya.
4.      Code Reuse
Dalam pemrograman NodeJS, Anda dapat me-wrapper kode yang Anda buat kedalam sebuah fungsi. Semua bahasa pemrograman apapun tentunya dapat melakukannya, tapi kemudahaannya disini adalah kode yang di-wrapper dapat dimasukkan sebagai argument pada fungsi lain.
var fs = require('fs');
var path1 = "./",
 path2 = ".././",
 logCount;
function countFiles(path, callback) {
 fs.readdir(path, function (err, filenames) {
 callback(err, path, filenames.length);
 });
}
logCount = function (err, path, count) {
 console.log(count + " files in " + path);
};
countFiles(path1, logCount); 
countFiles(path2, logCount);
Pada contoh, kita me-wrapper kode untuk display teks ke console dengan nama logCount. Sehingga kita dapat memakai ulang wrapper logCount pada operasi menghitung jumlah file pada path1 dan juga operasi pada path2.







Bab 4
Kesimpulan

Pemrograman Event Driven yang banyak digunakan dalam antarmuka pengguna grafis, misalnya kerangka concurrency Android dirancang menggunakan Half Async pola Half Sync, di mana kombinasi dari pengolahan event loop tunggal threaded (untuk UI utama benang) dan threading sinkron (untuk benang latar belakang) digunakan. Hal ini karena UI widget bukan merupakan benang aman, dan sementara mereka extensible, tidak ada cara untuk menjamin bahwa semua implementasi adalah benang aman, sehingga model tunggal benang meredakan masalah ini.
Desain mereka toolkit telah dikritik, misalnya, oleh Miro Samek, untuk mempromosikan model terlalu disederhanakan acara-tindakan, programmer terkemuka untuk membuat rawan kesalahan, sulit untuk memperluas dan kode aplikasi berlebihan kompleks. Dia menulis, pendekatan seperti ini lahan subur untuk bug untuk setidaknya tiga alasan:
1.      Ini selalu mengarah ke berbelit logika kondisional.
2.      Setiap titik percabangan memerlukan evaluasi dari ekspresi yang kompleks.
3.      Beralih antara modus yang berbeda membutuhkan memodifikasi banyak variabel, yang semua dapat dengan mudah menyebabkan inkonsistensi)
Pendekatan event driven digunakan dalam bahasa deskripsi perangkat keras. Sebuah konteks thread hanya membutuhkan CPU tumpukan sementara aktif memproses suatu peristiwa, setelah dilakukan CPU dapat melanjutkan untuk memproses benang-event lainnya, yang memungkinkan jumlah yang sangat besar benang untuk ditangani. Ini pada dasarnya adalah sebuah pendekatan mesin Finite-negara.
                                                                                                                                                                                                                               


Sumber




irfan musthaf

Phasellus facilisis convallis metus, ut imperdiet augue auctor nec. Duis at velit id augue lobortis porta. Sed varius, enim accumsan aliquam tincidunt, tortor urna vulputate quam, eget finibus urna est in augue.

Tidak ada komentar: