Modular Programming
A. Diagram Definisi.
B. Algoritma Pemecahan
D. Hasil Modularisasi
sort_tiga_bilangan
IF bil_1 > bil_2 THEN
temp = bil_1
bil_1 = bil_2
bil_2 = temp
ENDIF
IF bil_2 > bil_3 THEN
temp = bil_2
bil_2 = bil_3
bil_3 = temp
ENDIF
IF bil_1 > bil_3 THEN
temp = bil_1
bil_1 = bil_3
bil_3 = temp
ENDIF
END
Keuntungan menggunakan modul
z Rancangan Top-down dengan teknik sub goal, program besar dapat dibagi
menjadi modul-modul yang lebih kecil.
z Dapat dikerjakan oleh lebih dari satu orang dengan koordinasi yang relatif mudah.
z Mencari kesalahan relatif lebih mudah karena alur logika lebih jelas, dan
kesalahan dapat dilokalisir dalam suatu modul.
z Modifikasi dapat dilakukan, tanpa mengganggu program secara keseluruhan.
z Mempermudah dokumentasi.
Jangkauan Data
Global Data (Data Global)
Berlaku di semua modul yang ada pada program
Local Data (Data Lokal)
Hanya berlaku di modul tempat data tersebut dideklarasikan
Parameter Status
Passing Parameter
Menyampaikan data/informasi dari modul pemanggil (super-ordinate) ke modul
yang dipanggil (sub-ordinate)
Menyampaikan data/informasi dari modul sub-ordinate ke modul super-ordinate
Data/informasi yang dikirim atau diterima passing dua arah antara super-
ordinate dan sub-ordinate
Kohesi
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
Kohesi Sequential
Mempunyai pekerjaan yang beruntun (sekuensial)
Kegiatan yang dilakukan lebih dari satu
Hasil dari kegiatan sebelumnya menjadi masukan bagi kegiatan selanjutnya
Dapat dipecah menjadi functional
Kohesi Procedural
Satu kegiatan dengan kegiatan lain tidak berhubungan
Hubungan antara elemen yang satu dengan lainnya karena urutan statement
Dapat dipecahkan menjadi Functional
Kohesi Temporal
Elemen – elemen terlibat dalam berbagai kegiatan yang mempunyai hubungan
dalam waktu
Urutan tidak penting
Contoh kohesi temporal:
Inisialisasi
Buka File Transaksi
total_transaksi = 0
total_pen = 0
Baris = 0
No = 0
Hal = 0
END
Kohesi Logical
Elemen – elemen melakukan kegiatan dengan kategori yang sama (spt; kategori
menghitung jumlah record)
Parameter masukan menentukan kegiatan yang dilaksanakan
Tidak semua kegiatan dikerjakan
Contoh kohesi logical:
Baca_semua_file(kode_file)
CASE file_code
1: Read cust_transact_rec
IF NOT EOF THEN
increment cust_transact_count
ENDIF
2: Read cust_master_rec
IF NOT EOF THEN
increment cust_master_count
ENDIF
3: Read prod_master_rec
IF NOT EOF THEN
increment prod_master_count
ENDIF
END
Kohesi Coincidental
Elemen – elemen tidak mempunyai hubungan
Contoh kohesi coincidental:
File Processing
Open employee updates file
Read employee record
Print page_heading
Open employee master file
jml_hal = 1
error_flag = false
END
Kopling
Kopling Data
Komunikasi antara modul menggunakan data
Diharapkan jumlah data yang disalurkan seminimal mungkin
Parameter data yang disalurkan semakin sedikit semakin baik
Keterangan:
Parameternya terdiri dari data
Jumlah parameter minimal
Contoh algoritma kopling data:
Proses_record_pelanggan
…..
Hitung_pajak_penjualan(harga_total,Pajak)
…..
…..
END
Hitung_pajak_penjualan(harga_total,Pajak)
IF harga_total>5000 THEN
pajak = harga * 0.25
ELSE
IF harga_total>4000 THEN
pajak = harga * 0.25
ELSE
IF harga_total>3000 THEN
pajak = harga * 0.25
ELSE
IF harga_total>2000 THEN
pajak = harga * 0.25
ELSE
pajak = 0
ENDIF
ENDIF
ENDIF
ENDIF
END
Keterangan:
• harga_total Æ parameter masukan
• pajak Æ parameter keluaran
Kopling Stamp
Dua modul melakukan pass struktur data non global yang sama.
Struktur Data: record, array
Timbul bahaya jika modul memeriksa struktur data tetapi hanya menggunakan
sebagian
Keterangan:
Parameternya struktur data
(Record atau Array)
Contoh algoritma kopling stamp:
Proses_record_transaksi
…..
Proses_siswa_pria(current_record)
…..
END
Proses_siswa_pria(current_record)
jml_siswa_pria = jml_siswa_pria + 1
IF usia_siswa >21 THEN
jml_siswa_dewasa = jml_siswa_dewasa + 1
ENDIF
…..
…..
END
Keterangan:
• current_record hanya berupa penunjuk nomor record sekarang
Kopling Control
Komunikasi antara modul menggunakan parameter status / data kontrol
Dua Modul Melakukan pass menggunakan parameter status (data kontrol / flag /
switch)
Keterangan:
Parameternya kontrol (flag /
switch)
Contoh algoritma kopling control:
Proses_input_code
Read input_code
Lakukan_aksi(input_code)
…..
…..
END
Lakukan_aksi(input_code)
CASE of Input_code
1: Read record_karyawan
2: Cetak_header_halaman
3: Open master_file_Karyawan
4: jml_halaman = 0
5: error_message
ENDCASE
END
Keterangan:
• 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 sub-ordinate dan
sebaliknya
Keterangan:
Tidak ada parameter
Contoh algoritma kopling external:
Hitung_pajak_Penjualan
IF produk = “sampel” THEN
pajak_pen = 0
ELSE
IF harga_produk<50000 THEN
pajak_pen = hrg_jual * 0.25
…..
…..
ENDIF
ENDIF
END
Hitung_nilai_total()
…..
…..
total = nilai_total + pajak_pen
…..
…..
END
Keterangan:
• pajak_pen adalah variabel data global
Kopling Common
Dua modul atau lebih menggunakan struktur data global yang sama
Tidak ada parameter yang digunakan dari modul pemanggil ke sub-ordinate dan
sebaliknya
Keterangan:
Tidak ada parameter
Contoh algoritma kopling common:
Baca_record_pelanggan
Read record_pelanggan
IF EOF THEN
EOF_flag = true
ENDIF
END
Validasi_record_pelanggan()
IF noPelanggan NOT numeris THEN
error_msg = “invalid nomor pelanggan
Print_laporan_error
ENDIF
…..
…..
END
Keterangan:
• Record_pelanggan adalah struktur data global
OBJECT ORIENTED PROGRAMMING
class
Class merupakan blue print dari suatu objek dalam OOP
Dengan membuat class berarti kita membuat kerangka dasar atau cetakan yang
nantinya dapat digunakan untuk membuat sejumlah objek.
Class umumnya memiliki:
z Member Function
Fungsi yang merupakan bagian dari class.
Sebutan lain member function:
¾ Method (apabila sudah dibuat objeknya)
¾ Fungsi anggota
z Data Member
Variable berada di dalam class.
Sebutan lain member function:
¾ Properties
¾ Anggota data
Deklarasi class pada C++ :
Syntax
class namaclass
{
public:
void memberFunction1();
void memberFunction1();
char dataMember1;
int dataMember2;
namaclass();
~namaclass();
};
Contoh
void contact::tambahKontak()
{
cout << "Nama : ";
cin.getline(name,40);
cout << "Telp : ";
cin.getline(phoneNo,7);
cout << "Usia : ";
cin >> age;
cin >> age;
}
Deklarasi Object :
Syntax:
namaclass namaobjek;
Contoh OOP:
#include <iostream.h>
class contact {
public: //menyatakan anggota berikut bersifat public
void lihatKontak(); //deklarasi member function lihatKontak()
void tambahKontak(); //deklarasi member function tambahKontak()
char phoneNo[7]; //deklarasi data member phoneNo type char
int age; //deklarasi data member age type int
char name[50]; //deklarasi data member name type char
contact(); //deklarasi constructor
virtual ~contact(); //deklarasi destructor
};
contact::contact() {
cout<<”Welcome to contact class”<<endl<<endl;
}
contact::~contact() {
cout<<”Thanks for using contact class”<<endl;
}
void contact::tambahKontak() //member function tambahKontak() {
cout << "Nama : ";
cin.getline(name,40);
cout << "Telp : ";
cin.getline(phoneNo,7);
cout << "Usia : ";
cin >> age;
cin >> age;
}
void contact::lihatKontak() // member function lihatKontak() {
cout << endl;
cout << "Nama : " << name << endl;
cout << "Usia : " << age << endl;
cout << "Telp : " << phoneNo << endl;
cout << endl;
}
void main() //main program
{
contact kontak; //deklarasi objek kontak berdasarkan class
contact
kontak.tambahKontak(); //memanggil method pada objek kontak
kontak.lihatKontak(); //memanggil method pada objek kontak
}