Top Banner

of 43

Mod Oop With Cpp

Mar 02, 2018

Download

Documents

m1214w
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
  • 7/26/2019 Mod Oop With Cpp

    1/43

    Univers i tas Informat ika dan Bisn is Indon esia

    Pemrograman Berorientasi Objek I 1

    BAGIAN IPENDAHULUAN

    1.1 Pengertian DasarAda beberapa pengertian dasar yang harus diingat dan dipahami kembali sebelumkita belajar pemrograman. Berikut adalah penjelasan singkat untuk pengertian-pengertian dasar tersebut.

    A. Programo Kumpulan instruksi dan pernyataan yang mengikuti sistematika dan logika

    tertentu untuk mencapai tujuan tertentuo 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 Programo 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 sistematisdan metodologis

    C. Bahasa Pemrogramano Bahasa buatan yang dirancang untkuk membuat atau menyatakan program

    [ISO]o Media komunikasi antara pembuat program dengan komputer

    D. Belajar Pemrograman dan Belajar Bahasa Pemrogramano Belajar pemrograman hdala relajar tentang strategi dan sistematika

    pemecahan masalah untuk kemudian dituangkan dalam statu notasi yangdisepakati bersama, yaitu bahasa pemrograman

    o Relajar bahasa pemrograman hdala relajar memekai suatu bahasa, aturan

    tata bahasa dan istruksi-instruksinya untuk membuat atau menulis programyang akan ditulis dalam bahasa itu

    1.2 Paradigma Pemrogramano Paradigma pemrograman hdala kerangka berpikir atau cara pandang

    pembuatan program (kerangka berpikir atau cara pandang seperti apa yangdigunakan pada saat membuat atau menulis program)

    o Beberapa paradigma dalam pemrograman :1. Prosedural atau imperatif

    Paradigma ini didasari oleh konsep stored program dari skema komputermodel Von Neumann yang memisahkan penyimpanan program di memorymenjadi data dan instruksi. Data disimpan dengan struktur tertrntu dan

    dimanipulasi oleh sederetan instruksi yang dieksekusi secara sekuensialmelalui sebuah pemroses tunggal.

    2. FungsionalParadigma ini didasari oleh konsep pemetaan dan fungsi pada matematika.Fungsi dapat berbentuk sebuah primitif atau komposisi dari fungsi-fungsilain yang telah terdefinisi yang dapat mentransformasi sebuah kedaan awalmenjadi keedaan akhir. Penyelesaian masalah dibuat dengan caramengaplikasikan fungsi-fungsi tersebut.

    3. Deklaratif, predikatif atau lojikParadigma ini didasari oleh pendefinisian relasi antar individu yangdinyatakan sebagai suatu predikat. Program yang ditulis terdiri dari kumpulanfakta dan aturan-aturan deduksi. Ketika program dieksekusi mak aprogram

    akan menggunakan aturan-aturan deduksi dan fakta yang ada tersebut untukmenjawab persoalan.

    4. ObjekParadigma ini didasari oleh konsep objek, yaitu suatu entitas yangmempunyai atribut dan kelakuan (sifat) yang dapat berinteraksi dengan objeklainnya melalui suatu pesan (message)

  • 7/26/2019 Mod Oop With Cpp

    2/43

    Univers i tas Informat ika dan Bisn is Indon esia

    Pemrograman Berorientasi Objek I 2

    1.3 Pemrograman Prosedural1.3.1 Pengertian

    o Pendekatan pembuatan program dimana logika program disusun menuruturut-urutan proses atau prosedur tertentu yang akan dieksekusi oleh sistemkomputer secara sekuensial (beruntun)

    o Penulisan program secara prosedural akan mendefinisikan data dan instruksisecara terpisah

    o Data didefinisikan di suatu bagian program dengan struktur tertentu,sementara instruksi ditulis di bagian lain dari program sedemikian sehinggadapat memanipulasi data tersebut.

    1.3.2 Isi Program Proseduralo 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 strukturlogika yang merepresentasikan struktur fisik memory.

    o Algoritma adalah kumpulan operasi yang secara spesifik disusun untukmemanipulasi data yang sudah didefinisikan.

    o Pada saat eksekusi, kedua bagian dari program prosedural tersebut akandisimpan di memory pada tempat yang terpisah.

    1.3.3 Teknik Penulisan Program Proseduralo 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 PrseduralBerikut adalah contoh penulisan program prosedural untuk menghitung luas dankeliling persegi panjang jika data panjang dan lebar diketahui. Program ditulis secaramodular dalam bahasa pemrograman C++.

    //compiler directive#include #include

    //deklarasi variable publikint 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);};

    //Program Utamavoid main()

  • 7/26/2019 Mod Oop With Cpp

    3/43

    Univers i tas Informat ika dan Bisn is Indon esia

    Pemrograman Berorientasi Objek I 3

    {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 objekpada bahasa pemrograman C++ untuk masalah perhitungan luas persegi panjang.

    Program ProseduralBentuk I#include

    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 #include

    //deklarasi variable publikint 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 Utamavoid main(){clrscr();Baca_Data();printf(\nLuas : %d, Luas());getch();

    }

  • 7/26/2019 Mod Oop With Cpp

    4/43

    Univers i tas Informat ika dan Bisn is Indon esia

    Pemrograman Berorientasi Objek I 4

    Pemrograman Objek

    #include #include

    class SegiEmpat {public://deklarasi atributint panjang, lebar;//deklarasi layananvoid BacaData(){

    printf(Panjang : );scanf(%d, &panjang);printf(Lebar : );scanf(%d, &lebar);

    };

    int HitungLuas(){return panjang*lebar ;

    };};

    //program utamavoid main(){//ciptakan objekSegiEmpat 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();

    }

  • 7/26/2019 Mod Oop With Cpp

    5/43

    Univers i tas Informat ika dan Bisn is Indon esia

    Pemrograman Berorientasi Objek I 5

    BAGIAN IIBAHASA PEMROGRAMAN OBJEK

    2.1. C & C++Berbicara tentang C++ biasanya tidak lepas dari C, sebagai bahasapendahulunya. Pencipta C adalah Brian W. Kerninghan dan Dennis M. Ritchiepada sekitar tahun 1972, dan sekitar satu dekade setelahnya diciptakanlah C++,oleh Bjarne Stroustrup dari Laboratorium Bell, AT&T, pada tahun 1983. C++ cukupkompatibel dengan bahasa pendahulunya C. Pada mulanya C++ disebut a betterC . Nama C++ sendiri diberikan oleh Rick Mascitti pada tahun 1983, yang berasaldari operator increment pada bahasa C.

    Keistimewaan yang sangat berari dari C++ ini adalah karena bahasa inimendukung pemrograman yang berorientasi objek ( OOP / Object OrientedProgramming).

    2.2 Menyiapkan ProgramSource code C++ dapat ditulis pada text editor apapun. Baik itu digunakan padasistem operasi Windows atau Unix (Linux, BSD, dsb). Walaupun demikian, lebihdisarankan apabila digunakan dengan editor khusus C++, agar penggunaan toolsyang lain lebih mudah.

    2.3 Elemen DasarUntuk membuat suatu program ada baiknya kita mengenal terlebih dahulu apa

    yang disebut dengan prepocessor directive. Prepocessor ditandai dengan adanyaawalan # . Preprocessor selalu dijalankan terlebih dahulu pada saat proseskompilasi terjadi.

    Setiap program C++ mempunyai bentuk seperti di bawah , yaitu:

    Melihat bentuk seperti itu dapat kita ambil kesimpulan bahwa batang tubuhprogram utama berada didalam fungsi main(). Berarti dalam setiap pembuatanprogram utama, maka dapat dipastikan seorang pemrogram menggunakan minimalsebuah fungsi. Pembahasan lebih lanjut mengenai fungsi akan diterangkan

    kemudian. Yang sekarang coba ditekankan adalah kita menuliskan program utamakita didalam sebuah fungsi main(). Jangan lupa bahwa C++ bersifat case sensitive,sehingga, nama hallo dan Hallo berbeda artinya.

    2.3.1 Cara Penulisan

    KomentarKomentar 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 )

    SemicolonTanda semicolon ; digunakan untuk mengakhiri sebuah pernyataan. Setiap

    pernyataan harus diakhiri dengan sebuah tanda semicolon. Baris yang diawalidengan tanda #, seperti

    #include

    tidak diakhiri dengan tanda semicolon, karena bentuk tersebut bukanlah suatubentuk pernyataan, tetapi merupakan prepocessor directive

    #prepocessor directivemain(){

    // Batang Tubuh Program Utama}

  • 7/26/2019 Mod Oop With Cpp

    6/43

    Univers i tas Informat ika dan Bisn is Indon esia

    Pemrograman Berorientasi Objek I 6

    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 pada prapocessor directive.

    Contoh :

    2.3.3 Karakter & String Literal

    String adalah gabungan dari karakterContoh : Belajar Literal String

    B Karakter

    Panjang String

    strlen() nama fungsi untuk menghitung panjang string

    Fungsi strlen() dideklarasikan dalam file string.hJadi bila anda ingin menggunakan fungsi strlen(), maka prepocessor directive

    #includeharus dimasukkan dalam program diatas main().

    Contoh :

    Keluarannya:1413710

    Perhatikan, bahwa disetiap akhir baris pernyataan diakhiri dengan tanda titikkoma(semicolon) ; .Perhatikan, bahwa \n dihitung satu karakter. \n disebut newline karakter. Endl jugamerupakan newline karakter ( sama kegunaannya seperti \n ).

    #include main(){char nama[100]; //Dekalarasi variable namacoutnama;//Meminta user untuk menginisialisasi variable nama

    cout

  • 7/26/2019 Mod Oop With Cpp

    7/43

    Univers i tas Informat ika dan Bisn is Indon esia

    Pemrograman Berorientasi Objek I 7

    Dalam C++, selain \n terdapat juga beberapa karakter khusus yang biasa dsebutescape 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 digitheksadesimal )

    2.3.4 Keyword & Identifier

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

    Contoh :

    Keluarannya:66

    Program diatas memperlihatkan 15 token, yaitu

    main, (, ), {, int, n, =, 66, ;, cout,

  • 7/26/2019 Mod Oop With Cpp

    8/43

    Univers i tas Informat ika dan Bisn is Indon esia

    Pemrograman Berorientasi Objek I 8

    Contoh :

    Keluarannya :66n

    Deklarasi dari suatu variable adalah sebuah pernyataan yang memberikan informasitentang variable kepada compiler C++. Sintaksnya adalah

    typevariable ;dengan type adalah tipe data yang didukung oleh C++, beberapa contohnya yaitu:

    Tipe Data UkuranMemori (byte)

    Jangkauan Nilai Jumlah DigitPresisi

    char 1 -128 hingga +127 -

    Int 2 -32768 hingga +32767 -

    Long 4 -2.147.438.648 hingga2.147.438.647

    -

    float 4 3,4E-38 hingga 3,4E38 6-7

    double 8 1.7E-308 hingga 1.7E308 15-16Long double 10 3.4E-4932 hingga 1.1E4932 19

    NB : Untuk mengetahui ukuran memori dari suatu tipe digunakan fungsisizeof(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 Inisialisasiint a,b,c;

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

    #include main()

    {int n;n=66; // sama juga jika ditulis int n=66;cout

  • 7/26/2019 Mod Oop With Cpp

    9/43

    Univers i tas Informat ika dan Bisn is Indon esia

    Pemrograman Berorientasi Objek I 9

    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 jeniscompilernya.

    2.3.6 Konstanta

    1. Konstanta Oktal, digit yang digunakan 0-72. Konstanta Heksadesimal, digit yang digunakan 0-9, A-F3. Konstanta Bernama

    a. Menggunakan keyword constContoh : const float PI = 3.14152965;

    Berbeda dengan variable, konstanta bernama tidak dapat diubahjika telah diinisialisasi

    b. Menggunakan #define

    Contoh : #define PI 3.14152965Keuntungan menggunakan #define apabila dibandingkan dengan constadalah kecepatan kompilasi, karena sebelum kompilasi dilaksanakan,kompiler pertama kali mencari symbol #define ( oleh sebab itu mengapa #dikatakan prepocessor directive ) dan mengganti semua PI dengan nilai3.14152965.

    2.4. Operator

    Operator adalah symbol yang biasa dilibatkan dalam program untuk melakukansesuatu operasi atau manipulasi.

    Contoh : a = b + c * d / 4a, b, c, ddisebut 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, karenamembutuhkan hanya satu buah operand

    Contoh :

    Keluarannya :82 + 26 = 108

    #include void main(){int m = 82, n = 26;cout

  • 7/26/2019 Mod Oop With Cpp

    10/43

    Univers i tas Informat ika dan Bisn is Indon esia

    Pemrograman Berorientasi Objek I 10

    82 - 26 = 5682 * 26 = 213282 / 26 = 382 % 26 = 4-82 = -82

    Karena tipe datanya adalah int, maka 82/26=3, supaya dapat merepresentasikannilai yang sebenarnya, gunakan tipe data float.

    Cara lain penulisan dengan menggunakan operator aritmatika :m = m + n m += nm = m - n m -= nm = m * n m *= nm = m / n m /= nm = m % n m %= n

    2.4.2 OPERATOR NAIK DAN TURUN ( INCREMENT DAN DECREMENT )Operator increment ++

    Operator decrement--

    Contoh :

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

    Terlihat bahwa operator pre-increment dan post-increment memiliki akibat yangsama, yaitu manambah nilai satu pada m dan memasukkan nilai tersebut kembali kem ( 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 main(){

    int m = 44, n = 66;cout

  • 7/26/2019 Mod Oop With Cpp

    11/43

    Univers i tas Informat ika dan Bisn is Indon esia

    Pemrograman Berorientasi Objek I 11

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

    m = 70

    Penjelasan :Dalam penugasan yang pertama, m adalah pre-increment, menaikkan nilainyamenjadi 67, yang selanjutnya dimasukkan ke n.Dalam penugasan kedua, m adalah post-increment, sehingga 67 dimasukkan dahuluke 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 dinaikkandahulu menjadi 70 baru kemudian ditampilkan ke layar.

    Supaya lebih paham, perhatikan pula contoh dibawah.

    Contoh :

    Keluarannya :m = 5, n = 258 7 6

    Penjelasan :Dalam penugasan untuk n, pertama kali m dinaikkan (++m) menjadi 6, kemudian mditurunkan kembali menjadi 5, karena adanya --m. Sehingga nilai m sekarang adalah5 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 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 intatau char

    Berikut ini diberikan tabel kebenaran untuk operator logikaP = A operator B

    #include main(){

    int m = 5, n;n = ++m * --m;cout

  • 7/26/2019 Mod Oop With Cpp

    12/43

    Univers i tas Informat ika dan Bisn is Indon esia

    Pemrograman Berorientasi Objek I 12

    AND OR

    A B P

    0 0 00 1 0

    1 0 0

    1 1 1

    A B P

    0 0 00 1 1

    1 0 1

    1 1 1

    XOR

    A B P0 0 0

    0 1 1

    1 0 1

    1 1 0

    Contoh :

    Keluarannya :82 > 2 = 2082 & 26 = 1882 | 26 = 9082 ^ 26 = 72~82 = 83

    Penjelasan :Nilai keluaran diatas, tergantung dari jenis compiler yang digunakan. Hasil diatasmerupakan keluaran dari compiler Turbo C++.Pada Turbo C++ besar dari integer adalah 2 byte atau sama dengan 16 bit, untukmengetahuinya digunakan perintah

    cout

  • 7/26/2019 Mod Oop With Cpp

    13/43

    Univers i tas Informat ika dan Bisn is Indon esia

    Pemrograman Berorientasi Objek I 13

    Cara lain penulisan dengan menggunakan operator bitwise :m = m >= nm = m & n m &= n

    m = m | n m |= nm = m ^ n m ^= n

    2.4.4 OPERATOR RELASIOperator relasi digunakan untuk membandingkan dua buah nilai. Operator ini biasadigunakan dalam instruksi percabangan.

    Operator Deskripsi== Sama dengan ( bukan assignment )

    != Tidak sama dengan

    > Lebih besar

    < Lebih kecil

    >= Lebih besar atau sama dengan=0 && m=0 || m

  • 7/26/2019 Mod Oop With Cpp

    14/43

    Univers i tas Informat ika dan Bisn is Indon esia

    Pemrograman Berorientasi Objek I 14

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

    2.4.6 OPERATOR KONDISI

    Operator kondisi digunakan untuk memperoleh nilai dari dua kemungkinanungkapan1? ungkapan2: ungkapan3

    Bila nilai ungkapan1benar, maka nilainya sama dengan ungkapan2, bila tidak makanilainya sama dengan ungkapan3

    Contoh :

    Keluarannya :Bilangan terkecil adalah 26

    Operator relasi, logika dan kondisi akan banyak digunakan pada pernyataanberkondisi

    2.5. PERNYATAAN ( STATEMENTS )Pernyataan digunakan untuk melakukan suatu tindakan, yaitu

    2.5.1 PERNYATAAN UNGKAPANPernyataan ini merupakan bentuk pernyataan yang paling sering digunakan.

    Pernyataan ini diakhiri dengan semicolon ; . Contoh : var = 166;

    var++;

    2.5.2 PERNYATAAN DEKLARASIUntuk menggunakan suatu variable minimal variable tersebut dideklarasikan

    terlabih dahuluContoh : int var;

    Merupakan contoh deklarasi sebuah variable var dengan tipe data integer (int).

    2.5.3 PERNYATAAN KOSONGPernyataan ini tidak melaksanakan apapun.Contoh : while(ada);

    2.5.4 PERNYATAAN MAJEMUKMerupakan sejumlah pernyataan yang berada di dalam sebuah blok { }Contoh : for(var = 0 ; var

  • 7/26/2019 Mod Oop With Cpp

    15/43

    Univers i tas Informat ika dan Bisn is Indon esia

    Pemrograman Berorientasi Objek I 15

    2.5.5 PERNYATAAN BERLABEL

    Pernyataan goto, diperlukan untuk melakukan suatu lompatan ke suatupernyataan berlabel yang ditandai dengan tanda : .

    Contoh : goto bawah;

    pernyataan1;pernyataan2;:bawah pernyataan 3;

    Pada contoh diatas, pada saat goto ditemukan maka program akan melompatpernyataan berlabel bawah dan melakukan pernyataan 3.

    2.5.6 PERNYATAAN KONDISI ( CONDITIONAL EXPRESSION )

    Pertanyaan Kondisi dibagi menjadi,2.5.6.1 Pernyataan i f

    Digunakan dalam pengambilan keputusan. Bentuk umum:

    if(kondisi) pernyataan1 ;else pernyataan2;

    Pernyataan1 dilaksanakan jika dan hanya jika kondisi yang diinginkanterpenuhi, 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 :

    Contoh :

    Selain dari if else, juga dikenal bentuk if else if.Adapun perbedaannyadiilustrasikan oleh dua contoh dibawah ini.

    if(kondisi){

    pernyataan1;pernyataan1a;pernyataan1b;

    }else{

    pernyataan2;pernyataan2a;pernyataan2b;

    }

    #include void main(){int m = 166;

    if(m == 0)cout

  • 7/26/2019 Mod Oop With Cpp

    16/43

    Univers i tas Informat ika dan Bisn is Indon esia

    Pemrograman Berorientasi Objek I 16

    Contoh 1 :

    Keluarannya :166 lebih besar dari 100166 lebih besar dari 10

    Contoh 2 :

    Keluarannya :166 lebih besar dari 100

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

    Contoh diatas disebut juga nested conditional

    2.5.6.2 Pernyataan swi tchPernyataan ifelse ifjamak dapat dibangun dengan pernyataan switch.

    Bentuk umumnya adalah sebagai berikut.

    switch(ekspresi)

    { case konstanta1 : pernyataan1;case konstanta2 : pernyataan2;case konstanta3 : pernyataan3;

    ::

    case konstantaN : pernyataanN;

    #include void main(){

    int m = 166;if(m > 1000) cout

  • 7/26/2019 Mod Oop With Cpp

    17/43

    Univers i tas Informat ika dan Bisn is Indon esia

    Pemrograman Berorientasi Objek I 17

    default : pernyataanlain;}

    Halhal 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 char3. Jika bentuknya seperti diatas maka apabila ekspresisesuai dengan konstanta2

    maka pernyataan2, pernyataan3 sampai dengan pernyataanlain dieksekusi.Untuk mencegah hal tersebut, gunakan keyword break;. Jika keyword breakdigunakan maka setelah pernyataan2 dieksekusi program langsung keluar daripernyataan switch. Selain digunakan dalam switch, keyword break banyakdigunakan untuk keluar dari pernyataan yang berulang ( looping ).

    4. pernyataanlain dieksekusi jika konstanta1 sampai konstantaN tidak ada yangmemenuhi ekspresi.

    Contoh :

    Keluaran :Masukkan nilai test : 45DMasukkan nilai test : 450Salah, 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 whileDigunakan untuk pengambilan keputusan dan looping.

    // Program untuk melihat nilai akhir test// Nilai A jika nilai diatas 80, B jika 70

  • 7/26/2019 Mod Oop With Cpp

    18/43

    Univers i tas Informat ika dan Bisn is Indon esia

    Pemrograman Berorientasi Objek I 18

    Bentuk :While(kondisi){pernyataan}

    Jika kondisi tidak terpenuhi, makapernyataantidak akan dieksekusi.

    Contoh:#include #include #define TINGGI 5#define LEBAR 10// Program menggambarkan karakter khusus pada sebuah// koordinat yang ditentukanvoid main(){

    char matrix[TINGGI][LEBAR];int x,y;for(y=0;y

  • 7/26/2019 Mod Oop With Cpp

    19/43

    Univers i tas Informat ika dan Bisn is Indon esia

    Pemrograman Berorientasi Objek I 19

    } while(kondisi);

    Terlihat, walaupun kondisi tidak terpenuhi, makapernyataan minimalakan dieksekusi sekali.

    Contoh :#include #include #include // Program konversi bilangan desimal ke binervoid main(){int p,n,i=0;coutp;

    double A[100];do{A[++i]=p%2;p=p/2;floor(p);} while (p>1);cout

  • 7/26/2019 Mod Oop With Cpp

    20/43

    Univers i tas Informat ika dan Bisn is Indon esia

    Pemrograman Berorientasi Objek I 20

    #include void main(){

    for(int x=1 ; x

  • 7/26/2019 Mod Oop With Cpp

    21/43

    Univers i tas Informat ika dan Bisn is Indon esia

    Pemrograman Berorientasi Objek I 21

    2.5.7 PERNYATAAN BREAK

    Pernyataan breakakan selalu terlihat digunakan bila menggunakan pernyataanswitch. 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 continuedigunakan untuk pergi ke bagian awal dari blok loop untukmemulai iterasi berikutnya.

    Contoh :

    Keluarannya :

    Masukkan bilangan integer : 9Lanjutkan loop berikutnya

    Masukkan bilangan integer : 8Masukkan bilangan integer : 5

    Akhiri Loop

    2.6. FUNGSIFungsi adalah sekumpullan perintah operasi program yang dapat menerima

    argumen input dan dapat memberikan hasil output yang dapat berupa nilai ataupunsebuah 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 lebihrapi dan kemudahan dalam debugging program.

    2.6.1 FUNGSI, DEKLARASI DAN DEFINISI NYAPemrogram dapat membuat fungsi yang didefinisikan sendiri olehnya.

    Contoh :

    // Fungsi kuadrat

    // tipe_return nama_fungsi (tipe_argument argumen)float kuadrat ( float x ){return x*x;

    }

    #include void main(){

    int n;for(;;){coutn;if(n % 2 == 0) continue;else if(n % 5 == 0) break;cout

  • 7/26/2019 Mod Oop With Cpp

    22/43

    Univers i tas Informat ika dan Bisn is Indon esia

    Pemrograman Berorientasi Objek I 22

    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 ).Jadi, judul untuk fungsi kuadrat adalah

    float kuadrat ( float x )

    Isi dari sebuah fungsi adalah blok kode yang mengikuti judulnya. Berisi kodeyang menjalankan aksi dari fungsi, termasuk pernyataan returnyang memuat nilaifungsi 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 akanmengakhiri fungsi dan mengembalikan nilainya ke program pemanggil. Bentukumum pernyataan return adalah :

    returnekspresi;

    Dengan ekspresiadalah sebuah ekspresi yang nilainya dinyatakan untuk sebuahvariable yang tipenya sama seperti tipe return. Terdapat juga fungsi yang tidakmemberikan nilai return atau tipe returnnyavoid.

    Contoh :

    Pengertian deklarasi fungsi berbeda dengan dengan definisi fungsi. Suatudeklarasi fungsi adalah judul fungsi yang sederhana yang diikuti oleh tandasemicolon ( ; ). 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 diketahuiadalah 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 sajadiluar fungsi main() dan biasanya dituliskan setelah fungsi main() atau dalam fileterpisah yang jika ingin digunakan tinggal menambahkan prepocessor #includenama_file pada file utama.

    #include void sayHello(char[]) ; // deklarasi fungsi sayHello()void main(){char n[50];coutn;sayHello(n);}

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

    {cout

  • 7/26/2019 Mod Oop With Cpp

    23/43

    Univers i tas Informat ika dan Bisn is Indon esia

    Pemrograman Berorientasi Objek I 23

    Jika definisi fungsi diletakkan diatas fungsi main() maka deklarsi fungsi tidakdiperlukan.

    Variabel-variabel yang di list di dalam parameter fungsi disebut parameter-parameter formal atau argumen-argumen formal. Variabel lokal seperti ini hanya adaselama 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 programutama, variabel-variabel tersebut harus dideklarasikan sebelum digunakan dalampemanggilan. Dalam contoh dibawah, parameter-parameter aktualnya adalah m dann.

    Contoh :

    Keluaran :Masukkan sebuah angka : 57

    Bilangan bulatMasukkan sebuah angka : 0.57

    Bukan bilangan bulatMasukkan sebuah angka : -24

    Bilangan bulat

    2.6.2 NILAI BAWAAN UNTUK ARGUMEN FUNGSI

    Salah satu keistimewaan C++ yang sangat bermanfaat dalam pemrogramanadalah adanya kemampuan untuk menyetel nilai default

    Argumen fungsi. Argumen-argumen yang mempunyai nilai bawaan nantinya dapattidak disertakan di dalam pemanggilan fungsi dan dengan sendirinya C++ akanmenggunakan nilai bawaan dari argumen yang tidak disertakan.

    Contoh :

    // Penggunaan Fungsi Rekursif :// Program mengecek sebuah bilangan integer atau bukan#include #include #include void cekInt(double);void main(){double angka;coutangka;cekInt(angka);}

    void cekInt(double n){if(n>1)cekInt(n-1);

    else if(n0&&n

  • 7/26/2019 Mod Oop With Cpp

    24/43

    Univers i tas Informat ika dan Bisn is Indon esia

    Pemrograman Berorientasi Objek I 24

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

    menampilkan

    Halloo

    Sebanyak satu kali, namun jika argumen pada fungsi sayHello diberikan, misalkansayHello(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-fungsimatematika, pengolah kata dan banyak lagi. Sebenarnya ( mungkin tidak terasa bagianda ) main juga adalah fungsi, jadi tanpa anda sadari sebenarnya anda telahmenggunakan fungsi.Untuk dapat menggunakan fungsi-fungsi tersebut anda harus meng-include filedimana fungsi tersebut didefinisikan

    Misalkan : Fungsifungsi matematika, anda harus meng-include file math.h Fungsifungsi pengolah string dan karakter, anda harus meng-include file

    string.h Fungsi clrscr(), getch(), getche() dalam file conio.h

    #include #include void sayHello(int);

    void main(){

    sayHello();}

    void sayHello(int n=1){

    for(int m=0;m

  • 7/26/2019 Mod Oop With Cpp

    25/43

    Univers i tas Informat ika dan Bisn is Indon esia

    Pemrograman Berorientasi Objek I 25

    BAGIAN IIIKONSEP PEMROGRAMAN OBJEK

    3.1 Definisi OOPPemrograman 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 atributdan sifat dari komponen lainnya, dan komponen-komponen tersebut dapatberinteraksi satu sama lainnya.

    o Pemrograman yang didasarkan pada objek-objek, yaitu suatu unit terkecildari program yang mengandung data dan fungsi yang bekerja atas objektersebut.

    3.2 Karakteristik OOPOOP memiliki karakteristik yaitu :1. Abstraksi

    Prinsip untuk mendeskripsikan objek dan relasi antar objek, denganmengabaikan aspek-aspek lain yang tidak sesuai dengan permasalahan.

    2. EnkapsulasiPembungkusan atribut data dan layanan (operasi-operasi) yang dipunyaiobjek, untuk menyembunyikan implementasi dari objek sehingga objek laintidak mengetahui cara kerjanya.

    3. Pewarisan (inheritance)Mekanisme yang memungkinkan suatu kelas mewarisi sebagian atau seluruhdefinisi dari kelas lainnya sebagai bagian dari dirinya.

    4. Reusability

    Pemanfaatan kembali objek yang sudah didefinisikan untuk suatupermasalahan pada permasalahan lainnya yang melibatkan objek tersebut.

    5. Generalisasi dan SpesialisasiMenunjukkan hubungan antara kelas dan objek yang umum dengan kelasdan objek yang khusus.

    6. Komunikasi antar ObjekKomunikasi antar objek dilakukan lewat pesan (message) yang dikirim darisuatu objek ke objek lainnya.

    7. PolymorphismeKemampuan suatu objek untuk digunakan di banyak tujuan yang berbedadengan nama sama sehingga menghemat baris program.

    3.3 Tingkatan OOPAda 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 memanfaatkandefinisi statik dari ADT. ADT adalah type yang didefinisikan berdasarkan

    jenis data dasar dan sejumlah primitif fungsi yang terdefinisi terhadap jenisdata tersebut, sedangkan jenis data dasar adalah jenis data yang sudahdisediakan oleh mesin seperti integer, character, real, dan boolean.

    2. OOP dengan GenerityTingkatan selanjutnya dari OOP dengan definisi statik ADT dikembangkan kedalam konsep generik yang memudahkan penulisan kode program.

    3. OOP dengan Inheritance dan PolymorphismePada tingkatan ini, sebuah objek dapat menerima pewarisan dari objeklainnya yang melahirkan konsep polymorphisme saat program dieksekusi.

    4. OOP Secara KonkurenMerupakan tingkatan paling lanjut dimana OOP akan memodelkan objek aktifsecara konkuren (ada beberapa objek yang diaktifkan pada saat yang samaberbarengan dengan atau tanpa komunikasi diantaranya)

  • 7/26/2019 Mod Oop With Cpp

    26/43

    Univers i tas Informat ika dan Bisn is Indon esia

    Pemrograman Berorientasi Objek I 26

    3.4 Objek dan KelasObjek adalah model eksekusi, sementara kelas adalah deskripsi statik dari objek

    yang mungkin lahir pada saat eksekusi. Berikut kita lihat perbedaan antara objekdan kelas.

    3.4.1 Objek- Objek adalah abstarksi dari sesuatu yang mewakili dunia nyata seperti

    benda, manusia, satuan organisasi, tempat, kejadian, struktur, status atauhal-hal lain yang bersifat abstrak.

    - Dalam konteks OOP, objek adalah instanisasi (yang dibentuk secaraseketika) dari kelas pada saat dieksekusi (seperti halnya deklarasi variabelpada pemrogramn prosedural). Jadi semua objek adalah instan dari kelas.

    - Objek adalah elemen yang akan diciptakan, dimanipulasi, dan dihancurkanpada 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 teksprogram, yang kita lihat adalah kelas.

    3.4.3 Property ObjekSebuah 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 itusendiri

    3.4.4 Klasifikasi ObjekObjek 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 suatustatus ke status lain.

    3. Proses, objek aktif yang mempunyai urutan kendali (thread of control)

    3.5 Program Utama pada OOPProgram 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.

  • 7/26/2019 Mod Oop With Cpp

    27/43

    Univers i tas Informat ika dan Bisn is Indon esia

    Pemrograman Berorientasi Objek I 27

    BAGIAN IVPEMROGRAMAN OBJEK DENGAN ADT

    4.1 Pengertian

    oMerupakan pemrograman objek yang paling sederhanaoProgram disusun dari objek-objek yang berdiri sendiri, tidak saling

    berkomunikasio Struktur atau skema program menyerupai program yang menggunakan ADT

    (Abstract Data Type), tetapi deklarasi data (atribut) dan prosedur sertafungsinya (layanan, metode) dienkapsulasi sebagai satu kesatuan menjadiobjek-objek.

    oADT adalah suatu model matematika dan sekumpulan operasi yangdidefinisikan terhadap model tersebut.

    oDalam konteks pemrograman objek, ADT adalah definisi suatu kelas.

    4.2 Definisi KelasoKelas adalah definisi statik dari objek. Artinya, sebelum suatu objek diciptakan,

    kelas darimana objek tersebut berasal harus didefinisikan lebih dahulu.oSuatu kelas mirip dengan struktur (struct), tetapi mempunyai kemampuan

    untuk menyembunyikan data dan mempunyai layanan.oDalam 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:onamakelas adalah nama kelas yang diciptakanotype menyatakan jenis data anggota kelas, dapat berupa jenis data

    standar, bentukan, atau berupa kelas yang lain.oidentifier menyatakan nama anggota kelas, dapat berupa data atau fungsi

    dan sering disebut sebagai data kelas atau fungsi anggota.

    onamaobjek menyatakan nama objek yang diciptakan dari kelasnamakelas, bersifat optimal.

    o Data dan fungsi yang dideklarasikan di bagian private hanya dapat diaksesoleh fungsi anggota, protected oleh fungsi anggota dan fungsi turunannya,sementara public oleh fungsi anggota, fungsi kelas turunan, dan fungsi dariluar kelas. Jika tidak dinyatakan, maka data dan fungsi akan dianggapdideklarasikan secara private (default).

    oBiasanya data didefinisikan di bagian private, sehingga untuk mengaksesnyadigunakan fungsi anggota yang didefinisikan secara public.

    oDefinisi fungsi dapat dilakukan di dalam kelas atau di luar kelas.

    Contoh :// definisi kelas kotakclassKotak {private:

    // deklarasi atributfloat panjang, lebar;

    public:// deklarasi dan definisi layanan

  • 7/26/2019 Mod Oop With Cpp

    28/43

    Univers i tas Informat ika dan Bisn is Indon esia

    Pemrograman Berorientasi Objek I 28

    float Luas() {return (panjang*lebar);

    };float Keliling(){

    return (2*(panjang+lebar));};

    };

    atau

    //definisi kelas kotakclassKotak {

    // deklarasi atributfloat panjang, lebar;

    public://deklarasi layananfloat Luas();float Keliling();

    };

    //definisi layanan kelas kotakfloat Kotak::Luas() {

    return (panjang*lebar);};

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

    };

    4.3 Konstruktor dan DestruktoroKonstruktor adalah fungsi yang dipanggil saat suatu objek diciptakan

    (diinstansiasi), sementara destruktor adalah fungsi yang dipanggil saat objekdimusnahkan

    oSaat objek diciptakan, konstruktor akan mengalokasikan memory, memberinilai awal pada data yang dipunyai objek, dan secara otomatis menjalankan(mengeksekusi) semua pernyataan yang menjadi isinya.

    oSebaliknya pada saat objek dimusnahkan, destructor akan membebaskanmemory yang sebelumnya ditempati oleh objek tersebut. Pernyataan-pernyataan yang menjadi isi dari destruktor selanjutnya akan diekskusi.

    oKonstruktor diberi nama sesuai dengan nama kelasnya, demikian juga dengandestruktor tetapi didahului dengan tanda tilde (~).

    oSeperti halnya fungsi anggota, konstruktor dan destruktor dapat didefinisikan didalam maupun di luar kelas.

    Contoh :

    Kotak() {cout

  • 7/26/2019 Mod Oop With Cpp

    29/43

    Univers i tas Informat ika dan Bisn is Indon esia

    Pemrograman Berorientasi Objek I 29

    4.4 Contoh ProgramContoh 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 #include // definisi kelas kotakclass Kotak {

    // deklarasi atributfloat panjang, lebar;

    public://konstruktor dan destruktorKotak();Kotak(float,float);~Kotak();

    //deklarasi layananvoid AssignKotak(float, float);float Luas();float Keliling();};

    //definisi konstruktor dan destruktorKotak::Kotak(){

    cout

  • 7/26/2019 Mod Oop With Cpp

    30/43

    Univers i tas Informat ika dan Bisn is Indon esia

    Pemrograman Berorientasi Objek I 30

    //cetak luas dan kelilingcout

  • 7/26/2019 Mod Oop With Cpp

    31/43

    Univers i tas Informat ika dan Bisn is Indon esia

    Pemrograman Berorientasi Objek I 31

    Clock::Clock(int h, int m, int s) {hour = h;minute = m;second = s;}

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

    //deklarasi layananint 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 #include "clock.cpp"

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

    //assign nilai untuk objek jam1

  • 7/26/2019 Mod Oop With Cpp

    32/43

    Univers i tas Informat ika dan Bisn is Indon esia

    Pemrograman Berorientasi Objek I 32

    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 untukmendeklarasikan 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 kelasclass Nilai_Mhs {

    public://deklarasi atributchar NPM[8], Nama[30], Kelas[6];int Hadir, Tugas, UTS, UAS;

    // konstruktor dan destruktorNilai_Mhs();~Nilai_Mhs();

    //deklarasi layananvoid 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 kedalam file nilai.cpp

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

    #include #include "nilai.h"

    //konstruktor dan destruktorNilai_Mhs::Nilai_Mhs() {// inisialisasi identitas mahasiswastrcpy (NPM, " ");

  • 7/26/2019 Mod Oop With Cpp

    33/43

    Univers i tas Informat ika dan Bisn is Indon esia

    Pemrograman Berorientasi Objek I 33

    strcpy (Nama, " ");strcpy (Kelas, " ");}

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

    }

    //definisi layananvoid 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 lokalfloat NAkhir;char HM;

    //hitung nilai akhirNAkhir=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 mutuHM = Hitung_HM();

    //tentukan status kelulusannyaif ((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);

  • 7/26/2019 Mod Oop With Cpp

    34/43

    Univers i tas Informat ika dan Bisn is Indon esia

    Pemrograman Berorientasi Objek I 34

    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 kedalam file mnilai.cpp

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

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

    //tes semua layanan dari kelasclrscr();mhs.Baca_Data();mhs.Cetak_Info();getch();

    }

  • 7/26/2019 Mod Oop With Cpp

    35/43

    Univers i tas Informat ika dan Bisn is Indon esia

    Pemrograman Berorientasi Objek I 35

    BAGIAN VPEMROGRAMAN OBJEK CLIENT-SUPPLIER

    5.1 Pengertian

    oPemrograman objek dimana objek-objek yang menyusun program sudahsaling berinteraksi.

    oInteraksi antar objek yang terjadi berupa hubungan client-supplier. Artinya akanada objek yang berperan sebagai client dan ada objek yang akan berperansebagai supplier.

    oClient adalah objek yang akan menggunakan sebagian atau seluruh atributdan layanan objek lain, sementara supplier adalah objek yang menyediakansebagian atau seluruh atribut dan layanannya untuk digunakan oleh objek lain.

    oSecara teknis, biasanya objek yang berperan sebagai supplier merupakanatribut dari objek clientsehingga menjadi bagian (property) dari objek client.

    oPemrograman objek client-supplier merupakan implementasi dari hubunganantar objek asosiasi dan whole-part (part of)

    PulseCounter Clock

    menggunakan

    1 *

    Gambar 5.1 Contoh hubungan antar Objek Asosiasi

    oHubungan Asosiasi hanya terjadi antar 2 objek dimana keduanya merupakan

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

    Komputer

    CPU Monitor Printer

    Gambar 5.2 Contoh hubungan antar Objek whole-part

    oHubungan whole-part merupakan hubungan yang melibatkan lebih dari 2objek. Dalam hubungan ini, supplier-supplier merupakan kelas-kelas (baca:objek) yang menyusun suatu objek lain yang kita sebuat dengan client.

    oDengan kata lain whole-part memiliki objek-objek yang merupakan pecahan-pecahan pembangun objek yang lebih tinggi.

  • 7/26/2019 Mod Oop With Cpp

    36/43

    Univers i tas Informat ika dan Bisn is Indon esia

    Pemrograman Berorientasi Objek I 36

    5.2 Pembuatan Program Objek Client-SupplieroTergantung seepenuhnya kepada hasil abstraksi (pemodelan) dunia nyataoDari hasil pemodelan, identifikasi hubungan antar objek asosiasi dan whole-part yang ada (lihat contoh diatas)oTentukan objek-objek mana yang nantinya akan berperan sebagai client dan

    supplierberdasarkan tugas-tugas (task) yang harus dilaksanakannya.oDeklarasikan atribut dan layanan untuk masing-masing objek sesuai

    peranannya.

    5.3 Contoh ProgramContoh 5.1:Lihat gambar 5.1 di halaman sebelumnya. Misalkan PulseCounter adalah objekyang berfungsi menghitung besarnya pulsa penggunaan telepon, sementaraClock adalah objek yang menyimpan data waktu (jam) penggunaan telepon.Untuk menghitung besarnya pulsa, objek PulseCounter membutuhkan data jammulai dan jam selesai serta layanan konversi jam ke detik yang dimiliki olehobjek Clock, sehingga objek PulseCounter adalah client sedangkan Clock adalah

    Supplierprogramnya.

    PulseCounter Clock

    menggunakan

    1 *

    int NoKBU

    clock JamMulai

    clock JamSelesai

    HitungPulsa()

    int hour

    int minute

    int second

    assignclock()

    convert2detik()

    ...

    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 tinggalmenggunakan kelas yang sudah ada. Buat file baru yang digunakan untukmendeklarasikan 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

    int PulseCounter::HitungPulsa(){

  • 7/26/2019 Mod Oop With Cpp

    37/43

    Univers i tas Informat ika dan Bisn is Indon esia

    Pemrograman Berorientasi Objek I 37

    double lama;float pulsa;

    lama = JamSelesai.ConvertDetik()- JamMulai.ConvertDetik();pulsa=lama/30;return ceil(pulsa);

    }

    Buat program utama yang menggunakan kelas PulseCounter dan simpandengan nama drvpc.cpp

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

    #include "pc.cpp"#include

    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.

  • 7/26/2019 Mod Oop With Cpp

    38/43

    Univers i tas Informat ika dan Bisn is Indon esia

    Pemrograman Berorientasi Objek I 38

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

    Komputer

    CPU Monitor Printer

    char *kodeCPU procmonitor monprinter prn

    putkode()

    DisplaySpec()

    char *merk

    int kecepatan

    isiatribut()

    getmerk()getkecepatan()

    char *merk

    long harga

    isiatribut()

    getmerk()getharga()

    char *merk

    long harga

    isiatribut()

    gettipe()getharga()

    char *tipe

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

    Untuk mewujudkan hubungan tersebut dapat ditulis kode program berikut.

    //compiler directive#include #include #include

    //deklarasi kelas supplierclass 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;

    };

  • 7/26/2019 Mod Oop With Cpp

    39/43

    Univers i tas Informat ika dan Bisn is Indon esia

    Pemrograman Berorientasi Objek I 39

    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 clientclass komputer{

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

    void putkode(char *k){kode=k;

    };

    void displayspec(){cout

  • 7/26/2019 Mod Oop With Cpp

    40/43

    Univers i tas Informat ika dan Bisn is Indon esia

    Pemrograman Berorientasi Objek I 40

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

    #include "clock.cpp"#include

    #include

    //deklarasi kelas komputerclass 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 rentalclass rental{komputer pc;

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

    clrscr();coutnk;pc.isidata(nk);coutm;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

  • 7/26/2019 Mod Oop With Cpp

    41/43

    Univers i tas Informat ika dan Bisn is Indon esia

    Pemrograman Berorientasi Objek I 41

    //program utamavoid main() {rental r;

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

    }

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

    Contoh 5.4OOP 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 PraktekNama File : uts.hdeskripsi : deklarasi dari kelas NilaiTeori, NilaiPraktek

    dan Nilai Kuliah */

    //deklarasi kelasclass NilaiTeori {public:

    //deklarasi atributint hadir, tugas, UTS_T, UAS_T;

    //konsturktor dan destruktorNilaiTeori();~NilaiTeori();

    //deklarasi layananfloat NilaiAkhir();

    };

    class NilaiPraktik {public:

    //deklarasi atributint UTS_P, UAS_P;

    //konsturktor dan destruktorNilaiPraktik();~NilaiPraktik();

    //deklarasi layananfloat NilaiRata2();

    };

    class NilaiKuliah{public:

    //deklarasi atributchar Nama[15];NilaiTeori NT;NilaiPraktik NP;

    //konstruktor dan destruktorNilaiKuliah();

    ~NilaiKuliah();

    //deklarasi layananchar *StatusLulus();void CetakInfo();

    };

  • 7/26/2019 Mod Oop With Cpp

    42/43

    Univers i tas Informat ika dan Bisn is Indon esia

    Pemrograman Berorientasi Objek I 42

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

    /*Nama file : uts.cppDeskripsi : definisi dari layanan yang dideklarasikan pada

    class */

    #include "uts.h"//definisi untuk kelas NilaiTeori//konstruktor dan destruktorNilaiTeori::NilaiTeori(){

    hadir=0;tugas=0;UTS_T=0;UAS_T=0;

    }

    NilaiTeori::~NilaiTeori(){}

    //definisi layananfloat NilaiTeori::NilaiAkhir() {

    return 0.1*hadir+0.2*tugas+0.3*UTS_T+0.4*UAS_T;}

    //definisi untuk kelas NilaiPraktik//konstruktor dan destruktorNilaiPraktik::NilaiPraktik(){

    UTS_P=0;UAS_P=0;

    }

    NilaiPraktik::~NilaiPraktik(){}

    //definisi layananfloat NilaiPraktik::NilaiRata2() {

    return (UTS_P+UAS_P)/2;}

    //definisi untuk kelas NilaiKuliah//konstruktor dan destruktorNilaiKuliah::NilaiKuliah(){

    strcpy(Nama, " ");}

    NilaiKuliah::~NilaiKuliah(){}

    //definisi layananchar *NilaiKuliah::StatusLulus() {

    if ((NT.NilaiAkhir()>=60)&&(NP.NilaiRata2()>=60))return ("Lulus");

    else if((NT.NilaiAkhir()>=60)||(NP.NilaiRata2()>=60))return ("Her");

    elsereturn ("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());}

  • 7/26/2019 Mod Oop With Cpp

    43/43

    Univers i tas Informat ika dan Bisn is Indon esia

    Buat program utama yang menggunakan kelas-kelas yang ada

    #include #include #include

    #include "uts.cpp"

    void main() {//deklarasi objekNilaiKuliah 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();

    }