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
© Copyright 2024 Paperzz