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.
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
http://megaayufa.blogspot.co.id/2012/10/pemrograman-prosedural-event-driven.html, diakses
pada 6 Oktober 2015
https://informartitekuswim.wordpress.com/materi-kuliah/pemrograman-berorientasi-objek/, diakses
pada 6 Oktober 2015
http://bisakomputer.com/nodejs-part-i-asynchronous-io-dan-event-driven/, diakses
pada 6 Oktober 2015
Tidak ada komentar:
Posting Komentar