Anda di halaman 1dari 43

Universitas Informatika dan Bisnis Indonesia

BAGIAN I
PENDAHULUAN
1.1 Pengertian Dasar
Ada beberapa pengertian dasar yang harus diingat dan dipahami kembali sebelum
kita belajar pemrograman. Berikut adalah penjelasan singkat untuk pengertian-
pengertian dasar tersebut.
A. Program
o Kumpulan instruksi dan pernyataan yang mengikuti sistematika dan logika
tertentu untuk mencapai tujuan tertentu
o Jadwal atau rencana yang menentukan/menetapkan aksi atau tindakan apa
yang harus dilaksanakan [IEEE]
o Deretan instruksi yang disusun untuk diproses oleh komputer [ISO]
B. Pembuatan Program
o Proses menerjemahkan bahasa manusia (keinginan manusia) menjadi
pemrograman (program)
o Proses memahami permasalahan, analisis dan sintesis yang dinyatakan
dengan suatu kode dalam bahasa pemrograman tertentu secara sistematis
dan metodologis
C. Bahasa Pemrograman
o Bahasa buatan yang dirancang untkuk membuat atau menyatakan program
[ISO]
o Media komunikasi antara pembuat program dengan komputer
D. Belajar Pemrograman dan Belajar Bahasa Pemrograman
o Belajar pemrograman adalah belajar tentang strategi dan sistematika
pemecahan masalah untuk kemudian dituangkan dalam statu notasi yang
disepakati bersama, yaitu bahasa pemrograman
o Belajar bahasa pemrograman adalah belajar memakai suatu bahasa, aturan
tata bahasa dan instruksi-instruksinya untuk membuat atau menulis program
yang akan ditulis dalam bahasa itu

1.2 Paradigma Pemrograman


o Paradigma pemrograman hdala kerangka berpikir atau cara pandang
pembuatan program (kerangka berpikir atau cara pandang seperti apa yang
digunakan pada saat membuat atau menulis program)
o Beberapa paradigma dalam pemrograman :
1. Prosedural atau imperatif
Paradigma ini didasari oleh konsep stored program dari skema komputer
model Von Neumann yang memisahkan penyimpanan program di memory
menjadi data dan instruksi. Data disimpan dengan struktur tertrntu dan
dimanipulasi oleh sederetan instruksi yang dieksekusi secara sekuensial
melalui sebuah pemroses tunggal.
2. Fungsional
Paradigma ini didasari oleh konsep pemetaan dan fungsi pada matematika.
Fungsi dapat berbentuk sebuah primitif atau komposisi dari fungsi-fungsi
lain yang telah terdefinisi yang dapat mentransformasi sebuah kedaan awal
menjadi keedaan akhir. Penyelesaian masalah dibuat dengan cara
mengaplikasikan fungsi-fungsi tersebut.
3. Deklaratif, predikatif atau lojik
Paradigma ini didasari oleh pendefinisian relasi antar individu yang
dinyatakan sebagai suatu predikat. Program yang ditulis terdiri dari kumpulan
fakta dan aturan-aturan deduksi. Ketika program dieksekusi mak aprogram
akan menggunakan aturan-aturan deduksi dan fakta yang ada tersebut untuk
menjawab persoalan.
4. Objek
Paradigma ini didasari oleh konsep objek, yaitu suatu entitas yang
mempunyai atribut dan kelakuan (sifat) yang dapat berinteraksi dengan objek
lainnya melalui suatu pesan (message)

Pemrograman Berorientasi Objek I 1


Universitas Informatika dan Bisnis Indonesia

1.3 Pemrograman Prosedural


1.3.1 Pengertian
o Pendekatan pembuatan program dimana logika program disusun menurut
urut-urutan proses atau prosedur tertentu yang akan dieksekusi oleh sistem
komputer secara sekuensial (beruntun)
o Penulisan program secara prosedural akan mendefinisikan data dan instruksi
secara terpisah
o Data didefinisikan di suatu bagian program dengan struktur tertentu,
sementara instruksi ditulis di bagian lain dari program sedemikian sehingga
dapat memanipulasi data tersebut.

1.3.2 Isi Program Prosedural


o Suatu program prosedural pada dasarnya tersusun dari struktur data dan
algoritma.
o Struktur data adalah representasi dari susunan dan hubungan antar item-
item data. Dalam program, struktur data yang didefinisikan adalah struktur
logika yang merepresentasikan struktur fisik memory.
o Algoritma adalah kumpulan operasi yang secara spesifik disusun untuk
memanipulasi data yang sudah didefinisikan.
o Pada saat eksekusi, kedua bagian dari program prosedural tersebut akan
disimpan di memory pada tempat yang terpisah.

1.3.3 Teknik Penulisan Program Prosedural


o Teknik yang banyak digunakan untuk menulis program prosedural adalah
teknik terstruktur, sehingga disebut pemrograman terstruktur.
o Pada teknik ini program didekomposisi menjadi beberapa modul dimana
setiap modul dapat berisi modul-modul lain yang lebih kecil.

1.3.4 Contoh Penulisan Program Prsedural


Berikut adalah contoh penulisan program prosedural untuk menghitung luas dan
keliling persegi panjang jika data panjang dan lebar diketahui. Program ditulis secara
modular dalam bahasa pemrograman C++.

//compiler directive
#include <stdio.h>
#include <conio.h>

//deklarasi variable publik


int panjang, lebar;

//deklarasi prosedur dan fungsi

/* prosedur baca data */


void Baca_Data()
{
printf(\nPanjang : ); scanf(%d, &panjang);
printf(\nLebar : ); scanf(%d, &lebar);
};

/* Fungsi hitung luas */


int Luas()
{
return panjang*lebar;
};

/* Fungsi hitung keliling */


int Keliling()
{
return 2*(panjang+lebar);
};

Pemrograman Berorientasi Objek I 2


Universitas Informatika dan Bisnis Indonesia

//Program Utama
void main()
{
clrscr();
Baca_Data();
printf(\nLuas : %d, Luas());
printf(\nKeliling : %d, Keliling());
getch();
}

1.3.5 Perbandingan Program Prosedural dan Objek pada C++


Berikut adalah perbandingan penulisan program prosedural dengan program objek
pada bahasa pemrograman C++ untuk masalah perhitungan luas persegi panjang.

Program Prosedural
Bentuk I
#include <stdio.h>

void main()
{
int p, l, ls;
clrscr();
printf(\nPanjang : ); scanf(%d, &p);
printf(\nLebar : ); scanf(%d, &l);
ls=p*l;
printf(\nLuas : %d, ls);
getch();
}

Bentuk II
//compiler directive
#include <stdio.h>
#include <conio.h>

//deklarasi variable publik


int panjang, lebar;

//deklarasi prosedur dan fungsi

/* prosedur baca data */


void Baca_Data()
{
printf(\nPanjang : ); scanf(%d, &panjang);
printf(\nLebar : ); scanf(%d, &lebar);
};

/* Fungsi hitung luas */


int Luas()
{
return panjang*lebar;
};

//Program Utama
void main()
{
clrscr();
Baca_Data();
printf(\nLuas : %d, Luas());
getch();
}

Pemrograman Berorientasi Objek I 3


Universitas Informatika dan Bisnis Indonesia

Pemrograman Objek

#include <stdio.h>
#include <conio.h>

class SegiEmpat {
public:
//deklarasi atribut
int panjang, lebar;
//deklarasi layanan
void BacaData(){
printf(Panjang : );scanf(%d, &panjang);
printf(Lebar : );scanf(%d, &lebar);
};

int HitungLuas(){
return panjang*lebar ;
};
};

//program utama
void main()
{
//ciptakan objek
SegiEmpat S4;

clrscr();
printf(Segi Empat \n);
s4.BacaData();
print(Luas : %d \n, s4.HitungLuas());

//ganti nilai data panjang dan lebar


s4.panjang=12;
s4.lebar=5;
printf(Panjang : %d , s4.panjang);
printf(Lebar : %d , s4.lebar);
printf(Luas : %d , s4.HitungLuas());
getch();
}

Pemrograman Berorientasi Objek I 4


Universitas Informatika dan Bisnis Indonesia

BAGIAN II
BAHASA PEMROGRAMAN OBJEK

2.1. C & C++


Berbicara tentang C++ biasanya tidak lepas dari C, sebagai bahasa
pendahulunya. Pencipta C adalah Brian W. Kerninghan dan Dennis M. Ritchie pada
sekitar tahun 1972, dan sekitar satu dekade setelahnya diciptakanlah C++, oleh
Bjarne Stroustrup dari Laboratorium Bell, AT&T, pada tahun 1983. C++ cukup
kompatibel dengan bahasa pendahulunya C. Pada mulanya C++ disebut a better
C . Nama C++ sendiri diberikan oleh Rick Mascitti pada tahun 1983, yang berasal
dari operator increment pada bahasa C.
Keistimewaan yang sangat berari dari C++ ini adalah karena bahasa ini
mendukung pemrograman yang berorientasi objek ( OOP / Object Oriented
Programming).

2.2 Menyiapkan Program


Source code C++ dapat ditulis pada text editor apapun. Baik itu digunakan pada
sistem operasi Windows atau Unix (Linux, BSD, dsb). Walaupun demikian, lebih
disarankan apabila digunakan dengan editor khusus C++, agar penggunaan tools
yang lain lebih mudah.

2.3 Elemen Dasar


Untuk membuat suatu program ada baiknya kita mengenal terlebih dahulu apa
yang disebut dengan prepocessor directive. Prepocessor ditandai dengan adanya
awalan # . Preprocessor selalu dijalankan terlebih dahulu pada saat proses
kompilasi terjadi.
Setiap program C++ mempunyai bentuk seperti di bawah , yaitu:

#prepocessor directive
main()
{
// Batang Tubuh Program Utama
}

Melihat bentuk seperti itu dapat kita ambil kesimpulan bahwa batang tubuh
program utama berada didalam fungsi main(). Berarti dalam setiap pembuatan
program utama, maka dapat dipastikan seorang pemrogram menggunakan minimal
sebuah fungsi. Pembahasan lebih lanjut mengenai fungsi akan diterangkan
kemudian. Yang sekarang coba ditekankan adalah kita menuliskan program utama
kita didalam sebuah fungsi main(). Jangan lupa bahwa C++ bersifat case sensitive,
sehingga, nama hallo dan Hallo berbeda artinya.

2.3.1 Cara Penulisan


Komentar
Komentar tidak pernah dicompile oleh compiler. Dalam C++ terdapat 2 jenis
komentar, yaitu:
Jenis 1 : /* Komentar anda diletakkan di dalam ini
Bisa mengapit lebih dari satu baris */
Jenis 2 : // Komentar anda diletakkan disini ( hanya bisa perbaris )

Semicolon
Tanda semicolon ; digunakan untuk mengakhiri sebuah pernyataan. Setiap
pernyataan harus diakhiri dengan sebuah tanda semicolon. Baris yang diawali
dengan tanda #, seperti
#include <iostream.h>
tidak diakhiri dengan tanda semicolon, karena bentuk tersebut bukanlah suatu
bentuk pernyataan, tetapi merupakan prepocessor directive

Pemrograman Berorientasi Objek I 5


Universitas Informatika dan Bisnis Indonesia

2.3.2 Masukan dan Keluaran Dasar


Pada C++ terdapat 2 jenis I/O dasar, yaitu:
a. cout (character out), standard keluaran
b. cin (character in), standard masukan
Untuk dapat menggunakan keyword diatas, maka harus ditambahkan
#include <iostream.h> pada prapocessor directive.

Contoh :

#include <iostream.h>
main()
{
char nama[100]; //Dekalarasi variable nama
cout<<Masukkan nama Anda : ;
cin>>nama;
//Meminta user untuk menginisialisasi variable nama
cout<<Nama anda adalah <<nama;
return 0;
}

2.3.3 Karakter & String Literal


String adalah gabungan dari karakter
Contoh : Belajar Literal String
B Karakter

Panjang String

strlen() nama fungsi untuk menghitung panjang string

Fungsi strlen() dideklarasikan dalam file string.h


Jadi bila anda ingin menggunakan fungsi strlen(), maka prepocessor directive
#include<string.h> harus dimasukkan dalam program diatas main().

Contoh :

#include <iostream.h>
#include <string.h>
main()
{
cout<<strlen("Selamat Pagi.\n")<<endl;
cout<<strlen("Selamat Pagi.")<<endl;
cout<<strlen("Selamat")<<endl;
cout<<strlen("S")<<endl;
cout<<strlen("");
return 0;
}

Keluarannya:
14
13
7
1
0

Perhatikan, bahwa disetiap akhir baris pernyataan diakhiri dengan tanda titik koma
(semicolon) ; .

Pemrograman Berorientasi Objek I 6


Universitas Informatika dan Bisnis Indonesia

Perhatikan, bahwa \n dihitung satu karakter. \n disebut newline karakter. Endl juga
merupakan newline karakter ( sama kegunaannya seperti \n ).
Dalam C++, selain \n terdapat juga beberapa karakter khusus yang biasa dsebut
escape sequence characters, yaitu

Karakter Keterangan
\0 Karakteeer ber-ASCII nol ( karakter null )
\a Karakter bell
\b Karakter backspace
\f Karakter ganti halaman ( formfeed )
\n Karakter baris baru ( newline )
\r Karakter carriage return ( ke awal baris )
\t Karakter tab horizontal
\v Karakter tab vertika
\\ Karakter \
\ Karakter
\ Karakter
\? Karakter ?
\ooo Karakter yang nilai oktalnya adalah ooo ( 3 digit octal )
\xhh Karakter yang nilai heksadesimalnya adalah hh (2 digit
heksadesimal )

2.3.4 Keyword & Identifier


Dalam bahasa pemrograman, suatu program dibuat dari elemen-elemen sintaks
individual yang disebut token, yang memuat nama variable, konstanta, keyword,
operator dan tanda baca.

Contoh :
#include <iostream.h>
main()
{
int n=66;
cout<<n<<endl; // n sebagai variabel
return 0;
}

Keluarannya:
66

Program diatas memperlihatkan 15 token, yaitu


main, (, ), {, int, n, =, 66, ;, cout, <<, endl, return, 0 dan }
Token n adalah suatu variable
Token 66,0 adalah suatu konstanta
Token int, return dan endl adalah suatu keyword
Token = dan << adalah operator
Token(, ), {, ;, dan } adalah tanda baca
Baris pertama berisi suatu prepocessor directive yang bukan bagian sebenarnya dari
program

2.3.5 Variabel, Deklarasi & Inisialisasi


Variabel adalah symbol dari suatu besaran yang merepresentasikan suatu lokasi
di dalam memori komputer. Informasi yang tersimpan di dalam lokasi tersebut
disebut nilai variable. Untuk memperoleh nilai dari suatu variable digunakan
pernyataan penugasan ( assignment statement ), yang mempunyai sintaks sebagai
berikut
variable = ekspresi ;

Pemrograman Berorientasi Objek I 7


Universitas Informatika dan Bisnis Indonesia

Yang akan diolah terlebih dahulu adalah ekspresi, baru hasilnya dimasukkan
kedalam variable
Tanda = adalah operator penugasan.

Contoh :

#include <iostream.h>
main()
{
int n;
n=66; // sama juga jika ditulis int n=66;
cout<<n<<endl; // n sebagai variabel
cout<<n<<endl; // end sebagai karakter
return 0;
}

Keluarannya :
66
n

Deklarasi dari suatu variable adalah sebuah pernyataan yang memberikan informasi
tentang variable kepada compiler C++. Sintaksnya adalah
type variable ;
dengan type adalah tipe data yang didukung oleh C++, beberapa contohnya yaitu:

Tipe Data Ukuran Jangkauan Nilai Jumlah Digit


Memori (byte) Presisi
char 1 -128 hingga +127 -
Int 2 -32768 hingga +32767 -
Long 4 -2.147.438.648 hingga -
2.147.438.647
float 4 3,4E-38 hingga 3,4E38 6-7
double 8 1.7E-308 hingga 1.7E308 15-16
Long double 10 3.4E-4932 hingga 1.1E4932 19

NB : Untuk mengetahui ukuran memori dari suatu tipe digunakan fungsi


sizeof(tipe)
Tipe data dapat diubah ( type cast ), misalkan:
float x = 3.345;
int p = int(x);
maka nilai p adalah 3 ( terjadi truncating ).

Contoh Deklarasi dan Inisialisasi


int a,b,c;
int p = 55;
Dalam contoh, kita mendeklarasikan tiga variable yaitu variable a,b dan c namun
belum kita inisialisasi.
Sedangkan variable p kita inisialisasi ( diberikan nilai ).
Dalam C++, untuk dapat menggunakan suatu variable, variable tersebut minimal kita
deklarasikan terlebih dahulu. Apa yang terjadi, jika suatu variable telah
dideklarasikan namun belum kita inisialisasi lalu kita mencetak nilai variable tersebut
?
Contoh :

#include <iostream.h>
main()
{
int n;
cout<<n<<endl; // n sebagai variabel
return 0;
}

Pemrograman Berorientasi Objek I 8


Universitas Informatika dan Bisnis Indonesia

Keluarannya:
18125

Darimana angka 18125 diperoleh ?


>> Jika variable tidak diinisialisai, namun nilai keluarannya diminta, maka compiler
dengan bijak akan menampilkan nilai acak yang nilainya tergantung dari jenis
compilernya.

2.3.6 Konstanta
1. Konstanta Oktal, digit yang digunakan 0-7
2. Konstanta Heksadesimal, digit yang digunakan 0-9, A-F
3. Konstanta Bernama
a. Menggunakan keyword const
Contoh : const float PI = 3.14152965;
Berbeda dengan variable, konstanta bernama tidak dapat diubah
jika telah diinisialisasi
b. Menggunakan #define
Contoh : #define PI 3.14152965
Keuntungan menggunakan #define apabila dibandingkan dengan const
adalah kecepatan kompilasi, karena sebelum kompilasi dilaksanakan,
kompiler pertama kali mencari symbol #define ( oleh sebab itu mengapa #
dikatakan prepocessor directive ) dan mengganti semua PI dengan nilai
3.14152965.

2.4. Operator
Operator adalah symbol yang biasa dilibatkan dalam program untuk melakukan
sesuatu operasi atau manipulasi.

Contoh : a = b + c * d / 4
a, b, c, d disebut operand
=, +, *, / disebut operator

2.4.1 Operator Aritmatika


Operator Deskripsi Contoh
+ Penjumlahan ( Add ) m+n
- Pengurangan ( Substract ) mn
* Perkalian ( Multiply ) m*n
/ Pembagian ( Divide ) m/n
% Sisa Pembagian Integer ( Modulus ) m%n
- Negasi ( Negate ) -m
NB : Operator seperti operator negasi (-) disebut unary operator, karena
membutuhkan hanya satu buah operand

Contoh :

#include <iostream.h>
void main()
{
int m = 82, n = 26;
cout<<m<<" + "<<n<<" = "<<m+n<<endl;
cout<<m<<" - "<<n<<" = "<<m-n<<endl;
cout<<m<<" * "<<n<<" = "<<m*n<<endl;
cout<<m<<" / "<<n<<" = "<<m/n<<endl;
cout<<m<<" % "<<n<<" = "<<m%n<<endl;
cout<<"-"<<m<<" = "<<-m<<endl;
}

Keluarannya :

Pemrograman Berorientasi Objek I 9


Universitas Informatika dan Bisnis Indonesia

82 + 26 = 108
82 - 26 = 56
82 * 26 = 2132
82 / 26 = 3
82 % 26 = 4
-82 = -82
Karena tipe datanya adalah int, maka 82/26=3, supaya dapat merepresentasikan
nilai yang sebenarnya, gunakan tipe data float.

Cara lain penulisan dengan menggunakan operator aritmatika :


m=m+n m += n
m=m-n m -= n
m=m*n m *= n
m=m/n m /= n
m=m%n m %= n

2.4.2 OPERATOR NAIK DAN TURUN ( INCREMENT DAN DECREMENT )


Operator increment ++
Operator decrement --

Contoh :

#include <iostream.h>
main()
{
int m = 44, n = 66;
cout<<m = <<m<<, n = <<n<<endl;
++m; --n;
cout<<m = <<m<<, n = <<n<<endl;
m++; n--;
cout<<m = <<m<<, n = <<n<<endl;
return 0;
}

Keluarannya :
m = 44, n = 66
m = 45, n = 65
m = 46, n = 64

Terlihat bahwa operator pre-increment dan post-increment memiliki akibat yang


sama, yaitu manambah nilai satu pada m dan memasukkan nilai tersebut kembali ke
m ( m = m+1). Hal yang sama juga terjadi pada operator pre-decrement dan post-
decrement yang memberikan akibat yang sama, yaitu mengurangi nilai satu dari n
( n = n - 1).
Tetapi bila digunakan sebagai sub-ekspresi, operator post-increment dan pre-
increment menunjukkan hasil yang berbeda

Contoh :

#include <iostream.h>
main()
{
int m = 66, n ;
n = ++m;
cout<<"m = "<<m<<", n = "<<n<<endl;
n = m++;
cout<<"m = "<<m<<", n = "<<n<<endl;
cout<<"m = "<<m++<<endl;
cout<<"m = "<<m<<endl;
cout<<"m = "<<++m<<endl;
return 0;
}
Pemrograman Berorientasi Objek I 10
Universitas Informatika dan Bisnis Indonesia

Keluarannya :
m = 67, n = 67
m = 68, n = 67
m = 68
m = 69
m = 70

Penjelasan :
Dalam penugasan yang pertama, m adalah pre-increment, menaikkan nilainya
menjadi 67, yang selanjutnya dimasukkan ke n.
Dalam penugasan kedua, m adalah post-increment, sehingga 67 dimasukkan dahulu
ke n baru kemudian nilai m-nya dinaikkan, itu sebabnya mengapa nilai m = 68 dan n
= 67.
Dalam penugasan ketiga, m adalah post-increment, sehingga nilai m ( = 68 )
ditampilkan dahulu ( ke layar ) baru kemudian nilai m dinaikkan menjadi 69.
Dalam penugasan keempat, m adalah pre-increment, sehingga nilai m dinaikkan
dahulu menjadi 70 baru kemudian ditampilkan ke layar.
Supaya lebih paham, perhatikan pula contoh dibawah.

Contoh :

#include <iostream.h> Keluarannya :


main() m = 5, n = 25
{ 876
int m = 5, n;
n = ++m * --m; Penjelasan :
cout<<"m = "<<m<<", n = "<<n<<endl; Dalam penugasan untuk n,
cout<<++m<< <<++m<< <<++m<<endl; pertama kali m dinaikkan
return 0; (++m) menjadi 6,
} kemudian m diturunkan
kembali menjadi 5, karena
adanya --m. Sehingga nilai m sekarang adalah 5 dan nilai m = 5 inilah yang
dievaluasi pada saat penugasan perkalian dilakukan.
Pada baris terakhir, ketiga sub-ekspresi dievaluasi dari kanan ke kiri.

2.4.3 OPERATOR BITWISE

Operator Deskripsi Contoh


<< Geser n bit ke kiri ( left shift ) m << n
>> Geser n bit ke kanan ( right shift ) m >> n
& Bitwise AND m&n
| Bitwise OR m|n
^ Bitwise XOR m^n
~ Bitwise NOT ~m
NB : Seluruh operator bitwise hanya bisa dikenakan pada operand bertipe data int
atau char

Berikut ini diberikan tabel kebenaran untuk operator logika


P = A operator B

AND OR
A B P A B P
0 0 0 0 0 0
0 1 0 0 1 1
1 0 0 1 0 1

Pemrograman Berorientasi Objek I 11


Universitas Informatika dan Bisnis Indonesia

1 1 1 1 1 1

XOR
A B P
0 0 0
0 1 1
1 0 1
1 1 0

Contoh :

#include <iostream.h>
void main()
{
int m = 82, n = 26;
cout<<m<<" << 2"<<" = "<<(m<<2)<<endl;
cout<<m<<" >> 2"<<" = "<<(m>>2)<<endl;
cout<<m<<" & "<<n<<" = "<<(m&n)<<endl;
cout<<m<<" | "<<n<<" = "<<(m|n)<<endl;
cout<<m<<" ^ "<<n<<" = "<<(m^n)<<endl;
cout<<"~"<<m<<" = "<<~m<<endl;
}

Keluarannya :
82 << 2 = 328
82 >> 2 = 20
82 & 26 = 18
82 | 26 = 90
82 ^ 26 = 72
~82 = 83

Penjelasan :
Nilai keluaran diatas, tergantung dari jenis compiler yang digunakan. Hasil diatas
merupakan keluaran dari compiler Turbo C++.
Pada Turbo C++ besar dari integer adalah 2 byte atau sama dengan 16 bit, untuk
mengetahuinya digunakan perintah
cout<<sizeof(int)<<endl; // Untuk mengetahui besar dari int
Maka :
8210 = 00000000010100102 dan
2610 = 00000000000110102
Sehingga :
82 << 2 00000001010010002 = 32810
82 >> 2 00000000000101002 = 2010
82 & 26 00000000010100102
00000000000110102
------------------------------------------ &

00000000000100102 = 1810
dan begitu juga untuk operasi OR dan XOR.
~82 digunakan 2s complement, yaitu
8210 = 00000000010100102 lalu dinegasikan tiap bitnya menjadi
11111111101011012 kemudian LSB ditambah 1 menjadi
1111111110101110 = 6545410 nilai ini melebihi jangkauan
maksimum int yang berkisar di -32768 sampai 32767, sehingga nilai yang keluar
yaitu 83.

Cara lain penulisan dengan menggunakan operator bitwise :


m = m << n m <<= n
m = m >> n m >>= n

Pemrograman Berorientasi Objek I 12


Universitas Informatika dan Bisnis Indonesia

m=m&n m &= n
m=m|n m |= n
m=m^n m ^= n

2.4.4 OPERATOR RELASI


Operator relasi digunakan untuk membandingkan dua buah nilai. Operator ini biasa
digunakan dalam instruksi percabangan.
Operator Deskripsi
== Sama dengan ( bukan assignment )
!= Tidak sama dengan
> Lebih besar
< Lebih kecil
>= Lebih besar atau sama dengan
<= Lebih kecil atau sama dengan

Contoh:

#include <iostream.h>
main()
{
int m = 5, n =7;
if(m == n) cout<<m<< sama dengan <<n<<endl;
else if(m != n) cout<<m<< tidak sama dengan <<n<<endl;
else if(m > n) cout<<m<< lebih besar dari <<n<<endl;
else if(m < n) cout<<m<< lebih kecil dari <<n<<endl;
return 0;
}

Keluarannya :
5 lebih kecil dari 7

2.4.5 OPERATOR LOGIKA


Operator logika digunakan untuk menghubungkan dua atau lebih ungkapan menjadi
sebuah ungkapan berkondisi.

Operator Deskripsi Contoh


&& logic AND m && n
|| logic OR m ||n
! logic NOT !m

Contoh :

#include <iostream.h>
void main()
{
int m = 166;
cout<<(m>=0 && m<=150) <<(m>=0 && m<=150)<<endl;
cout<<(m>=0 || m<=150) <<(m>=0 || m<=150)<<endl;
}
Keluarannya :
(m>=0 && m<=150) 0
(m>=0 || m<=150) 1

Penjelasan :
Hasil / keluaran dari operator logika adalah 0 dan 1.
0 jika keluarannya salah dan 1 jika keluarannya benar.

Pemrograman Berorientasi Objek I 13


Universitas Informatika dan Bisnis Indonesia

2.4.6 OPERATOR KONDISI


Operator kondisi digunakan untuk memperoleh nilai dari dua kemungkinan
ungkapan1 ? ungkapan2 : ungkapan3
Bila nilai ungkapan1 benar, maka nilainya sama dengan ungkapan2, bila tidak maka
nilainya sama dengan ungkapan3

Contoh :
#include <iostream.h>
main()
{
int m = 26, n = 82;
int min = m < n ? m : n;
cout<<Bilangan terkecil adalah <<min<<endl;
return 0;
}

Keluarannya :
Bilangan terkecil adalah 26

Operator relasi, logika dan kondisi akan banyak digunakan pada pernyataan
berkondisi

2.5. PERNYATAAN ( STATEMENTS )


Pernyataan digunakan untuk melakukan suatu tindakan, yaitu

2.5.1 PERNYATAAN UNGKAPAN


Pernyataan ini merupakan bentuk pernyataan yang paling sering digunakan.
Pernyataan ini diakhiri dengan semicolon ; .
Contoh : var = 166;
var++;

2.5.2 PERNYATAAN DEKLARASI


Untuk menggunakan suatu variable minimal variable tersebut dideklarasikan
terlabih dahulu
Contoh : int var;
Merupakan contoh deklarasi sebuah variable var dengan tipe data integer (int).

2.5.3 PERNYATAAN KOSONG


Pernyataan ini tidak melaksanakan apapun.
Contoh : while(ada);

2.5.4 PERNYATAAN MAJEMUK


Merupakan sejumlah pernyataan yang berada di dalam sebuah blok { }
Contoh : for(var = 0 ; var <10 ; var++)
{
nilai1 = 100;
if(!nilai2) nilai2 = 0;
nilai 3 = nilai1 + nilai2;
}

Pemrograman Berorientasi Objek I 14


Universitas Informatika dan Bisnis Indonesia

2.5.5 PERNYATAAN BERLABEL

Pernyataan goto, diperlukan untuk melakukan suatu lompatan ke suatu


pernyataan berlabel yang ditandai dengan tanda : .
Contoh : goto bawah;
pernyataan1;
pernyataan2;
:bawah pernyataan 3;
Pada contoh diatas, pada saat goto ditemukan maka program akan melompat
pernyataan berlabel bawah dan melakukan pernyataan 3.

2.5.6 PERNYATAAN KONDISI ( CONDITIONAL EXPRESSION )

Pertanyaan Kondisi dibagi menjadi,


2.5.6.1 Pernyataan if
Digunakan dalam pengambilan keputusan. Bentuk umum:
if(kondisi) pernyataan1 ;
else pernyataan2;

Pernyataan1 dilaksanakan jika dan hanya jika kondisi yang diinginkan


terpenuhi, jika tidak, lakukan pernyataan2.
Jika anda tidak mempergunakan pernyataan else program tidak akan error,
namun jika anda mempergunakan pernyataan else tanpa didahului pernyataan if,
maka program akan error.
Jika pernyataan1 atau pernyataan2 hanya terdiri dari satu baris, maka tanda { }
tidak diperlukan, namun jika lebih maka diperlukan.
Bentuknya menjadi :

if(kondisi)
{
pernyataan1;
pernyataan1a;
pernyataan1b;
}
else
{
pernyataan2;
pernyataan2a;
pernyataan2b;
}

Contoh :
#include <iostream.h>
void main() Selain
{ dari if
int m = 166; else,
if(m == 0)cout<<Nilainya sama dengan nol\n; juga
else dikenal
{ bentuk
cout<<Nilainya tidak sama dengan nol\n;
if
cout<<Nilainya sama dengan <<m<<endl;
else if.
}
Adapun
}
perbedaannya diilustrasikan oleh dua contoh dibawah ini.

Pemrograman Berorientasi Objek I 15


Universitas Informatika dan Bisnis Indonesia

Contoh 1 :
#include <iostream.h>
void main()
{
int m = 166;
if(m > 1000) cout<<m<< lebih besar dari 1000\n;
if(m > 100) cout<<m<< lebih besar dari 100\n;
if(m > 10) cout<<m<< lebih besar dari 10\n;
}

Keluarannya :
166 lebih besar dari 100
166 lebih besar dari 10

Contoh 2 :
#include <iostream.h>
void main()
{
int m = 166;
if(m > 1000) cout<<m<< lebih besar dari 1000\n;
else if(m > 100) cout<<m<< lebih besar dari 100\n;
else if(m > 10) cout<<m<< lebih besar dari 10\n;
}

Keluarannya :
166 lebih besar dari 100

Mengapa ? Karena contoh 2 sama saja jika ditulis seperti dibawah ini

#include <iostream.h>
void main()
{
int m = 166;
if(m > 1000) cout<<m<<" lebih besar dari 1000\n";
else
{
if(m > 100) cout<<m<<" lebih besar dari 100\n";
else if(m > 10) cout<<m<<" lebih besar dari 10\n";
}
}

Contoh diatas disebut juga nested conditional

2.5.6.2 Pernyataan switch


Pernyataan ifelse if jamak dapat dibangun dengan pernyataan switch.
Bentuk umumnya adalah sebagai berikut.

switch(ekspresi)
{
case konstanta1 : pernyataan1;
case konstanta2 : pernyataan2;
case konstanta3 : pernyataan3;
:
:
case konstantaN : pernyataanN;
default : pernyataanlain;
}

Pemrograman Berorientasi Objek I 16


Universitas Informatika dan Bisnis Indonesia

Hal hal yang perlu diperhatikan adalah :


1. Dibelakang keyword case harus diikuti oleh sebuah konstanta, tidak boleh diikuti
oleh ekspresi ataupun variable.
2. Konstanta yang digunakan bertipe int atau char
3. Jika bentuknya seperti diatas maka apabila ekspresi sesuai dengan konstanta2
maka pernyataan2, pernyataan3 sampai dengan pernyataanlain dieksekusi.
Untuk mencegah hal tersebut, gunakan keyword break;. Jika keyword break
digunakan maka setelah pernyataan2 dieksekusi program langsung keluar dari
pernyataan switch. Selain digunakan dalam switch, keyword break banyak
digunakan untuk keluar dari pernyataan yang berulang ( looping ).
4. pernyataanlain dieksekusi jika konstanta1 sampai konstantaN tidak ada yang
memenuhi ekspresi.

Contoh :

// Program untuk melihat nilai akhir test


// Nilai A jika nilai diatas 80, B jika 70<= nilai <80
// C jika 50<= nilai <70, D jika 30<=nilai <50
// E jika nilai < 30
#include <iostream.h>
void main()
{
int nilai;
cout<<Masukkan nilai test : ;
cin>>nilai;
switch(nilai/10)
{
case 10:
case 9:
case 8:cout<<A<<endl;break;
case 7:cout<<B<<endl;break;
case 6:
case 5:cout<<C<<endl;break;
case 4:
case 3:cout<<D<<endl;break;
case 2:
case 1:
case 0:cout<<E<<endl;break;
default:cout<<Salah, nilai diluar jangkauan.\n;
}
}

Keluaran :
Masukkan nilai test : 45
D
Masukkan nilai test : 450
Salah, nilai diluar jangkauan.
Masukkan nilai test : nilai_test
Salah, nilai diluar jangkauan.

Ket : 45, 450 dan nilai_test adalah hasil input dari user

2.5.6.3 Pernyataan while


Digunakan untuk pengambilan keputusan dan looping.

Bentuk :
While(kondisi)
{

Pemrograman Berorientasi Objek I 17


Universitas Informatika dan Bisnis Indonesia

pernyataan
}

Jika kondisi tidak terpenuhi, maka pernyataan tidak akan dieksekusi.

Contoh:
#include <conio.h>
#include <iostream.h>
#define TINGGI 5
#define LEBAR 10
// Program menggambarkan karakter khusus pada sebuah
// koordinat yang ditentukan
void main()
{
char matrix[TINGGI][LEBAR];
int x,y;
for(y=0;y<TINGGI;y++)
for(x=0;x<LEBAR;x++)matrix[y][x]='.';
cout<<"Ketik koordinat dalam bentuk x y(4 2).\n";
cout<<"Gunakan bilangan negatif untuk berhenti.\n";

while(x>=0 && y>=0)


{
for(y=0;y<TINGGI;y++)
{
for(x=0;x<LEBAR;x++)
cout<<matrix[y][x];
cout<<"\n\n";
}
cout<<"Koordinat : ";
cin>>x>>y;
matrix[y-1][x-1]='\xBO';
}
getch();
}

Penjelasan :
Program ini adalah program menggambar karakter [] jika dicompile di
Turbo C++ atau mengambar jika dicompile di Borland C++. ( ditunjukkan
oleh karakter xBO ).
Karena adanya pernyataan while(x>=0 && y>=0), maka program
akan langsung mengeksekusi pernyataan
cout<<"Koordinat : ";
cin>>x>>y;
matrix[y-1][x-1]='\xBO';
jika user memasukkan bilangan negatif.
Pada program diatas terdapat fungsi getch(). Gunanya adalah untuk
memberhentikan keluaran program sampai user menekan tombol
keyboard. Untuk menggunakannya, file conio.h harus diinclude.

2.5.6.4 Pernyataan dowhile


Pernyataan dowhile mirip seperti pernyataan while, hanya saja pada do
while pernyataan yang terdapat didalamnya minimal akan sekali dieksekusi.

Bentuk :
do{
pernyataan;
} while(kondisi);

Pemrograman Berorientasi Objek I 18


Universitas Informatika dan Bisnis Indonesia

Terlihat, walaupun kondisi tidak terpenuhi, maka pernyataan minimal


akan dieksekusi sekali.

Contoh :
#include <iostream.h>
#include <conio.h>
#include <math.h>
// Program konversi bilangan desimal ke biner
void main()
{
int p,n,i=0;
cout<<"Masukkan bilangan desimal : ";
cin>>p;

double A[100];
do
{
A[++i]=p%2;
p=p/2;
floor(p);
} while (p>1);
cout<<"Nilai binernya : ";
cout<<p;
for(n=i;n>=1;n--)
{
cout<<A[n];
}

getch();
}

Penjelasan :
Coba anda masukkan bilangan negatif.
Itulah letak kesalahan program ini ( sekaligus untuk menunjukkan sifat dari do
while )
Jika anda memasukkan bilangan positif, maka program ini akan menghasilkan
nilai biner yang bersesuaian dengan nilai desimal yang anda masukkan.

2.5.6.5 Pernyataan for


Pernyataan for digunakan untuk melakukan looping. Pada umumnya
looping yang dilakukan oleh for telah diketahui batas awal, syarat looping
dan perubahannya.

Bentuk :
for( inisialisasi ; kondisi ; perubahan)
{
pernyataan;
}

Selama kondisi terpenuhi, maka pernyataan akan terus dieksekusi. Bila


pernyataan hanya terdiri atas satu baris pernyataan, maka tanda kurung { } tidak
diperlukan.

Contoh :
//Program mencetak angka 1-100
#include <iostream.h>
void main()

Pemrograman Berorientasi Objek I 19


Universitas Informatika dan Bisnis Indonesia

{
for(int x=1 ; x<=100 ; x++) cout<<x<<endl;
}

Bagaimana jika program diatas diubah menjadi

#include <iostream.h>
void main()
{
for(int x=1 ; ;x++) cout<<x<<endl;
}

Program diatas akan menampilkan bilangan yang banyaknya tak terhingga


sehingga dapat membuat komputer anda berhenti bekerja. Contoh diatas juga
merupakan prinsip membuat bom program ( contohnya : bom mail )

Pernyataan for dapat berada di dalam pernyataan for lainnya yang biasa
disebut nested for

Contoh :
// Program menghasilkan segitiga pascal
#include <iomanip.h>
#include <conio.h>
#include <iostream.h>

main()
{
unsigned int n,a,b,x,s[100],p[100];
cout<<"Masukkan nilai n: "; cin>>n;

for(a=0,x=0;a<=n;a++,x+=2)
{
cout<<setw(3*n-x);
s[a]=1;
p[a]=1;
for(b=0;b<=a;b++)
{

if (b<1||b==a) cout<<"1"<<setw(4);
else
{
s[b]=p[b];
p[b]=s[b-1]+s[b];
cout<<p[b]<<setw(4);
}

cout<<endl;
}
getch();
return 0;

2.5.7 PERNYATAAN BREAK

Pemrograman Berorientasi Objek I 20


Universitas Informatika dan Bisnis Indonesia

Pernyataan break akan selalu terlihat digunakan bila menggunakan pernyataan


switch. Pernyataan ini juga digunakan dalam loop. Bila pernyataan ini dieksekusi,
maka akan mengkakhiri loop dan akan menghentikan ierasi pada saat tersebut.

2.5.8 PERNYATAAN CONTINUE

Pernyataan continue digunakan untuk pergi ke bagian awal dari blok loop untuk
memulai iterasi berikutnya.

Contoh :

#include <iostream.h>
void main()
{
int n;
for(;;)
{
cout<<Masukkan bilangan integer : ; cin>>n;
if(n % 2 == 0) continue;
else if(n % 5 == 0) break;
cout<<\tLanjutkan loop berikutnya.\n;
}
cout<<Akhiri Loop.\n;
}

Keluarannya :
Masukkan bilangan integer : 9
Lanjutkan loop berikutnya
Masukkan bilangan integer : 8
Masukkan bilangan integer : 5
Akhiri Loop

2.6. FUNGSI
Fungsi adalah sekumpullan perintah operasi program yang dapat menerima
argumen input dan dapat memberikan hasil output yang dapat berupa nilai ataupun
sebuah hasil operasi.
Nama fungis yang didefinisikan sendiri oleh pemrogram tidak boleh sama
dengan nama build-in function pada compiler C++.
Fungsi digunakan agar pemrogram dapat menghindari penulisan bagian
program ( kode ) berulang-ulang, dapat menyusun kode program agar terlihat lebih
rapi dan kemudahan dalam debugging program.

2.6.1 FUNGSI, DEKLARASI DAN DEFINISI NYA


Pemrogram dapat membuat fungsi yang didefinisikan sendiri olehnya.

Contoh :
// Fungsi kuadrat
// tipe_return nama_fungsi (tipe_argument argumen)
float kuadrat ( float x )
{
return x*x;
}

Fungsi yang didefinisikan oleh pemrogram terdiri atas dua bagian, yaitu judul (
header ) dan isi ( body ). Judul dari sebuah fungsi terdiri dari tipe return ( float ),
nama fungsi ( kuadrat ) dan list parameter ( float x ).

Pemrograman Berorientasi Objek I 21


Universitas Informatika dan Bisnis Indonesia

Jadi, judul untuk fungsi kuadrat adalah

float kuadrat ( float x )

Isi dari sebuah fungsi adalah blok kode yang mengikuti judulnya. Berisi kode
yang menjalankan aksi dari fungsi, termasuk pernyataan return yang memuat nilai
fungsi yang akan dikembalikan ke yang memanggilnya, Isi dari fungsi kuadrat()
adalah

{
return x*x;
}

Biasanya isi dari fungsi cukup besar. Meskipun demikian, judulnya tetap hanya
berada dalam satu baris. Isi dari sebuah fungsi dapat memanggil fungsi itu sendiri
( disebut rekursif ) atau memanggil fungsi lainnya.
Pernyataan return dari sebuah fungsi mempunyai dua manfaat, yaitu akan
mengakhiri fungsi dan mengembalikan nilainya ke program pemanggil. Bentuk
umum pernyataan return adalah :

return ekspresi;

Dengan ekspresi adalah sebuah ekspresi yang nilainya dinyatakan untuk sebuah
variable yang tipenya sama seperti tipe return. Terdapat juga fungsi yang tidak
memberikan nilai return atau tipe returnnya void.

Contoh :

#include <iostream.h>
void sayHello(char[]) ; // deklarasi fungsi sayHello()
void main()
{
char n[50];
cout<<"Masukkan nama anda : "; cin>>n;
sayHello(n);
}

void sayHello(char nama[]) // definisi funsi sayHello()


{
cout<<"Selamat datang "<<nama;
}

Pengertian deklarasi fungsi berbeda dengan dengan definisi fungsi. Suatu


deklarasi fungsi adalah judul fungsi yang sederhana yang diikuti oleh tanda
semicolon ( ; ). Sedangkan definisi fungsi adalah fungsi yang lengkap, terdiri dari
judul dan isinya. Suatu deklarasi fungsi disebut juga sebagai prototype fungsi.
Suatu deklarasi fungsi seperti layaknya suatu deklarasi variabel, yang
memberitahu compiler semua informasi yang dibutuhkan untuk mengkompilasi file.
Compiler tidak perlu mengetahui bagaimana fungsi bekerja, yang perlu diketahui
adalah nama fungsi, jumlah dan tipe parameternya, dan tipe balikannya ( return ).
Hal ini merupakan informasi yang dimuat secara lengkap dalam judul fungsi.
Juga seperti sebuah deklarasi variabel, suatu deklarasi fungsi harus muncul
diatas semua nama fungsi yang digunakannya. Berbeda dengan definisi fungsi,
yang dapat diletakkan terpisah dari deklarasinya, dan dapat muncul dimana saja
diluar fungsi main() dan biasanya dituliskan setelah fungsi main() atau dalam file
terpisah yang jika ingin digunakan tinggal menambahkan prepocessor #include
nama_file pada file utama.
Jika definisi fungsi diletakkan diatas fungsi main() maka deklarsi fungsi tidak
diperlukan.

Pemrograman Berorientasi Objek I 22


Universitas Informatika dan Bisnis Indonesia

Variabel-variabel yang di list di dalam parameter fungsi disebut parameter-


parameter formal atau argumen-argumen formal. Variabel lokal seperti ini hanya ada
selama eksekusi fungsi yang bersangkutan. Dalam contoh dibawah, parameter-
parameter formalnya adalah x dan y.
Variabel yang dilist dalam pemanggilan fungsi disebut parameter-parameter
actual atau argumen-argumen aktual. Sama seperti variabel lainnya dalam program
utama, variabel-variabel tersebut harus dideklarasikan sebelum digunakan dalam
pemanggilan. Dalam contoh dibawah, parameter-parameter aktualnya adalah m dan
n.

Contoh :
// Penggunaan Fungsi Rekursif :
// Program mengecek sebuah bilangan integer atau bukan
#include <iostream.h>
#include <conio.h>
#include <math.h>
void cekInt(double);
void main()
{
double angka;
cout<<"Masukan sebuah angka :";cin>>angka;
cekInt(angka);
}

void cekInt(double n)
{
if(n>1)cekInt(n-1);
else if(n<1)cekInt(-n-1);
else
{
if(n>0&&n<1)cout<<n<<"\t Bukan bilangan bulat\n";
else cout<<n<<"\t Bilangan bulat\n";
}
}

Keluaran :
Masukkan sebuah angka : 57
Bilangan bulat
Masukkan sebuah angka : 0.57
Bukan bilangan bulat
Masukkan sebuah angka : -24
Bilangan bulat

2.6.2 NILAI BAWAAN UNTUK ARGUMEN FUNGSI

Salah satu keistimewaan C++ yang sangat bermanfaat dalam pemrograman


adalah adanya kemampuan untuk menyetel nilai default
Argumen fungsi. Argumen-argumen yang mempunyai nilai bawaan nantinya dapat
tidak disertakan di dalam pemanggilan fungsi dan dengan sendirinya C++ akan
menggunakan nilai bawaan dari argumen yang tidak disertakan.

Contoh :

Pemrograman Berorientasi Objek I 23


Universitas Informatika dan Bisnis Indonesia

#include <iostream.h>
#include <conio.h>
void sayHello(int);

void main()
{
sayHello();
}

void sayHello(int n=1)


{
for(int m=0;m<n;m++) cout<<Halloo \n;
}

Penjelasan :
Jika pada program, argumen sayHello tidak diberikan, maka program akan
menampilkan

Halloo

Sebanyak satu kali, namun jika argumen pada fungsi sayHello diberikan, misalkan
sayHello(4), maka program akan menampilkan

Halloo
Halloo
Halloo
Halloo

Itulah yang disebut dengan nilai default pada fungsi.

2.6.3 Fungsi-Fungsi Bawaan C++

Anda dapat menggunakan fungsi-fungsi bawaan C++, misalkan fungsi-fungsi


matematika, pengolah kata dan banyak lagi. Sebenarnya ( mungkin tidak terasa bagi
anda ) main juga adalah fungsi, jadi tanpa anda sadari sebenarnya anda telah
menggunakan fungsi.
Untuk dapat menggunakan fungsi-fungsi tersebut anda harus meng-include file
dimana fungsi tersebut didefinisikan

Misalkan :
Fungsi fungsi matematika, anda harus meng-include file math.h
Fungsi fungsi pengolah string dan karakter, anda harus meng-include file
string.h
Fungsi clrscr(), getch(), getche() dalam file conio.h

Pemrograman Berorientasi Objek I 24


Universitas Informatika dan Bisnis Indonesia

BAGIAN III
KONSEP PEMROGRAMAN OBJEK

3.1 Definisi OOP


Pemrograman berorientasi objek atau object oriented programming (OOP)
adalah:
o Pemrograman yang dibangun dengan cara membungkus (enkapsulasi)
komponennya menjadi kelompok data dan fungsi yang dapat mewarisi atribut
dan sifat dari komponen lainnya, dan komponen-komponen tersebut dapat
berinteraksi satu sama lainnya.
o Pemrograman yang didasarkan pada objek-objek, yaitu suatu unit terkecil
dari program yang mengandung data dan fungsi yang bekerja atas objek
tersebut.

3.2 Karakteristik OOP


OOP memiliki karakteristik yaitu :
1. Abstraksi
Prinsip untuk mendeskripsikan objek dan relasi antar objek, dengan
mengabaikan aspek-aspek lain yang tidak sesuai dengan permasalahan.
2. Enkapsulasi
Pembungkusan atribut data dan layanan (operasi-operasi) yang dipunyai
objek, untuk menyembunyikan implementasi dari objek sehingga objek lain
tidak mengetahui cara kerjanya.
3. Pewarisan (inheritance)
Mekanisme yang memungkinkan suatu kelas mewarisi sebagian atau seluruh
definisi dari kelas lainnya sebagai bagian dari dirinya.
4. Reusability
Pemanfaatan kembali objek yang sudah didefinisikan untuk suatu
permasalahan pada permasalahan lainnya yang melibatkan objek tersebut.
5. Generalisasi dan Spesialisasi
Menunjukkan hubungan antara kelas dan objek yang umum dengan kelas
dan objek yang khusus.
6. Komunikasi antar Objek
Komunikasi antar objek dilakukan lewat pesan (message) yang dikirim dari
suatu objek ke objek lainnya.
7. Polymorphisme
Kemampuan suatu objek untuk digunakan di banyak tujuan yang berbeda
dengan nama sama sehingga menghemat baris program.

3.3 Tingkatan OOP


Ada bebrapa tingkatan pemrograman berorientasi objek yang sebenarnya
merupakan perkembangan dari pemrograman prosedural menuju objek.
1. OOP dengan ADT (Abstract Data Type)
Tingkatan pemrograman yang paling sederhana dengan memanfaatkan
definisi statik dari ADT. ADT adalah type yang didefinisikan berdasarkan jenis
data dasar dan sejumlah primitif fungsi yang terdefinisi terhadap jenis data
tersebut, sedangkan jenis data dasar adalah jenis data yang sudah
disediakan oleh mesin seperti integer, character, real, dan boolean.
2. OOP dengan Generity
Tingkatan selanjutnya dari OOP dengan definisi statik ADT dikembangkan ke
dalam konsep generik yang memudahkan penulisan kode program.
3. OOP dengan Inheritance dan Polymorphisme
Pada tingkatan ini, sebuah objek dapat menerima pewarisan dari objek
lainnya yang melahirkan konsep polymorphisme saat program dieksekusi.
4. OOP Secara Konkuren

Pemrograman Berorientasi Objek I 25


Universitas Informatika dan Bisnis Indonesia

Merupakan tingkatan paling lanjut dimana OOP akan memodelkan objek aktif
secara konkuren (ada beberapa objek yang diaktifkan pada saat yang sama
berbarengan dengan atau tanpa komunikasi diantaranya)

3.4 Objek dan Kelas


Objek adalah model eksekusi, sementara kelas adalah deskripsi statik dari objek
yang mungkin lahir pada saat eksekusi. Berikut kita lihat perbedaan antara objek
dan kelas.

3.4.1 Objek
- Objek adalah abstarksi dari sesuatu yang mewakili dunia nyata seperti
benda, manusia, satuan organisasi, tempat, kejadian, struktur, status atau
hal-hal lain yang bersifat abstrak.
- Dalam konteks OOP, objek adalah instanisasi (yang dibentuk secara
seketika) dari kelas pada saat dieksekusi (seperti halnya deklarasi variabel
pada pemrogramn prosedural). Jadi semua objek adalah instan dari kelas.
- Objek adalah elemen yang akan diciptakan, dimanipulasi, dan dihancurkan
pada saat eksekusi. Jadi memrogram objek tidak lain adalah menciptakan,
memanipulasi dan menghancurkan objek.

3.4.2 Kelas
- Merupakan kumpulan dari objek-objek dengan karakteristik yang sama.
- Kelas adalah definisi statik dari himpunan objek yang sama yang mungkin
lahir atau diciptakan dari kelas tersebut.
- Suatu kelas dapat diturunkan dari kelas lain dimana atribut dari kelas semula
dapat diwariskan ke kelas yang baru.
Jadi pada saat eksekusi, yang kita punyai adalah objek semntara di dalam teks
program, yang kita lihat adalah kelas.

3.4.3 Property Objek


Sebuah objek pada dasarnya mempunyai property sebagai berikut :
1. Atribut, elemen-elemen data yang dipunyai oleh objek.
2. Layanan, metode atau operasi yang berfungsi untuk memanipulasi objek itu
sendiri

3.4.4 Klasifikasi Objek


Objek dapat dibedakan menjadi :
1. ADT (Abstract Data Type), definisi dari kelas dimana komponen type menjadi
atribut dan fungsi primitif menjadi layanan/metode/operasi.
2. Mesin, objek pasif yang punya status yang akan diaktifkan oleh objek lain.
Fungsi primitif pada merin merupakan mekanisme yang mengubah suatu
status ke status lain.
3. Proses, objek aktif yang mempunyai urutan kendali (thread of control)

3.5 Program Utama pada OOP


Program utama pada OOP mengandung pengertian :
- Kelas yang merupakan awal dari semua kelas (awal penciptaan)
- Titik awal eksekusi, yang menciptakan sejumlah objek dan aplikasi prosedur
tertentu.
- Arsitektur dasar dari sistem

3.6 Mengapa OOP


- Metodologi lama banyak menimbulkan masalah.
- Meningkatkan produktivitas, kecepatan pengembangan, kualitas perangkat
lunak, dan kemudahan pemeliharaan.
- Jenis aplikasi yang dikembangkan saat ini berbeda dengan masa lalu.

Pemrograman Berorientasi Objek I 26


Universitas Informatika dan Bisnis Indonesia

BAGIAN IV
PEMROGRAMAN OBJEK DENGAN ADT
4.1 Pengertian
o Merupakan pemrograman objek yang paling sederhana
o Program disusun dari objek-objek yang berdiri sendiri, tidak saling
berkomunikasi
o Struktur atau skema program menyerupai program yang menggunakan ADT
(Abstract Data Type), tetapi deklarasi data (atribut) dan prosedur serta
fungsinya (layanan, metode) dienkapsulasi sebagai satu kesatuan menjadi
objek-objek.
o ADT adalah suatu model matematika dan sekumpulan operasi yang
didefinisikan terhadap model tersebut.
o Dalam konteks pemrograman objek, ADT adalah definisi suatu kelas.

4.2 Definisi Kelas


o Kelas adalah definisi statik dari objek. Artinya, sebelum suatu objek diciptakan,
kelas darimana objek tersebut berasal harus didefinisikan lebih dahulu.
o Suatu kelas mirip dengan struktur (struct), tetapi mempunyai kemampuan
untuk menyembunyikan data dan mempunyai layanan.
o Dalam C++, kelas didefinisikan dengan menggunakan pernyataan class.
Bentuk umum dari kelas adalah :

class namakelas {
private:
type identifier;
...
protected:
type identifier;
...
public:
type identifier;
...
} [namaobjek];

Keterangan:
o namakelas adalah nama kelas yang diciptakan
o type menyatakan jenis data anggota kelas, dapat berupa jenis data
standar, bentukan, atau berupa kelas yang lain.
o identifier menyatakan nama anggota kelas, dapat berupa data atau fungsi
dan sering disebut sebagai data kelas atau fungsi anggota.
o namaobjek menyatakan nama objek yang diciptakan dari kelas
namakelas, bersifat optimal.

o Data dan fungsi yang dideklarasikan di bagian private hanya dapat diakses
oleh fungsi anggota, protected oleh fungsi anggota dan fungsi turunannya,
sementara public oleh fungsi anggota, fungsi kelas turunan, dan fungsi dari
luar kelas. Jika tidak dinyatakan, maka data dan fungsi akan dianggap
dideklarasikan secara private (default).
o Biasanya data didefinisikan di bagian private, sehingga untuk mengaksesnya
digunakan fungsi anggota yang didefinisikan secara public.
o Definisi fungsi dapat dilakukan di dalam kelas atau di luar kelas.

Contoh :
// definisi kelas kotak
class Kotak {
private:
// deklarasi atribut
float panjang, lebar;
public:

Pemrograman Berorientasi Objek I 27


Universitas Informatika dan Bisnis Indonesia

// deklarasi dan definisi layanan


float Luas() {
return (panjang*lebar);
};
float Keliling(){
return (2*(panjang+lebar));
};
};

atau

//definisi kelas kotak


class Kotak {
// deklarasi atribut
float panjang, lebar;
public:
//deklarasi layanan
float Luas();
float Keliling();
};

//definisi layanan kelas kotak


float Kotak::Luas() {
return (panjang*lebar);
};

float Kotak::Keliling() {
return (2*(panjang+lebar));
};

4.3 Konstruktor dan Destruktor


o Konstruktor adalah fungsi yang dipanggil saat suatu objek diciptakan
(diinstansiasi), sementara destruktor adalah fungsi yang dipanggil saat objek
dimusnahkan
o Saat objek diciptakan, konstruktor akan mengalokasikan memory, memberi
nilai awal pada data yang dipunyai objek, dan secara otomatis menjalankan
(mengeksekusi) semua pernyataan yang menjadi isinya.
o Sebaliknya pada saat objek dimusnahkan, destructor akan membebaskan
memory yang sebelumnya ditempati oleh objek tersebut. Pernyataan-
pernyataan yang menjadi isi dari destruktor selanjutnya akan diekskusi.
o Konstruktor diberi nama sesuai dengan nama kelasnya, demikian juga dengan
destruktor tetapi didahului dengan tanda tilde (~).
o Seperti halnya fungsi anggota, konstruktor dan destruktor dapat didefinisikan di
dalam maupun di luar kelas.
Contoh :

Kotak() {
cout << Objek diciptakan... << endl;
panjang = lebal = 0;
};

Kotak (float p, float l) {


cout << Objek diciptakan... << endl;
panjang = p;
lebal = l;
};

~Kotak () {
cout << Objek dimusnahkan .... << endl;
};

Pemrograman Berorientasi Objek I 28


Universitas Informatika dan Bisnis Indonesia

4.4 Contoh Program


Contoh 4.1 :
Program untuk menghitung luas dan keliling sebuah kotak persegi panjang.
/*==============================================================/
/ Nama File : Kotak.cpp /
/ Deskripsi : Program menghitung Luas dan Keliling kotak /
/ Dibuat oleh : M-Won /
/ =============================================================*/

#include <iostream.h>
#include <conio.h>
// definisi kelas kotak
class Kotak {
// deklarasi atribut
float panjang, lebar;
public:
//konstruktor dan destruktor
Kotak();
Kotak(float,float);
~Kotak();

//deklarasi layanan
void AssignKotak(float, float);
float Luas();
float Keliling();
};

//definisi konstruktor dan destruktor


Kotak::Kotak(){
cout << "Objek diciptakan ..." <<endl;
panjang = lebar = 0;
};

Kotak::Kotak(float p, float l) {
cout << "Objek diciptakan ..." <<endl;
panjang = p;
lebar = l;
};

Kotak::~Kotak(){
cout << "Objek dimusnahkan ..." <<endl;
};

//definisi layanan kelas kotak


void Kotak::AssignKotak(float p, float l) {
panjang = p;
lebar = l;
};

float Kotak::Luas() {
return (panjang*lebar);
};

float Kotak::Keliling() {
return (2*(panjang+lebar));
};

//Program utama
void main() {
//ciptakan objek kotak K1 dan K2
Kotak K1, K2(17, 8);
float pj, lb;

// baca data panjang dan lebar untuk kotak K1


cout<<"Panjang = "; cin>>pj;
cout<<"Lebar = "; cin>>lb;
K1.AssignKotak(pj,lb);

Pemrograman Berorientasi Objek I 29


Universitas Informatika dan Bisnis Indonesia

//cetak luas dan keliling


cout<<"\nKotak K1:"<<endl;
cout<<"Luas = "<< K1.Luas()<<endl;
cout<<"Keliling = "<< K1.Keliling()<<endl;

cout<<"\nKotak K2:"<<endl;
cout<<"Luas = "<< K2.Luas()<<endl;
cout<<"Keliling = "<< K2.Keliling()<<endl;
getch();
}

Contoh 4.2:
Program ADT untuk kelas clock yang dibuat dalam beberapa file. Buka editor
baru dalam C++ dan tuliskan kode program berikut. Simpan dalam sebuah file
clock.h

/* =============================================================/
/ Nama File : clock.h /
/ Deskripsi : deklarasi kelas Clock yang berada di file /
/ yang berbeda /
/ Dibuat Oleh : M-Won /
/ =============================================================*/

class Clock {
// deklarasi atribut
int hour, minute, second;
public:
// konstruktor dan destruktor
Clock();
Clock(int, int, int);
~Clock();

//deklarasi layanan
int AmbilJam();
int AmbilMenit();
int AmbilDetik();
void AssignJam(int);
void AssignMenit(int);
void AssignDetik(int);
void AssignClock(int, int, int);
void TampilJam();
int ConvertDetik();
};

Buat file baru untuk memuat definisi dari setiap yang ada pada kelas clock dan
beri nama clock.cpp

/* =============================================================/
/ Nama File :clock.cpp /
/ Deskripsi: definisi fungsi anggota dari kelas Clock /
/ pada file clock.h /
/ Dibuat oleh :M-Won /
/ =============================================================*/

#include "clock.h"
#include <stdio.h>
// konstruktor dan destruktor
Clock::Clock() {
hour = 0;
minute = 0;
second = 0;
}

Pemrograman Berorientasi Objek I 30


Universitas Informatika dan Bisnis Indonesia

Clock::Clock(int h, int m, int s) {


hour = h;
minute = m;
second = s;
}

Clock::~Clock() {
//tidak ada aksi apapun
}

//deklarasi layanan
int Clock::AmbilJam() {
return hour;
}

int Clock::AmbilMenit() {
return minute;
}

int Clock::AmbilDetik() {
return second;
}

void Clock::AssignJam(int x) {
hour = x ;
}

void Clock::AssignMenit(int x) {
minute = x ;
}

void Clock::AssignDetik(int x) {
second = x ;
}

void Clock::AssignClock(int h, int m, int s) {


hour = h;
minute = m;
second = s;
}

void Clock::TampilJam() {
printf("%2d:%2d:%2d", hour, minute, second);
}

int Clock::ConvertDetik() {
long s;
s = 3600*hour + 60*minute + second;
return s;
}

Buat file baru untuk memuat program utama dan beri nama drvclock.cpp

/*=============================================================/
/ Nama File :drvclock.cpp /
/ Deskripsi : Program utama untuk mencoba kelas Clock /
/ Dibuat oleh :M-Won /
/ =============================================================*/

#include <conio.h>
#include "clock.cpp"

void main() {
//ciptakan objek jam
Clock jam1, jam2(21, 15, 55);

//assign nilai untuk objek jam1

Pemrograman Berorientasi Objek I 31


Universitas Informatika dan Bisnis Indonesia

clrscr();
jam1.AssignJam(14);
jam1.AssignMenit(5);
jam1.AssignDetik(13);
printf("\n Waktu dari jam1 "); jam1.TampilJam();
printf("\n Nilai jam = %d", jam1.AmbilJam());
printf("\n Nilai menit = %d", jam1.AmbilMenit());
printf("\n Nilai detik = %d", jam1.AmbilDetik());
printf("\n Nilai konversi = %d detik", jam1.ConvertDetik());

printf("\n\n Waktu dari jam2 "); jam2.TampilJam();


printf("\n Nilai jam =%d", jam2.AmbilJam());
printf("\n Nilai menit =%d", jam2.AmbilMenit());
printf("\n Nilai detik =%d", jam2.AmbilDetik());
printf("\n Nilai konversi =%d detik", jam2.ConvertDetik());

getch();
}

Contoh 4.3:
Program ADT untuk nilai mahasiswa. Buat sebuah file yang digunakan untuk
mendeklarasikan kelas Nilai_Mhs dan simpan dengan nama nilai.h

/*============================================================= /
/ Nama File : nilai.h /
/ Deskripsi : deklarasi kelas Nilai MHS di file terpisah /
/ Dibuat oleh : M-Won /
/ =============================================================*/

//deklarasi kelas
class Nilai_Mhs {
public:
//deklarasi atribut
char NPM[8], Nama[30], Kelas[6];
int Hadir, Tugas, UTS, UAS;

// konstruktor dan destruktor


Nilai_Mhs();
~Nilai_Mhs();

//deklarasi layanan
void Baca_Data();
float Hitung_NA();
char Hitung_HM();
char* Set_Lulus();
void Cetak_Info();
};

Buat definisi setiap layanan yang ada dalam kelas Nilai_Mhs dan simpan ke
dalam file nilai.cpp

/* ============================================================ /
/ Nama File : nilai.cpp /
/ Deskripsi : Definisi fungsi anggota dari kelas Nilai_Mhs /
/ Dibuat Oleh : M-Won /
/ ============================================================ */

#include <string.h>
#include "nilai.h"

//konstruktor dan destruktor


Nilai_Mhs::Nilai_Mhs() {
// inisialisasi identitas mahasiswa
strcpy (NPM, " ");

Pemrograman Berorientasi Objek I 32


Universitas Informatika dan Bisnis Indonesia

strcpy (Nama, " ");


strcpy (Kelas, " ");
}

Nilai_Mhs::~Nilai_Mhs(){
//tidak ada aksi apapun
}

//definisi layanan
void Nilai_Mhs::Baca_Data() {
printf("1. NPM :");scanf("%s", NPM);
printf("2. Nama Mahasiswa :");scanf("%s", Nama);
printf("3. Kelas :");scanf("%s", Kelas);
printf("4. Nilai Kehadiran :");scanf("%s", &Hadir);
printf("5. Nilai Tugas :");scanf("%s", &Tugas);
printf("6. Nilai UTS :");scanf("%s", &UTS);
printf("7. Nilai UAS :");scanf("%s", &UAS);
}

float Nilai_Mhs::Hitung_NA() {
return (0.1*Hadir+0.2*Tugas+0.3*UTS+0.4*UAS);
}

char Nilai_Mhs::Hitung_HM() {
//deklarasi variabel lokal
float NAkhir;
char HM;

//hitung nilai akhir


NAkhir=Hitung_NA();

//tentukan huruf mutu


if (NAkhir>=85)
HM='A';
else if (NAkhir>=70)
HM='B';
else if (NAkhir>=55)
HM='C';
else if (NAkhir>=40)
HM='D';
else
HM='E';

return HM;
}

char* Nilai_Mhs::Set_Lulus(){
char HM;
char* Status;

//tentukan huruf mutu


HM = Hitung_HM();

//tentukan status kelulusannya


if ((HM=='A')||(HM=='B')||(HM='C'))
strcpy(Status, "Lulus");
else
if (HM=='D')
strcpy(Status, "Her");
else
strcpy(Status, "Gagal");
return Status;
}

void Nilai_Mhs::Cetak_Info(){
printf("1. NPM : %s \n", NPM);
printf("2. Nama Mahasiswa : %s \n", Nama);

Pemrograman Berorientasi Objek I 33


Universitas Informatika dan Bisnis Indonesia

printf("3. Kelas : %s \n", Kelas);


printf("4. Nilai Akhir : %f \n", Hitung_NA());
printf("5. Huruf Mutu : %c \n", Hitung_HM());
printf("6. Status Kelulusan : %s \n", Set_Lulus());
}

Buat program utama yang akan menggunakan kelas Nilai_Mhs dan simpan ke
dalam file mnilai.cpp

/* ============================================================ /
/ Nama File : mnilai.cpp /
/ Deskripsi: Program Utama untuk menjalankan kelas Nilxai_Mhs /
/ Dibuat oleh : M-Won /
/ =============================================================*/
#include <stdio.h>
#include <conio.h>
#include "nilai.cpp"

void main() {
// ciptakan objek Nilai_Mhs
Nilai_Mhs mhs;

//tes semua layanan dari kelas


clrscr();
mhs.Baca_Data();
mhs.Cetak_Info();
getch();
}

Pemrograman Berorientasi Objek I 34


Universitas Informatika dan Bisnis Indonesia

BAGIAN V
PEMROGRAMAN OBJEK CLIENT-SUPPLIER

5.1 Pengertian
o Pemrograman objek dimana objek-objek yang menyusun program sudah
saling berinteraksi.
o Interaksi antar objek yang terjadi berupa hubungan client-supplier. Artinya akan
ada objek yang berperan sebagai client dan ada objek yang akan berperan
sebagai supplier.
o Client adalah objek yang akan menggunakan sebagian atau seluruh atribut
dan layanan objek lain, sementara supplier adalah objek yang menyediakan
sebagian atau seluruh atribut dan layanannya untuk digunakan oleh objek lain.
o Secara teknis, biasanya objek yang berperan sebagai supplier merupakan
atribut dari objek client sehingga menjadi bagian (property) dari objek client.
o Pemrograman objek client-supplier merupakan implementasi dari hubungan
antar objek asosiasi dan whole-part (part of)

Gambar 5.1 Contoh hubungan antar Objek Asosiasi

o Hubungan Asosiasi hanya terjadi antar 2 objek dimana keduanya merupakan


objek yang sejajar (tidak merupakan pembangun dari yang lain) atau dapat
juga kita sebut dengan hubungan using.

Gambar 5.2 Contoh hubungan antar Objek whole-part

o Hubungan whole-part merupakan hubungan yang melibatkan lebih dari 2


objek. Dalam hubungan ini, supplier-supplier merupakan kelas-kelas (baca:
objek) yang menyusun suatu objek lain yang kita sebuat dengan client.
o Dengan kata lain whole-part memiliki objek-objek yang merupakan pecahan-
pecahan pembangun objek yang lebih tinggi.

Pemrograman Berorientasi Objek I 35


Universitas Informatika dan Bisnis Indonesia

5.2 Pembuatan Program Objek Client-Supplier


o Tergantung seepenuhnya kepada hasil abstraksi (pemodelan) dunia nyata
o Dari hasil pemodelan, identifikasi hubungan antar objek asosiasi dan whole-
part yang ada (lihat contoh diatas)
o Tentukan objek-objek mana yang nantinya akan berperan sebagai client dan
supplier berdasarkan tugas-tugas (task) yang harus dilaksanakannya.
o Deklarasikan atribut dan layanan untuk masing-masing objek sesuai
peranannya.

5.3 Contoh Program


Contoh 5.1:
Lihat gambar 5.1 di halaman sebelumnya. Misalkan PulseCounter adalah objek
yang berfungsi menghitung besarnya pulsa penggunaan telepon, sementara
Clock adalah objek yang menyimpan data waktu (jam) penggunaan telepon.
Untuk menghitung besarnya pulsa, objek PulseCounter membutuhkan data jam
mulai dan jam selesai serta layanan konversi jam ke detik yang dimiliki oleh
objek Clock, sehingga objek PulseCounter adalah client sedangkan Clock adalah
Supplier programnya.

Gambar 5.3 Detail hubungan PulseCounter dan Clock

Pada contoh 4.2 kita telah membuat sebuah kelas yang kita beri nama clock,
sesuai dengan salah satu karakteristik OOP reusability, maka kita tinggal
menggunakan kelas yang sudah ada. Buat file baru yang digunakan untuk
mendeklarasikan kelas baru yaitu PulseCounter dan simpan dengan nama pc.h

/* ========================================= /
/ Nama File : pc.h /
/ Deskripsi : deklarasi kelas pulsecounter /
/ yang menggunakan kelas clock /
/ Dibuat oleh : M-Won /
/ ==========================================*/

#include "clock.cpp"

class PulseCounter {
public:
int NoKBU;
Clock JamMulai;
Clock JamSelesai;
int HitungPulsa();
};

Buat definisi layanan dari kelas PulseCounter dan simpan dalam file pc.cpp

/* ========================================= /
/ Nama File : pc.cpp /
/ Deskripsi : definisi layanan kelas /
/ PulseCounter /
/ Dibuat oleh : M-Won /
/ ==========================================*/

#include "pc.h"
#include <math.h>

Pemrograman Berorientasi Objek I 36


Universitas Informatika dan Bisnis Indonesia

int PulseCounter::HitungPulsa(){
double lama;
float pulsa;

lama = JamSelesai.ConvertDetik()- JamMulai.ConvertDetik();


pulsa=lama/30;
return ceil(pulsa);
}

Buat program utama yang menggunakan kelas PulseCounter dan simpan


dengan nama drvpc.cpp

/* ========================================= /
/ Nama File : drvpc.cpp /
/ Deskripsi : program utama /
/ Dibuat oleh : M-Won /
/ ==========================================*/

#include "pc.cpp"
#include <conio.h>

void main(){
PulseCounter pc;

pc.NoKBU=1;
pc.JamMulai.AssignClock(11, 12, 16);
pc.JamSelesai.AssignClock(12, 15,6);

printf ("Jumlah Pulsa = %d", pc.HitungPulsa());


getch();
}

Tugas 5.1 :
o Tambahkan layanan hitung biaya percakapan yang dihitung berdasarkan
jumlah pulsa dikali tarif per pulsa. Tarif per pulsa hdala 500 rupiah.
o Tambahkan kode program pada Program Utama yang digunakan untuk
meminta inputan NoKBU, JamMulai, JamSelesai.

Pemrograman Berorientasi Objek I 37


Universitas Informatika dan Bisnis Indonesia

Contoh 5.2
Pada gambar 5.2 dapat dilihat hubungan whole-part. Misalkan sebuah personal
komputer tersusun dari CPU, monitor dan printer. Dari hasil pemodelan,
komputer, CPU, monitor dan printer hdala objek-objek yang mempunyai
hubungan whole-part. Lebih lengkap dapat kita gambarkan sebagai berikut.

Gambar 5.4 Detail hubungan whole-part antara CPU, Monitor, Printer dan Komputer

Untuk mewujudkan hubungan tersebut dapat ditulis kode program berikut.


//compiler directive
#include <iostream.h>
#include <conio.h>
#include <string.h>

//deklarasi kelas supplier


class CPU {
char* merk;
int kecepatan;
public:
void isiatribut(char *m, int k){
merk=m;
kecepatan=k;
};

char* getmerk(){
return (merk);
};

int getkecepatan(){
return (kecepatan);
};
};

class monitor{
char* merk;
long harga;
public:
void isiatribut(char *m, long h){
merk=m;
harga=h;
};

Pemrograman Berorientasi Objek I 38


Universitas Informatika dan Bisnis Indonesia

char* getmerk(){
return (merk);
};

int getharga(){
return (harga);
};
};

class printer{
char* merk;
char* tipe;
long harga;
public:
void isiatribut(char *m, char *t, long h){
merk=m;
tipe=t;
harga=h;
};

char* getmerk(){
return (merk);
};

char* gettipe(){
return (tipe);
};

int getharga(){
return (harga);
};
};

//deklarasi kelas client


class komputer{
char *kode;
public:
CPU proc;
monitor mon;
printer prn;

void putkode(char *k){


kode=k;
};

void displayspec(){
cout<<"Kode : "<<kode <<endl;
cout<<"Processor :"<<proc.getmerk()<<" "<<proc.getkecepatan()<<endl;
cout<<"Monitor : "<<mon.getmerk()<<endl;
cout<<"Printer : "<<prn.getmerk()<<" "<<prn.gettipe()<<endl;
};
};

//program utama
void main(){
//create objek
komputer pc;

//inisialisasi atribut objek


pc.putkode("PC-001");
pc.proc.isiatribut("Pentium IV", 3200);
pc.mon.isiatribut("Samsung", 650000);
pc.prn.isiatribut("Canon", "IP-1880",465000);
pc.displayspec();
getch();
}

Tugas 5.2 :
- Tambahkan atribut harga serta layanan getharga() pada class CPU
- Tambahkan layanan menghitung total harga berdasarkan harga CPU +
harga monitor + harga printer

Pemrograman Berorientasi Objek I 39


Universitas Informatika dan Bisnis Indonesia

Contoh 5.3
OOP client-supplier untuk menghitung biaya pemakaian komputer di statu rental.

#include "clock.cpp"
#include <conio.h>
#include <iostream.h>

//deklarasi kelas komputer


class komputer{
int nokomputer;
float sewaperjam;
public:
void isidata(int nk){
switch(nk) {
case 1: sewaperjam=1000;break;
case 2: sewaperjam=1500;break;
case 3:
case 4:
case 5:
case 6: sewaperjam=2000;break;
default : sewaperjam=1200;
}
}

float getsewaperjam(){
return sewaperjam;
}
};

//deklarasi kelas rental


class rental{
komputer pc;
Clock jammulai, jamselesai;
public:
void EntryPemakaian(){
int nk;
int h, m, s;

clrscr();
cout<<"Nomor Komputer = ";cin>>nk;
pc.isidata(nk);
cout<<"Sewa per Jam = Rp "<<pc.getsewaperjam()<<endl;
cout<<"Jam Mulai = : : ";
gotoxy(18,3);cin>>h;
gotoxy(21,3);cin>>m;
gotoxy(24,3);cin>>s;
jammulai.AssignClock(h,m,s);
cout<<"Jam Selesai = : : ";
gotoxy(18,4);cin>>h;
gotoxy(21,4);cin>>m;
gotoxy(24,4);cin>>s;
jamselesai.AssignClock(h,m,s);
}

int HitungLama(){
return(jamselesai.ConvertDetik()- jammulai.ConvertDetik())/3600;
}

float HitungBayar(){
return HitungLama()* pc.getsewaperjam();
}

void Display(){
cout<<"Lama Pemakaian = "<<HitungLama()<<" jam"<<endl;
cout<<"Total Bayar = Rp "<<HitungBayar();
}
};

Pemrograman Berorientasi Objek I 40


Universitas Informatika dan Bisnis Indonesia

//program utama
void main() {
rental r;

r.EntryPemakaian();
r.Display();
getch();
}

Tugas 5.3 :
Sempurnakan layanan HitungLama pada kelas rental sehingga lama pemakaian
yang kurang dari 1 jam dianggap satu jam (dilakukan pembulatan)

Contoh 5.4
OOP client-supplier untuk menghitung nilai teori dan nilai praktek mahasiswa.
Buat sebuah file untuk mendeklarasikan kelas dan simpan dengan nama uts.h

/*OOP Client-Supplier untuk menghitung Nilai Teori dan Nilai Praktek


Nama File : uts.h
deskripsi : deklarasi dari kelas NilaiTeori, NilaiPraktek
dan Nilai Kuliah */

//deklarasi kelas
class NilaiTeori {
public:
//deklarasi atribut
int hadir, tugas, UTS_T, UAS_T;

//konsturktor dan destruktor


NilaiTeori();
~NilaiTeori();

//deklarasi layanan
float NilaiAkhir();
};

class NilaiPraktik {
public:
//deklarasi atribut
int UTS_P, UAS_P;

//konsturktor dan destruktor


NilaiPraktik();
~NilaiPraktik();

//deklarasi layanan
float NilaiRata2();
};

class NilaiKuliah{
public:
//deklarasi atribut
char Nama[15];
NilaiTeori NT;
NilaiPraktik NP;

//konstruktor dan destruktor


NilaiKuliah();
~NilaiKuliah();

//deklarasi layanan
char *StatusLulus();
void CetakInfo();
};

Pemrograman Berorientasi Objek I 41


Universitas Informatika dan Bisnis Indonesia

Buat sebuah file yang berisi definisi dari setiap layanan yang ada di kelas yang
sudah dideklarasikan pada file uts.h. Simpan file tersebut dengan nama uts.cpp

/*Nama file : uts.cpp


Deskripsi : definisi dari layanan yang dideklarasikan pada
class */

#include "uts.h"
//definisi untuk kelas NilaiTeori
//konstruktor dan destruktor
NilaiTeori::NilaiTeori(){
hadir=0;
tugas=0;
UTS_T=0;
UAS_T=0;
}

NilaiTeori::~NilaiTeori(){}

//definisi layanan
float NilaiTeori::NilaiAkhir() {
return 0.1*hadir+0.2*tugas+0.3*UTS_T+0.4*UAS_T;
}

//definisi untuk kelas NilaiPraktik


//konstruktor dan destruktor
NilaiPraktik::NilaiPraktik(){
UTS_P=0;
UAS_P=0;
}

NilaiPraktik::~NilaiPraktik(){}

//definisi layanan
float NilaiPraktik::NilaiRata2() {
return (UTS_P+UAS_P)/2;
}

//definisi untuk kelas NilaiKuliah


//konstruktor dan destruktor
NilaiKuliah::NilaiKuliah(){
strcpy(Nama, " ");
}

NilaiKuliah::~NilaiKuliah(){}

//definisi layanan
char *NilaiKuliah::StatusLulus() {
if ((NT.NilaiAkhir()>=60)&&(NP.NilaiRata2()>=60))
return ("Lulus");
else if((NT.NilaiAkhir()>=60)||(NP.NilaiRata2()>=60))
return ("Her");
else
return ("Tidak Lulus");
}

void NilaiKuliah::CetakInfo(){
printf("Nama Mahasiswa : %s\n",Nama);
printf("Nilai Akhir Teori : %f\n",NT.NilaiAkhir());
printf("Nilai Rata-rata Praktik : %f\n",NP.NilaiRata2());
printf("Status Kelulusan : %s\n",StatusLulus());
}

Pemrograman Berorientasi Objek I 42


Universitas Informatika dan Bisnis Indonesia

Buat program utama yang menggunakan kelas-kelas yang ada

#include <string.h>
#include <stdio.h>
#include <conio.h>
#include "uts.cpp"

void main() {
//deklarasi objek
NilaiKuliah NK;

clrscr();
strcpy(NK.Nama, "Acak Adul");
NK.NT.hadir=85;
NK.NT.tugas=0;
NK.NT.UTS_T=50;
NK.NT.UAS_T=55;

NK.NP.UTS_P=80;
NK.NP.UAS_P=76;

//clrscr();
NK.CetakInfo();
getch();
}

Pemrograman Berorientasi Objek I 43

Anda mungkin juga menyukai