PERTEMUAN 1 KONSEP PERANCANGAN PROGRAM
POKOK BAHASAN 1. Pendahuluan 2. Permasalahan Terkait Perangkat Lunak (Program) 3. Program Program dan dan Fakto Faktorr Kualitas Kualitas Program Program 4. Software Software Developmen Developmentt Life Cycle 5. Fakta Dalam Pembangu Pembangunan nan Program Program 6. Metodolog Metodologii Peran Perancang cangan an Program Program 7. Teknik Pemrograman 8. Paradigma Paradigma Bahasa Bahasa Pemrogra Pemrograman man 9. Kriteria Kriteria Bahasa Bahasa Pemrogra Pemrograman man
PENDAHULUAN Kebutuhan informasi menjadi unsur utama dalam bisnis sehingga mendorong pertumbuhan industri software. Nilai industri software di Indonesia sampai akhir tahun 2013 antara Rp 3.5 –5 Trilyun yun den eng ga n nilai pertumbuhan 18-20% per tahun (Pratama, 2013). perangkat lunak dikembangkan Produk (developed ) atau direkayasa (engineered ) sesu sesuai ai de deng ngan an kebu kebutu tuha han n pe pema maka kaii akhi akhirr (end (end user).
PERMASALAHAN TERKAIT PERANGKAT LUNAK (PROGRAM)
APA PROGRAM ? Kumpulan instruksi / perintah yang dirangkaian sehingga membentuk suatu proses untuk mengolah data.
FAKTOR KUALITAS PROGRAM 1. Correctness : besarnya program dapat memuaskan spesifikasi dan objektivitas dari misi pelanggan. 2. Reliability : besarnya program dapat diharapkan memenuhi fungsi-fungsi yang dikehendaki. 3. Efficiency : jumlah sumber-sumber dan kode yang dibutuhkan program untuk menjalankan fungsifungsinya. 4. Integrity : besarnya pengontrolan pengaksesan oleh seorang yang tidak mempunyai otorisasi terhadap program dan data. 5. Usability : usaha yang dibutuhkan untuk mempelajari, mengoperasikan, menyiapkan input & menginterpretasikan output program .
FAKTOR KUALITAS PROGRAM (lanjutan) 6. Maintability : usaha yang dibutuhkan untuk menempatkan & menetapkan kesalahan pada program. 7. Flexibility : usaha yang dibutuhkan untuk memodifikasi program yang dibutuhkan. 8. Testability : usaha yang dibutuhkan untuk menguji program untuk menjamin program sesuai yang diharapkan. 9. Portability : usaha yang dibutuhkan untuk mnetransfer program dari lingkungan ke lingkungan lain. 10. Reusability : besarnya program dapat digunakan oleh aplikasi lain.
SOFTWARE SOFTWARE DEVELOPMENT DEVELOPMENT LIFE CYCLE SDLC
(SDLC)
adalah serangkaian aktivitas yang dilaksanakan oleh oleh prof profes esio iona nall da dan n pe pema maka kaii sist sistem em info inform rmas asii un untu tuk k meng me ngemb embang angkan kan da dan n me meng ngim imple pleme ment ntas asika ikan n soft softwa ware re (program). Aktiv ivit itas as at atau au pros proses es stan standa darr yang yang digu diguna naka kan n un untu tuk k Akt membangun membangun program, yaitu : • Analisa Analisa kebutuhan kebutuhan (spesifikasi (spesifikasi)) • De Desa sain in • Co Codi ding ng • Pe Peng nguji ujian an
FAKTA DALAM PEMBANGUNAN PROGRAM
METODOLOGI PERANCANGAN PROGRAM Prinsip dasar dalam pembangunan program berdasarkan input data, proses dan output. Beberapa pendekatan perancangan program : 1. Procedure-Driven 2. Event-Driven 3. Data-Driven
PROCEDURE-DRIVEN un untuk perancangan program berdasarkan pada apa yang akan dilakukan program (proses atau fungsi). adalah dengan Strateginya memecahkan setiap fungsi menjadi lebih kecil dan lebih spesifik. spesifik. Contoh : Program untuk persegi panjang dibagi menjadi fungsi : hitu itung kelil liling ing dan hitu itung luas persegi panjang Procedure-Driven
EVENT-DRIVEN Event-Driven
un untuk perancangan program berdasarkan pada kejadian atau interaksi dari luar dapat menyebabkan perubahan dari satu kondisi ke kondisi lain. Keadaan awal dari sebuah program mengidentifikasikan seluruh pemicu yang mewakili kejadian untuk kondisi yang akan dihasilkan. Contoh : apabila tombol mulai pada program stopwatch di klik maka program akan menghitung waktu yang berjalan sampai tombol stop di klik.
DATA-DRIVEN Data-Driven untuk
perancangan program berdasarkan struktur data. Dimulai dengan analisis data dan hubungan antara data, untuk menentukan struktur data dasar. Setelah struktur data telah ditetapkan, output data yang diperlukan diperiksa dalam rangka menentukan proses apa yang diperlukan untuk mengkonversi data input ke output.
CONTOH DATA-DRIVEN
Untuk membuat program menghitung bonus karyawan. Besar bonus masing-masing karyawan tergantung gaji pokok dan jenis tanggung-jawabnya. Data Input : Data Profil Karyawan (seperti : nik, nama, jabatan, gaji pokok) Data Output : Bonus karyawan Proses : Ambil tanggung_jawab dari profil_karyawan If tanggung_jawab = “Sales manager” Then bonus = gaji_pokok * 0.10 Else If tanggung_jawab = “Senior salesman” Then bonus = gaji_pokok * 0.08 Else … dan seterusnya …
BELAJAR PEMROGRAMAN ?
Pemrograman adalah proses menulis, menguji dan memperbaiki (debug), dan memelihara kode yang membangun sebuah program komputer. Belajar pemrograman adalah belajar tentang metodologi pemecahan masalah kemudian menuangkannya dalam suatu notasi yang mudah dibaca dan dipahami.
TEKNIK PEMROGRAMAN
Permasalahan bisnis yang semakin kompleks dan rumit sedangkan waktu yang diberikan untuk pengembangan program semakin cepat. Dibutuhkan teknik pemrograman untuk mengembangkan program yang kompleks dan rumit dalam waktu yang cepat.
TEKNIK PEMROGRAMAN (lanjutan) 1. Pemrograman Tidak Terstruktur 2. Pemrograman Terstruktur 3. Pemrograman Prosedural 4. Pemrograman Modular 5. Pemrograman Berorientasi Objek
1. PEMROGRAMAN TIDAK TERSTRUKTUR
Pemrograman tidak terstruktur adalah suatu teknik pemrograman dimana penulisan instruksi tidak teratur dan sistematis sehingga sulit untuk dipahami.
Contoh : Penggunaan perintah GOTO yang banyak dalam program.
2. PEMROGRAMAN TERSTRUKTUR
Pemrograman terstruktur adalah suatu teknik pemrograman dimana penulisan instruksi secara sistematis, logis dan tersusun berdasarkan algoritma yang sederhana dan mudah dipahami. Prinsip pada pemrograman terstruktur jika suatu proses sudah sampai pada titik tertentu, maka proses selanjutnya tidak bisa melakukan proses pada baris sebelumnya.
3. PEMROGRAMAN PROSEDURAL Pemrograman
prosedural adalah suatu teknik pemrograman dimana penulisan instruksi yang sama dibuat dalam sub program tersendiri sehingga pembuatan program lebih cepat dan memudahkan perbaikan apabila terjadi kesalahan.
4. PEMROGRAMAN MODULAR
Pemrograman modular adalah suatu teknik pemrograman dimana prosedur dari fungsi umum dikelompokkan dalam modul-modul dan setiap modul menunjukkan fungsi dan tugas tunggal.
5. PEMROGRAMAN BERORIENTASI OBJEK
Pemrograman berbasis obyek (OOP) mendasarkan pada konsep objek dan interaksinya.
Objek berasal dari tipe data abstrak.
Objek
dapat menerima pesan (message), mengolah data, dan mengirimkan pesan ke object lain membentuk interaksi antar object.
Objek bersifat independen: tiap object dapat dipandang sebagai sebuah entitas mandiri yang memiliki peran atau tanggung jawab tertentu.
5. PEMROGRAMAN BERORIENTASI OBJEK (lanjutan)
BELAJAR BAHASA PEMROGRAMAN ?
Bahasa pemrograman merupakan suatu himpunan dari aturan sintaks dan semantik yang dipakai untuk mendefinisikan program komputer.
Belajar bahasa pemrograman adalah belajar memakai suatu bahasa pemrograman sesuai dengan aturan tata bahasanya.
TIGA FAKTOR PENTING DALAM BAHASA PEMROGRAMAN 1. Sintaks 2. Semantik 3. Kebenaran Logika
SINTAKS Sintaks adalah aturan penulisan suatu bahasa pemograman (tata bahasanya). Contoh : #include main() { pernyataan; } Apabila terjadi kesalahan dalam penulisan sintaks maka akan terjadi error pada saat kompilasi.
SEMANTIK Semantik adalah arti atau maksud terkandung didalam statement tersebut.
yang
Contoh : \n; arti semantiknya baris baru. Printf(); arti semantiknya mencetak string ke layar. Getch(); arti semantiknya membaca sebuah karakter.
KEBENARAN LOGIKA Kebenaran logika adalah berhubungan dengan benar tidaknya urutan statement. Contoh : main() {int bil=1; while(bil<=5) printf(" %d ",bil); getch();} Output dari program di atas terjadi perulangan terus menerus yang tidak berakhir.
JENIS-JENIS BAHASA PEMROGRAMAN 1. Bahasa Tingkat Rendah Dirancang agar setiap instruksi langsung dikerjakan oleh komputer tanpa translator. Contoh : Assembler 2. Bahasa Tingkat Tinggi Bahasa Pemrograman yang dalam penulisan pernyataannya mudah dipahami secara langsung. Perlu diterjamahkan oleh translator bahasa
Contoh : Algol, Fortran, Pascal, Visual Basic, Oracle, dll.
PARADIGMA BAHASA PEMROGRAMAN
KRITERIA BAHASA PEMROGRAMAN .
1. Clarity, simplicity dan unity Kemudahan, kesederhanaan dan kesatuan merupakan suatu kombinasi yang membantu programer mengembangkan suatu algoritma. 2. Orthogonality Merupakan suatu atribut yang dapat dikombinasikan dengan beragam fitur bahasa pemrograman sehingga setiap kombinasinya mempunyai arti dan dapat digunakan.
KRITERIA BAHASA PEMROGRAMAN (lanjutan) . Kewajaran untuk aplikasi 3. Bahasa pemrograman harus mempunyai struktur data, operasi-operasi, struktur kontrol dan sintaks yang tepat untuk memecahkan suatu masalah. 4. Mendukung Abstraksi Abstraksi merupakan suatu hal yang substansial bagi programer untuk membuat suatu solusi dari masalah yang dihadapi.
KRITERIA BAHASA PEMROGRAMAN (lanjutan) . Kemudahan untuk verifikasi program 5.
Dengan verifikasi data yang mudah, maka suatu program akan dengan mudah dibangun dan dikembangkan .
6. Lingkungan pemrograman Lingkungan pemrograman dapat berarti editor yang digunakan, dokumentasi yang baik, fasilitas debugging, user interface yang baik ataupun tools lain yang dapat digunakan untuk memudahkan pekerjaan programer.
.
KRITERIA BAHASA PEMROGRAMAN (lanjutan) . Portabilitas program 7. Kemudahan program untuk dipakai di berbagai jenis komputer. 8. Biaya penggunaan Biaya eksekusi program Biaya kompilasi program Biaya penciptaan, testing dan penggunaan program Biaya pemeliharaan program .
DISKUSI 1. Apa penyebab terjadinya permasalahan dalam perangkat lunak (program) yang dihasilkan. 2. Dalam mempelajari bahasa pemrograman apa yang pertama kali harus dipelajari sehingga dapat melakukan pemrograman ?
PERTEMUAN 2 ALGORITMA & PEMROGRAMAN
POKOK BAHASAN 1. Pendahuluan 2. Tahapan Pembangunan Program 3. Pengenalan Algoritma 4. Cara Menyajikan Algoritma 5. Data Program 6. Elemen-Elemen Program
PENDAHULUAN
Perancangan program merupakan pengembangan solusi terhadap identifikasi masalah dan menghasilkan serangkaian instruksi yang membangun sebuah program komputer untuk menghasilkan output.
Sebuah program harus dirancang secara sistematis dan benar sebelumnya memulai coding. Perancangan program dihasilkan dalam pembangunan algoritma.
PERANAN ALGORITMA DALAM PROGRAM Program komputer adalah perwujudan atau implementasi dari algoritma yang di tulis dalam bahasa pemrograman.
ALGORITMA
Translasi BAHASA PEMROGRAMAN
Kompilasi
KOMPUTER
Interpretasi oleh CPU untuk Menjalankan operasi pada mesin komputer sesuai dengan intruksi bahasa pemrograman.
APAKAH ALGORITMA ? Algoritma berisi langkah-langkah yang dibutuhkan untuk menyelesaikan sebuah tugas. Sebuah algoritma harus: – Memiliki masukkan (input) – Menghasilkan keluaran (output) – Terdefinisi jelas (definiteness) – Memiliki kondisi akhir (finiteness) – Memberi solusi yang diharapkan (effectiveness) – Berlaku untuk setiap himpunan input sesuai dengan masalah yang diberikan (generality)
CONTOH ALGORITMA Program Hitung_Kembali {menghitung uang kembali apabila input data tersebut diberikan} Deklarasi long sisa, uang_bayar, total_bayar Deskripsi Baca total_bayar Hitung sisa = uang_bayar - total_bayar Cetak sisa END
CONTOH ALGORITMA YANG TIDAK BAIK Program Cetak_Berulang {Mencetak kata sebanyak i } Deklarasi integer i Deskripsi i=0 While (i <= 5) cetak ”Bina Sarana Informatika” END
CARA UNTUK MENYAJIKAN ALGORITMA 1. Pseudocode 2. Flowchart
1. PSEUDOCODE Pseudocode
merupakan salah satu cara untuk menuliskan algoritma Karakteristik Pseudocode: – Statement / Perintah di tulis dalam bahasa Inggris / Indonesia sederhana. – Setiap perintah di tulis dalam baris terpisah – Keyword digunakan untuk menjelaskan control structure tertentu. – Setiap set/bagian instruksi memiliki awal dan akhir – Pengelompokkan statement bisa membentuk satu modul yang mempunyai nama.
STRUKTUR PSEUDOCODE
Algoritma terdiri dari tiga bagian yaitu : Judul (Header) : mendefinisikan nama dengan menentukan apakah teks tersebut adalah program, prosedur, fungsi. Deklarasi : mendefinisikan nama variabel, nama konstanta, nama prosedur, nama fungsi yang akan digunakan dalam algoritma. Deskripsi : mendefinisikan langkah-langkah penyelesaian masalah mulai dari input, proses dan ouput.
Pada setiap bagian tersebut apabila akan dituliskan komentar mengenai setiap bagian tersebut dituliskan diantara tanda kurung kurawal Contoh : { Komentar }
CONTOH PSEUDOCODE Program Luas_Lingkaran {menghitung luas sebuah lingkaran apabila jari-jari lingkaran tersebut diberikan} Deklarasi inisialisasi konstanta phi = 3.14 inisialisasi r, luas_lingkaran Deskripsi Baca data r luas_lingkaran = phi * r * r cetak luas_lingkaran
2. FLOWCHART Flowchart
adalah suatu alat yang menunjukkan langkah-langkah yang harus dilaksanakan dalam menyelesaikan suatu permasalahan untuk komputasi dengan cara mengekspresikan ke dalam serangkaian simbol-simbol grafis.
CONTOH FLOWCHART
SIMBOL-SIMBOL FLOWCHART PROGRAM Simbol
Keterangan TERMINAL Digunakan untuk menggunakan awal dan akhir dari suatu kegiatan. DECISION Digunakan untuk menggambarkan proses pengujian suatu kondisi yang ada. PREPARATION Digunakan untuk menggambarkan persiapan harga awal, dari proses yang akan dilakukan. FLOW LINE Digunakan untuk menggambarkan hubungan proses dari satu proses ke proses lainnya.
SIMBOL-SIMBOL FLOWCHART PROGRAM Simbol
Keterangan INPUT/OUTPUT Digunakan untuk menggambarkan proses memasukan data yang berupa pembacaan data dan sekaligus proses keluaran yang berupa pencetakan data. SUBROUTINE Digunakan untuk menggambarkan proses pemanggilan sub program dari main program (recursivitas). CONNECTOR Digunakan untuk menghubungkan alur proses ke dalam satu halaman atau halaman yang sama. OFF-PAGE CONNECTOR Digunakan untuk menghubungkan alur proses dalam halaman yang berbeda atau ke halaman berikutnya.
DATA PROGRAM • Program ditulis untuk memproses data, dibutuhkan pemahaman yang baik terhadap sifat dan struktur dari data yang sedang diproses. • Data dalam program mungkin dapat berupa variabel tunggal (seperti : integer, karakter), atau kelompok (seperti : array, file)
Variabel & Konstanta Variabel
adalah nama yang diberikan kepada kumpulan sel memori untuk menyimpan item data tertentu yang nilainya dapat berubah pada program dieksekusi. Contoh : namamhs, tgl_lahir, alamat1, dll.
Konstanta
adalah item data dengan nama dan nilai yang tetap sama selama program di eksekusi. Contoh : define phi 3.14 atau phi = 3.14.
ELEMEN-ELEMEN PROGRAM A. Aturan leksikal B. Tipe Data C. Expression D. Statement E. Function & Procedure
1. Token
Token (Kata) yaitu elemen terkecil pada bahasa pemrograman yang memiliki arti penting bagi compiler.
Yang termasuk token antara lain: identifier, keywords(reserved words), operator, dan sebagainya.
Token yang satu dengan yang lain dipisahkan dengan satu atau lebih spasi, tabulasi, baris baru, atau komentar.
2. Komentar Digunakan
untuk memberikan suatu keterangan yang akan menjelaskan isi dari program secara singkat. Komentar hanya sebuah tulisan pada program dan tidak akan diproses oleh komputer. Bertindak sebagai dokumentasi. komentar pada setiap bahasa Notasi pemrograman berbeda-beda. Contoh : − {komentar pada pascal} − //komentar pada c++ − ‘komentar pada visual basic
3. IDENTIFIER Identifier
adalah token yang merepresentasikan nama sesuatu seperti : variabel/konstanta, field/atribut, prosedur/fungsi, dan lain-lain.
Aturan
pemberian nama identifier: a. Karakter pertama harus berupa huruf. b.Karakter kedua dan selanjutnya dapat berupa huruf/angka/underscore. c. Tidak boleh menggunakan karakter simbol (@ # $ % & *, dll) kecuali underscore. d. Tidak boleh menggunakan kata kunci (keywords/ reserved words).
3. IDENTIFIER (lanjutan) e. Huruf besar/kecil dianggap berbeda (khusus C++) f. Tidak boleh ada spasi. g. Nama identifier sebaiknya disesuaikan dengan kebutuhan atau sesuai objek yang akan diberi nama. Contoh penamaan identifier yang benar : idcust, tgl_lahir, telp1, dll. Contoh penamaan identifier yang tidak benar : @kdbrg, double, nama-depan, 3erat_badan, dll.
4. Keywords /Reserved Words Keywords
atau reserved words merupakan kata-kata yang telah ada/didefinisikan oleh bahasa pemrograman yang bersangkutan. Kata-kata tersebut telah memiliki definisi yang sudah tetap dan tidak dapat diubah. Karena telah memiliki definisi tertentu, maka katakata ini tidak dapat digunakan sebagai identifier. Contoh Keyword : break, switch, continue, repeat, until, function dll
5. OPERATOR
Merupakan simbol-simbol khusus yang digunakan untuk mengoperasikan suatu nilai data (operand). Operator yang digunakan dalam pemrograman: − Arithmetic operator − Assignment operator − Logical operator − Relational operator − Pointer operator − Bitwise operator
B. TIPE DATA Tipe data digunakan untuk menentukan jenis nilai yang dapat ditampung oleh suatu variabel. Pada suatu bahasa pemrograman umumnya telah menyediakan tipe-tipe data yang sederhana (simple) maupun yang terstruktur dan apabila kita membutuhkan tipe data yang belum tersedia, kita dapat mendefinisikan sendiri tipe data baru, yang disebut enumerated type.
B. TIPE DATA (lanjutan) Tipe
data terstruktur yaitu tipe data yang dapat menampung lebih dari satu nilai, sbb: 1. Array adalah tipe data berindeks yang terdiri dari satu atau lebih elemen/komponen yang memiliki tipe data yang sama. 2. Record adalah tipe data yang digunakan untuk merepresentasikan kumpulan (set) elemen/komponen yang memiliki satu jenis atau lebih tipe data. Tiap element disebut juga field atau property atau attribute
C. Expression
Expression (ekspresi) yaitu suatu pernyataan yang menghasilkan suatu nilai. Expression tersusun dari operator dan operand yang digunakan untuk menghitung atau memberi suatu nilai suatu variable atau identifier . Expression yang paling sederhana yaitu nama variable . Expression yang lebih kompleks akan melibatkan operator-operator, maupun pemanggilan function atau procedure .
D. Statement
Statement merupakan bagian program yang berisi perintah yang akan dieksekusi / dijalankan. Karena itu, statement-statement ini menentukan bagaimana jalannya program dan bagaimana suatu nilai variable dimanipulasi/berubah. Statement dapat dikelompokan menjadi antara lain: 1. Simple Statement 2. Compound Statement
1. Simple Statement Yang digolongkan ke dalam simple statement (statement sederhana) yaitu statement yang tidak berisi statement lainnya, sebagai berikut : Assignment Statement yaitu statement yang digunakan untuk memberikan nilai ke suatu variable, contohnya : a := 10; b := a * 2; c := c * b; Statement untuk pemanggilan function atau procedure yaitu statement yang memanggil function atau procedure yang telah didefinisikan pada program. Contoh : Calculate (a,b); Cetak (a,b);
1. Simple Statement (lanjutan)
Jump Statement yaitu statement yang digunakan untuk melompati statement-statement lain. Contoh : Melompat ke statement tertentu goto Keluar dari iterative statement break
2. Compound Statement
Compound statement (kumpulan statement) adalah sekumpulan statement yang terdiri dari statement-statement lain, termasuk juga selection statement dan interaction. Selection statement digunakan untuk melakukan pemilihan sekumpulan statement (compound statement). Contoh : a. If ……Then b. Perintah Case Iteration statement digunakan untuk melakukan perulangan sekumpulan statement (compound statement). Contoh : a. Do While b. Repeat …….Until c. For……EndFor
E. Function dan Procedure • Procedure dan Function disebut juga subroutine , merupakan blok statement yang dapat dipanggil dari lokasi yang berbeda di dalam program. • Yang membedakan antara function dan procedure yaitu: suatu function jika dijalankan/dipanggil akan mengembalikan suatu nilai. • Ketika procedure atau function dipanggil, kita dapat melewatkan suatu nilai ke dalam function atau procedure tersebut. • Nilai yang dilewatkan disebut juga argument atau parameter.
TUGAS 1 Buatlah pseudocode & flowchart untuk menghasilkan 1 liter air dengan menggunakan tabung dengan ukuran 3 liter dan 5 liter. Catatan Tugas : Tugas dibuat pada kertas folio bergaris dengan menggunakan bolpoint. Tugas dikumpulkan pada saat pertemuan 3. Bagi mahasiswa yang tidak mengumpulkan tugas maka tidak mendapat nilai tugas 1 (tidak ada sistem susulan).
PERTEMUAN 3 TAHAPAN PEMBANGUNAN PROGRAM
POKOK BAHASAN 1. Definisi Masalah 2. Outline Solusi 3. Pengembangan outline ke dalam algoritma 4. Melakukan test terhadap algoritma 5. Pemeriksaan Algoritma 6. Memindahkan Algoritma Ke Dalam Bahasa Pemrograman
DEFINISI MASALAH
Pada tahap ini memerlukan pemahaman terhadap permasalah dengan membaca berulang kali sampai dengan mengerti apa yang dibutuhkan. Permasalahan dibagi kedalam tiga komponen: – Input / Masukan – Output / Keluaran – Proses 3
CONTOH KASUS Sebuah toko peralatan mandi menjual bak mandi plastik. Banyak customer yang bertanya volume air yang dapat ditampung pada bak mandi tersebut. Oleh karena itu dibutuhkan program untuk menghitung volume air bak mandi sesuai dengan ukuran yang diinput. Definisi Masalah : Input : panjang, lebar dan tinggi Output : volume bak mandi Proses : volume bak mandi = panjang x lebar x tinggi
OUTLINE SOLUSI
Setelah permasalahan didefinisikan, permasalahan dapat di bagi ke dalam tugas-tugas atau langkah langkah yang lebih kecil dan menghasilkan outline solusi Outline solusi awal dapat terdiri dari: – Proses utama – Subtask utama – Struktur Kontrol – Variabel dan struktur record – Logic utama (mainline) 5
OUTLINE SOLUSI Input Baca p Baca l Baca t
Proses
volume_bak = p x l x t
Output Volume_bak
PENGEMBANGAN OUTLINE KE DALAM ALGORITMA
Outline solusi pada langkah kedua dikembangkan menjadi algoritma yaitu sebuah set langkah yang menggambarkan tugas yang akan dikerjakan dan urutan pengerjaannya.
7
PENGEMBANGAN OUTLINE KE DALAM ALGORITMA (lanjutan) Program Hitung_Volume_Bak {menghitung volume bak mandi apabila input data tersebut diberikan} Deklarasi float p, l, t, volume_bak Deskripsi Baca p Baca l Baca t Hitung volume_bak p ! l ! t "etak volume_bak
End
MELAKUKAN TEST TERHADAP ALGORITMA
Tujuan utama dari melakukan test terhadap algoritma adalah adalah untuk menemukan kesalahan utama logik sejak awal, sehingga akan lebih mudah diperbaiki. Data test diperlukan untuk melakukan test terhadap algoritma ini.
9
DESK CHECKS
VS TEST PLANS
Test Plan fokus
pada nilai input dan output yang dibutuhkan untuk menguji program tanpa memperdulikan kinerja internal. Contoh : Apa output yang benar dari sebuah input ? Desk Check
menekankan pada nilai variabel dan logika. Contoh : Berapakah nilai variabel x setelah pernyataan; Apa pernyataan berikutnya yang akan dieksekusi ?
TAHAPAN PENGECEKAN ALGORITMA 1. 2. 3. 4.
5. 6.
Pilih data sederhana yang valid. Dua atau tiga data biasanya sudah mencukupi. Tentukan hasil output yang diharapkan untuk setiap set data. Buatlah tabel yang nama variabel yang ada pada algoritma di sebuah kertas Jalankan test satu persatu mengikuti algoritma yang ada, mulai dari perintah / statement pertama sampai dengan selesai Ulangi langkah tersebut menggunakan set data yang lain. Cek apakah hasil dari langkah 5, sesuai dengan hasil yang diharapkan di langkah kedua 11
PEMERIKSAAN ALGORITMA Test Plan − Input Data
− Output
Data 1 Data 2 p
3
2
l
1
1.5
t
2
1
Volume bak
Data 1
Data 2
6
3
TABEL DESK CHECK Data 1
Data 2
Baca p
3
2
Baca l
1
1.5
Baca t
2
1
Cetak volume_bak
6
3
MEMINDAHKAN ALGORITMA KE DALAM BAHASA PEMROGRAMAN
Setelah ke-empat langkah sebelumnya dilakukan, maka pencodingan dapat dimulai dengan menggunakan bahasa pemrograman yang dipilih.
14
MEMINDAHKAN ALGORITMA KE DALAM BAHASA PEMROGRAMAN (lanjutan) //Program Volume Bak include include include Main() { float p, l, t, volume_bak; printf(”panjang :”);scanf (”%f”,p); printf(”lebar :”);scanf (”%f”,l); printf(”tinggi :”);scanf (”%f”,t); Volume_bak = p* l * t; Printf(”volume bak : %5.2f”,volume_bak); } 15
MENJALANKAN PROGRAM PADA KOMPUTER
Setelah pengcodingan, maka program dapat dijalankan pada komputer. Jika program sudah didesain dengan baik, maka akan mengurangi tingkat kesalahan dalam melakukan testing program. Langkah ini perlu dilakukan beberapa kali, sehingga program yang dijalankan dapat berfungsi dengan benar 16
DOKUMENTASI DAN PEMELIHARAAN PROGRAM
Dokumentasi melibatkan eksternal dokumentasi (hierarchy chart, algoritma solusi, dan hasil data test) dan internal dokumentasi (coding program). Pemeliharaan program meliputi perubahan yang dialami oleh program (perbaikan ataupun penambahan modul, dll)
17
DISKUSI 1. Mengapa dibutuhkan tahapan dalam perancangan program ? 2. Apa manfaat Desk Checking Algoritma/pemeriksaan algoritma ?
18
LATIHAN 1 Sebuah sebidang tanah dengan ukuran 22 m x 15 m dibangun sebidang rumah dengan ukuran 8 m x 10 m. Sisa tanah yang tidak dibangun rumah ditumbuhi rumput. Pemilik rumah berencana memanggil tukang potong rumput untuk merapikan rumput di halaman rumahnya. Tarif per jam tukang rumput sebesar 100 ribu/jam. Berapa tarif yang harus dibayar memotong rumput halaman rumah, dengan rata-rata 2 m2 / menit.
19
LATIHAN 2 Seorang kontraktor sedang membangun sebuah rumah dengan ukuran 8 m x 12 m. Rumah tersebut akan dipasangkan ubin dengan ukuran 30 x 30. Setiap kardus memiliki ukuran 1 m2. Berapa kardus ubin yang harus dibeli ? Buatlah pseudocode & flowchart serta program hitung kebutuhan ubin.
TUGAS 2 Buatlah pseudocode, flowchart dan program untuk : 1. Menentukan apakah suatu bilangan merupakan bilangan prima atau bukan ? 2. Program untuk menentukan apakah tahun yang diinputkan termasuk tahun kabisat/bukan. Catatan Tugas : Tugas dibuat pada kertas folio bergaris dengan menggunakan bolpoint. Tugas dikumpulkan pada saat pertemuan 4. Bagi mahasiswa yang tidak mengumpulkan tugas maka tidak mendapat nilai tugas 2 (tidak ada sistem susulan).
PERTEMUAN 4 PENGEMBANGAN PSEUDOCODE STRUKTUR KONTROL PEMILIHAN
POKOK BAHASAN 1. Definisi Struktur Kontrol Pemilihan 2. Pseudocode Struktur Kontrol Pemilihan 3. Desk Checking Struktur Kontrol Pemilihan 4. Contoh Algoritma & Pseudocode
STRUKTUR KONTROL PEMILIHAN Struktur kontrol pemilihan dalam pseudocode digunakan untuk menggambarkan: antara dua atau lebih tindakan, Pilihan tergantung pada apakah kondisi yang diberikan. Contoh : IF jumlah orang > 10 THEN pintu dibuka ELSE dibatalkan karena kurang peminatnya.
Kondisi bernilai True atau False Contoh : IF member THEN Diskon = 20% * Harga 3
STRUKTUR KONTROL PEMILIHAN (lanjutan) Kondisi
berdasarkan perbandingan 2 item yang dinyatakan dengan salah satu operator relasi berikut : < lebih kecil dari > lebih besar dari = sama dengan <= lebih kecil sama dengan >= lebih besar sama dengan <> tidak sama dengan
4
STRUKTUR KONTROL PEMILIHAN (lanjutan)
Ada beberapa variasi dari struktur kontrol selection yaitu: 1. Simple Selection 2. Combined / Multiple Selection 3. Nested Selection a. Linear Nested IF Statement b. Non-Linear IF Statement 4. Perintah Case
1. SIMPLE SELECTION
Simple selection terjadi jika harus memilih diantara dua alternatif yang ada, tergantung dari hasil kondisi apakah True atau false.
Keyword yang digunakan adalah : IF, THEN, ELSE, dan ENDIF
Simple
Selection ada 2 macam – Simple selection bercabang – Simple Selection tanpa cabang
A. SIMPLE SELECTION BERCABANG
Simple selection bercabang terjadi ketika pilihan dibuat dua jalur alternatif, tergantung pada hasil dari suatu kondisi bernilai benar atau salah Format Struktur Simple Selection Bercabang IF syarat THEN instruksi1 ELSE instruksi2 ENDIF Contoh IF Saldo > 3000000 THEN bunga = 0.05 * Saldo ELSE bunga = 0.01 * Saldo ENDIF
B. SIMPLE SELECTION TANPA CABANG
Simple selection tanpa cabang digunakan ketika instruksi yang dilakukan hanya ada kondisi benar saja.
Format Struktur Simple Selection Tanpa Cabang IF syarat THEN instruksi
Contoh:
Diskon = 0 IF Subtotal > 100000 THEN diskon = 0.1 * Subtotal ENDIF Total = Subtotal - Diskon
CONTOH KASUS SIMPLE SELECTION Buatlah pseudocode & flowchart untuk menentukan apakah penghasilan per bulan yang dimasukkan kena pajak atau tidak. (kena pajak jika penghasilan setahun lebih besar sama dengan Rp. 15.600.000)
JAWABAN KASUS SIMPLE SELECTION Input : penghasilan per bulan Output : keterangan Proses : 1. total_penghasilan = penghasilan x 12 bulan 2. Jika total_penghasilan >= 15600000 maka keterangan kena pajak.
OUTLINE SOLUSI Input Baca gaji
Proses
total_penghasilan = gaji * 12 IF total_penghasilan >=15600000 THEN keterangan=”Kena Pajak”
Output keterangan
PENGEMBANGAN OUTLINE KE DALAM ALGORITMA (lanjutan) Progra Program m Kena_P Kena_Paja ajak k {Menentukan kena pajak atau tidak apabila input data tersebut diberikan} Deklarasi string keterangan long gaji Deskripsi Baca gaji total_penghasilan = gaji * 12 IF total_penghasilan >=15600000 THEN THEN keterangan=”Kena keterangan=”Kena Pajak” ELSE Keterangan = ”Tidak Kena Pajak” Cetak keterangan ENDIF END
PEMERIKSAAN ALGORITMA Test Plan − In Inpu putt Da Data ta
Gaji
Data 1
Data 2
900,000
3,500,000
− Out utpu putt Da Data ta Keterangan
Data 1
Data 2
Tidak Kena Pajak
Kena Pajak
TABEL DESK CHECK Gaji Cettak ket Ce ketera erangan
Data 1
Data 2
900,000
3, 3,500,000
Tidak Ken ena a Paja ajak
Ken Ke na Pa Pajjak
2. COMBINED SELECTION Combined Selection terjadi jika kondisi yang harus diperiksa lebih dari satu. Kondisi tersebut dapat dihubungkan dihubungkan dengan menggun menggunakan akan AND atau atau OR. Format Struktur Combined Selection IF syarat1 operator logika syarat2 THEN instruksi1 Else instruksi2 ENDIF Contoh : IF ormik ormik AND semot semot THEN ket = ”LULUS” ELSE ket = ”GAGAL” ENDIF
3. Nested Selection
Nested selection terjadi, jika di dalam IF terdapat statement IF yang lain.
Ada
dua jenis nested selection Linear Nested IF Non-Linear Nested IF
A. Linear Nested IF Linear
Nested IF terjadi jika satu kondisi di cek untuk beberapa nilai. Format Struktur Linear Nested IF Statement IF syarat1 THEN instruksi1 ELSE IF syarat2 THEN instruksi2 ELSE instruksi3 ENDIF
A. Linear Nested IF (lanjutan)
Contoh Struktur Linear Nested IF Statement IF ukuran = ’s’ THEN harga = 35000 ELSE IF ukuran = ’m’ THEN harga = 50000 ELSE harga = 70000 ENDIF
B. Non-Linear Nested IF Non-Linear
Nested IF terjadi jika beberapa kondisi harus diperiksa sebelum suatu statement dikerjakan. Format Struktur Non Linear Nested IF Statement IF syarat1 THEN IF syarat2 THEN instruksi2a ELSE instruksi2b ENDIF ELSE Instruksi 1b ENDIF
B. Non-Linear Nested IF Statement (lanjutan)
Contoh Struktur Non Linear Nested IF Statement IF a > b THEN IF a > c THEN Cetak a ELSE Cetak c ENDIF ELSE IF b > c THEN Cetak b ELSE Cetak c ENDIF
4. Perintah Case Perintah
case digunakan sebagai instruksi pemilihan dimana aksi yang akan dilakukan hanya tergantung pada nilai dari satu macam variabel. Perintah case memungkinkan memiliki banyak nilai dan setiap nilainya berkaitan dengan satu macam aksi.
4. Perintah Case (lanjutan)
Format Struktur Perintah Case pada bahasa C switch (variabel_syarat) case nilai-1 : aksi-1 case nilai-2 : aksi-2 default : aksi n Contoh : switch (gol) case ’A’: terapi =” jus strawbery ”; break; case ’B’ : terapi =”jus sirsak”; break; case ’C’ : terapi =”jus wortel ”;break; case ’D’ : terapi =”jus tomat” ;break; default : terapi =”Terapi untuk golongan tersebut tidak ditemukan”;
LATIHAN 3 Dibaca sebuah bilangan bulat yang mewakili pengukuran suhu air (dalam 0C) pada tekanan atmosfir, harus dituliskan wujud air pada temperatur dan tekanan tersebut. Ketentuan Beku jika suhu ≤ 0 Cair jika 0 < suhu ≤ 100 Uap jika suhu > 100 Buatlah pseudocode, flowchart dan program dari masalah di atas. 23
TUGAS 3 Buatlah program berikut sesuai dengan tahapan pembangunan program : 1. Pseudocode untuk menghitung akar-akar persamaan kuadrat f(x) = Ax2+Bx+C. Syarat A ≠ 0 D>0 punya dua akar real yang berbeda D=0 akar kembar D<0 akar kompleks 2. Program untuk menghitung ekivalensi bilangan dalam detik menjadi berapa hari, jam berapa menit dan berapa detik. Catatan Tugas : Tugas dibuat pada kertas folio bergaris dengan menggunakan bolpoint. Tugas dikumpulkan pada saat pertemuan 5. Bagi mahasiswa yang tidak mengumpulkan tugas maka tidak mendapat nilai tugas 3 (tidak ada sistem susulan). 24
1
PERTEMUAN 5 PENGEMBANGAN PSEUDOCODE STRUKTUR KONTROL PENGULANGAN
POKOK BAHASAN 1. Definisi Struktur Kontrol Pengulangan 2. Jenis Struktur Kontrol Pengulangan 3. Pseudocode Struktur Kontrol Pengulangan 4. Desk Checking Struktur Kontrol Pengulangan 5. Algoritma Dengan Struktur Kontrol Pengulangan 2
STRUKTUR KONTROL PENGULANGAN
Struktur kontrol pengulangan digunakan untuk melaksanakan sederetan instruksi berulang-ulang sesuai dengan persyaratan yang ditetapkan. Ada tiga cara penempatan keputusan pengulangan : 1. Pada awal pengulangan (Leading decision loop) 2. Pada akhir pengulangan (trailing the decision loop) 3. Menjumlahkan angka pada suatu waktu(counted loop)
1. Leading Decision Loop
Kondisi diuji sebelum beberapa instruksi dieksekusi. Perintah leading decision loop adalah struktur Do WHILE. Format Struktur Kontrol pengulangan DO WHILE DO WHILE kondisi k bernilai true instruksi_1 instruksi_2 …………… instruksi_n counter ENDDO
1. Leading Decision Loop (lanjutan) Contoh Kasus : Sebuah hotel membuat penomoran kamar yang dikelompokkan berdasarkan bilangan genap. Jumlah kamar yang tersedia adalah 5 kamar. Berikan bilangan genap sesuai dengan banyaknya kamar
1. Leading Decision Loop (lanjutan)
Definisi Masalah Input : jumlah kamar Output : 5 deret bilangan genap Proses : Jika I <= jumlah kamar lakukan pengulangan berikut a = a+ 2 cetak a Outline Solusi Input Baca n
Proses DO WHILE i <= n a= a+ 2 i=i+1 Cetak a Enddo
Output Cetak a
1. Leading Decision Loop (lanjutan) Program Bilangan_Genap {Menghasilkan bilangan genap sesuai dengan data yang diinput} Deklarasi integer a= 0 integer i=1 integer n Deskripsi Baca n DOWHILE i<=n a= a+ 2 i=i+1 Cetak a ENDDO END
1. Leading Decision Loop (lanjutan)
Desk Checking Data Masukan
Data n
5
Hasil yang diharapkan 2 4 6 8 10
1. Leading Decision Loop (lanjutan)
Tabel Desk Checking i
n
i<=n a=a+2 i=i+1
Cetak a
1
5
Y
2
2
2
2
5
Y
4
3
4
3
5
Y
6
4
6
4
5
Y
8
5
8
5
5
Y
10
6
10
6
5
N
-
-
-
2. Trailing Decision Loop
Beberapa instruksi dieksekusi sekali sebelum kondisi diuji. Jika kondisi False, instruksi akan diulang sampai kondisi bernilai TRUE. Perintah trailing decision loop adalah struktur REPEAT …. UNTIL. Format Struktur Kontrol pengulangan REPEAT….UNTIL REPEAT instruksi_1 instruksi_2 ……. instruksi_n counter UNTIL kondisi k true
2. Trailing Decision Loop Contoh Kasus : Sebuah Bank membuat nomor antrian berdasarkan bilangan ganjil. Jumlah antrian maksimal 5. Berikan bilangan ganjil sesuai jumlah antrian
2. Trailing Decision Loop
Definisi Masalah Input : jumlah antrian Output : 5 deret bilangan ganjil Proses : Jika i <= jumlah antrian lakukan pengulangan berikut cetak a a = a+ 2 Outline Solusi Input Baca n
Proses REPEAT Cetak a a= a+ 2 i=i+1 UNTIL i>n
Output Cetak a
2. Trailing Decision Loop Program Bilangan_Ganjil {Menghasilkan bilangan ganjil sesuai dengan data yang diinput} Deklarasi integer a= 1 integer i=1 integer n Deskripsi Baca n REPEAT Cetak a a= a+ 2 i=i+1 Until i<=n ENDDO END
2. Trailing Decision Loop
Desk Checking Data Masukan
Data n
5
Hasil yang diharapkan 13579
2. Trailing Decision Loop
Tabel Desk Checking i
n Cetak a
a=a+2
i=i+1
i>n
1
5
1
3
2
N
2
5
3
5
3
N
3
5
5
7
4
N
4
5
7
9
5
N
5
5
9
11
6
N
6
5
-
-
-
Y
3. Counted Loop
Pencacah pengulangan digunakan jika jumlah iterasi pengulangan sudah diketahui. Pelaksanaan loop dikendalikan oleh indeks pengulangan. Perintah counted loop adalah struktur FOR Format Struktur Kontrol pengulangan FOR FOR loop_index=nilai_awal to nilai_akhir Step n statement_1 statement_2 …………… statement_n ENDFOR
3. Counted Loop Contoh Kasus : Buatlah sebuah deret bilangan sebanyak 5 yang menampilkan angka 1, 4, 9, 14, 25
Definisi Masalah Input : jumlah bilangan Output : 5 deret bilangan akar kuadrat Proses : Jika i <= jumlah bilangan lakukan pengulangan berikut cetak a a = sqr(a)
3. Counted Loop
Outline Solusi Input
Baca n
Proses For i = 1 to n Cetak a a= sqr(a) EndFor
Output Cetak a
3. Counted Loop Program Bilangan_Kuadrat {Menghasilkan bilangan kuadrat sesuai dengan data yang diinput} Deklarasi integer a integer i integer n Deskripsi Baca n For i = 1 to n Cetak a a= sqr(i) EndFor END
3. Counted Loop
Desk Checking Data Masukan
Data n
5
Hasil yang diharapkan 1 4 9 16 25
3. Counted Loop
Tabel Desk Checking i
n
i<=n
a=sqr(i)
Cetak a
i=i+1
1
5
Y
2
2
2
2
5
Y
4
4
3
3
5
Y
6
6
4
4
5
Y
8
8
5
5
5
Y
10
10
6
6
5
N
-
-
-
NESTED REPETION
Nested Repetion terjadi, jika di dalam pengulangan terdapat statement pengulangan yang lain. Format Nested DO WHILE DO WHILE kondisi k1 bernilai true DO WHILE kondis k2 bernilai true statement_1 statement_2 …………… statement_n2 ENDDO statement_n1 ENDDO
CONTOH NESTED REPETION Buatlah pseudocode untuk menampilkan output seperti berikut : 111 222 333 Jawaban : Definisi Masalah Input : jumlah baris dan jumlah kolom Output : menampilkan angka sesuai baris dan kolom Proses : DO WHILE b <= 3 DO WHILE k <= 3 cetak k k=k+ 1 Enddo cetak b=b+1 Enddo
CONTOH NESTED REPETITION (lanjutan)
Outline Solusi Input Baca b, k
Proses DO WHILE b <= 3 DO WHILE k <= 3 cetak k k=k+ 1 Enddo Cetak b=b+1 Enddo
Output Cetak k
CONTOH NESTED REPETION (lanjutan)
Tabel Desk Checking b
k
b<=3
k<=3
Cetak b
K=k+1
1
1
Y
Y
1
2
2
Y
1
3
3
Y
1
4
N
-
-
Y
2
2
Y
2
3
Y
2
4
N
-
-
2
1
Y
Lanjutkan untuk desk checking berikutnya
B=b+1
2
3
LATIHAN 6
1 1+2 1+2+3 1+2+3+4 1+2+3+4+5
=1 =3 =6 = 10 = 15
1 1*3 1*3*5 1*3*5*7 1*3*5*7*9
=1 =3 = 15 = 105 = 945
LATIHAN 6 • 10 + 8 + 6 + 4 + 2 10 + 8 + 6 + 4 10 + 8 + 6 10 + 8 10
= 30 = 28 = 24 = 18 = 10 ---------- + 110
TUGAS 4
Buatlah pseudocode, flowchart dan program untuk membuat tampilan berikut :
Catatan Tugas : Tugas dibuat pada kertas folio bergaris dengan menggunakan bolpoint. Tugas dikumpulkan pada saat pertemuan 6. Bagi mahasiswa yang tidak mengumpulkan tugas maka tidak mendapat nilai tugas 4 (tidak ada sistem susulan).
PERTEMUAN 6 MODULARISASI & KOMUNIKASI ANTAR MODUL
POKOK BAHASAN 1. 2. 3. 4.
Konsep Pemrograman Modular Komunikasi antar modul Kohesi Kopling
2
MODULARISASI
Modularisasi digunakan bila ada suatu permasalahan yang kompleks, sehingga langkah pertama adalah mengidentifikasikan tugas utama, setelah itu baru di bagi kedalam tugas yang lebih rinci. Proses ini disebut juga dengan Top Down Design
PEMROGRAMAN MODULAR
Memecahkan algoritma ke dalam algoritma yang lebih kecil/modul.
Modul yang dibentuk mempunyai kesatuan tugas/fungsi maupun kesatuan proses/prosedur.
Setiap modul harus mempunyai single entry dan single exit secara beruntun dari atas ke bawah atau dari awal ke akhir modul.
Memiliki main program dan sub program atau modul
PEMROGRAMAN MODULAR (lanjutan) Enam langkah dalam modular: 1. Definisi masalah: klasifikasikan dalam input, proses dan output 2. Kelompokkan aktivitas ke dalam modul. Definisikan kegiatan dari modul-modul yang ada 3. Buat bagan susun untuk menjelaskan hirarki dan hubungan antar modul 4. Buat logika dari main program dengan pseudocode. Terlebih dahulu inventarisasi apa saja yang dikerjakan dalam main program 5. Buat logika untuk tiap tiap modul dengan pseudocode 6. Desk checking algoritma: mencek kebenaran algoritma dengan data
JANGKAUAN DATA
Global
Data adalah variabel
yang dikenal
diseluruh program tersebut, dan dapat diakses dari setiap modul di program tersebut.
Local Data adalah variabel yang didefinisikan disebuah modul. Variabel ini hanya dikenal di modul dimana variabel tersebut didefinisikan.
SIDE EFFECT Side effect adalah sebuah bentuk komunikasi antar modul dengan bagian lain dalam program.
Global Data (Data Global) Perubahan nilai global data berdampak terhadap nilai data tersebut di semua modul. Local Data (Data Lokal) Perubahan nilai local data hanya berdampak terhadap nilai data pada modul secara lokal.
CONTOH PEMROGRAMAN MODULAR Program Hitung_luasPP {menentukan luas persegi panjang berdasarkan data yang diinput} Deklarasi integer p, l {global data} Deskripsi Baca p Baca L Hitung luaspp(p,l) END
Sub luaspp(integer pj, integer lb) integer luas {local data} luas = pj * lb Cetak luas EndSub
PARAMETER
Parameter Data Parameter Status Status flag/boolean flag/boolean Dalam merancang modul sebaiknya lebih banyak menggunakan parameter data Hinda indari ri men engg ggu una naka kan n para aramet eter er sta status sebanyak mungkin
PARAMETER PASSING
Meny Menyam ampa paik ikan an dat ata a da dari ri mo modu dull pe pema mang nggi gill ke mo modu dull yang dipanggil (subordinate). Meny Me nyam ampa paik ikan an info inform rmas asii da dari ri sub subordi ordina nate te ke mod odul ul pemanggil. Informasi/data yang dikirim atau diterima di passing 2 arah rah dari modul pemangg ggilil ke subordin dinate maupun sebaliknya.
KOMUNIKASI ANTAR MODUL
Parameter Aktual Parameter yang disertakan pada saat prosedur dipanggil untuk dilaksanakan. Contoh : tukar (a,b); //a dan b adalah parameter aktual Parameter Formal Parameter yang dituliskan pada definisi suatu prosedur atau fungsi. Contoh : Prosedur tukar(x, y);
KOMUNIKASI ANTAR MODUL (lanjutan)
Pemanggilan Dengan Nilai (Call By Value) pema pe mang nggi gila lan n de deng ngan an nila nilai, i, nila nilaii da dari ri pa para rame mete terr aktu aktual al akan ditulis ke parameter formal. Dengan cara ini nilai param rameter aktual tidak bisa beruba rubah h, walau alaupu pun n nilai ilai parameter formal berubah. Pemanggilan Dengan Acuan Pemanggilan dengan reference merupakan upaya untuk melewatkan alamat dari suatu variabel kedalam fungsi. Cara ini dapat dipakai untuk mengubah isi suatu variabel diluar fungsi dengan melaksanakan pengubahan dilakukan didalam fungsi.
CONTOH KASUS MODULARISASI Susunlah algoritma untuk mengurutkan beberapa bilangan dengan urutan menaik (ascending) dan tampilkan bilangan hasil sort tersebut
CONTOH KASUS MODULARISASI (lanjutan) A. Definisi Masalah Input : banyaknya data, bilangan yang akan diurutkan Output : Bilangan yang terurut Proses : baca data_1, data_2…data_n sort data bilangan tersebut A. Outline Solusi Input byk_data data_1 data_2 data_n
Proses baca data_1, data_2, ...data_n sort data bilangan tersebut cetak hasil sort
Output data_1 data_2 data_n
Hierarchy Chart
16
HASIL MODULARISASI SUB SORTING_DATA FOR I = 1 TO N FOR J = N TO J>=I STEP -1 IF DATA[J] < DATA[J-1] THEN TUKAR_DATA(J,J-1) ENDIF END FOR END FOR ENDSUB SUB TUKAR_DATA(int a, int b) INT TEMP TEMP = DATA[B]; DATA[B] = DATA[A]; DATA[A] = TEMP ENDSUB
SUB INPUT_DATA FOR I = 1 TO N BACA DATA[I] END FOR ENDSUB SUB CETAK_DATA FOR I = 1 TO N BACA DATA[I] END FOR ENDSUB PROGRAM SORTING MAIN_SORTING INT N, J, DATA[10] BACA N INPUT_DATA SORTING_DATA CETAK_DATA END
KOHESI & KOPLING
Cohesion dan Coupling merupakan konsep dasar dalam perancangan dan rekayasa perangkat lunak. Membagi software /perangkat lunak menjadi modul-modul yang kecil bukan sekedar memisahkan kumpulan kode dari kumpulan kode lainnya. Tetapi memastikan bahwa modul yang dirancang menganut prinsip "Loose Coupling, High Cohesion"
KOHESI
Kohesi adalah keeratan hubungan elemenelemen di dalam suatu modul. Macam-macam Kohesi – – – – – – –
Functional Sequential Communicational Procedural Temporal Logical Coincidental
baik/kuat
Jelek/lemah
KOHESI (lanjutan)
Perubahan pada modul dengan tingkat kohesi tinggi tidak terlalu membawa dampak perubahan terhadap modul lain. Sehingga lebih mudah dalam pemrograman, pengujian dan perawatan Modul dengan tingkat kohesi tinggi, lebih mudah dipahami dan didokumentasi Pada modul dengan tingkat kohesi tinggi, informasi lebih mudah disembunyikan , karena komunikasi antar modul diminimalkan
KOHESI FUNCTIONAL
Mempunyai satu tugas Menghasilkan satu hasil/satu parameter output Bisa satu atau lebih parameter input
KOHESI SEQUENTIAL
Mempunyai pekerjaan yang beruntun Kegiatan yang dilakukan lebih dari satu Hasil dari kegiatan sebelumnya menjadi masukan bagi kegiatan selanjutnya Dapat dipecah menjadi Functional
KOHESI KOMUNIKASIONAL
Kegiatan lebih dari satu Menggunakan data yang sama Dapat dijadikan Functional Contoh: Sub Proses_perhitungan C=A+B D=A–1 E=A*B F=A/B G = A mod B EndSub
KOHESI PROCEDURAL
Satu kegiatan dengan kegiatan lain tidak berhubungan Hubungan antara elemen yang satu dengan yang lainnya karena urutan statement Dapat dipecahkan menjadi Functional Contoh: Sub Baca_record_mhs_dan_total_usia_mhs set no_record to 0 set total_usia to 0 baca record_mhs DO WHILE not EOF total_usia = usia + total_usia no_record = no_record + 1 ENDDO print no_record, total_usia EndSub
KOHESI TEMPORAL
Elemen-elemen terlibat dalam berbagai kegiatan yang mempunyai hubungan dalam waktu Urutan tidak penting Contoh: Sub Initialisasi buka file transaksi total_transaksi = 0 total_pen = 0 baris = 30 no = 0 hal = 0 EndSub
KOHESI LOGICAL ELemen-elemen melakukan kegiatan dengan kategori yang sama Parameter masukan menentukan kegiatan yang dilaksanakan Tidak semua kegiatan dikerjakan Contoh: Read_all_files(file_code) CASE if file_code 1 : read customer_transaction record IF not EOF THEN increment cust_trans_count 2 : read customer_master record IF not EOF THEN increment cust_master_count 3 : read product_master record IF not EOF THEN increment product_master_count ENDIF ENDCASE END
KOHESI KOINSIDENTAL • Elemen-elemen tidak mempunyai hubungan • Contoh: Sub File_Processing Open employee updates file read employee record print_page heading open employee master file set page_count to one set error_flag to false EndSub
KOPLING
Kopling adalah keeratan hubungan antar modul. Tingkat saling ketergantungan di antara dua modul. Faktor yang mempengaruhi kopling: 1. Jumlah data yang disalurkan 2. Jumlah kontrol data yang disalurkan 3. Jumlah elemen data global yang digunakan bersama-sama oleh beberapa modul
JENIS-JENIS KOPLING
Data Stamp Kontrol External Common
baik/lemah
jelek/kuat
Keterangan: Makin baik kopling, makin rendah ketergantungan suatu modul terhadap modul lain Modul dengan kopling yang baik adalah modul independence
KOPLING DATA • Komunikasi diantara modul menggunakan data. Diinginkan jumlah data minimal • Parameter data yang disalurkan semakin sedikit semakin baik
CONTOH KOPLING DATA A.
Process_record_pelanggan … … hitung_pajak_penjualan (total_harga, pajak_penjualan) … … END B. Hitung_pajak_penjualan (long total, pajak) IF total> 5000 THEN pajak = total * 0.25 Else If total > 4000 THEN pajak = total * 0.2 Else pajak = total * 0.15 ENDIF END
KOPLING STAMP
Dua modul melakukan pass struktur data non global yang sama Struktur data: record, array Timbul bahaya bila modul memeriksa struktur data tetapi hanya menggunakan sebagian
•
current_record hanya berupa penunjuk nomor record sekarang
KOPLING KONTROL • Dua modul melakukan passing parameter menggunakan data kontrol (flag/switch)
•
input_code berfungsi sebagai switch (berupa switch)
KOPLING EXTERNAL
Dua modul atau lebih menggunakan data global yang sama Tidak ada parameter yang digunakan dari modul pemanggil ke subordinate dan sebaliknya Global Data Elementer Variabel
Modul A
Modul B
•
pajak_pen adalah variabel data global
KOPLING COMMON
Dua modul atau lebih menggunakan struktur data global yang sama Struktur data global
Modul A
Modul B
• record_pelanggan adalah struktur data global
LATIHAN 5
Buatlah pseudocode, plowchart dan program untuk menampilkan menu untuk menghitung luas bangun ruang seperti : persegi panjang, segitiga dan bujur sangkar
TUGAS 5 Buatlah program lengkap dengan pseudocode dan flowchart untuk menampilkan Bilangan fibonancii Bilangan faktorial Angka bilangan bulat dalam bentuk kalimat, contoh : 32,768 ditampilkan Tiga Puluh Dua Ribu Tujuh Ratus Enam Puluh Delapan Rupiah.
TUGAS 5 (lanjutan) Catatan Tugas : Tugas dibuat pada kertas folio bergaris dengan menggunakan bolpoint. Tugas dikumpulkan pada saat pertemuan 9. Bagi mahasiswa yang tidak mengumpulkan tugas maka tidak mendapat nilai tugas 5 (tidak ada sistem susulan).
PERTEMUAN 7
REVIEW/QUIZ
PERTEMUAN 9 ALGORITMA UNTUK MASALAH BISNIS
POKOK BAHASAN 1. 2. 3. 4.
Struktur Program Struktur Chart Membuat Laporan Dengan Page Break Contoh Algoritma Penyelesaian
STRUKTUR PROGRAM Secara umum program yang dilakukan untuk memproses data yang dibaca dari file dapat digambarkan sbb: Sub Proses_record Proses_inisialisasi Baca record pertama Do while not EOF process_record_ini Baca next record ENDDO Proses_final END
STRUKTUR CHART Algoritma di atas digambarkan dengan struktur chart berikut: • Tiga modul di atas dapat berisi statement yang dibutuhkan untuk memproses data yang dibaca dari file • Main program dari struktur chart sudah ada sehingga dapat dikembangkan proses dari ketiga modul tersebut
MEMBUAT LAPORAN DENGAN PAGE BREAK
Suatu laporan membutuhkan: – Judul – Baris judul – Kolom judul – Detail – Total Di samping itu suatu halaman laporan hanya menampung beberapa baris record, sehingga harus mengatur pemindahan ke halaman baru Untuk itu dibutuhkan sebuah control break untuk memeriksa kapan harus pindah ke halaman baru (page break)
MEMBUAT LAPORAN DENGAN PAGE BREAK (lanjutan) 1. Single-Level Control Break 2. Multiple-Level Control Break
CONTOH LAPORAN MULTILEVEL BREAK
1. SINGLE-LEVEL BREAK
Single-Level Control Break adalah pemberhentian dalam logika program (berhenti atau mengulang untuk mencetak judul baru) berdasarkan nilai sebuah variabel. Contoh : no departemen.
HIERARCHY CHART SINGLELEVEL BREAK Produce_ Single_level control_break
Initialize variable _fields
Print_page _headings
Print_ detail_line
Process _this_ records
Accumulate_ control_total
Print_ control_ total_line
Reset_ control_ total
Print_ report_ total
2. MULTIPLE-LEVEL BREAK
Multiple-Level Control Break adalah pemberhentian dalam logika program (berhenti atau mengulang untuk mencetak judul baru) berdasarkan beberapa nilai variabel. Contoh : total penjualan per sales dan total penjualan per departemen
HIERARCHY CHART MULTIPLELEVEL BREAK Proceduce_ multiple_level control_break
Initialize variable _fields
Print_page _headings
Print_ detail_line
Process _this_ records
Print_minor _control_ total
Accumulate_ control
Print_major _control_ total
Reset_ minor_control _ total
Print_ report_ total
Reset_ major_control _ total
CONTOH KASUS
HIERARCHY CHART
ALGORITMA PEMECAHAN Laporan_Penyewaan Inisialisasi Cetak_Judul Baca Record Pertama DO WHILE NOT EOF If baris > 30 THEN Cetak_Judul Baris = 0 ENDIF Process_Record Baca Record Selanjutnya ENDDO Cetak_Total_Report END
SUBORDINATE MODUL 1. Inisialisasi Buka File Total = 0 Hal = 0 Baris = 0 END 2. Cetak_Judul Hal = hal + 1 Cetak “PT. Semesta Makmur Abadi ” Cetak “Jalan Bahari Biru ” Cetak “Jakarta” Cetak “Laporan Gaji ” Cetak “Tanggal Cetak “, date(), “Hal =”, hal Cetak “No. NIP Nama Target Realisasi Komisi Gaji Pokok Total Gaji ” END
SUBORDINATE MODUL (lanjutan) 3. Process_Record komisi = (realisasi – target ) * 10000 Total_gaji = komisi + gaji_pokok Cetak_Detail accumulate_total END 5. Cetak_Detail Baris = baris +1 Cetak baris, NIP, Nama, Target, Realisasi, Komisi. Gaji_Pokok, Total_gaji END
SUBORDINATE MODUL (lanjutan) 6. Accumulate_total Total = total + total_gaji END 7. Cetak_total_Report Cetak “Total gaji Sales”, total Tutup File END
TUGAS 6 Buatlah program lengkap dengan pseudocode dan flowchart untuk menampilkan daftar gaji gaji karyawan, dengan ketentuan sebagai berikut : Kode Jabatan
Jabatan
1
Administrasi
800.000
2
Operasional
850.000
Gaji Pokok
Kode Status M S M S
Status Menikah Single Menikah Single
Tunjangan 200.000 100.000 250.000 150.000
TUGAS 6 (lanjutan) Jumlah Karyawan
= ....
Bulan
= .........
Input Data Karyawan Data Karyawan ke
=
NIP karyawan
= .........
Nama Karyawan
= .........
Kode Jabatan [1/2]
= ....
Kode Status [M/S]
= ....
TUGAS 6 (lanjutan) Ketentuan : Banyak data karyawan yang diinput harus sama dengan ketentuan jumlah karyawan yang sudah diberikan pada awal input data. Total didapat dari pertambahan gaji pokok dengan tunjangan. Setelah selesai diinput maka akan menghasilkan keluaran dalam bentuk tabel yang jumlahnya sama sesuai dengan jumlah data yang diinput.
TUGAS 6 (lanjutan) Catatan Tugas : Tugas dibuat pada kertas folio bergaris dengan menggunakan bolpoint. Tugas dikumpulkan pada saat pertemuan 10. Bagi mahasiswa yang tidak mengumpulkan tugas maka tidak mendapat nilai tugas 6 (tidak ada sistem susulan).
PERTEMUAN 11 KONSEP PEMROGRAMAN BERORIENTASI OBJEK
POKOK BAHASAN 1. Pendahuluan 2. Pengenalan Pemrograman Berorientasi Objek 3. Pengenalan Objek & Class 4. Karakteristik OOP 5. Kelebihan OOP 6. Pemrograman Terstruktur VS Pemrograman Berorientasi Objek
PENDAHULUAN • Perancangan prosedural memiliki keterbatasan dalam pengembangan sistem yang besar, jaringan dan sistem multi user. • Meskipun disusun secara terstruktur dan modular, tetap menjadi sangat rumit dan sulit dipahami. • Kurangnya menyadari pekerjaan yang dilakukan dengan tim pengembang sehingga terjadi duplikasi pada beberapa bagian. • Teknologi berorientasi objek dapat mengatasi permasalahan di atas serta memberikan fleksibilitas dan ekonomis untuk program sistem jaringan dan multi user
PENGENALAN PEMROGRAMAN BERORIENTASI OBJEK
Pemrograman berbasis objek (OOP) berdasarkan pada konsep objek dan interaksinya. Objek dapat menerima pesan (message), mengolah data, dan mengirimkan pesan ke objek lain membentuk interaksi antar objek. Objek bersifat independen: tiap objek dapat dipandang sebagai sebuah entitas mandiri yang memiliki peran atau tanggung jawab tertentu.
PENGENALAN PEMROGRAMAN BERORIENTASI OBJEK (lanjutan)
APAKAH OBJEK ? Objek adalah representasi sebuah entitas yang memiliki makna tertentu yang menjadi perhatian si pemandang. Segala sesuatu yang ada di dunia adalah objek. Cth : Manusia, Bunga, Hewan, Mobil, Meja, Kursi, Sepeda, Kereta, Pesawat terbang, dll. Setiap sistem terdiri dari objek-objek (sistem juga termasuk objek). Evaluasi & pengembangan sistem disebabkan oleh interaksi antara objek-objek di dalam atau di luar sistem.
APAKAH KELAS ? Merupakan
template untuk membuat obyek.
merupakan prototipe/blue prints yang mendefinisikan variable-variabel dan method –method secara umum. Objek (instances) merupakan hasil instansiasi dari suatu kelas, proses pembentukan obyek dari suatu class disebut dengan instantiation . banyak instance (wujud nyata)
satu template 7
CONTOH KELAS Sebuah kelas (Konsep)
Bank
objek (Realisasi)
Sebuah
Rekening Bank Udin Saldo: Rp5.257.000
Rekening Bank Ali Saldo :Rp13.245.069
Beberapa objek dari kelas yang sama
Rekening Bank Susi Saldo : Rp366.891.833
CONTOH KELAS (lanjutan) Class Mobil Class Mobil
B7471UL
B851OK
Warna
Biru
Merah
Tahun
2009
2008
Toyota
Mitsubishi
80 km/jam
60 km/jam
Variabel Instance Manufaktur Kecepatan Method Instance
Akseleration() Stop() Break() Turn(direction)
STRUKTUR KELAS Contoh kelas mobil Mobil
Contoh Objek Mobil Nama Class
B7471UL: Mobil
Warna Tahun Manufaktur Kecepatan
Biru 2009 Toyota K80 km/jam
Atribut
+Akseleration() +Turn(direction) +Stop() +Break()
+Akseleration() +Turn(direction) +Stop() Method /behavior +Break()
B851OK:Mobil Merah 2008 Mitsubishi 60 km/jam +Akseleration() +Turn(direction) +Stop() +Break()
KARAKTERISTIK OBJEK Attributes : Warna, Tahun Produksi, Manufaktur, kecepatan Behavior/Tingkah Laku : Akseleration(), Turn(direction), Stop(), Break() dll Identitas : B7471UL
ATRIBUT Atribut adalah data yang membedakan antara objek satu dengan yang lain. Contoh atribut mobil : manufaktur, model, warna, jumlah pintu, ukuran engine, kecepatan dll Dalam class, atribut disebut sebagai variabel.
ATRIBUT (lanjutan) Instance
variable – adalah atribut untuk tiap obyek dari class yang sama. – Tiap obyek mempunyai dan menyimpan nilai atributnya sendiri. – Jadi tiap obyek dari class yang sama boleh mempunyai nilai yang sama atau beda Class variable: – adalah atribut untuk semua obyek yang dibuat dari class yang sama. – Semua obyek mempunyai nilai atribut yang sama. – Jadi semua obyek dari class yang sama mempunyai hanya satu nilai yang value nya sama.
TINGKAH LAKU • Tingkah laku/behavior 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 obyek lain untuk melakukan suatu task. • Dalam class, behavior disebut juga sebagai methods. • Contoh: mobil akseleration stop turn break
TINGKAH LAKU (lanjutan) • Method adalah serangkaian statements dalam suatu class yang menghandle suatu task tertentu. • Cara objek berkomunikasi dengan objek lain adalah dengan menggunakan method.
RESPONSIBILITY
Responsibility adalah sebuah kontrak sebuah obligasi dari sebuah class.
atau
Saat
sebuah class dibuat, semua objek dalam class tersebut memiliki keadaan dan tingkah laku yang sama.
Saat
sebuah class dimodelkan, awal yang baik adalah menspesifikasikan responsibilities sesuatu dalam sebuah kamus.
Teknik
seperti CRC card (Class Responsibility Collaboration) dan use case dapat membantu.
KONSTRUKTOR Konstruktor
adalah proses instansiasi objek dari kelas pada operasi khusus atau sekumpulan
dilakukan instruksi. Konstruktor menetapkan nilai awal untuk atribut objek baru. Konstruktor biasanya memiliki nama yang sama dengan kelasnya. Pseudocode untuk instansiasi objek baru Create nama-objek as new nama-Class() Contoh : Create mobil as new Mobil()
KONSTRUKTOR (lanjutan) Kata NEW menunjukkan pembuatan objek baru. Nama kelas diawali dengan huruf besar. Contoh : Mobil, Siswa, Pendaftaran, dll. Nama objek diawali dengan huruf kecil. Contoh : mobil, siswa, pendaftaran, dll Konstruktor memungkinkan : – Memiliki parameter yang menginisilisasi atribut dengan nilai spesifik. Contoh : Create mobil as new Car (”Ford”, ”Falcon”, 4, 300, 6, ”Biru”, 0); atau – Tidak memiliki parameter. Objek baru dengan nilai default untuk semua atributnya.
AKSESOR & MUTATOR Nilai variabel dari objek tersedia untuk semua operasi di dalam objek tersebut, tetapi tersembunyi dari objek luar. Untuk keamanan, operasi publik dikenal istilah aksesor dan mutator, yang membolehkan objek luar untuk mengakses nilai pada atribut. Aksesor adalah nama operasi yang mengakses nilai. Nama aksesor dimulai dengan kata GET seperti getPaySlip(). Mutator adalah nama operasi yang merubah nilai atribut. Operasi mutator memungkinkan objek eksternal untuk mengubah nilai yang tersimpan dalam atribut. Nama mutator diawali dengan kata SET seperti setPayRate().
VISIBILITY Visibility merupakan kemampuan suatu obyek untuk melihat atau berhubungan dengan obyek lain. Atribut dan metoda dapat memiliki salah satu sifat visibility berikut : Private (-), tidak dapat dipanggil dari luar class yang bersangkutan Protected (#), hanya dapat dipanggil oleh class yang bersangkutan dan anak-anak yang mewarisinya Public (+), dapat dipanggil oleh siapa saja
PENGIRIMAN PESAN/MESSAGING • Objek-objek bekerjasama dengan mengirimkan pesan dari satu objek ke objek lainnya. • Suatu obyek mengirimkan pesan ke objek lain untuk melakukan sebuah operasi. • Suatu objek juga dapat menerima pesan dari objek lain untuk melakukan operasi lainnya. • Kunci dalam pemrograman berorientasi objek adalah bahwa setiap objek itu sendiri bertanggung jawab untuk melaksanakan tugas.
PENGIRIMAN PESAN/MESSAGING (lanjutan) • Ini termasuk interaksi dan komunikasi dengan benda-benda lainnya. • Objek mengirim pesan ke objek lainnya. Pesan mungkin menyampaikan informasi tambahan melalui parameter untuk benda-benda penerima.
Contoh Messaging • Mobil yang diparkir di depan rumah hanya sepotong logam yang dengan sendirinya tidak mampu melakukan aktivitas apapun. Pengemudi harus menyalakan mobil, menggunakan rem, dll • Objek "pengetik" dapat mengirim pesan "mengubah ukuran (20)" ke objek huruf untuk mengubah ukuran font.
KARAKTERISTIK OOP Abstraksi Enkapsulasi Inheritansi Polimorfisme
ABSTRAKSI • Abstraksi adalah proses penyembunyian kerumitan dari suatu proses untuk permasalahan yang dihadapi. • Contoh : Orang hanya perlu berpikir bahwa mobil adalah sebuah objek yang telah memiliki prilaku spesifik, yang dapat digunakan sebagai alat transportasi, sehingga dia/mereka tinggal menggunakannya atau mengendarainya tanpa harus mengetahui kerumitan proses yang terdapat di dalam mobil tersebut.
ABSTRAKSI (lanjutan) Memiliki :
Tinggi Segitiga
Alas
Apa yang anda ingin segitiga lakukan ? Hitung Luas Hitung Keliling
ENKAPSULASI Enkapsulasi atau pembungkusan berfungsi untuk melindungi suatu objek dari dunia luar, sehingga seseorang tidak akan mampu merusak objek yang terbungkus. Objek yang terbungkus dalam suatu kelas baik data maupun fungsinya tidak bisa terlihat apalagi dirubah pada saat objek digunakan.
CONTOH ENKAPSULASI
Disini terjadi penyembunyian informasi tentang bagaimana cara kerja pengecekan validitas kartu, kecocokan pin yang dimasukkan, koneksi ke database server, dll, dimana hal-hal tersebut tidak perlu diketahui oleh pengguna tentang bagaimana cara kerjanya.
INHERITANSI Kelas dapat menurunkan metode-metode dan properti-properti yang dimilikinya pada kelas lain. Kelas yang mewarisi metode dan properti dari objek lain dinamakan kelas turunan. Kelas turunan ini mampu mengembangkan metode sendiri.
CONTOH INHERITANSI
30
POLIMORFISME Polimorfisme dapat diartikan sebagai kemampuan suatu bahasa pemrograman untuk memiliki fungsi-fungsi atau metode yang bernama sama tetapi berbeda dalam parameter dan implementasi kodenya (overloading ). Kelas turunan dapat menggunakan fungsi yang ada pada kelas pewarisnya dan dapat mengimplementasikan kode yang berbeda dari fungsi pewarisnya ini dinamakan overriding .
EMPLOYEE
NIP Nama Jabatan
createNew getSalary
Apakah Mereka Memiliki Gaji Yang Sama Tetap Kontrak Paruh Waktu
Honorer Outsourcing
CONTOH POLIMORFISME
TAHAPAN PERANCANGAN PROGRAM BERORIENTASI OBJEK 1. Identifikasi kelas, atribut, responsibility dan operasi 2. Menentukan hubungan antar objek dan kelas 3. Perancangan algoritma untuk operasi menggunakan desain struktur 4. Mengembangkan tes algoritma
KELEBIHAN PEMROGRAMAN BERORIENTASI OBJEK •
•
•
Menyediakan struktur modular yang jelas untuk program sehingga bagus digunakan untuk mendefinisikan tipe data abstrak di mana detil implementasinya tersembunyi. Mempermudah dalam memelihara dan memodifikasi kode yang sudah ada. Objek yang baru dapat dibuat tanpa mengubah kode yang sudah ada. Menyediakan framework untuk library kode di mana komponen software yang tersedia dapat dengan mudah diadaptasi dan dimodifikasi oleh programmer. Hal ini sangat berguna untuk mengembangkan GUI.
•
Resiko kesalahan relative kecil (lebih sedikit mengetik), sintaks juga tidak perlu dihafalkan, karena semuanya sudah disediakan.
•
Waktu debugging lebih singkat, karena setiap objek tidak perlu didebug setiap kali digunakan
PEMROGRAMAN TERSTRUKTUR VS PEMROGRAMAN BERORIENTASI OBJEK Pemrograman Terstruktur
OOP
a. Penekanan pada urutan yang a. Pendekatan lebih pada data harus dikerjakan (algoritma bukanya pada fungsi/prosedur pemecahan masalah) b. Program berukuran besar b. Program besar dibagi ke dalam dipecah-pecah menjadi programObjek-objek. Struktur data program yang lebih kecil dirancang dan menjadi (Modular) karakteristik dari objek-objek c. Kebanyakan fungsi/prosedur c. Fungsi-fungsi yang berbagi data global mengoperasikan data tergabung dalam suatu objek yang sama
PEMROGRAMAN TERSTRUKTUR VS PEMROGRAMAN BERORIENTASI OBJEK (lanjutan) Pemrograman Terstruktur
PBO
d. Data bergerak secara bebas d. Data tersembunyi dan terlindung dalam sistem, dari satu fungsi ke dari fungsi/prosedur yang ada di fungsi yang lain saling terkait luar e. Fungsi-fungsi mentransformasi data dari satu bentuk ke bentuk yang lain
e. Objek-objek dapat saling berkomunikasi dengan saling mengirim message satu sama lain
f. Pendekatan adalah pendekatan top down (dari atas ke bawah)
f. Pendekatanya adalah bottom up (dari bawah ke atas)
PERTEMUAN 12 TAHAPAN PERANCANGAN BERORIENTASI OBJEK
POKOK BAHASAN 1. Identifikasi kelas, atribut, responsibility dan operasi 2. Menentukan hubungan antar objek dan kelas 3. Perancangan algoritma untuk operasi menggunakan desain struktur 4. Mengembangkan tes algoritma atau menjalankan algoritma
IDENTIFIKASI KELAS, ATRIBUT, RESPONSIBILITY DAN OPERASI
Sama seperti pendekatan topdown, untuk mendefinisikan garisbawahi kata benda dan sifat yang relevan dengan masalah. Contoh Dibutuhkan program untuk membaca file karyawan yang berisikan berisi nomor karyawan, tingkat upah, dan jumlah jam kerja per minggu. Program kemudian memvalidasi upah dan jam kerja. Jika benar, hitung upah mingguan pegawai dan cetak payslip
IDENTIFIKASI KELAS, ATRIBUT, RESPONSIBILITY DAN OPERASI (lanjutan) Validasi : menurut aturan perusahaan, maksimal seorang pegawai bekerja 60 jam seminggu dan maksimum 250,000 per jam. Jika jam bekerja ata u tingkat upah melebihi aturan, input data dan pesan yang sesuai akan dicetak dan upah mingguan karyawan tidak dihitung. Hitung upah mingguan : upah mingguan dihitung jam kerja dikali tingkat upah. Jika lebih dari 35 jam kerja, pembayaran untuk lembur jam kerja dihitung setengahnya.
IDENTIFIKASI KELAS, ATRIBUT, RESPONSIBILITY DAN OPERASI (lanjutan) Kelas Payslip
Payroll
Atribut
Responsibility
operasi
empNum
Validasi data
+setEmpNum() +setPayRate() +setHoursWorked ()
payRate
Laporan validasi data
+getValidInput(Val idInput)
hoursWorked
Hitung upah mingguan
-setPay() (mutator)
weeklyPay
Cetak slip gaji untuk setiap absen yang valid
+printPaySlip()
File data absen
Baca file data absen
+runTimeSheet() +run()
MENENTUKAN HUBUNGAN ANTAR OBJEK DAN KELAS
Berdasarkan pernyataan masalah diperoleh dua kelas yaitu penggajian dan payslip. Objek dari kelas penggajian menggunakan objek dari kelas payslip. Hubungan antar kelas digambarkan dengan notasi UML. Payroll
Uses
Payslip
PERANCANGAN ALGORITMA UNTUK OPERASI MENGGUNAKAN DESAIN STRUKTUR
Setiap operasi dalam kelas memerlukan penjelasan langkah-demi langkah instruksi yang menghasilkan perilaku yang diperlukan. Masing-masing algoritma dimulai dengan nama operasi dan diakhiri dengan pernyataan END. Data yang dibutuhkan objek payslip dikirim dari penggajian segera setelah diciptakan. Nilai atribut tersedia untuk semua operasi di dalam kelas dan empNumber, weeklyPay, validInput, hoursWorked dan payRate dapat dilihat untuk setiap operasi.
PERANCANGAN ALGORITMA UNTUK OPERASI MENGGUNAKAN DESAIN STRUKTUR (lanjutan) setEmpNumber(inEmpNumber) empNumber = inEmpNumber END setPayRate(inPayRate) set errorMessage to blank IF inPayRate>MAX_PAY THEN errorMessage = ”Rate upah melebihi 250,000” Print empNumber, inPayRate, errorMessage validInput = false ELSE payRate = inPayRate END IF END
PERANCANGAN ALGORITMA UNTUK OPERASI MENGGUNAKAN DESAIN STRUKTUR (lanjutan) setHoursWorked(inHoursWorked) Set errorMessage to blank IF inHoursWorked > MAX_HOURS THEN errorMessage = ”Jam kerja melebihi 60” Print empNumber, inHoursWorked, errorMessage validInput = false ELSE hoursWorked = inHoursWorked ENDIF END
PERANCANGAN ALGORITMA UNTUK OPERASI MENGGUNAKAN DESAIN STRUKTUR (lanjutan) setPay() IF hoursWorked <= NORM_HOURS THEN weeklyPay = payRate * hoursWorked ELSE overtimeHours = hoursWorked – NORM_HOURS overtimePay = overtimeHours * payRate * 1.5 weeklyPay = (payRate * NORM_HOURS) + overtimePay ENDIF END
PERANCANGAN ALGORITMA UNTUK OPERASI MENGGUNAKAN DESAIN STRUKTUR (lanjutan) Konstruktor paySlip dapat menggunakan mutator untuk diperbaharui nilai-nilai atribut. Namun, jika data tidak valid, nilai tidak akan diperbaharui, mungkin diperbaharui dengan data yang tidak valid. Oleh karena itu, standar konstruktor harus memperbaharui seluruh atribut. Payslip() Set empNumber to ”Uknown” Set payRate to 0.0 Set hoursWorked to 0 Set validInput to true Set weeklyPay to 0.0 END
PERANCANGAN ALGORITMA UNTUK OPERASI MENGGUNAKAN DESAIN STRUKTUR (lanjutan) Konstruktor menerima input yang dapat memanggil standar konstruktor sebelum pengaturan nilai atribut Payslip(inEmpNumber, inPayRate, inHoursWorked) Payslip() setEmpNumber(inEmpNumber) setPayRate(inPayRate) SetHoursWorked(inHoursWorked) IF validInput THEN setPay() ENDIF END
PERANCANGAN ALGORITMA UNTUK OPERASI MENGGUNAKAN DESAIN STRUKTUR (lanjutan) Objek eksternal perlu mengetahui tentang validitas payslip dan upah mingguan yang dihitung. Aksesor menginformasikan objek lain tentang validitas payslip getValidInput(validInput) END printPayslip() IF validInput THEN Print empNumber, payRate, hoursWorked, weeklypay ENDIF END
MENGEMBANGKAN TES ATAU MENJALANKAN ALGORITMA
Langkah terakhir adalah mengembangkan kelas yang memiliki operasi dengan algoritma seperti baris utama pada program prosedural. Menjalankan algoritma dengan membuat kelas yang berisikan algoritma utama. Tes atau menjalankan kelas menyediakan interface antara objek payslip dan lingkungan luar termasuk pengguna. File data absen merupakan bagian dari interface antara lingkungan luar dan objek payslip. Data absen akan menjadi atribut pada driver kelas dan driver konstruktor akan membuka file. Payroll() timeSheetFile = ”timesheet.dat” END
MENGEMBANGKAN TES ATAU MENJALANKAN ALGORITMA (lanjutan) Input Data Absen empNumber hoursWorked payRate
Proses Baca data absen Buat payslip dari data absen Cetak paySlip yang valid
Output Cetak paySlip Pesan kesalahan untuk paySlip yang tidak valid
Algoritma untuk driver class Payslip run() Baca empNumber, hoursWorked, payRate DoWhile more records Create paySlip as New Payslip(empNumber, payRate, hoursWorked) payslip.printPayslip() Baca Payslip(empNumber, payRate, hoursWorked Enddo END
MENGEMBANGKAN TES ATAU DRIVER ALGORITMA (lanjutan) Payroll -timesheetFile +run()
1..* Uses
Payslip empNumber payRate hoursWorked validInput weeklyPay +setEmpNumber(EmpNumb er) +setpayRate(PayRate) +setHoursWorked(HoursWo rked) -setPay() +getValidInput(validInput) +printPayslip
TUGAS 7 Sebuah sawah berbentuk segitiga dengan sisi-sisinya sebesar 5 m dan 7 m. Pemilik sawah akan memberi pupuk pada sawah tersebut. Berapa kebutuhan pupuk apabila dibutuhkan 3 kg/m2. Catatan Tugas : Tugas dibuat pada kertas folio bergaris dengan menggunakan bolpoint. Tugas dikumpulkan pada saat pertemuan 13. Bagi mahasiswa yang tidak mengumpulkan tugas maka tidak mendapat nilai tugas 7 (tidak ada sistem susulan).
PERTEMUAN 13 PERANCANGAN BERORIENTASI OBJEK UNTUK MULTI KELAS
POKOK BAHASAN 1. 2. 3. 4.
Pendahuluan Hubungan Antar Kelas Inheritansi Polimorfisme
PENDAHULUAN
Keunggulan utama bahasa pemrograman berorientasi objek adalah pada kemampuan dalam membangun program yang besar. Dalam merancang program yang menggunakan beberapa kelas perlu mempertimbangkan hubungan antar kelas.
NOTASI
Pendekatan perancangan berorientasi objek dan pemrograman berorientasi objek telah menjadi metodologi yang stabil. Notasi yang digunakan untuk perancangan berorientasi objek adalah UML (Unified Modelling Language) dari Rumbaugh, Booch, dan jacobsen.
HUBUNGAN ANTAR KELAS 1. Hubungan yang paling sederhana adalah hubungan antar dua kelas yang independen satu sama lain. Sebuah kelas dapat menggunakan layanan yang lain disebut dengan asosiasi. 2. Sebuah kelas mungkin dibuat oleh kelas lain atau mengandung kelas lain yang merupakan bagian dari dirinya sendiri. Hubungan kolektif dapat berupa agregasi atau komposisi. 3. Kelas memungkinkan mewarisi seluruh atribut dan operasi dari kelas induk, memiliki nama yang unik, atribut dan operasi yang berbeda dengan kelas induk. Bentuk hubungan antara kelas induk dan anak adalah generalisasi.
ASOSIASI
Asosiasi menggambarkan interaksi yang mungkin terjadi antara suatu objek dengan objek yang lain. Asosiasi memungkinkan suatu kelas untuk menggunakan atau mengetahui atribut atau operasi yang dimiliki oleh kelas lain. Ada 2 jenis asosiasi : Asosiasi dua arah Asosiasi satu arah (pasif)
atau
6
ASOSIASI (lanjutan)
Contoh : kelas mobil dan kelas garasi merupakan kelas independen. Mobil kadang menggunakan layanan kelas garasi seperti parkir. Objek yang diinstansiasi dari kedua kelas dapat saling berinteraksi melalui pengiriman atau penerimaan pesan Mobil
menggunakan 1..2
multiplisitas
1
Garasi
ASOSIASI (lanjutan)
Pada asosiasi terdapat muliplisitas. Multiplisitas adalah jumlah banyaknya obyek sebuah kelas yang berelasi dengan sebuah obyek lain pada kelas lain yang berasosiasi dengan klass tersebut. Tipe
Notasi UML
Keterangan
Exactly
1 or blank
Seorang Karyawan bekerja pada satu dan hanya satu departemen
Zero or 1
0..1
Seorang Karyawan memiliki satu suamiistri atau tidak punya suamiistri
Zero or !ore
0.." or "
#ustomer dapat tidak melakukan pembayaran sampai beberapa kali
1 or !ore
1.."
$ni%ersitas menawarkan paling sedikit 1 matakuliah sampai beberapa matakuliah
Speci&ic range
'..(
)im memiliki pertandingan terjadwal sebanyak '* +* atau ( pertandingan
ASOSIASI (lanjutan) DOSEN MATA KULIAH KD MATKUL NM MATKUL SKS
NIP NAMA ALAMAT
MENGAJAR 1
1
MENGAJAR() MEMBERI NILAI()
1
MENGAMBIL
MAHASISWA 1..*
NIM NAMA JURUSAN KULIAH() PRAKTIKUM()
9
ASSOCIATIONS public class A { public B b;
public A(){
class Association
Trial Version EA 9.0 Unregistered Tri A
+b
B
}
Trial Version 1 EA 9.0 Unregistered Tri 1
}
Trial Version EA 9.0 Unregistered Tri
public class B { public B(){ } }
AGREGASI
Agregasi adalah hubungan suatu kelas yang merupakan bagian dari kelas lain namun bersifat tidak wajib. Simbol :
11
KOMPOSISI
Komposisi adalah hubungan suatu kelas yang merupakan bagian yang wajib dari kelas lain. Simbol :
12
GENERALISASI
Generalisasi diperlukan untuk memperlihatkan hubungan pewarisan antar objek atau kelas. Simbol :
13
GENERALISASI class Association
public class Person { public Person(){
Person
} } public class Employee extends Person { public Employee(){
Employee
} }
POLYMORPHISM • Polymorphism adalah kemampuan untuk mempunyai beberapa bentuk yang berbeda. • Polymorphism diimplementasikan dengan mekanisme inheritance dan overriding hewan “bersuara”
anjing “menggonggong”
kucing “mengeong”
kuda “meringkik”
OVERRIDING
Subclass yang berusaha memodifikasi tingkah laku yang diwarisi dari superclass. Tujuan: subclass memiliki tingkah laku yang lebih spesifik. Dilakukan dengan cara mendeklarasikan kembali method milik parent class di subclass.
CONTOH OVERRIDING
OVERLOADING
Menuliskan kembali method dengan nama yang sama pada suatu class. Tujuan : memudahkan penggunaan/pemanggilan method dengan fungsionalitas fungsionalitas yang mirip yang mirip..
CONTOH OVERLOADING BangunDatar { static double PHI = 3.14; static double luas (double r){ double Hasil = PHI * r * r; return Hasil; } static int luas (int s){ int Hasil = s * s; return Hasil; } }
PERTEMUAN 14 IMPLEMEN IMPLEMENT TASI ALGOR ALGORITMA ITMA KE DALAM BAHASA PEMROGRAMAN BERORIENTASI OBJEK
POKOK BAHASAN 1. Bahasa Pemrograman Pemrograman Yang Mendukung OOP 2. Implementasi OOP dengan C++ 3. Implementasi OOP dengan Java
BAHASA PEMROGRAMAN BERORIENTASI OBJEK Bahasa pemrograman yang mendukung OOP antara lain: 1. SmallTalk 2. C++ 3. Java, dll
SMAL TALK
Smalltalk adalah bahasa pemrograman berorientasi objek yang pertama kali populer. Smalltalk dikembangkan Amerika Serikat.
di
Xerox
PARC-
Ide dasar Smalltalk meliputi: 1. Semua adalah objek 2. Objek bisa saling berkomunikasi melalui messages atau berita 3. Semua tersedia untuk dimodifikasi
BAHASA C++
C++ dibuat pada tahun 1980an oleh Bell Labs sebagai pengembangan dari Bahasa Pemrograman C (yang dibuat oleh Brian W. Kernighan dan Denies M. Ricthie pada tahun 1972). Salah satu perbedaan yang paling mendasar dengan bahasa C adalah C++ medukung konsep pemrograman berorientasi objek (Object Oriented Language). Tahun 1980 seorang ahli yang bernama Bjarne Stroustrup mengembangkan beberapa hal dari bahasa C yang dinamakan “C with Classes” yang berganti nama pada tahun 1983 menjadi C++. C++ merupakan bahasa pemrograman yang sensitive.
case
JAVA
Java adalah bahasa pemrograman berorientasi objek yang dikembangkan oleh Sun Microsystems sejak tahun 1991. Bahasa Pemrograman Java pertama lahir dari The Green Project yang berjalan selama 1! bulan dari a"al tahun 1991 hingga musim panas 199#. Proyek tersebut belum menggunakan versi yang dinamakan $ak. Proyek ini dimotori oleh Patrick %aughton Mike Sheridan James Gosling dan Bill Joy beserta sembilan pemrogram lainnya dari Sun Microsystems. Salah satu hasil proyek ini adalah maskot Duke yang dibuat oleh Joe Palrang. Java adalah bahasa pemrograman yang mirip dengan &'&(( )eunggulanya adalah Java dapat berjalan di banyak plat*orm perangkat keras +Multy,Plat*orm-.
IMPLEMENTASI ALGORITMA DENGAN BAHASA C++ void ShowInfoMotor() { cout<<”Merk cout<<”Tahun cout<<”Nomor Polisi cout<<”Warna
: “<
int main() { MOTOR M; //instansiasi thdp kelas MOTOR M.SetMotor(); M.ShowInfoMotor(); return 0; }
IMPLEMENTASI ALGORITMA DENGAN JAVA Mobil.java
class Mobil{ String warna; int tahunProduksi; void PrintMobil(){ System.out.println("Warna: " + warna); System.out.println("Tahun: " + tahunProduksi); }}
MobilBeraksi.java
public class MobilBeraksi { public static void main(String[] args){ // Membuat object Mobil mobilku = new Mobil(); /* memanggil atribut dan memberi nilai */ mobilku.warna = "Biru"; mobilku.tahunProduksi = 2009; mobilku.PrintMobil(); }}