download

Matakuliah
Tahun
Versi
: H0112 – Pemrograman Bahasa Tingkat Tinggi
: 2005/2006
: <<versi/revisi>>
Pertemuan 4
Modularitas
1
Learning Outcomes
Pada akhir pertemuan ini, diharapkan mahasiswa
akan mampu :
• Mengerti mengapa konsep modular dalam
pemrograman penting.
2
Outline Materi
•
•
•
•
•
•
Modularitas
Interface versus Implementasi
Keuntungan Penggunaan Interface
Dekomposisi File
Abstraksi Data
Abstraksi Data dan Modul
3
Modularitas
Module: sebuah unit organisasi dari sebuah
sistem software.
• groups together some functions, data, types,
etc.
Contoh: beberapa fungsi string pada standar
library C-string
• menyembunyikan detail implementasi dari user
(information hiding).
cth: variabel lokal dalam fungsi C, tidak dapat
diakses oleh fungsi pemanggil atau main ()
4
Interface versus Implementasi
Users dan pembuat module, memiliki pandangan
yang berbeda tentang module itu sendiri.
Interface: point akses users terhadap sebuah
module.
• menjelaskan kepada users apa yang perlu
diketahui dalam mempergunakan sebuah module.
• membuat module mudah digunakan dan
dimengerti
• menjelaskan service apa yang suatu module
sediakan, bukan bagaimana module tersebut
menyediakannya.
5
Keuntungan Penggunaan Interface
• Users dapat membuat program mereka, sebelum
suatu module selesai dibuat.
• Program Users dan program module dapat dikompile secara terpisah.
• Implementasi Module dapat diubah (cth:
perbaikan kesalahan (bug), struktur data atau
algoritma yang lebih baik) tanpa mengubah atau
meng-kompile ulang program users.
6
Dekomposisi File
Interface: file header (.h) berisi deklarasi dari
fungsi, konstanta, variabel, users-defined type
untuk penggunaan scope data public.
Serta menyertakan “comments” bagi users.
Implementation: file source (.c) berisi definisi dari
suatu fungsi, beserta dengan konstanta lokal,
variabel, dan users-defined type untuk scope data
private.
Serta menyertakan “comments” bagi pembuat
module tersebut.
7
Dekomposisi File
Users menyertakan file header yang mereka
gunakan melalui <#include the header files’s
name>. Perhatikan hal ini cukup untuk mengkompile program Users.
Modules juga menyertakan file header mereka,
sehingga kompiler c dapat mencek konsistensi
program module sebelum mencapai tahap linking
(compile then link).
Slide berikutnya berisi contoh sebuah interface
pada servis fungsi linked-list.c
8
Dekomposisi File
File header untuk linklist2.c
/* Sorted linked lists of chars */
/* Linked list nodes are of type node_t */
typedef struct element {
char contents;
struct element *next;
} node_t;
/* Inserts new node with contents `key', keeping sorted.
`ptr_to_head’: address of pointer to head of list */
int insertNode(node_t **ptr_to_head, char key);
/* ... */
int deleteNode(node_t **ptr_to_head, char);
/* ... */
void traverse(node_t *head);
/* ... */
void deleteAllNodes(node_t **);
9
Abstraksi Data
Abstract Data Type (ADT): Sekumpulan data dan
sekumpulan instruksi yang beroperasi pada data
tersebut, dimana operasi tersebut bersifat independen
(tidak tergantung) pada implementasi module.
Contoh: stacks dan lists.
Deskripsi sebuah Stack ADT:
Stack menyimpan data melalui mekanisme push dan pop
dan memiliki sifat LIFO (Last In First Out), artinya data yang
masuk akan sesuai dengan urutannya, tetapi data yang
dikeluarkan memiliki urutan yang terbalik.
10
Abstraksi Data dan Modul
Hanya ada satu stack ADT, tetapi ada banyak kemungkinan
untuk meng-implementasikannya. Suatu implementasi dapat
menggunakan struktur data tertentu dan memiliki fungsi yang
memanipulasi struktur data tersebut.
Didalam bahasa C, seseorang dapat mengimplementasikan
stack ADT dengan link-list atau dengan array. Operasi yang
terdapat pada stack ADT merupakan fungsi yang
dideklarasikan pada file interface (file header .h).
Sedangkan detail bagaimana operasi tersebut bekerja,
tidaklah perlu diketahui dari sisi Users.
11
Topik Minggu Depan
• Modularitas (bersambung…)
–
–
–
–
–
Kohesi
Kopling
Reusability
Working in Team
Unit Testing
• Tugas 1: (Kompleks) Observasi pada program
“gaussian elemination”, buku pustaka no 1
(halaman: lihat pada index tentang “Gaussian
Elemination”), khususnya pada pembagian
program kedalam beberapa module.
12
• Tugas 2:
– Bagaimana LCD (Liquid Crystal Display)
bekerja dan bagaimana mengkontrol LCD
menggunakan komputer? – buku pustaka
no:2 halaman 75.
13