Top Banner
BAB I FUNCTION 1.1 Tujuan Adapun tujuan dari praktikum bab pertama mengenai fungsi adalah sebagai berikut : 1. Mengenal dan memahami fungsi dasar dalam bahasa C/C++ 2. Mengerti dan memahami header program bahasa C/C+ +. 3. Dapat menggunakan fungsi-fungsi dasar pemrograman C/C++ 4. Mengenal dan mengerti pengenal dan kata kunci dalam bahasa C/C++. 5. Mengenal dan mengerti variabel, tipe data dalam bahasa C/C++ 6. Dapat menggunakan variabel dan tipe variabel dalam program 1.2 Dasar Teori 1.2.1 Pengertian Function Yang di maksud dengan function atau fungsi adalah sejumlah instruksi yang di kelompokkan menjadi satu, berdiri sendiri, yang berfungsi untuk menyelesaikan suatu pekerjaan tertentu. Bahasa C/C++ adalah suatu bahasa yang struktur penulisannya merupakan kumpulan dari fungsi- fungsi. Setiap fungsi mempunyai nama. Bahasa C/C++ minimal terdiri dari satu buah fungsi yang di sebut fungsi main (). Nama main adalah nama fungsi yang ditentukan oleh bahasa C/C++, yang tidak boleh di ganti dengan nama lain. Fungsi-fungsi lain (yang dibuat sendiri
121

PRAKTIKUM PBO

Dec 29, 2015

Download

Documents

La Ode Safar

Pemograman Berorientasi Objek
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: PRAKTIKUM PBO

BAB I

FUNCTION

1.1 TujuanAdapun tujuan dari praktikum bab pertama mengenai

fungsi adalah sebagai berikut :1. Mengenal dan memahami fungsi dasar dalam bahasa

C/C++2. Mengerti dan memahami header program bahasa C/C++.3. Dapat menggunakan fungsi-fungsi dasar pemrograman

C/C++4. Mengenal dan mengerti pengenal dan kata kunci dalam

bahasa C/C++.5. Mengenal dan mengerti variabel, tipe data dalam bahasa

C/C++6. Dapat menggunakan variabel dan tipe variabel dalam

program1.2 Dasar Teori

1.2.1 Pengertian FunctionYang di maksud dengan function atau fungsi adalah

sejumlah instruksi yang di kelompokkan menjadi satu, berdiri sendiri, yang berfungsi untuk menyelesaikan suatu pekerjaan tertentu. Bahasa C/C++ adalah suatu bahasa yang struktur penulisannya merupakan kumpulan dari fungsi-fungsi. Setiap fungsi mempunyai nama.

Bahasa C/C++ minimal terdiri dari satu buah fungsi yang di sebut fungsi main (). Nama main adalah nama fungsi yang ditentukan oleh bahasa C/C++, yang tidak boleh di ganti dengan nama lain. Fungsi-fungsi lain (yang dibuat sendiri jika diperlukan) namanya dapat di karang sendiri.

Contoh :Sebuah program yang di dalamnya terdapat sebuah

fungsi yang namanya HITUNG.#include <iostream.h>#include <conio.h>int HITUNG (int A, int B);

Page 2: PRAKTIKUM PBO

void main (){ int A, B, T;

A = 5; B = 2; T = 0;T = HITUNG (A,B);cout <<T;

getch ();}int HITUNG (int A, int B){

int T;A = A * 2;B = B * 2;T = A + B;

return (T);}Adapun tampilan program di atas yaitu :

Gambar 1.0.1 : Program contoh 1

1.2.2 Mendeklarasikan dan Mendefinisikan FungsiSuatu fungsi mempunyai “Judul” yang minimal berisi

nama dan tipe fungsi tersebut. Menulis judul sebuah fungsi sebagai awal dari suatu fungsi di sebut mendefinisikan fungsi.

Bila sebuah fungsi di tulis di bawah atau sesudah fungsi main(), maka fungsi tersebut harus di perkenalkan atau di daftarkan terlebih dahulu sebelum dapat digunakan. Menulis pendaftaran fungsi ini di sebut mendeklarasikan fungsi yang di tulis sebelum program induk main ().

Contoh program yang tidak menggunakan fungsi lain selain main function.

#include <iostream.h>#include <conio.h>

Page 3: PRAKTIKUM PBO

void main (){

cout<<"Jakarta"; getch();}Tampilan programnya yaitu :

Gambar 1.0.2 : Program contoh 2

Contoh yang menggunakan fungsi lain.#include <iostream.h>#include <conio.h>

void CETAK ();void main (){

CETAK (); getch ();}void CETAK (){

cout<<"Jakarta";}

Berikut tampilan program setelah di compile :

Gambar 1.0.3 : Program contoh 3

Sebuah fungsi yang memerlukan tipe sesuai dengan tipe nilai yang dikirimnya atau dikembalikan (return) ke

Page 4: PRAKTIKUM PBO

bagian program atau fungsi yang memanggilnya. Bila sebuah fungsi tidak mengirimkan nilai balik, maka tipenya tidak diperlukan. Bila tipe tidak ditulis, bahasa C/C++ menganggap fungsi tersebut menggunakan tipe default yaitu tipe int. Format penulisan :

Tipe nama (argemen1, argumen2, .....)Pernyataan;Di mana tipe berisi tipe data yang akan

dikembalikan oleh fungsi nama merupakan pengenal untuk memanggil fungsi. Argumen dapat dideklarasikan sesuai dengan kebutuhan. Tiap-tiap argumen terdiri dari tipe-tipe data yang di ikuti oleh pengenalnya. Sama seperti mendeklarasikan variabel baru (contoh : int x). Pernyataan merupakan bagian dari tubuh fungsi. Dapat berupa pernyataan tunggal ataupun majemuk.

Fungsi yang tidak dideklarasikan terlebih dahulu, padahal fungsi tersebut ditempatkan atau didefinisikan di bawah atau sesudah fungsi main (), maka fungsi tersebut tidak akan dikenal sehingga akan menyebabkan error.

#include <iostream.h>#include <conio.h>void main (){

CETAK ();getch ();

}void CETAKA (){

cout<<"Jakarta";}Tampilan error pada program yaitu :

Page 5: PRAKTIKUM PBO

Gambar 1.0.4 : Program contoh 4

Contoh jika fungsi CETAK () ditulis di atas atau sebelum fungsi main (), maka tidak diperlukan lagi mendeklarasikan fungsi cetak.

#include <iostream.h>#include <conio.h>void CETAK (){

cout<<"Jakarta"; getch ();}void main (){

CETAK ();}Tampilan programnya yaitu sebagai berikut :

Gambar 1.0.5 : Program contoh 5

1.2.3 Variabel Lokal, Variabel Global, Calling Function dan Called Function

Semua variabel yang dibuat dalam suatu function, akan bersifat lokal.

#include <iostream.h>#include <conio.h>

void CETAK ();void main (){

CETAK ();

Page 6: PRAKTIKUM PBO

getch();}void CETAK (){

int A, B, T;A = 5; B = 2;T = A+B;cout<<T;

}Program dari contoh ke 6 adalah sebagai berikut :

Gambar 1.0.6 : Program contoh 6

#include <iostream.h>void CETAK ();void main (){

int A, B, T;A = 5; B = 2;T = A+B;CETAK ();

}void CETAK (){

cout<<T;}Berikut tampilan error dari program contoh 7

sebagai berikut :

Gambar1.0.7 : Program contoh 7

Page 7: PRAKTIKUM PBO

Semua variabel yang ada dalam fungsi utama main(), juga bersifat lokal, hanya dikenal dalam fungsi main() saja, tidak dikenal di dalam fungsi lain. Error akan terjadi karena fungsi CETAK tidak mengenal variabel T, karena dalam fungsi CETAK tidak ada perintah menyiapkan variabel T, seperti int T;

Contoh :#include <iostream.h>#include <conio.h>void CETAK ();int T;void main (){

int A, B, T;A = 5; B = 2;T = A+B;CETAK ();getch ();

}void CETAK (){

cout<<T;} Program contoh 8 tampilannya sebagai berikut :

Gambar 1.0.8 : Program contoh 8

Dari contoh program di atas, main program atau main function disebut calling function, yaitu program yang meng-call, dan fungsi cetak disebut called function karena dia merupakan fungsi yang di call.

Contoh :#include <iostream.h>#include <conio.h>void TAMBAH ();

Page 8: PRAKTIKUM PBO

int A, B, T;void main (){

A = 5; B =2;TAMBAH();cout<<T;

getch ();}void TAMBAH (){

T = A+B;}Hasil dari program contoh 9 yaitu :

Gambar 1.0.9 : Program contoh 9

Dalam fungsi main() dan fungsi TAMBAH(), tidak di siapkan variabel, sehingga semua variabel diambil dari variabel global.

Contoh :#include <iostream.h>#include <conio.h>void TAMBAH ();int A, B, T;void main (){

int A, B;A = 5; B = 2;TAMBAH();cout<<T;getch ();

}void TAMBAH (){

T = A+B;

Page 9: PRAKTIKUM PBO

} Hasil dari program contoh 10 sebagai berikut :

Gambar 1.0.10 : Program contoh 10

Dalam fungsi main () ada disiapkan variabel A dan B, sehingga yang diisi dengan 5 dan 2 adalah A dan B yang ada dalam fungsi main(), variabel lokal yang dimilikinya sendiri.

Fungsi TAMBAH () tidak menyiapkan variabel A, B dan T, sehingga variabel A, B dan T diambil dari variabel global. Dalam kelompok variabel global memang ada variabel A, B dan T, sehingga proses dalam fungsi TAMBAH () tidak error, hanya isi variabel A, B dan T yang ada dalam kelompok variabel global dan nilainya tidak diketahui (berisi nilai interger sembarang)

Perintah mencetak T dalam fungsi main () adalah mencetak variabel T yang ada dalam kelompok variabel global, yang isinya sembarang. Sehingga program di atas akan mencetak nilai program interger sembarang.

1.2.4 Passing Variabel (Passing By Value), Variabel Parameter dan Variabel Argumen

Calling function dapat mengirimkan (passing) suatu nilai ke called function. Bila nilai yang dikirimkan adalah nilai atau data yang akan diproses. Maka, pengiriman nilai tersebut disebut passing by value. Bila nilai yang dikirim berupa nilai pointer (bukan data) yang merefer ke suatu data, maka pengiriman tersebut disebut passing by reference.

Contoh-contoh berikut mengenai passing by value :#include <iostream.h>#include <conio.h>void CETAK (int T);void main ()

Page 10: PRAKTIKUM PBO

{int A, B, T;A = 5; B = 2;T = A+B;CETAK (T);

getch();}void CETAK (int T){

cout<<T;}Tampilan program contoh 11 yaitu :

Gambar 1.0.11 : Program contoh 11

Pengalokasian variabel dalam memori untuk program di atas, dapat diilustrasikan sebagai berikut :

Nama variabel argumen boleh berbeda dengan nama variabel parameter.

#include <iostream.h>#include <conio.h>void CETAK (int T);void main (){

int A, B, T;A = 5; B = 2;T = A+B;CETAK (T);

getch ();}void CETAK (int X){

cout<<X;}Hasil program contoh 12 sebagai berikut :

Page 11: PRAKTIKUM PBO

Gambar 1.0.12 : Program contoh 12

Semua nilai yang akan dioperasikan dibawa ke dalam fungsi CETAK.

#include <iostream.h>#include <conio.h>

void CETAK (int X, int Y);void main (){

int A, B;A = 5; B = 2;CETAK (A,B);getch ();

}void CETAK (int X, int Y){

int T;T = X+Y;cout<<T;

}Hasil program contoh 13 yaitu sebagai berikut :

Gambar 1.0.13 : Program contoh 13

1.3 Pembahasan Praktikum1.3.1 Latihan

1. Latihan 1Listing program latihan 1 :// PROGRAM LUAS DAN VOLUME#include <iostream.h>

Page 12: PRAKTIKUM PBO

#include <conio.h>

// function luas persegi panjangint hitung_luas(int p, int l){ int ls; ls = p*l; return ls;}

//function volume balokint hitung_volume(int p, int l, int t){ int vol; vol = p*l*t; return vol;}

// program utamamain (){ int panjang, lebar, tinggi, luas, volume; cout<<"PROGRAM LUAS DAN VOLUME"<<endl; cout<<"Masukan Panjang : "; cin>>panjang; cout<<"Masukan Lebar : "; cin>>lebar; cout<<"Masukan Tinggi : "; cin>>tinggi;

luas = hitung_luas(panjang, lebar); volume = hitung_volume(panjang, lebar, tinggi);

cout<<"Luas persegi panjang adalah "<<luas<<endl; cout<<"Volume balok adalah "<<volume; getch();}

Page 13: PRAKTIKUM PBO

Adapun hasil program latihan 2 adalah sebagai berikut

Gambar 1.0.14 : Program luas dan volume

Program di atas merupakan program untuk menghitung luas persegi panjang dan volume balok. Di mana program dibagi menjadi beberapa fungsi. Dalam fungsi menghitung luas persegi panjang telah dideklarasikan tipe data dan operasi untuk menghitung luas dari persegi panjang. Begitu pun, dengan fungsi untuk menghitung volume telah dideklarasikan pula dengan tipe data serta operasi untuk menghitung volume. Selanjutnya, pada fungsi main dideklarasikan tipe data untuk nilai dari panjang, lebar dan tinggi yang diperlukan untuk menghitung luas dan volume. Kemudian nilai yang telah di masukan sebelumnya dikirim pada fungsi menghitung luas dan menghitung volume. Sehingga nilainya akan di proses pada masing-masing fungsi apakah menghitung luas ataukah menghitung volume. Kemudian hasil dari proses penghitungan tadi, dikirim kembali pada fungsi main dan kemudian ditampilkan pada program.

2. Latihan 2Listing program latihan 2 :#include <conio.h>#include <stdio.h>#include <iostream.h>#include <process.h>

char nama[30],*produk[10],kode[10][10],lagi;int a,b,harga[10],jumlah[10],no,bayar;

Page 14: PRAKTIKUM PBO

long totbay,sub[10],kembali;

void menu(){cout<<"\t\tKoperasi Rumah Tangga"<<endl;cout<<"\t\t FTI UNISSULA\n";cout<<"|====================================\n";cout<<"|No.| Nama | Harga |\n";cout<<"| | Produk | Produk |\n";cout<<"|--------------------------------------\n";cout<<"| 1 | Pulpen | Rp.2000 |\n";cout<<"| 2 | Buku | Rp.4000 |\n";cout<<"| 3 | Almamater | Rp.50000 |\n";cout<<"|====================================\n";gotoxy(38,3);cout<<"==========|";gotoxy(38,6);cout<<"------------|";gotoxy(39,4);cout<<" Kode |";gotoxy(39,5);cout<<" Produk |";gotoxy(39,7);cout<<" PN |";gotoxy(39,8);cout<<" BK |";gotoxy(39,9);cout<<" AL |";gotoxy(38,10);cout<<"==========|\n";}

void pesan (){cout<<"No. Penjualan : ";cin>>no;cout<<"Nama Pembeli : ";gets(nama);cout<<"Banyak Produk : ";cin>>b;for(a=1;a<=b;++a){cout<<"Produk Ke "<<a<<endl;cout<<"Kode Produk : ";cin>>kode[a];cout<<"Jumlah Pembelian : ";cin>>jumlah[a];

Page 15: PRAKTIKUM PBO

if(strcmp(kode[a],"PN")==0||strcmp(kode[a],"pn")==0){produk[a]="Pulpen"; harga[a]=2000;} elseif(strcmp(kode[a],"BK")==0||strcmp(kode[a],"bk")==0){produk[a]="Buku"; harga[a]=4000;} elseif(strcmp(kode[a],"AL")==0||strcmp(kode[a],"al")==0){produk[a]="Almamater"; harga[a]=50000;} else{cout<<"Kode Salah!!, Ulangi..!!"<<endl; pesan();}

}}

void pembayaran(){clrscr();cout<<"\t\t\tBUKTI PEMBAYARAN\n";cout<<"======================================\n";cout<<"No.Penjualan : "<<no<<endl;cout<<"Nama Pembeli : "<<nama<<endl;cout<<"======================================\n";cout<<"No. Nama Harga \n";cout<<" Produk Produk \n";cout<<"======================================\n";

Page 16: PRAKTIKUM PBO

gotoxy(39,2);cout<<"=========================\n";gotoxy(39,5);cout<<"=========================\n";gotoxy(39,6);cout<<" Jumlah ";gotoxy(39,7);cout<<" Produk ";gotoxy(51,6);cout<<" Subtotal ";gotoxy(51,7);cout<<" ";gotoxy(39,8);cout<<"=========================\n";totbay=0;for(a=1;a<=b;++a){gotoxy(1,a+9); cout<<a<<".";gotoxy(10,a+9); cout<<produk[a];gotoxy(26,a+9); cout<<harga[a];gotoxy(41,a+9); cout<<jumlah[a];sub[a]=harga[a]*jumlah[a];gotoxy(53,a+9); cout<<sub[a];cout<<endl;totbay=totbay+sub[a];}cout<<"\n=====================================";cout<<"==========================\n"<<endl;cout<<"\t\t\t\tTotal Pembayaran :Rp. "<<totbay<<endl;cout<<"\t\t\t\tUang Pembayaran :Rp. ";cin>>bayar;kembali=bayar-totbay;cout<<"\t\t\t\tUang Kembali :Rp. "<<kembali<<endl;

cout<<"Input data lagi [Y]/[T]? :";cin>>lagi;if(lagi=='Y'||lagi=='y'){ clrscr(); menu();

Page 17: PRAKTIKUM PBO

pesan();} else exit(0);}

main(){ menu(); pesan(); pembayaran(); getch();}Tampilan awal program kasir :

Gambar 1.0.15 : Tampilan awal program kasir sederhana

Program kasir sederhana ini, merupakan program

kasir rumah tangga FTI Unissula. Di mana inputan

produk yang tersedia ada tiga produk yaitu : pulpen,

buku dan almamater. Di mana, telah di definisikan

menjadi kode produk seperti pada gambar 1.15.

Untuk inputan yang akan di masukan dalam program

kasir sederhana ini, dapat kita lihat pada tampilan

inputan sebagai berikut :

Page 18: PRAKTIKUM PBO

Gambar 1.0.16 : Inputan program kasir sederhana

Adapun inputan yang di masukan adalah nomor

penjualan, nama pembeli serta banyaknya produk.

Kemudian masukan selanjutnya akan di sesuaikan

dengan banyaknya produk yang di masukan. Seperti

pada contoh gambar 1.16, yaitu produk pertama

sampai produk ke tiga, masukan yang di inputkan

adalah kode produk dan jumlah pembelian. Untuk

penginputan kode produk sendiri dapat di inputkan

dengan huruf besar ataupun huruf kecil. Selanjutnya,

setelah memasukan inputan pada produk terakhir

lalu tekan enter maka akan muncul tampilan bukti

pembayaran sebagai berikut :

Page 19: PRAKTIKUM PBO

Gambar 1.0.17 : Bukti pembayaran program kasir

Pada tampilan bukti pembayaran, terdapat nama produk, harga, jumlah dan subtotal. Setelah di jumlahkan, antara harga produk dan jumlah. Selanjutnya dijumlahkan subtotal dan menjadi total pembayaran yang harus dibayar. Kemudian, kasir akan menginputkan uang yang di bayarkan oleh pembeli. Program akan memproses selisih antara uang pembayaran dan total pembayaran dan menampilkan uang kembali. Selanjutnya terdapat tampilan untuk menginputkan data lagi atau tidak jika ya maka akan kembali tampilan awal program yaitu gambar 1.15. Jika tidak maka program akan keluar secara otomatis. Jika program inputan kode yang di masukan salah maka tampilannya adalah sebagai berikut :

Gambar 1.0.18 : Tampilan apabila kode produk salah

Page 20: PRAKTIKUM PBO

Jika terdapat kesalahan dalam program, yaitu pada saat menginputkan kode produk, program akan melanjutkan ke jumlah pembelian akan tetapi selanjutnya, akan muncul tampilan kode salah, ulangi. Dan program akan mengulangi pada inputan nomor penjualan dan selanjutnya.

1.3.2 Tugas1. Buatlah program kalkulator sederhana untuk

menghitung penjumlahan, pengurangan, perkalian dan pembagian dengan menggunakan function.

Listing Program Tugas Kalkulator :

#include <iostream.h>

#include <conio.h>

#include <process.h>

void calc();

float a,b,c,hsl;

char opt,ulg;

main()

{

calc();

return 0;

}

void calc()

{

mulai:

clrscr();

gotoxy (21,3);

cout<<"KALKUALTOR SEDERHANA"<<endl;

gotoxy (19,4);

Page 21: PRAKTIKUM PBO

cout<<"Created By La Ode Safar"<<endl;

gotoxy (11,6);

cout<<"Operator di Pakai adalah +, -, x, dan /"<<endl;

gotoxy (12,7);

cout<<"Contoh penggunaan : 2x2 <tekan Enter>"<<endl;

gotoxy (27,9);

cin>>a>>opt>>b;

switch (opt)

{

case '+':

hsl=a+b;

gotoxy(38,9);

cout<<"= "<<hsl<<endl;

goto ulang;

case '-':

hsl=a-b;

gotoxy(38,9);

cout<<"= "<<hsl<<endl;

goto ulang;

case 'x':

hsl=a*b;

gotoxy(38,9);

cout<<"= "<<hsl<<endl;

goto ulang;

case '/':

hsl=a/b;

gotoxy(38,9);

Page 22: PRAKTIKUM PBO

cout<<"= "<<hsl<<endl;

goto ulang;

ulang:

gotoxy (10,12);

cout<<"Ulang Perhitungan ? (y/n) ";

cin>>ulg;

if (ulg=='y'||ulg=='Y')

goto mulai;

else{

gotoxy (10,13);

cout<<"Terima Kasih..\1";

getch();

exit(0);

default:

gotoxy (10,11);

cout<<"\aOperasi Salah"<<endl;

goto ulang;

}

}

}

Tampilan awal program kalkulator :

Gambar 1. 0.19 : Tampilan awal program kalkulator

Page 23: PRAKTIKUM PBO

Program kalkulator sederhana ini menggunakan operator penjumlahan (+), pengurangan (-), perkalian (x) dan pembagian (/). Pada program kalkulator ini hanya bisa mengoperasikan dua data saja atau dalam kata lain hanya dapat menggunakan satu orator saja. Contoh apabila kita masukan datanya :

Gambar 1.0.20 : Input data program kalkulator

Pada contoh di atas kita melakukan perkalian antara 15 dengan 1.5 maka akan di dapatkan hasilnya adalah 22.5. Kemudian akan muncul tampilan ulang perhitungan ? jika kita memasukan nilai Y atau y maka pengulangan perhitungan akan di lakukan dan tampilannya akan seperti pada tampilan program 1.19. Sebaliknya apabila kita memasukan nilai N atau n, maka akan muncul tampilan sebagai berikut :

Gambar 1.0.21 : Apabila menginput nilai n/N

Page 24: PRAKTIKUM PBO

Kemudian apabila kita kita menekan tombol enter program akan keluar secara otomatis. Selanjutnya, apabila kita melakukan kesalahan dalam penginputan data misalnya salah memasukan operator atau nilai yang akan di operasikan akan muncul tampilan di sertai bunyi yang menandakan adanya kesalahan pada data yang di inputkan. Tampilannya adalah sebagai berikut :

Gambar 1.0.22 : Tampilan kesalahan input data

Tampilan yang akan muncul adalah operasi salah. Kemudian di sertai dengan pernyataan apakah akan mengulangi atau mengakhiri perhitungan. Seperti yang telah di jelaskan sebelumnya.

1.4 Kesimpulan

Fungsi merupakan sejumlah instruksi yang di kelompokkan menjadi satu, berdiri sendiri, yang berfungsi untuk menyelesaikan suatu pekerjaan tertentu. Suatu program minimal memiliki satu bungsu yaitu fungsi main yang telah di tetapkan judul atau namanya oleh program C/C++. Untuk fungsi lainnya judul atau nama dapat di tulis sesuai dengan keinginan programmer. Dalam penulisan fungsi apabila pendefinisian fungsi di letakkan sesudah fungsi main, maka terlebih dahulu harus mendeklarasikan fungsi tersebut sebelum fungsi main. Hal ini bertujuan agar program utama dalam hal ini fungsi main dapat mengenali fungsi yang telah di definisikan tersebut.

Page 25: PRAKTIKUM PBO

Fungsi dapat terbagi menjadi calling function yaitu fungsi yang memanggil fungsi ke dalamnya. Dan called function yaitu fungsi yang di panggil oleh calling function. Pada saat pemanggilan fungsi terdapat pengiriman data, data yang dikirimkan dapat berupa nilai atau data yang akan di proses dan dapat pula berupa nilai pointer atau alamat yang menunjuk ke suatu data. Fungsi membutuhkan sesuai dengan nilai yang dikirim atau dikembalikan. Bila fungsi tidak memerlukan pengiriman nilai balik maka tipenya dapat di buat sebagai void. Jika sebaliknya, maka tipenya dapat berupa float, int, double dan lain-lain tergantung kebutuhan dari program. Apabila tipe tidak di tuliskan maka bahasa C/C++ akan menganggap fungsi tersebut menggunakan tipe default yakni tipe int.

Variabel yang di deklarasikan dalam program juga dapat di kelompokkan menjadi dua yaitu variabel global dan variabel lokal. Variabel global adalah variabel yang di deklarasikan di luar fungsi. Sehingga dapat di kenali oleh seluruh fungsi yang terdapat dalam program. Sedangkan variabel lokal yaitu variabel yang di deklarasikan di dalam fungsi. Hanya dapat di kenali oleh fungsi di mana variabel tersebut di deklarasikan.

BAB II

STRUKTUR DAN CLASS

2.1 Tujuan

Adapun tujuan dari praktikum bab 2 ini adalah sebagai berikut:

1. Mengenal dan memahami struktur dalam bahasa C/C++.

2. Mengerti dan memahami kelas dalam bahasa C/C++.

3. Dapat menggunakan struktur dalam pemrograman C/C++.

4. Dapat menggunakan kelas dalam pemrograman C/C++.

5. Memahami perbedaan antara struktur dan kelas.2.2 Dasar Teori

Page 26: PRAKTIKUM PBO

Adapun dasar teori dari dari struktur dan class adalah sebagai berikut :2.2.1 Stucture

Dalam C++, tipe data struct (struktur) yang dideklarasikan dengan kata kunci struct , dapat mempunyai komponen dengan sembarang tipe data, baik tipe data dasar maupun tipe data turunan, termasuk fungsi.

Dengan kemampuan ini, tipe data struct yang namanya kotak. Maka dapat dideklarasikan sebagai berikut:

struct kotak{

double panjang;double lebar;

};Untuk memberikan nilai ukuran kotak tersebut, kita

dapat menggunakan perintah-perintah ini :kotak.panjang = 10;kotak.lebar = 7;Untuk memberi nilai panjang dan lebar kotak, salah

satu caranya adalah seperti di atas.Cara lain untuk memberi nilai panjang dan lebar

adalah dengan membentuk suatu fungsi.Karena fungsi ini hanya digunakan untuk member

nilai data panjang dan lebar suatu kotak, tentunya fungsi ini harus milik objek kotak, sehingga harus dianggap sebagai anggota struktur kotak. C++ sebagai bahasa pemrograman dapat mendefenisikan anggota tipe struktur yang berupa fungsi.

Dengan menambah fungsi tersebut, maka struktur kotak menjadi lebih jelas bentuknya.

struct kotak{

double panjang;double lebar;void SetUkuran(double pj, double lb){

panjang = pj;lebar = lb;

};}; tkotak kotak;

Page 27: PRAKTIKUM PBO

Dengan tipe struktur kotak seperti itu, untuk member nilai panjang dan lebar hanya dengan memanggil SetUkuran() .

kotak SetUkuran(10, 5);Selain punya ukuran panjang dan lebar, kotak juga

mempunyai keliling dan luas, dengan demikian, kita dapat memasukan fungsi untuk menghitung keliling dan luas dalam struktur kotak.

Sebagai catatan, bahwa defenisi fungsi yang menjadi anggota struktur dapat ditempatkan di luar tubuh struktur. Dengan cara ini maka deklarasi struktur kotak menjadi seperti berikut :

struct tkotak{

double panjang;double lebar;void SetUkuran(double pj, double lb);double keliling();double luas();

};tkotak kotak;

2.2.2 Class (Kelas)Bentuk program di atas adalah contoh gaya

pemrograman berorientasi prosedur (terstruktur) yang sudah mengubah pola pikirnya menjadi berorientasi objek. Dalam pemrograman berorientasi objek , jika kita telah menentukan suatu objek tertentu, maka objek tersebut kita definisikan dalam bentuk tipe baru yang namanya kelas.

Tipe data kelas di definisikan dengan kata kunci (keyword) class, yang merupakan generalisasi dari pernyataan class. Jika objek kata dideklarasikan dalam bentuk kelas, maka deklarasinya mirip dengan struktur.

class tkotak{double panjang;double lebar;

public:void SetUkuran(double pj,double lb);double keliling();double luas();

Page 28: PRAKTIKUM PBO

};tkotak kotak;Dalam deklarasi kelas tersebut, muncul kata public.

Data atau fungsi yang dideklarasikan di bawah kata kunci public mempunyai sifat dapat diakses dari luar secara langsung. Dalam deklarasi tersebut, variabel panjang dan lebar tidak bersifat public, sehingga tidak dapat diakses secara langsung dari luas kelas. Dengan demikian perintah-perintah dibawah ini tidak bisa dijalankan.

kotak.panjang = 10 ;kotak.lebar = 7 ;cout<<”panjang : “<<kotak.panjang<<endl;cout<<”lebar : “<<kotak.lebar<<endl;Inilah yang membedakan struktur dan kelas. Dalam

kelas, masing-masing data dan fungsi anggota diberi sifat tertentu. Jika semua anggota kelas bersifat public, maka kelas sama dengan struktur.

Untuk dapat mengakses data panjang dan lebar kelas tkotak harus dilakukan oleh fungsi yang menjadi anggota kelas dan bersifat public.

Pada deklarasi kelas tkotak, satu-satunya jalan untuk memberi nilai panjang dan lebar adalah dengan menggunakan fungsi SetUkuran( ). Untuk mengambil nilai panjang dan lebar juga harus dilakukan oleh fungsi yang menjadi anggota kelas. Misalnya, kita definisikan fungsi GetPanjang() dan GetLebar() untuk mengambil nilai panjang dan lebar.

Dapat dilihat dari sebuah contoh program, bentuk pendefinisian adalah sebagai berikut :

tipe nama_kelas : : namafungsi(){

IsiFungsi}Untuk mendefenisikan fariabel kelas, digunakan

deklarasi:Nama_kelas Nama_Variabel;

Contoh:tkotak kotak;

2.3 Pembahasan Praktikum2.3.1 Latihan

1. Latihan 1 : Structure

Page 29: PRAKTIKUM PBO

Listing program latihan 1 :#include <conio.h>#include <iostream.h>

struct tkotak{

double panjang;double lebar;void SetUkuran(double pj, double lb);double Keliling();double Luas();

};

int main(){

tkotak kotak;kotak.SetUkuran(10,7);cout<<"Panjang : "<<kotak.panjang<<endl;cout<<"Lebar : "<<kotak.lebar<<endl;cout<<"Keliling : "<<kotak.Keliling()<<endl;cout<<"Luas : "<<kotak.Luas()<<endl;getch();return 0;

}void tkotak::SetUkuran(double pj, double lb){

panjang=pj;lebar=lb;

}double tkotak::Keliling(){

return 2*(panjang+lebar);}double tkotak::Luas(){

return panjang*lebar;}Tampilan program latihan structure :

Page 30: PRAKTIKUM PBO

Gambar 2.0.23 : Program latihan structure

Program di atas merupakan program untuk menampilkan panjang, lebar keliling dan luas dari persegi panjang dengan menggunakan structure. Dengan nilai panjang dan lebar telah di inisialisasikan terlebih dahulu. Adapun nilai panjang yaitu 10 dan nilai lebar adalah 7. Sebelumnya telah di deklarasikan variabel dan tipe data serta fungsi anggota dari structure kotak. Sehingga pada fungsi main di lakukan pemanggilan terhadap variabel, tipe data dan fungsi dari struct kotak, dengan menambahkan variabel kotak. Kemudian untuk beberapa fungsi yang telah di deklarasikan sebelum main, selanjutnya di definisikan agar fungsi main mengenali operasi apa yang di lakukan oleh fungsi tersebut. Misalnya, fungsi keliling dengan operasi nilai balik 2*(panjang+lebar), begitu pun dengan fungsi luas yaitu panjang*lebar. Karena sebelumnya telah di masukan nilai panjang dan lebar pada fungsi set ukuran, seperti yang telah di sebutkan sebelumnya, sehingga nilai keliling dan luas berturut-turut pada tampilan program yakni 34 dan 70.

2. Latihan 2 : ClassListing program latihan 2 :#include <conio.h>#include <iostream.h>

class tkotak {double panjang;double lebar; };

public:void SetUkuran(double pj, double lb);double Keliling();

Page 31: PRAKTIKUM PBO

double Luas();double GetPanjang();double GetLebar();

int main(){

tkotak kotak;kotak.SetUkuran(10,7);cout<<"Panjang:

"<<kotak.GetPanjang()<<endl;cout<<"Lebar: "<<kotak.GetLebar()<<endl;cout<<"Keliling: "<<kotak.Keliling()<<endl;cout<<"Luas: "<<kotak.Luas()<<endl;getch();return 0;

}

void tkotak::SetUkuran(double pj, double lb) {panjang=pj;lebar=lb; }

double tkotak::Keliling() {return 2*(panjang+lebar); }

double tkotak::Luas() {return panjang*lebar; }

double tkotak::GetPanjang() {return panjang; }

double tkotak::GetLebar() {return lebar; }

Tampilan program latihan class :

Gambar 2.0.24 : Latihan program class

Page 32: PRAKTIKUM PBO

Program di atas sama dengan program latihan sebelumnya, yakni program untuk menampilkan panjang, lebar, keliling dan luas persegi panjang. Yang membedakan adalah jika program sebelumnya menggunakan structure, sedangkan program persegi panjang kali ini menggunakan class dalam penjabaran programnya. Perbedaannya terletak pada data dan fungsi anggotanya, pada class data dan fungsi anggotanya memiliki sifat tertentu. Akan tetapi, jika semua anggota class bersifat public sama seperti contoh di atas menandakan bahwa program kelas tersebut sama dengan program structure latihan 1.

3. Latihan 3 : Luas dan keliling segitiga dengan structureListing program latihan 3 :#include <iostream.h> #include <conio.h>#include <math.h>

struct segitiga{ double alas, tinggi, sisimrg; void SetUkuran(double al, double tg); double Keliling(); double Luas(); double sisimiring(); double getalas(); double gettinggi();};

int main(){ segitiga tiga; tiga.SetUkuran(6,8); cout<<"Alas : "<<tiga.getalas()<<endl; cout<<"Tinggi : "<<tiga.gettinggi()<<endl; cout<<"Sisi Miring : "<<tiga.sisimiring()<<endl; cout<<"Keliling : "<<tiga.Keliling()<<endl; cout<<"Luas : "<<tiga.Luas()<<endl; getch(); return 0;

Page 33: PRAKTIKUM PBO

}void segitiga::SetUkuran(double al, double tg){

alas=al; tinggi=tg;}double segitiga::sisimiring(){ sisimrg = sqrt(alas*alas+tinggi*tinggi); return sisimrg;}

double segitiga::Keliling(){

return alas+tinggi+sisimrg;}

double segitiga::Luas(){

return alas*tinggi/2;}

double segitiga::gettinggi(){

return tinggi;}

double segitiga::getalas(){

return alas;}Tampilan latihan segitiga dengan stucture :

Gambar 2.0.25 : Program segitiga dengan stucture

Program di atas merupakan program untuk mencari keliling dan luas dari segitiga dengan

Page 34: PRAKTIKUM PBO

stucture . Dengan terlebih dahulu menginisialisasikan alas dan tinggi masing-masing 6 dan 8. Kemudian untuk mencari sisi miring di buat satu fungsi khusus untuk menampung operasi dari sisi miring. Untuk mendapatkan nilai dari sisi miring kita menggunakan operasi phytagoras yang mana bila di definisikan dalam bahasa C/C++ pada program di atas yaitu sebagai berikut : sisimrg = sqrt(alas*alas+tinggi*tinggi);.Sehingga setelah melakukan operasi dengan nilai alas dan tinggi telah di tentukan sebelumnya. Maka, di dapatkan nilai dari sisi miring adalah 10. Kemudian, untuk mencari nilai dari keliling dengan cara menjumlahkan alas, tinggi dan sisi miring yang jumlahnya adalah 24. Begitu pula dengan nilai dari luas segitiga yaitu dengan melakukan perkalian nilai alas dan tinggi kemudian di bagi dengan 2 sehingga didapatkan nilai dari luas adalah 24.

4. Latihan 4 : Luas dan keliling segitiga dengan classListing program latihan 4 :#include <iostream.h> #include <conio.h>#include <math.h>

class segitiga{ double alas, tinggi, sisimrg;

public: void SetUkuran(double al, double tg); double Keliling(); double Luas(); double sisimiring(); double getalas(); double gettinggi();};int main(){ segitiga tiga; tiga.SetUkuran(6,8); cout<<"Alas : "<<tiga.getalas()<<endl; cout<<"Tinggi : "<<tiga.gettinggi()<<endl;

Page 35: PRAKTIKUM PBO

cout<<"Sisi Miring : "<<tiga.sisimiring()<<endl; cout<<"Keliling : "<<tiga.Keliling()<<endl; cout<<"Luas : "<<tiga.Luas()<<endl; getch(); return 0;}

void segitiga::SetUkuran(double al, double tg){

alas=al; tinggi=tg;}double segitiga::sisimiring(){ sisimrg = sqrt(alas*alas+tinggi*tinggi); return sisimrg;}double segitiga::Keliling(){

return alas+tinggi+sisimrg;}double segitiga::Luas(){

return alas*tinggi/2;}double segitiga::gettinggi(){

return tinggi;}double segitiga::getalas(){

return alas;}Tampilan latihan program latihan segitiga dengan class :

Page 36: PRAKTIKUM PBO

Gambar 2.0.26 : Program segitiga dengan class

Program latihan segitiga di atas sama dengan program latihan segitiga sebelumnya. Yang membedakan adalah bila yang sebelumnya menggunakan structure dalam programnya, program latihan segitiga kali ini menggunakan kelas. Secara operasi dan perhitungan pada programnya adalah sama. Sehingga dapat di katakan pula bila program structure pada perhitungan segitiga sebelumnya telah mengubah pola pikirnya menjadi berorientasi objek. Sehingga pada pendeklarasian dan pendefinisian anggota-anggota dari program jika di bandingkan antara structure dan class terdapat kesamaan.

2.3.2 Tugas1. Tugas 1

Ubahlah program struct berikut menjadi menggunakan class :#include <iostream.h>#include <conio.h>

struct Tanggal{

unsigned int tanggal;unsigned int no_bulan;unsigned int tahun;

};

struct Karyawan{

char nama[100];char nip[13];struct Tanggal tgl_masuk;float gaji;

};

Page 37: PRAKTIKUM PBO

int main(){

Karyawan karyawan;strcpy(karyawan.nama, "Sinchan");strcpy(karyawan.nip, "10090090");karyawan.tgl_masuk.tanggal = 10;

karyawan.tgl_masuk.no_bulan = 12; karyawan.tgl_masuk.tahun = 2011;cout<<"Nama karyawan : "<< karyawan.nama <<endl;cout<<"NIP karyawan : "<< karyawan.nip << endl;cout<<"Tanggal masuk : "<< karyawan.tgl_masuk.tanggal<<"/" << karyawan.tgl_masuk.no_bulan<<"/" << karyawan.tgl_masuk.tahun <<endl;

getch ();}Tampilan program tugas 1 :

Gambar 2.0.27 : program tugas karyawan struct

Program structure di atas adalah program untuk menampilkan nama, nip dan tanggal masuk dari seorang karyawan. Terdapat 2 struct pada program tersebut yaitu Tanggal dan Karyawan. Kemudian di deklarasikan pula dalam struct Karyawan bahwa Tanggal merupakan anggota dari Karyawan dengan variabel tgl_masuk. Sehingga semua anggota dari struct Tanggal dapat dipanggil oleh struct Karyawan dengan menambahkan variabel tgl_masuk pada pendeklarasiannya di dalam fungsi main. Kemudian

Page 38: PRAKTIKUM PBO

pada fungsi main di inisialisasikan nilai dari variabel yang telah di deklarasikan sebelumnya.Listing program setelah di ubah menjadi class :#include <iostream.h>#include <conio.h>#include <cstring.h>

class Tanggal{ public :

unsigned int tanggal;unsigned int no_bulan;unsigned int tahun;

};class Karyawan{public :

string nama, nip; Tanggal tgl_masuk;

float gaji;};

int main(){

Karyawan karyawan;karyawan.nama="Sinchan";karyawan.nip= "10090090";karyawan.tgl_masuk.tanggal = 10;

karyawan.tgl_masuk.no_bulan = 12; karyawan.tgl_masuk.tahun = 2011;cout<<"Nama karyawan : "<< karyawan.nama <<endl;cout<<"NIP karyawan : "<< karyawan.nip << endl;cout<<"Tanggal masuk : "<<karyawan.tgl_masuk.tanggal<<"/" << karyawan.tgl_masuk.no_bulan<<"/" << karyawan.tgl_masuk.tahun <<endl;getch ();

Page 39: PRAKTIKUM PBO

}Tampilan program tugas 1 setelah diubah menjadi class :

Gambar 2.0.28 : Program tugas 1 dengan class

Program di atas juga merupakan program untuk menampilkan nama, nip dan tanggal masuk dari seorang karyawan akan tetapi jika sebelumnya menggunakan struct sekarang menggunakan class. Perbedaan yang mencolok adalah pada pendeklarasian class yang di beri sifat public agar dapat di akses di luar kelas dari data atau variabel tersebut di deklarasikan. Kemudian pada program di atas menggunakan string sebagai tipe data dari variabel nama dan nip. Kelebihan dari string adalah kita tidak perlu menambahkan fungsi untuk memanipulasi char menjadi string akan tetapi kita tinggal langsung mendefinisikannya seperti pada contoh program tugas 1 class.

2. Tugas 2Perbaiki program berikut hingga dapat dijalankan. Kemudian ubalah menjadi bentuk struct.#include <cstdlib>#include <iostream>

class data{ public: int panjang; int lebar; int luas;}

void main(){clrscr();

Page 40: PRAKTIKUM PBO

data persegipanjang;cout<<"Masukan Panjang :"; cin>>persegipanjang.panjang;cout<<"Masukan Lebar :"; cin>>persegipanjang.lebar;persegipanjang.luas=persegipanjang.panjang*persegipanjang.lebar;cout<<"Luas adalah :"<<persegipanjang.luas;getch();}Tampilan error pada program tugas 2 :

Gambar 2.0.29 : Error pada program tugas 2

Error yang terjadi pada program ada lima yaitu, tidak dapat membuka file header cstdlib, kurangnya tanda titik koma (;) pada akhir pendeklarasian class, tidak dapat mengenali fungsi clrscr dan getch. Sehingga pada saat program di jalankan akan mengalami error seperti tampilan di atas.Listing program setelah di perbaiki :#include <conio.h>#include <iostream.h>class data{ public: int panjang; int lebar; int luas;};

void main(){clrscr();data persegipanjang;cout<<"Masukan Panjang :"; cin>>persegipanjang.panjang;

Page 41: PRAKTIKUM PBO

cout<<"Masukan Lebar :"; cin>>persegipanjang.lebar;persegipanjang.luas=persegipanjang.panjang*persegipanjang.lebar;cout<<"Luas adalah :"<<persegipanjang.luas;getch();}Tampilan program tugas 2 class :

Gambar 2.0.30 : Tampilan program tugas 2 class

Setelah di ketahui permasalahan yang menyebabkan program error, maka hal-hal yang tidak di perlukan seperti header stdlib di hapus, menambahkan titik koma (;) pada akhir pendeklarasian class data, serta menambahkan header conio agar program dapat memanggil fungsi clrscr fungsi getch. Kemudian pada saat program di jalankan kita akan memasukan panjang dan lebar yang di perlukan untuk menghitung luas, variabel dan tipe data dari panjang, lebar dan luas sendiri di deklarasikan pada class data, namun dalam bentuk public sehingga dapat di akses di luar class data. Kemudian, panjang dan lebar yang telah di inputkan di proses dengan mengalikan keduanya yaitu 6 dan 4 sehingga di peroleh hasil perkalian sama dengan 24. Berikut merupakan listing program setelah diubah menjadi stucture :#include <conio.h>#include <iostream.h>struct data{ int panjang; int lebar; int luas;};

Page 42: PRAKTIKUM PBO

void main(){clrscr();data persegipanjang;cout<<"Masukan Panjang : "; cin>>persegipanjang.panjang;cout<<"Masukan Lebar : "; cin>>persegipanjang.lebar;persegipanjang.luas=persegipanjang.panjang*persegipanjang.lebar;cout<<"Luas adalah : "<<persegipanjang.luas;getch();}Tampilan program tugas 2 structure :

Gambar 2.0.31 : Program tugas 2 structure

Setelah di ubah ke dalam bentuk struct terjadi perubahan sedikit pada programnya. Yakni, kata kunci struct di ganti dengan kata kunci class, serta menghapus public karena dalam struct tipe dafaultnya adalah public sedangkan class adalah sebaliknya tipe dafaultnya yaitu private. Kemudian, untuk proses operasi perhitungan luas persegi panjangnya sendiri sama seperti operasi pada program class. Langkah pertama kita inputkan panjang dan lebar. Adapun nilai panjang dan lebar yang telah di deklarasikan sebelumnya, yang pendeklarasiannya di lakukan di dalam struct data sehingga merupakan anggota dari data begitupun juga dengan luas. Setelah itu, nilai panjang dan lebar di beri operasi perkalian sehingga menghasilkan nilai 50 seperti pada contoh gambar 2.9 nilai yang di inputkan yaitu 10 dan 5.

2.4 Kesimpulan

Perbedaan antara structure dan class terletak pada sifat tertentu yang di miliki oleh masing-masing data dan fungsi

Page 43: PRAKTIKUM PBO

dari anggota suatu class. Akan tetapi, apabila semua anggota dari suatu class bersifat public maka program class tersebut sama halnya dengan structure. Apalagi perkembangan bahasa C/C++ yang memungkinkan gaya pemrograman berorientasi prosedur dalam hal ini structure dapat di ubah pola pikirnya manejadi berorientasi objek. Sehingga dalam proses pendeklarasian anggota baik data, variabel maupun fungsi antara class dan structure dapat kita temukan banyak kemiripan.

Dalam structure atau class untuk menjadikan sebuah structure atau class menjadi anggota dari suatu structure atau class. Kita perlu mendefinisikannya di dalam class atau structure yang ingin di jadikan sebagai structure atau class tujuan. Hal ini dapat kita lihat pada contoh program tugas 1 karyawan baik structure maupun class. Akan tetapi, dalam pemrograman berorientasi objek untuk menjadikan sebuah class menjadi anggota class lain atau anggota dari suatu class dapat di akses oleh class lain dapat menggunkan inheritance atau pewarisan yang akan di jelaskan pada modul-modul selanjutnya.

Dalam structure, tipe modifier defaultnya adalah public sehingga dapat di akses oleh semua structure yang ada dalam program. Sebaliknya, berbanding terbalik dengan structure, tipe modifier default dari class adalah private sehingga hanya dapat di akses di dalam kelas itu sendiri.

Page 44: PRAKTIKUM PBO

BAB III

MEMULAI PEMROGRAMAN BERORIENTASI OBJEK

3.1 TujuanAdapun tujuan dari praktikum bab 3 tentang memulai

pemrograman berorientasi objek adalah sebagai berikut :1. Mahasiswa dapat memahami dan menggunakan

encapsulation3.2 Dasar Teori

Pemrograman Berorientasi Objek memungkinkan system komplek dipecah ke dalam bagian-bagian kecil(kode) program dapat digunakan ulang oleh banyak aplikasi untuk menyelesaikan berbagai masalah. Dalam PBO ini program dibuat berdasarkan objek. Objek merupakan suatu bentuk atau model yang tergantung dari cara pandang objek yang dimaksud. Meja, kursi, dan jam dinding berada dalam objek ruangan. Ruang A, Ruang B, dan Ruang C berada dalam objek rumah.

Setiap objek memiliki atribut(state) dan method(behavior). Atribut ini merupakan segala sesuatu yang berhubungan dengan karakteristik objek seperti : tipe, warna. Method adalah fungsi atau segala sesuatu yang dapat dilakukan objek seperti : melindungi dari panas, hujan. Ruangan dan rumah ini yang dinamakan class. Class adalah prototype yang mendefinisikan variabel-variabel dan method-method secara umum. Objek merupakan instansiasi dari class.

Tiga konsep pemrograman beorientasi objek, yaitu:1. Pengkapsulan (Encapsulation) : mengkombinasikan

suatu struktur dengan fungsi yang memanipulasinya untuk membentuk tipe data baru yaitu kelas (class).

2. Pewarisan (Inheritance): mendefinisikan suatu kelas dan kemudian menggunakannya untuk membangun hierarki kelas turunan, di mana masing-masing turunan mewarisi semua akses kode maupun data kelas dasarnya .

Page 45: PRAKTIKUM PBO

3. Polimophisme (Polymorphism): memberikan satu aksi untuk satu nama yang dipakai bersama pada satu hierarki kelas, yang mana masing-masing kelas hierarki menerapkan cara yang sesuai dengan dirinya.

3.2.1 Pengkapsulan (Encapsulation)

Salah satu keistimewaan C++ adalah pengkapsulan (Encapsulation). Pengkapsulan adalah mengkombinasikan suatu struktur dengan fungsi yang memanipulasinya untuk membuat tipe data baru yaitu kelas (class).

Kelas akan menutup rapat baik data maupun kode. Akses item di dalam kelas dikendalikan. Pengendalian ini tidak hanya berupa data tapi juga kode. Saat kelas akan digunakan, kelas harus sudah dideklarasikan. Yang penting, pemakai kelas mengetahui deskripsi kelas, tetapi bukan implementasinya. Bagi pemakai, detail internal kelas tidak penting. Konsep ini disebut penyembunyian informasi(informasi hiding).

3.2.2 Kendali Akses Terhadap KelasTugas kelas adalah untuk menyembunyikan informasi

yang tidak diperlukan oleh pemakai. Ada tiga macam pemakai kelas:

1. Kelas itu sendiri2. Pemakai umum3. Kelas turunanSetiap macam pemakai mempunyai hak akses

masing-masing. Hak akses ini di tandai dengan menempatkan anggota kelas. Kelas pada C++ menawarkan tiga aras kenampakan anggota kelas (baik anggota data maupun fungsi anggota).

1. PrivateAnggota kelas private mempunyai kendali akses

yang paling ketat. Dalam bagian private, hanya fungsi anggota kelas dari kelas itu yang dapat mengakses anggota private atau kelas yang dideklarasikan sebagai teman(friend).

2. Public

Dalam bagian public, anggotanya dapat diakses oleh fungsi anggota kelas itu sendiri, instance kelas,

Page 46: PRAKTIKUM PBO

fungsi anggota kelas turunan. Suatu kelas agar bisa diakses dari luar kelas, misalnya dalam fungsi main (), perlu mempunyai_hak akses public. Hak akses ini biasanya digunakan sebagai perantara antara kelas dengan dunia luar.

3. ProtectedSuatu kelas dapat dibuat berdasarkan kelas lain,

kelas baru ini mewarisi sifat-sifat dari kelas dasarnya. Dengan cara ini bisa dibentuk kelas turunan dari beberapa tingkat kelab

s dasar. Bila pada kelas dasar mempunyai anggoata dengan hak akses terproteksi, maka anggota kelas ini akan dapat juga diakses oleh kelas turunannya. Anggota kelas terproteksi debentuk dengan didahului kata kunci protected. Pada bagian protected, hanya fungsi anggota dari kelas dan kelas-kelas turunannya yang dapat mengakses anggota.

3.2.3 Mendeklarasikan Kelas dan AtributKelas dideklarasikan seperti sintaks berikut :Class NamaKelas

{Member_list

};

Untuk membuat implementasi fungsi-fungsi yang terdapat pada suatu kelas, kita menggunakan operator ::

Bentuk umum pembuatannya yaitu :Tipe_data nama_kelas :: nama_fungsi

(daftar_parameter) {

statement_yang_akan_dilakukan;....... .}

3.2.4 Mengakses Kelas

Sedangkan untuk mengakses data atau fungsi yang terdapat di dalam kelas tersebut, kita menggunakan tanda titik. Bentuk umum pembuatannya yaitu :

Nama_instance.dataAtauNama_instance.nama_fungsi(daftar_parameter)

3.2.5 Pebedaan Kelas dan Objek

Page 47: PRAKTIKUM PBO

Objek adalah sesuatu yang bisa dianalogikan dengan benda, orang, tempat, kejadian atau konsep-konsep yang ada di dunia nyata yang digunakan pada perangkat lunak atau sistem informasi. Contohnya kampus, gedung, mahasiswa, kuliah, registrasi, pembayaran dan yang lainnya. Di samping itu Objek juga merupakan realisasi dari sebuah class. Ketika kita membuat sebuah class, tidak berarti kita membuat sebuah objek. Bayangkan jika kita menjadi seorang dewa. Lalu kita menentukan bahwa ada jenis makhluk bernama Sapi di bumi. Hal ini dapat disamakan dengan kita membuat sebuah class bernama sapi. Ketika kita menciptakan seekor sapi, seekor sapi itulah yang disebut objek.

Class juga sering disebut sebagai kumpulan/himpunan objek dengan atribut/ properti yang mirip, prilaku yang mirip, serta hubungan dengan objek yang lain dengan cara yang mirip. Class hampir serupa dengan structure, namun bedanya adalah class dapat memiliki fungsi di dalamnya. Jadi, class adalah beberapa variabel dan fungsi/method yang dikelompokkan di dalam sebuah nama. Variabel-variabel tersebut biasa disebut field dan biasanya merupakan atribut dari class tersebut. Fungsi/method adalah aksi yang dapat dilakukan oleh class tersebut. Class juga merupakan suatu konsep yang lebih tinggi lagi hierarkinya dari objek yang dihasilkan dari proses generalisasi objek-objek yang memiliki beberapa ciri yang sama.

Jadi, dari penjelasan itu dapat disimpulkan perbedaan antara objek dengan class yaitu Kelas adalah sesuatu yang menjelaskan ciri-ciri secara umum dari suatu objek, termasuk apa-apa yang bisa dilakukan objek tersebut. Sedangkan objek adalah keadaan tertentu dari suatu kelas, atau sering juga disebut dengan instans dari kelas.

Contoh :#include <iostream.h>#include <conio.h>class Mahasiswa{

public: char nama[100];};int main()

Page 48: PRAKTIKUM PBO

{Mahasiswa mhs;

cout << "Masukan Nama\t\t: "; cin.getline(mhs.nama,100); cout<<"Nama Saya "<<mhs.nama; getch();}Tampilan program contoh 1 :

Gambar 3.0.32 : Program contoh 1

3.3 Pembahasan PraktikumBerikut merupakan pembahasan praktikum bab 3 :

3.3.1 Latihan1. Latihan 1 : Belajar class.

Pada latihan 1 ini, kita akan membuat kelas sendiri.1. Buatlah file BelajarClass.cpp2. Buatlah sintal-sintal program untuk menghitung

luas persegi panjang dengan deklarasi atribut panjang dan lebar di letakan di class PersegiPanjangclass PersegiPanjang{

int panjang, lebar; public: void AturNilai (int,int); int LuasPersegiPanjang () { return (panjang * lebar);}};

3. Tambahkanlah sintaks berikut pada class BelajarClass dalam method main :void PersegiPanjang::AturNilai (int a, int b){

panjang=a; lebar=b;}int main()

Page 49: PRAKTIKUM PBO

{ PersegiPanjang ps; ps.AturNilai (10,7); cout <<"Luas Persegi Panjang ="<<ps.LuasPersegi Panjang(); return 0;}

4. Kompilasi dan jalankan program sehingga menghasilkan tampilan berikut :

Luas Persegi Panjang = 70Adapun listing programnya adalah sebagai berikut :#include <iostream.h>#include <conio.h>class PersegiPanjang{ int panjang, lebar; public: void AturNilai (int,int); int LuasPersegiPanjang () { return (panjang * lebar); }};void PersegiPanjang::AturNilai (int a, int b){ panjang=a; lebar=b;}int main(){ PersegiPanjang ps; ps.AturNilai (10,7); cout<<"Luas Persegi Panjang = "<<ps.LuasPersegiPanja ng(); getch(); return 0;}Tampilan program latihan 1 BelajarClass yaitu :

Page 50: PRAKTIKUM PBO

Gambar 3.0.33 : Program BelajarClass.cpp

Program BelajarClass merupakan program untuk menghitung luas persegi panjang. Di mana pendeklarasian dan pendefinisian dari class dan fungsi yang menjadi anggota class di lakukan sebelum fungsi main. Serta untuk nilai dari operasi dalam hal ini panjang dan lebar telah di inisialisasikan terlebih dahulu yakni 10 dan 7. Kemudian nilai tersebut dikirim dan ditampung pada variabel a dan b pada fungsi AturNilai. Kemudian nilai a sama dengan panjang dan nilai b sama dengan lebar. Sehingga pada tampilan program hasil dari operasi perkaliannya adalah 70.

5. Jika atribut panjang dan lebar pada class PersegiPanjang di tambahkan modifier private, apakah yang akan terjadi ?Listing apabila di tambahkan modifier private :#include <iostream.h>#include <conio.h>class PersegiPanjang{private : int panjang, lebar; public: void AturNilai (int,int); int LuasPersegiPanjang () { return (panjang * lebar); }};void PersegiPanjang::AturNilai (int a, int b){ panjang=a; lebar=b;}

Page 51: PRAKTIKUM PBO

int main(){ PersegiPanjang ps; ps.AturNilai (10,7); cout<<"Luas Persegi Panjang = "<<ps.LuasPersegiPanja ng(); getch(); return 0;}Tampilan program setelah di tambahkan private :

Gambar 3.0.34 : Program BelajarClass setelah ditambah private

Setelah di lakukan penambahan modifier private pada variabel panjang dan lebar, program tetap dapat di jalankan dan menghasilkan operasi yang sama seperti sebelumnya. Hal ini di sebabkan sebelumnya pendeklarasian modifier pada variabel panjang dan lebar tidak di lakukan, sehingga modifier dari panjang dan lebar akan bersifat default. Sedangkan tipe modifier default dari class adalah private. Jadi dalam segi pemrograman dan hasil operasinya sama jika di bandingkan dengan program sebelum diubah.

6. Jika modifier public di hilangkan dari method pada PersegiPanjang, apakah yang akan terjadi ? Listing apabila modifier public dihilangkan :#include <iostream.h>#include <conio.h>class PersegiPanjang{private : int panjang, lebar;void AturNilai (int,int);

Page 52: PRAKTIKUM PBO

int LuasPersegiPanjang () { return (panjang * lebar); }};void PersegiPanjang::AturNilai (int a, int b){ panjang=a; lebar=b;}int main(){ PersegiPanjang ps; ps.AturNilai (10,7); cout<<"Luas Persegi Panjang = "<<ps.LuasPersegiPanja ng(); getch(); return 0;}Tampilan jika modifier public di hilangkan :

Gambar 3.0.35 : Apabila modifier public dihilangkan

Apabila pada program tersebut di hilangkan modifier public, maka yang akan terjadi adalah error pada program yang dikarenakan tidak dapat mengakses data, variabel maupun fungsi yang merupakan anggota dari class PersegiPanjang. Hal ini terjadi karena fungsi AturNilai dan LuasPersegiPanjang yang akan dipanggil oleh fungsi main tidak dapat diakses. Karena kedua fungsi tersebut bersifat private dan hanya dapat diakses di dalam class PersegiPanjang.

2. Latihan 2 : Belajar class 2.Pada latihan 2 ini, kita akan belajar membuat kelas lebih dari satu.

Page 53: PRAKTIKUM PBO

Listing program BelajarClass setelah dimodifikasi :#include <iostream.h>#include <conio.h>

class PersegiPanjang{ int panjang, lebar; public: void AturNilai (int,int); int LuasPersegiPanjang (){ return (panjang*lebar);}};class Persegi{ int sisi; public: void IsiNilai (int); int LuasPersegi(){return (sisi*sisi);}};void PersegiPanjang::AturNilai (int a, int b){ panjang=a; lebar=b;}void Persegi::IsiNilai (int c){ sisi = c; }int main(){ PersegiPanjang ps; Persegi p; p.IsiNilai(10); ps.AturNilai (10,7); cout<<"Luas Persegi Panjang = "<<ps.LuasPersegiPanjang() <<endl; cout<<"Luas Persegi = "<<p.LuasPersegi(); getch(); return 0;}

Page 54: PRAKTIKUM PBO

Tampilan program BelajarClass setelah di modifikasi :

Gambar 3.0.36 : Tampilan program modifikasi BelajarClass

Program di atas adalah program untuk menghitung luas persegi dan persegi panjang. Di mana dalam programnya di jabarkan menjadi dua kelas, yakni class PersegiPanjang dan class Persegi. Yang masing-masing nilainya telah di inisialisasikan yaitu sisi =10, panjang=10, dan lebar =7. Di mana untuk menghitung luas dari persegi menggunakan operasi pada fungsi LuasPersegi yaitu sisi*sisi sehingga didapatkan nilai dari luas persegi adalah 100. Kemudian pada persegi panjang untuk menghitung luas, menggunakan operasi panjang*lebar yang terletak pada fungsi LuasPersegiPanjang sehingga hasil yang ditampilkan oleh program untuk luas persegi panjang adalah 70.

3. Latihan 3 : Keliling dan Luas LingkaranListing program tugas 3 yaitu sebagai berikut :#include <iostream.h>#include <conio.h>

const double phy=22.0/7.0;double jari_jari;class Lslingkaran{ public: void IsiNilai(double r); double LuasLingkaran();

};class Kllingkaran

Page 55: PRAKTIKUM PBO

{ public: void SetNilai (double r); double KelilingLingkaran();};int main(){ double a; Lslingkaran luas; Kllingkaran keliling; cout<<"Masukan Jari-jari : ";cin>>a; clrscr(); luas.IsiNilai(a); keliling.SetNilai(a); cout<<"Luas Lingkaran adalah : "<<luas.LuasLingkaran() <<endl; cout<<"Keliling Lingkaran adalah : "<<keliling.KelilingLingk aran(); getch();}

void Lslingkaran::IsiNilai(double r){ jari_jari=r;}void Kllingkaran::SetNilai(double r){ jari_jari=r;}double Lslingkaran::LuasLingkaran(){ return (phy*jari_jari*jari_jari);}double Kllingkaran::KelilingLingkaran(){ return (phy*2*jari_jari);

Page 56: PRAKTIKUM PBO

}Tampilan awal program luas dan keliling lingkaran :

Gambar 3.0.37 : Tampilan awal program lingkaran

Program di atas merupakan program untuk menghitung luas dan keliling lingkaran. Di mana tampilan awalnya adalah kita perlu memasukan nilai dari jari-jari. Yang mana nilai jari-jari ini akan di proses dalam program untuk menghitung luas dan keliling dari lingkaran. Sebagai contoh jika kita masukan angka 16 pada jari-jari dan menekan tombol enter, maka tampilan yang akan muncul adalah sebagai berikut :

Gambar 3.0.38 : Program hitung luas dan keliling lingkaran

Tampilan di atas memperlihatkan hasil dari perhitungan luas dan keliling lingkaran. Di mana luas adalah 804.571 dan keliling adalah 100.571. Nilai ini diperoleh dari perhitungan luas dan keliling lingkaran yang ada pada fungsi di dalam program. Di mana untuk menghitung luas digunakan operasi phy*jari-jari*jari-jari. Nilai phy merupakan nilai constant yaitu 22/7 dan jari-jari di ambil dari nilai yang dikirim ke fungsi untuk menghitung luas yang di tampung pada parameter r dari nilai yang telah di masukan sebelumnya. Begitupun dengan proses perhitungan pada keliling lingkaran operasi yang digunakan yaitu phy*2*jari-jari, sama halnya dengan proses luas hanya saja pengiriman nilai yang telah di masukan

Page 57: PRAKTIKUM PBO

dalam fungsi main dikirimkan ke fungsi untuk menghitung keliling dari lingkaran dan ditampung oleh parameternya. Sehingga di dapatkan hasil seperti pada contoh gambar 3.7.

3.3.2 Tugas1. Tugas 1

Buatlah program untuk menampilkan data mahasiswa (mendeklarasikan class untuk nip, nama, tgllahir dan alamat).Listing program tugas 1 adalah sebagai berikut :#include <iostream.h> #include <conio.h>#include <stdio.h>#include <cstring.h>

class Lahir{ public: unsigned int tanggal[10]; unsigned int bulan[10]; unsigned int tahun[10];};

class Mahasiswa{ private: int a, b; char nama[10][100]; string nip[10], alamat[10]; public: Lahir tgl_lahir; void input(); void tampil();};

int main(){ Mahasiswa mhs;

Page 58: PRAKTIKUM PBO

mhs.input(); mhs.tampil(); getch();}

void Mahasiswa::input(){cout<<"Masukan Jumlah Mahasiswa = ";cin>>b;for (a=1; a<=b; ++a){cout << "Data Mahasiswa ke-"<<a<<endl;cout << "\nMasukan Nama\t\t: ";gets(nama[a]);cout <<"Masukan Nip\t\t: ";cin>>nip[a];cout << "Masukan Tanggal Lahir\t: ";cin >>tgl_lahir.tanggal[a];if (tgl_lahir.tanggal[a] > 31){cout<<"Maaf, tanggal salah [1-31]..!!! Ulangi..\n";input();}cout <<"Masukan Bulan Lahir\t: ";cin >>tgl_lahir.bulan[a];if (tgl_lahir.bulan[a] > 12){cout<<"Maaf, bukan salah [1-12]..!!! Ulangi..\n";input();}cout << "Masukan Tahun Lahir\t: ";cin >> tgl_lahir.tahun[a];cout << "Masukan Alamat\t\t: ";cin >> alamat[a];}}

void Mahasiswa::tampil(){clrscr();cout<<"======================================\n";cout<<"No. NIP NAMA \n";

Page 59: PRAKTIKUM PBO

cout<<"======================================";gotoxy(39,1);cout<<"=======================";gotoxy(35,2);cout<<"TGL LAHIR ";gotoxy(49,2);cout<<" ALAMAT ";gotoxy(39,3);cout<<"=======================";

for(a=1;a<=b;++a){gotoxy(1,a+3); cout<<a<<".";gotoxy(4,a+3); cout<<nip[a];gotoxy(19,a+3); cout<<nama[a];gotoxy(35,a+3);cout<<tgl_lahir.tanggal[a]<<"/"<<tgl_lahir.bulan[a]<<"/"<<tgl_lahir.tahun[a];gotoxy(49,a+3);cout<<alamat[a];}cout<<"\n====================================";cout<<"=========================\n";}Tampilan awal program tugas 1 :

Gambar 3.0.39 : Tampilan program tugas 1 mahasiswa

Program di atas merupakan tampilan awal program mahasiswa. Yang akan menampilkan nip, nama, tanggal lahir, dan alamat dari seorang mahasiswa. Sebelum menampilkan data mahasiswa, kita perlu menginputkan data mahasiswa. Seperti

Page 60: PRAKTIKUM PBO

tampilan pada gambar 3.8 kita masukan jumlah mahasiswa yang akan kita inputkan. Misalnya kita menginputkan 2 maka akan muncul tampilan input dari data mahasiswa sebagai berikut :

Gambar 3.0.40 : Inputan program tugas 1 mahasiswa

Karena kita memasukan nilai 2 pada jumlah mahasiswa, maka data mahasiswa yang akan kita inputkan adalah 2. Adapun data yang akan di masukan yaitu nama, nip, tanggal, bulan, dan tahun lahir serta alamat dari mahasiswa. Contohnya seperti pada gambar 3.9. Kemudian kita menekan tombol enter maka akan muncul tampilan data yang telah kita inputkan. Adapun tampilannya adalah sebagai berikut :

Gambar 3.0.41 : Tampilan data mahasiswa yang di inputkan

Adapun data mahasiswa yang telah di masukan sebelumnya, akan disajikan dalam bentuk tabel di mana terdiri dari nomor, nip, nama, tanggal lahir dan

Page 61: PRAKTIKUM PBO

alamat. Sehingga tampilan datanya dapat di sesuaikan dengan tipenya apakah no, nip atau nama dan sebagainya. Apabila pada inputan tanggal lahir kita menginputkan tanggal yang salah misalnya kita inputkan 32 makan akan muncul tampilan sebagai berikut :

Gambar 3.0.42 : Tampilan error program mahasiswa

Akan muncul tampil tanggal salah dan inputan seharusnya antara 1 sampai 31. Begitupun juga apabila kita salah mengiputkan bulan maka tampilannya akan error sama halnya dengan gambar 3.11 akan tetapi yang membedakan adalah bulan salah dan seharusnya antara 1-12. Kemudian, program akan kembali mengulangi dari awal yaitu untuk menginputkan jumlah mahasiswa.

2. Tugas 2Modifikasi tugas 1 untuk menghitung usia mahasiswa berdasarkan tanggal sekarang- tanggal lahir.Adapun listing programnya adalah sebagai berikut :#include <iostream.h> #include <conio.h>#include <stdio.h>#include <cstring.h>#include <process.h>

class Lahir{ public: int tanggal[10]; int bulan[10];

Page 62: PRAKTIKUM PBO

int tahun[10];};

class Tanggal{ public: int tanggal2; int bulan2; int tahun2;};

class Mahasiswa{ private: int a, b; char nama[10][100]; string nip[10], alamat[10];

public: Lahir tgl_lahir; Tanggal skrang; void input(); void tampil();};

int main(){ Mahasiswa mhs; mhs.input(); mhs.tampil();

getch();}

void Mahasiswa::input(){cout<<"Masukan Jumlah Mahasiswa = ";cin>>b;for (a=1; a<=b; ++a)

Page 63: PRAKTIKUM PBO

{cout << "Data Mahasiswa ke-"<<a<<endl;cout << "\nMasukan Nama\t\t: ";gets(nama[a]);cout <<"Masukan Nip\t\t: ";cin>>nip[a];cout << "Masukan Tanggal Lahir\t: ";cin >>tgl_lahir.tanggal[a];if (tgl_lahir.tanggal[a] > 31){cout<<"Maaf, tanggal salah [1-31]..!!! Ulangi..\n";input();}cout <<"Masukan Bulan Lahir\t: ";cin >>tgl_lahir.bulan[a];if (tgl_lahir.bulan[a] > 12){cout<<"Maaf, bukan salah [1-12]..!!! Ulangi..\n";input();}cout <<"Masukan Tahun Lahir\t: ";cin >> tgl_lahir.tahun[a];cout<<"Masukan Alamat\t\t: ";cin>>alamat[a];}

cout<<"\nMasukan Tanggal Sekarang: ";cin>>skrang.tanggal2;cout<<"Masukan Bulan Sekarang\t: ";cin>>skrang.bulan2;cout<<"Masukan Tahun Sekarang\t: ";cin>>skrang.tahun2;}

void Mahasiswa::tampil(){ int hari, bulan, tahun, pilih;clrscr();gotoxy(49,1);cout<<skrang.tanggal2<<"/"<<skrang.bulan2<<"/"<<skrang.tahun2;

Page 64: PRAKTIKUM PBO

cout<<"\n======================================\n";cout<<"No. NIP NAMA \n";cout<<"======================================";gotoxy(39,2);cout<<"=======================";gotoxy(35,3);cout<<"TGL LAHIR ";gotoxy(49,3);cout<<" ALAMAT ";gotoxy(39,4);cout<<"=======================";

for(a=1;a<=b;++a){gotoxy(1,a+4); cout<<a<<".";gotoxy(4,a+4); cout<<nip[a];gotoxy(19,a+4); cout<<nama[a];gotoxy(35,a+4);cout<<tgl_lahir.tanggal[a]<<"/"<<tgl_lahir.bulan[a]<<"/"<<tgl_lahir.tahun[a];gotoxy(49,a+4);cout<<alamat[a];}cout<<"\n====================================";cout<<"=========================\n";hitung:cout<<"Pilih mahasiswa : ";cin>>a;

for(a;a<=b;++a){if(tgl_lahir.bulan[a] >= skrang.bulan2 &&tgl_lahir.tanggal[a] > skrang.tanggal2)

Page 65: PRAKTIKUM PBO

{hari = 30-(tgl_lahir.tanggal[a] - skrang.tanggal2);bulan = 11 - (tgl_lahir.bulan[a]-skrang.bulan2) ;tahun =(skrang.tahun2-tgl_lahir.tahun[a])-1;}else if(tgl_lahir.bulan[a] > skrang.bulan2 &&tgl_lahir.tanggal[a] <= skrang.tanggal2){hari = skrang.tanggal2-tgl_lahir.tanggal[a];bulan = 12-(tgl_lahir.bulan[a]-skrang.bulan2);tahun=(skrang.tahun2 -tgl_lahir.tahun[a])-1;}else if(tgl_lahir.bulan[a] < skrang.bulan2 &&tgl_lahir.tanggal[a] > skrang.tanggal2 ){hari = 30-(tgl_lahir.tanggal[a]-skrang.tanggal2);bulan = skrang.bulan2-tgl_lahir.bulan[a]-1;tahun = skrang.tahun2-tgl_lahir.tahun[a];}else if(tgl_lahir.bulan[a] <= skrang.bulan2 &&tgl_lahir.tanggal[a] <= skrang.tanggal2){hari = skrang.tanggal2-tgl_lahir.tanggal[a];bulan = skrang.bulan2- tgl_lahir.bulan[a];tahun = skrang.tahun2- tgl_lahir.tahun[a];}

cout<<"Usia "<<nama[a]<<" adalah ";cout<<tahun<<" tahun "<<bulan<<" bulan "<<hari<<" hari\n";

opsi:cout<<"[1]. Mulai Data Baru \n";cout<<"[2]. Kembali Hitung Usia \n";cout<<"[3]. Keluar \n";cout<<"Silahkan Pilih Opsi (1-30) :";cin>>pilih;switch(pilih)

Page 66: PRAKTIKUM PBO

{case 1 : clrscr();input();case 2 : goto hitung;case 3 : exit (0);default: cout<<"Inputan Salah Ulangi...!\n";goto opsi;}}}

Tampilan awal dari program modifikasi tugas 1 mahasiswa ini sama seperti gambar 3.8, yaitu tampilan awal tugas 1 yang membedakan adalah dari segi inputan yaitu sebagai berikut :

Gambar 3.0.43 : Inputan modifikasi tugas 1

Jika pada program tugas 1 kita hanya menginputkan nama, nip, tanggal, bulan, dan tahun lahir serta alamat. Pada tugas 2 masukan di tambahkan dengan tanggal sekarang, bulan sekarang dan tahun sekarang. Hal ini bertujuan agar dalam perhitungan usia nantinya dapat di hitung selisih antara tanggal lahir dari mahasiswa yang di pilih, dan tanggal sekarang. Kemudian setelah semua data telah di inputkan, seperti pada contoh

Page 67: PRAKTIKUM PBO

program gambar 3.12. Kemudian kita menekan tombol enter maka akan muncul tampilan sebagai berikut :

Gambar 3.0.44 : Tampilan hasil inputan tugas 2

Perbedaannya dengan program tugas 1 yakni, terdapat tanggal sekarang yang telah di inputkan pada pojok kanan program (lihat gambar 3.13) serta kita dapat memilih mahasiswa yang ingin dihitung usianya. Selanjutnya, sebagai contoh kita memilih dan memasukan nilai 1 maka, pada program akan muncul tampilan sebagai berikut :

Gambar 3.0.45 : Hitung usia mahasiswa

Setelah memasukan angka satu maka akan muncul tampilan usia dari mahasiswa yang dipilih. Usia merupakan selisih antara tanggal lahir mahasiswa yang dipilih dengan tanggal sekarang. Kemudian terdapat opsi pilihan, jika kita memilih

Page 68: PRAKTIKUM PBO

satu maka program akan kembali ke tampilan awal untuk memasukan data mahasiswa yang baru. Jika kita memilih 2 maka tampilannya adalah sebagai berikut :

Gambar 3.0.46 : Apabila memilih opsi 2.

Kemudian apabila kita memilih tombol tiga maka program akan keluar secara otomatis. Adapun error yang terjadi akibat salah mengiputkan data sama halnya dengan program tugas 1 hanya terdapat sedikit tambah yaitu pada saat salah menginputkan opsi maka terdapat error inputan salah dan akan mengulangi pada inputan opsi. Tampilannya adalah sebagai berikut :

Gambar 3.0.47 : Error inputan opsi

Page 69: PRAKTIKUM PBO

3.4 Kesimpulan

Dalam pemrograman berorientasi objek, untuk dapat menambahkan sebuah kelas menjadi anggota kelas lain, kita dapat menggunakan inheritance atau pewarisan. Akan tetapi, pada pembahasan bab 3 kita belum sampai pada pembahasan pewarisan. Jadi, dapat pula di lakukan dengan cara lain yaitu dengan mendeklarasiakan nama dari kelas yang ingin di jadikan anggota di dalam kelas yang di tuju serta nama variabel yang di gunakan ketika memanggil kelas yang merupakan anggota dari kelas yang di tuju tersebut. Hal ini sama halnya dengan program berorientasi prosedur yang menggunakan structure.

Sehingga pada saat mendeklarasikan sebuah kelas dalam kelas lain, dapat di katakan pula bahwa pada saat tersebut kelas dapat menjadi sebuah objek dan objek dapat menjadi sebuah kelas. Misalkan kelas A merupakan anggota dari kelas B. Kelas A dapat di katakan sebagai kelas dan dapat pula di katakan sebagai objek. Sebab selain memiliki anggotanya sendiri, kelas A juga masih merupakan bagian atau anggota dari kelas B.

Dalam pendefinisian class di dalam fungsi yang merupakan anggota dari suatu class berbeda dengan pendefinisian di luar anggota dari class. Jika di definiskan di pada fungsi yang bukan anggota class maka perlu menambahkan variabel dengan tipe data class yang di maksudkan ( modifier fungsinya adalah publik). Apabila fungsi tersebut merupakan anggota dari class kita tidak perlu menambahkan variabel tipe data class, akan tetapi langsung memanggil variabel yang bersangkutan.

Page 70: PRAKTIKUM PBO

BAB IV

CONSTRUCTOR

4.1 TujuanAdapun tujuan dari praktikum constructor pada bab IV ini

adalah sebagai berikut :1. Mahasiswa dapat menggunakan constructor, multiple

constructor, method dan overloading. 4.2 Dasar Teori

Konstruktor adalah fungsi khusus anggota kelas yang otomatis dijalankan pada saat penciptaan objek (mendeklarasikan instance). Konstruktor ditandai dengan namanya, yaitu sama dengan nama kelas. Konstruktor tidak mempunyai tipe hasil, bahkan juga bukan bertipe void. Biasanya konstruktor dipakai untuk inisialisasi anggota data dan melakukan operasi lain seperti membuka file dan melakukan alokasi memori secara dinamis. Meskipun konstruktor tidak harus ada di dalam kelas, tetapi jika diperlukan konstruktor dapat lebih dari satu. Adapun beberapa jenis konstruktor tersebut adalah sebagai berikut:1. Konstruktor default : tidak dapat menerima argumen,

anggota data diberi nilai awal tertentu.2. Konstruktor penyalinan dengan parameter : anggota

data diberi nilai awal berasal dari parameter.3. Konstruktor penyalinan objek lain : parameter berupa

objek lain, anggota data diberi nilai awal dari objek lain.

Fungsi constructor harus memiliki nama yang sama dengan class dan tidak boleh ada “return type”nya bahkan void sekalipun juga tidak.

Destructor merupakan kebalikan dari constructor. Fungsi ini merupakan fungsi unik/khusus yang akan dipanggil secara otomatis pada saat object di-destroyed atau keluar dari scope.

Destructor ini sangat berfungsi sekali untuk membebaskan memory yang kita gunakan saat pembuatan variabel dan objek.

Page 71: PRAKTIKUM PBO

Coba bayangkan saat anda membuat sebuah variable, misalnya memberikan “new int;”, kemudian memberikan nilai value untuk variable tersebut. Pasti di sini terdapat memory yang termakan/digunakan oleh variabel. Apa yang terjadi bila anda sudah tidak menggunakan objek/variabel yang memakan memory tersebut. Tentu bila tidak segera kita bebaskan akan berakibat pada adanya “memory leak”.

4.2.1 Multiple ConstructorClass dapat terdiri dari hanya sebuah constructor

atau beberapa constructor. Constructor dapat disediakan sesuai dengan kebutuhan. Artinya sebuah class dapat terdiri dari beberapa constructor.

4.2.2 MethodMethod merupakan blok yang berisi kesimpulan

perintah, memiliki nama method dan dapat diatur hak aksesnya. Method dapat berisi daftar parameter atau boleh dibiarkan kosong (tanpa parameter).

HakAkses NilaiBalik NamaMethod (DaftarParameter){

//Method_Body}Nilai balik dapat berupa tipe data primitive (void,

int, double, Boolean, char) atau dapat berupa tipe data referensi/class (string, integer, double, Boolean). Method yang tidak memiliki nilai balik void tidak menghasilkan nilai di bagian akhir prosesnya. Method ini biasa dikenal dengan prosedur.

Method yang memiliki nilai balik selain void, menghasilkan nilai di bagian akhir prosesnya. Method ini dapat disebut sebagai fungsi. Nilai yang dihasilkan oleh fungsi dikirim keluar dari blok fungsi menggunakan kata kunci “return” diikuti dengan variable yang memiliki type yang sesuai dengan nilai balik.

HakAkses NilaiBalik NamaMethod (DaftarParameter){

return suatu_Variabel}

4.2.3 Copy Constructor

Page 72: PRAKTIKUM PBO

Sampai sejauh ini kita telah mempelajari bagaimana struktur sebuah konstruktor serta bagaimana membuat objek dari konstruktor yang telah didefinisikan. Akan tetapi, coba bayangkan apabila Anda telah mempunyai sebuah objek x, dan kemudian Anda menginginkan membuat sebuah objek y yang memiliki nilai member data dan member fungsi yang sama. Tentu saja Anda dapat mendeklarasikan objek baru dengan memanggil konstruktor yang sama sebanyak 2 kali :

BilanganRasional x(22,7);BilanganRasional y(22,7);Perintah di atas mendeklarasikan 2 objek, yakni x

dan y yang masing-masing memiliki nilai 22 pada member variabel pembilang dan 7 pada member variabel penyebut. Akan tetapi, Anda dapat juga mempersingkat kode di atas dengan perintah berikut :

BilanganRasional x(22,7); BilanganRasional y(x); Berikut listing contoh untuk Copy Constructor : class BilanganRasional{public : BilanganRasional(int pemb, int peny) :

pembilang(pemb),penyebut(peny) { } //CopyConstructor terdapat disiniBilanganRasional(const BilanganRasional& br) : pembilang(br.pembilang), penyebut(br.penyebut)

{ }private : int pembilang, penyebut;};

void main(){ BilanganRasional x(22,7); BilanganRasional y(x); }

Page 73: PRAKTIKUM PBO

Deklarasi CopyConstructor otomatis dipanggil ketika anda menyalin objek x ke objek y. Perhatikan bahwa x menjadi parameter ketika kita mendeklarasikan objek y.

4.2.4 Penggunaan Constructor dan OverloadingPada sebuah class, dapat di gunakan konstruktor

lebih dari satu. Karena c++ tidak membatasi penggunaan konstruktor dalam suatu kelas. Pendeklarasian nama konstruktornya sama yang membedakan adalah nama parameter dari masing-masing konstruktor.

Contoh:class mahasiswa{ mahasiswa ();mahasiswa (double a);mahasiswa (double b);} Sedangkan overloading adalah diperbolehkannya

dalam sebuah class memiliki lebih dari satu function yang serupa (nama function-nya sama ) tetapi dalam hal pendeklarasian parameter-parameternya berbeda.

4.3 Pembahasan Praktikum4.3.1 Latihan

1. Latihan 1 : constructor persegi panjangAdapun listing program latihan 1 adalah sebagai berikut :#include <iostream.h>#include <conio.h>

class PersegiPanjang{ int panjang, lebar;

public : double Lspanjang(){return panjang*lebar;} double Klpanjang(){return 2*panjang+2*lebar;} PersegiPanjang(int a, int b)

Page 74: PRAKTIKUM PBO

{ panjang = a; lebar = b; cout<<"Objek telah di buat "<<endl; } ~PersegiPanjang() { cout<<"Ini Destructor"<<endl; getch(); }};

main (){ PersegiPanjang x(2,5); cout<<"Luas Persegi Panjang adalah "; cout<<x.Lspanjang()<<" cm2"<<endl; cout<<"Keliling Persegi Panjang adalah "; cout<<x.Klpanjang()<<" cm"<<endl;}Tampilannya program adalah sebagai berikut :

Gambar 4.0.48 : Konstruktor persegi panjang

Program di atas merupakan program untuk menghitung luas dan keliling dari persegi panjang. Perbedaan program persegi panjang kali ini adalah program untuk menghitung luas dan keliling di letakan di antara constructor dan destruktor. Pada tampilan awal program akan menampilkan objek telah di buat yang menandakan konstruktor. Kemudian menampilkan hasil dari perhitungan luas dan keliling persegi panjang. Selanjutnya, terdapat tampilan ini destruktor yang menandakan bahwa

Page 75: PRAKTIKUM PBO

fungsi tersebut merupakan destruktor. Konstruktor pada program c++ di gunakan untuk membuat objek. Sedangkan destruktor untuk menghapusnya.

2. Latihan 2 : konstruktor dan destruktor LingkaranAdapun listing program latihan 2 adalah sebagai berikut :#include <iostream.h>#include <conio.h>

const double phy=22.0/7.0;class Lingkaran{ private: double jari_jari; public: Lingkaran (double r); ~Lingkaran(); double Lslingkaran(); double Kllingkaran();};

int main(){ double a; cout<<"Masukan Jari-jari : ";cin>>a; Lingkaran x(a); cout<<"Luas Lingkaran adalah : " <<x.Lslingkaran() <<endl; cout<<"Keliling Lingkaran adalah : " <<x.Kllingkaran()<<endl;}

Lingkaran::Lingkaran(double r){ jari_jari=r; cout<<"Stater Motor"<<endl; cout<<"Motor Jalan "<<endl;}

Page 76: PRAKTIKUM PBO

Lingkaran::~Lingkaran(){ cout<<"Motor Berhenti"<<endl; getch(); Lingkaran (7);}double Lingkaran::Lslingkaran(){ return (phy*jari_jari*jari_jari);}

double Lingkaran::Kllingkaran(){ return (phy*2*jari_jari);}Tampilan program latihan 2 lingkaran dengan konstruktor adalah sebagai berikut :

Gambar 4.0.49 : Lingkaran dengan konstruktor

Pada awalnya kita memasukan nilai jari-jari yang akan di proses. Pada program lingkaran kali ini kita tidak perlu menambahkan fungsi set nilai, sebab konstruktor telah mengambil ahli fungsi dari set nilai. Kemudian seperti pada tampilan di atas, starter motor, motor jalan merupakan konstruktor, sedangkan motor berhenti adalah destruktor. Untuk menampilkan kembali konstruktor dan destruktor seperti pada tampilan gambar 4.2, kita perlu

Page 77: PRAKTIKUM PBO

mendefinisikan pemanggilan konstruktor di dalam destruktor dan memberikan angka sembarang. Sehingga yang akan muncul adalah tampilan konstruktor kemudian destruktor.

4.3.2 Tugas1. Tugas 1 : Kasir dengan konstruktor

Modifikasi program kasir sehingga menggunakan konstruktor.Listing programnya adalah sebagai berikut :#include <conio.h>#include <stdio.h>#include <iostream.h>

class Kasir{ private : char nama[30],*produk[10],kode[10][10],lagi; int a,b,harga[10],jumlah[10],no,bayar; long totbay,sub[10],kembali; public : Kasir (); ~Kasir (); void menu(), pesan(), pembayaran();};void Kasir::menu(){clrscr();cout<<"\t\tKoperasi Rumah Tangga"<<endl;cout<<"\t\t FTI UNISSULA\n";cout<<"|====================================\n";cout<<"|No.| Nama | Harga |\n";cout<<"| | Produk | Produk |\n";cout<<"|------------------------------------\n";cout<<"| 1 | Pulpen | Rp.2000 |\n";cout<<"| 2 | Buku | Rp.4000 |\n";cout<<"| 3 | Almamater | Rp.50000 |\n";

Page 78: PRAKTIKUM PBO

cout<<"|====================================\n";gotoxy(38,3);cout<<"==========|";gotoxy(38,6);cout<<"---------- |";gotoxy(39,4);cout<<" Kode |";gotoxy(39,5);cout<<" Produk |";gotoxy(39,7);cout<<" PN |";gotoxy(39,8);cout<<" BK |";gotoxy(39,9);cout<<" AL |";gotoxy(38,10);cout<<"==========|\n";}void Kasir:: pesan (){cout<<"No. Penjualan : ";cin>>no;cout<<"Nama Pembeli : ";gets(nama);cout<<"Banyak Produk : ";cin>>b;for(a=1;a<=b;++a){cout<<"Produk Ke "<<a<<endl;cout<<"Kode Produk : ";cin>>kode[a];cout<<"Jumlah Pembelian : ";cin>>jumlah[a];if(strcmp(kode[a],"PN")==0||strcmp(kode[a],"pn")==0){produk[a]="Pulpen"; harga[a]=2000;} elseif(strcmp(kode[a],"BK")==0||strcmp(kode[a],"bk")==0){produk[a]="Buku"; harga[a]=4000;} elseif(strcmp(kode[a],"AL")==0||strcmp(kode[a],"al")==0){produk[a]="Almamater"; harga[a]=50000;} else{cout<<"Kode Salah!!, Ulangi..!!"<<endl;

Page 79: PRAKTIKUM PBO

pesan();}}}void Kasir:: pembayaran(){clrscr();cout<<"\t\t\tBUKTI PEMBAYARAN\n";cout<<"======================================\n";cout<<"No.Penjualan : "<<no<<endl;cout<<"Nama Pembeli : "<<nama<<endl;cout<<"======================================\n";cout<<"No. Nama Harga \n";cout<<" Produk Produk \n";cout<<"======================================\n";gotoxy(39,2);cout<<"=========================\n";gotoxy(39,5);cout<<"=========================\n";gotoxy(39,6);cout<<" Jumlah ";gotoxy(39,7);cout<<" Produk ";gotoxy(51,6);cout<<" Subtotal ";gotoxy(51,7);cout<<" ";gotoxy(39,8);cout<<"=========================\n";totbay=0;for(a=1;a<=b;++a){gotoxy(1,a+9); cout<<a<<".";gotoxy(10,a+9); cout<<produk[a];gotoxy(26,a+9); cout<<harga[a];gotoxy(41,a+9); cout<<jumlah[a];sub[a]=harga[a]*jumlah[a];gotoxy(53,a+9); cout<<sub[a];cout<<endl;totbay=totbay+sub[a];

Page 80: PRAKTIKUM PBO

}cout<<"\n=====================================";cout<<"==========================\n"<<endl;cout<<"\t\t\t\tTotal Pembayaran :Rp. "<<totbay<<endl;cout<<"\t\t\t\tUang Pembayaran :Rp. ";cin>>bayar;kembali=bayar-totbay;cout<<"\t\t\t\tUang Kembali :Rp. "<<kembali<<endl;cout<<"Input data lagi [Y]/[T]? : ";cin>>lagi;if(lagi=='Y'||lagi=='y'){ clrscr(); menu(); pesan();}}main(){ Kasir x; x.menu(); x.pesan(); x.pembayaran();}Kasir::Kasir(){ gotoxy(18,3); cout<<"SELAMAT DATANG DI"; gotoxy(16,6); cout<<"KOPERASI FTI UNISSULA"; gotoxy(11,9); cout<<"DI BUAT OLEH :"; gotoxy(14,11); cout<<"LA ODE SAFAR (32601200557)"; gotoxy(12,14); cout<<"UNIVERSITAS ISLAM SULTAN AGUNG"; gotoxy(23,16);

Page 81: PRAKTIKUM PBO

cout<<"2013"; getch();}Kasir::~Kasir(){ clrscr(); gotoxy(11,3); cout<<"TERIMA KASIH TELAH BERBELANJA DI"; gotoxy(16,6); cout<<"KOPERASI FTI UNISSULA"; gotoxy(12,9); cout<<"JANGAN LUPA MAMPIR LAGI YA...!"; gotoxy(12,12); cout<<"UNIVERSITAS ISLAM SULTAN AGUNG"; gotoxy(23,14); cout<<"2013"; getch();}Tampilan awal program kasir dengan konstruktor :

Gambar 4.0.50 : Tampilan awal program kasir konstruktor

Tampilan program di atas merupakan tampilan awal program tugas 1 yaitu kasir dengan konstruktor. Tampilan awal selamat datang merupakan konstruktor dari program. Kemudian, kita menekan tombol enter, maka tampilan program

Page 82: PRAKTIKUM PBO

akan sama dengan tampilan tugas kasir sebelumnya (lihat gambar 1.15 dan 1.16). Sekaligus tampilan masukan dari data inputan yang akan di beli. Setelah data di inputkan, akan muncul tampilan seperti gambar 1.17. Kemudian akan muncul pernyataan untuk kembali melakukan input data atau tidak ( keluar dari program). Jika kita memilih ya, maka program akan kembali pada tampilan seperti gambar 1.15. Namun, apabila kita memilih tidak maka program akan memunculkan tampilan sebagai berikut :

Gambar 4.0.51 : Tampilan destruktor tugas kasir

Tampilan program di atas merupakan tampilan dari destruktor. Pada saat program akan keluar maka tampilan destruktor akan muncul. Pada program kasir di sini destruktor di gunakan untuk menampilkan tampilan terima kasih, seperti pada gambar 4.4. Selanjutnya, kita menekan tombol enter maka program akan keluar secara otomatis.

4.4 KesimpulanKonstruktor dalam pendeklarasian fungsinya harus

mempunyai nama yang sama dengan kelas di mana ia di deklarasikan. Dalam pendeklarasiannya konstruktor tidak perlu menggunakan nilai balik maupun tipe data void. Dalam suatu class dimungkinkan adanya lebih dari satu

Page 83: PRAKTIKUM PBO

konstruktor, dengan nama yang sama, yaitu nama dari class pendeklarasiannya. Yang membedakan antara konstruktor yang satu dengan yang lainnya adalah pada pendeklarasian parameter yang di gunakan.

Jika kita ingin membuat duplikat dari suatu objek kita tidak perlu langsung kembali menulis objek tersebut, akan tetapi kita dapat menggunakan copy contructor agar pendeklarasian objek lebih efisien.

Dalam sebuah class walaupun kita tidak mendeklarasikan sebuah destruktor, compiler c++ akan mendeklarasikannya secara otomatis. Akan tetapi, jika kita ingin mendefinisikannya kita dapat menggunakan simbol ~. Di sarankan untuk mendeklarasikan sendiri destruktor akan membuat kita mempunyai kontrol penuh terhadap apa yang dilakukan destruktor di dalam program.

BAB V

PEWARISAN

5.1 TujuanAdapun Tujuan dari praktikum perwarisan adalah

sebagai berikut :1. Mahasiswa dapat memahami tentang penggunaan dan

bentuk – bentuk – bentuk inheritance.

Page 84: PRAKTIKUM PBO

2. Mahasiswa dapat menggunakan inheritance untuk menyelesaikan suatu permasalahan.

3. Menghemat coding dengan pengunaan inheritance.5.2 Dasar Teori

Inheritance atau pewarisan merupakan salah satu bentuk penurunan atau pewarisan sifat dari class induk ke class anak. Maksudnya adalah class anak bisa mengakses semua method yang ada pada class induk tanpa perlu mendeklarasikan method lagi.

Inheritance merupakan pewarisan atribut dan method pada sebuah class yang diperoleh dari class yang telah terdefinisi tersebut. Setiap subclass akan mewarisi state (variable – variable) dan behaviour (method – method) dari superclass-nya. Subclass kemudian dapat menambahkan state dan behavior baru yang spesifik dan dapat pula memodifikasi (override) state dan behaviour yang diturunkan oleh superclass-nya.

Keuntungan dari inheritance adalah : Subclass menyediakan state / behavior yang spesifik yang membedakannua dengan superclass, hal ini akan memungkinkan programmer dengan menggunakan ulang source code dari superclass yang telah ada.

Istilah dalam inheritance yang perlu diperhatikan adalah :

1. ExtendsKeyword ini harus kita tambahkan pada definisi class

yang menjadi subclass.

2. SuperclassSuperclass digunakan untuk menunjukan hierarki

class yang berarti class dasar dari subclass / class anak.

3. SubclassSubclass adalah class anak atau turunan secara

hirarki dari superclass.4. Super

Page 85: PRAKTIKUM PBO

Keyword ini digunakan untuk memanggil konstruktor dari superclass atau menjadi variable yang mengacu pada superclass.

5.2.1 Kata Kunci ‘this’Kata kunci this digunakan pada pembuatan class

yang menyatakan objek sekarang.5.2.2 Overriding

Menulis ulang definisi suatu method yang memiliki method header yang sama dengan method yang dimiliki oleh superclassnya disebut overriding.

5.2.3 Tugas Pendahuluan5.3 Pembahasan Praktikum

5.3.1 Latihan1. Latihan 1 : Pewarisan

Ketiklah program dan simpan dengan nama BelajarPewarisan.ccp.Adapun listing program latihan 1 pewarisan adalah :#include <iostream.h>#include <conio.h>#include <cstring.h>

class SuperClass{ private : string na, nama;public :void setna (string nami) { na=nami;}void setnama (string nomo) { nama=nomo;}string getna() { return na;}string getnama() { return nama;}void namasaya(){ cout<<"NIM"<<getna()<<endl; cout<<"Nama"<<getna()<<endl; } };class Subclass : public SuperClass{ private :

Page 86: PRAKTIKUM PBO

double ip; public : void setip (double vip) { ip=vip;} double getip () { return ip;} void namadia() { cout<<"IP : "<<getip()<<endl; cout<<"Nama : "<<getnama()<<endl; cout<<"NIP : "<<getna()<<endl; }};

int main (){ Subclass ap1; ap1.setna("1111100123 & 1111100456"); ap1.setnama("Silvi Anggraini & Dewi Ayu"); ap1.setip(3.5); ap1.namadia(); getch ();}Tampilan dari program BelajarPewarisan adalah sebagai berikut :

Gambar 0.52 : Program BelajarPewarisan.ccp

Program BelajarPewarisan di atas merupakan program untuk menampilkan tip, nama dan nim dari mahasiswa. Di mana terdapat dua class yaitu superclass dan subclass. sub class merupakan turunan dari superclass sehingga pada saat memanggil fungsi anggota dari superclass dengan menggunakan variabel deklarasi dari subclass dapat di lakukan. Sebab, dalam pewarisan subclass dapat

Page 87: PRAKTIKUM PBO

mewarasi semua method dan sifat dari superclass. Seperti pada contoh di atas fungsi getnama dan getna dapat di panggil dengan variabel tipe subclass.

2. Latihan 2Listing program tugas 2 yaitu :#include <iostream.h>#include <conio.h>#include <cstring.h>

class BangunDatar{ protected: int lebar, tinggi; public: void setvalues(int a, int b) { lebar = a; tinggi = b; }};class Tampilkan{ public: void Say(string i) { cout<<'"'<<i<<'"'<<endl; }};

class Kotak: public BangunDatar, public Tampilkan{ public: int luas() { return (lebar*tinggi); }};

Page 88: PRAKTIKUM PBO

class Segitiga: public BangunDatar, public Tampilkan{ public: int luas() { return ((lebar*tinggi)/2); }};

int main(){ Kotak kotakku; Segitiga segitigaku; kotakku.setvalues(3,4); segitigaku.setvalues(3,4); cout<<kotakku.luas()<<endl; cout<<segitigaku.luas()<<endl; kotakku.Say("Ini adalah kotak"); segitigaku.Say("Ini adalah segitiga"); getch();}Tampilan dari program latihan 2 adalah sebagai berikut :

Gambar 0.53 : Latihan 2 pewarisan

Program latihan 2 adalah program untuk menampilkan luas kotak dan segitiga. Di mana variabel dari keduanya di deklarasikan pada class BangunDatar. Pada tampilan di atas juga terdapat kalimat ini adalah kotak dan ini adalah segitiga. Kedua tampilan tersebut di panggil menggunakan

Page 89: PRAKTIKUM PBO

fungsi say, di mana fungsi say merupakan member dari class Tampilkan. Oleh karena itu, untuk dapat memanggil fungsi say dan fungsi setvalues pada pendeklarasian class kotak dan class segitiga harus di tambahkan public BangunDatar, public Tampilkan. Sehingga class kotak dan segitiga merupakan class turunan dari class BangunDatar dan class Tampilkan.

3. Latihan 3Listing program latihan 3 adalah sebagai berikut :

5.3.2 Tugas1. Tugas 12. Tugas 2

Adapun listing program tugas 2 adalah sebagai berikut :#include <iostream.h>#include <conio.h>#include <cstring.h>

const double phy=22.0/7.0;class BangunDatar{ protected: int lebar, tinggi, jari;

public: void setvalues(int a, int b) { lebar = a; tinggi = b; } void setnilai(int x) { jari = x; }};

class Tampilkan

Page 90: PRAKTIKUM PBO

{ public: void Say(string i) { cout<<'"'<<i<<'"'<<endl; }};

class Kotak: public BangunDatar, public Tampilkan{ public: int luas() { return (lebar*tinggi); }};

class Segitiga: public BangunDatar, public Tampilkan{ public: int luas() { return ((lebar*tinggi)/2); }};

class Lingkaran: public BangunDatar, public Tampilkan{ public: int luas() { return (phy * jari * jari); }};

class BujurSangkar: public BangunDatar, public Tampilkan

Page 91: PRAKTIKUM PBO

{ public: int luas() { return (tinggi*lebar); }};

int main(){

Kotak kotakku; Segitiga segitigaku; Lingkaran lingkaran; BujurSangkar bujur; kotakku.setvalues(3,4); segitigaku.setvalues(3,4); lingkaran.setnilai(14); bujur.setvalues(4,50); cout<<"Luas Kotak : "<<kotakku.luas()<<endl; cout<<"Luas Segitiga : "<<segitigaku.luas()<<endl; cout<<"Luas Lingkaran : "<<lingkaran.luas()<<endl; cout<<"Luas Bujur Sangkar :"<<bujur.luas()<<endl; kotakku.Say("Ini adalah kotak"); segitigaku.Say("Ini adalah segitiga"); lingkaran.Say("Ini adalah lingkaran"); bujur.Say("Ini adalah bujursangkar");

getch();}Tampilan program tugas 2 :

Page 92: PRAKTIKUM PBO

Gambar 0.54 : Program tugas 2 pewarisan

5.4 Kesimpulan

Page 93: PRAKTIKUM PBO

BAB VI

POLYMORPHISM

6.1 Tujuan6.2 Tugas Pendahuluan6.3 Dasar Teori

6.3.1 Polymorphism Overloading Method6.3.2 Overloading Method

a. Privateb. Publicc. Protected

6.3.3 Overriding Method6.4 Kegiatan Praktikum

6.4.1 Latihan1. Latihan 1 : Overload Method

Listing program overload method adalah sebagai berikut :#include <iostream.h>#include <conio.h>

class beli{ public : void barang () { cout<<"........Overload Method........"<<endl; cout<<endl; } void barang (long jumlah, int harga) { cout<<"Harga = "<<harga<<endl; cout<<"Jumlah yang di beli = "<<jumlah<<endl; } int barang(int harga, long jumlah) {

Page 94: PRAKTIKUM PBO

return jumlah*harga; }};int main(){ beli nie; long jumlah; int harga=0, total;

nie.barang(); cout<<"Jumlah yang di beli = "; cin>>jumlah; cout<<"Harga = Rp. "; cin>>harga; total = nie.barang(harga,jumlah); cout<<"Total yang harus di bayar = Rp. "<<total<<endl; getch();}Tampilan program

Gambar 0.55 : Program overload method

Tampilan program overload method di atas merupakan program untuk menghitungkan total yang harus di bayar dari inputan jumlah yang di beli dan harga. Misalnya seperti contoh gambar 6.1 jumlah dengan nilai 2 dan harga dengan nilai 1000, maka yang harus di bayar adalah 2000. Pada program ini terdapat 3 fungsi yang namanya sama akan tetapi dengan deklarasi parameter yang berbeda. Persamaan nama fungsi ini dalam satu class yang di sebut overload method.

2. Latihan 2 : Overriding MethodListing program overriding method :

Page 95: PRAKTIKUM PBO

#include <iostream.h>#include <conio.h>

class cewek{ public: void info() { cout<<"Ini Kelas Cewek "<<endl; }};

class cowok :cewek{ public: void info() { cout<<"Ini Kelas Cowok "<<endl; }};int main(){ cowok b; b.info(); getch ();}Tampilan latihan overriding method yaitu :

Gambar 0.56 : Latihan overriding method

Program overrid method di atas adalah program untuk menampilkan fungsi info. Tampilan dari fungsi info adalah ini kelas cowok, yang membedakan di sini adalah fungsi info ada 2, yaitu yang terdapat pada kelas cewek.

Page 96: PRAKTIKUM PBO

6.4.2 Tugas1. Tugas 12. Tugas 2

Listing program tugas berat badan polymorphism :#include <iostream.h>#include <conio.h>#include <cstring>

class Manusia{ protected: double TinggiBadan; public: Manusia() { } Manusia(double TB) { TinggiBadan=TB; } getter(){ return TinggiBadan; }double HtgBBi () { return (TinggiBadan-100)*0.9; return (TinggiBadan-100)*0.8; }};

class Laki_laki: public Manusia{ public: Laki_laki(double TB) { TinggiBadan=TB;

} double HtgBBi () {

Page 97: PRAKTIKUM PBO

return (TinggiBadan-100)*0.9; }

};

class Perempuan: public Manusia{ public: Perempuan(double TB) { TinggiBadan=TB;

}double HtgBBi() { return (TinggiBadan-100)*0.8; }};

main(){ double a[100]; string b[100]; int n; cout<<"Masukan Jumlah Data : "; cin>>n; for(int i=1; i<=n; ++i) { cout<<"User "<<i<<endl; cout<<"Masukan tinggi badan anda (cm) = "; cin>>a[i]; cout<<"Masukan jenis kelamin anda (L/P) = "; cin>>b[i]; if (b[i]=="L"||b[i]=="l") {cout<<"Berat badan ideal laki-laki ini adalah = "; Laki_laki x(a[i]); cout<<x.HtgBBi()<<endl; }

Page 98: PRAKTIKUM PBO

else { cout<<"Berat badan ideal perempuan ini adalah = "; Perempuan c(a[i]); cout<<c.HtgBBi()<<endl; }

cout<<endl;}system("pause");}Adapun tampilan awal dari program tugas berat badan yaitu :

Gambar 0.57 : Tampilan awal program berat badan

Program di atas merupakan tampilan awal program berat badan. Awalnya kita menginputkan jumlah data untuk berapa banyak data yang akan di inputkan. Kemudian akan muncul tampilan dan inputan sebagai berikut :

Gambar 0.58 : Tampilan inputan berat badan.

Setelah memasukan banyak jumlah dengan nilai 2, maka program akan melooping masukan menjadi 2

Page 99: PRAKTIKUM PBO

kali yaitu user 1 sampai user 2. Adapun masukan adalah tinggi dan jenis kelamin. Apabila inputan jenis kelamin adalah L maka operasi yang di lakukan adalah (TinggiBadan-100)*0.9 serta untuk inputan jenis kelamin adalah P maka operasi yang di lakukan adalah (TinggiBadan-100)*0.8. Maka apabila kita menginputkan tinggi badan 180 jika inputan jenis kelamin L hasil berat badan idealnya adalah 72, serta apabila P maka berat badan idealnya adalah 64.

6.5 Kesimpulan