ALGORITMA DAN PEMROGRAMAN 2
3 SKS
By : Sri Rezeki Candra Nursari
MATERI Teks/string Pointer File Struktur Kelas/Class Konstruktor dan Destruktor • Kelas dan Obyek • • • • • •
Overloading Operator Inheritance (Pewarisan) Polimorfisme Template Fungsi dan Kelas • Sort • Search • • • •
KELAS DAN OBYEK Pertemuan 09
3 SKS
Class & Obyek • Class adalah suatu cara untuk membuat tipe data yang baru • Mengapa butuh tipe data baru, agar aplikasinya source code lebih mudah dibaca • Dari tipe data akan dibuat variabel
Class & Obyek • Variabel adalah tempat untuk data • Class dengan obyek duluan class nya • Instance adalah kata lain dari obyek atau instance miliknya obyek
Class & Obyek Static adalah variabel miliknya si class atau static variebel miliknya class nilai akan berubah kesemua instance Didalam class kita dapat :
1. 2. 3. 4.
Constructor selalu instance Method bisa static atau instance Variabel/property bisa static atau instance Buat class didalam class biasa disebut Inner Class
Class & Obyek • Constructor selalu instance • Constructor dan method ada overloading argumen atau parameter nya berbeda (yang berbeda bisa jumlah, tipe data, urutan), tetapi namanya bisa sama
Class & Obyek • Macam-macam method – method(); – method(Int x, Int y); – method(String x, String y) – method(Integer y, String x )
Class & Object • Didalam class bisa mennggunakan banyak konstruktor • Contoh : • Mahasiswa m1 = new Mahasiswa(); Constructor
Obyek • Terdiri dari 2, yaitu : 1. Obyek Lokal 2. Obyek Global
1. Obyek Lokal • Merupakan suatu obyek yang didefinisikan di luar fungsi • Konstruktor dijalankan saat obyek bersangkutan di ciptakan • Destruktor dijalankan dengan sendirinya saat fungsi yang mendefinisikannya berakhir
Obyek Lokal Contoh Soal 01: Menampilkan konstruktor dan destruktor pada variabel R,S,T
Program contoh 01
Algoritma.........????? Pseudocode.......?????? Aturan : 1. tuliskan kelompok Anda a. Siapa yang menulis di kertas b. Siapa yang nulis di komputer c. Siapa yang presentasi d. Siap yang nulis dipapan tulis
Obyek Lokal …….. Contoh 1 (rizki firmanda, ringga candra,putri,rizki candra
PSEUDOCODE : Algoritma Obyek Lokal KAMUS/DEKLARASI VARIABEL KONSTRUKTOR *Jurusan=char
KAMUS/DEKLARASI VARIABEL jurusan[20] = char
ALGORITMA/DESKRIPSI KONSTRUKTOR Jurusan= Jurusan Print (Jurusan)
ALGORITMA/DESKRIPSI Private : class INFORMATIKA {Jurusan [20]} Public : class INFORMATIKA {INFORMATIKA (*Jurusan), ~INFORMATIKA} INFORMATIKA R (“”R”) INFORMATIKA S (“S”) INFORMATIKA T (“T”)
KAMUS/DEKLARASI VARIABEL DESTRUKTOR ALGORITMA/DESKRIPSI DESTRUKTOR Jurusan= Jurusan Print (Jurusan)
ALGORITMA/DESKRIPSI DESTRUKTOR Jurusan= Jurusan Print (Jurusan)
Contoh : 1 – Algoritma (obyek lokal) (SISYLIA .P , MUSI.H , REZKY.R , WAHYU.H
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
mendefinisikan class ( class INFORMATIKA { jurusan 120} ) dengan penentu akses secara private mendefinisikan class ( class INFORMATIKA { INFORMATIKA (*jurusan ), ~INFORMATIKA () } )dengan penentu akses secara public membuat konstruktor INFORMATIKA (*jurusan) dengan penentu akses secara public pengaksesan konstruktor INFORMATIKA ( jurusan = jurusan ) mencetak konstruktor INFORMATIKA (jurusan) membuat destruktor ~INFORMATIKA () dengan penentu akses secara public pengaksesan destruktor ~IINFORMATIKA() (jurusan=jurusan) Mencetak ( jurusan ) Definisi objek ( INFORMATIKA R ( “ R “ )) dengan format objek secara global mencetak , menjalankan perintah fungsi main () definisi objek ( INFORMATIKA S ( “ S “ ) ) dengan format objek secara local definisi objek ( INFORMATIKA T ( “ T “ ) ) dengan format objek secara local mencetak, mengakhiri perintah fungsi main ( ) selesai
2. Obyek Global • • • •
Merupakan suatu obyek yang didefinisikan secara global Konstruktor dijalankan saat awal eksekusi program, yaitu sebelum fungsi main() di proses Destruktor dijalankan saat fungsi main() berakhir Apabila ada exit() destruktor obyek global akan dijalankan terlebih dahulu, tetapi destruktor obyek lokal tidak akan dieksekusi
Obyek Global Contoh Soal 02: Menampilkan konstruktor dan destruktor pada variabel R,S,T dengan menambahkan perintah exit()
Program contoh 02
Algoritma.........????? Pseudocode.......??????
Contoh 2 (mufi, yunus, rara, ines) PSEUDOCODE : KAMUS/DEKLARASI VARIABEL KONSTRUKTOr *Jurusan = char
KAMUS/DEKLARASI VARIABEL jurusan [20] = char
ALGORITMA/DESKRIPSI private: class ALGORITMA/DESKRIPSI KONSTRUKTOR INFORMATIKA{jurusan[20]} jurusan=jurusan public: class print(jurusan) INFORMATIKA{INFORMATIKA(*jurusan),( ~INFORMATIKA ( ))} KAMUS/DEKLARASI DESTRUKTOR INFORMATIKA R (“R”) INFORMATIKA S (“S”) ALGORITMA/DESKRIPSI INFORMATIKA T (“T”) DESTRUKTOR exit(1) jurusan=jurusan Print(jurusan)
Contoh : 2 – Algoritma (Vivi, nurfa, yadi) 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Deklarasi class (class INFORMATIKA{jurusan[20]}) dengan penentu akses private Deklarasi class (class INFORMATIKA{~INFORMATIKA(*jurusan)}) dengan penentu akses public Membuat konstruktor INFORMATIKA (*jurusan) dengan penentu akses public Pengaksesan konstruktor INFORMATIKA (*jurusan)= jurusan Mecetak konstruktor INFORMATIKA (jurusan) Membuat desstruktor ~INFORMATIKA () dengan penentu akses public Pengakssan destruktor destruktor ~INFORMATIKA() = jurusan Mencetak destruktor ~INFORMATIKA() Definisi objek global INFORMATIKA R (“R”) Definisi objek lokal INFORMATIKA S (“S”) Definisi objek lokal INFORMATIKA T (“T”) Mengakhiri program exit(1) Selesai
Menyimpan kelas dan fungsi anggota pada file tersendiri • Apabila class digunakan untuk sejumlah program, maka class harus – dideklarasikan pada file tersendiri •
Didefinisikan fungsi-fungsi anggotanya
• File header bisa kita buat sendiri • Caranya dengan memisahkan pendefinisian kelas kedalam suatu file tersendiri yaitu file .H
Menyimpan kelas dan fungsi anggota pada file tersendiri • Definisi fungsi anggota juga dimasukkan kedalam file .H ini • File .H ini kemudian disimpan di folder BC31\Include atau disimpan pada tempat lain • Penulisan file header: - #include “matkul.h” jika file disimpan di folder Include
- #include “d:\matkul.h” jika file disimpan ditempat lain, misal di drive d:
Class dan Obyek Contoh Soal 03: Buat header untuk deklarasi kelas majalah Buat file untuk mendefinisikan fungsi-fungsi anggota dari class majalah Menampilkan majalah dengan menggunakan class yang di deklarasikan pada file header majalah.h
Program contoh 03
Program contoh 03
Algoritma.........????? Pseudocode.......??????
Obyek Sebagai Parameter • Ada 3 kemungkinan melewatkan obyek sebagai parameter: 1. Melewatkan obyek berdasarkan nilai (passing parameter by value) 2. Melewatkan obyek sebagai referensi (passing parameter by reference) 3. Melewatkan obyek sebagai pointer
1. Melewatkan Obyek Berdasarkan Nilai • Definisi fungsi void lihat_matkul(Matkul matakuliah) { matakuliah.lihat_data(); } • Pemanggilan Matkul jur_it; lihat_matkul(jur_it);
2. Melewatkan Obyek Sebagai Referensi • Definisi fungsi void lihat_matkul(Matkul &matakuliah) { matakuliah.lihat_data(); } • Pemanggilan Matkul jur_ti; lihat_matkul(jur_ti);
3. Melewatkan Obyek Sebagai Pointer • Definisi fungsi (cara 1) void lihat_matkul(Matkul *matakuliah) { (*matakuliah).lihat_data(); }
• Definisi fungsi (cara 2) void lihat_matkul(Matkul *matakuliah) { matakuliah->lihat_data(); }
• Pemanggilan Matkul jur_ts; lihat_matkul(&jur_ts)
Array Obyek • Suatu array juga bisa mempunyai elemen berupa obyek • Sintaks: NamaKelas NamaObyek[jumlah_data]; Contoh: Matkul data_matakuliah[10]; • Inisialisasi: Matkul data_matakuliah[2] = { {Matkul(“PBO”, 3, ‘A’)}, //Matkul : nama konstruktor {Matkul(“Prak PBO”, 2, ‘B’)} };
Nilai Balik Berupa Obyek • Sebuah fungsi dapat menggunakan obyek sebagai tipe nilai balik • Sintaks: TipeNilaiBalik NamaFungsi(TipeData NamaVariabel) Contoh: Matkul IsiData(char *nama_mk, int sks_mk, char nilai_mk);
Pointer ke Fungsi Anggota • Fungsi anggota dapat diakses melalui pointer • Sintaks: TipeNilaiBalik (NamaKelas::*NamaPointer) (Parameter, …); • TipeNilaiBalik dan Parameter dari pointer tergantung pada tipe nilai balik dan parameter dari fungsi yang akan diakses • Contoh: Class Contoh { public: void FContoh1() {cout << “tes”;} int FContoh2(int x, int y) {return(x+y);} };
Pointer ke Fungsi Anggota • Pointer ke fungsi dengan nilai balik void dan tidak mempunyai parameter: - Deklarasi: void (Contoh::*ptr_contoh1) (); - Mengakses fungsi FContoh1 dengan pointer: ptr_contoh1 = &Contoh::FContoh1; - Menjalankan fungsi yang ditunjuk oleh pointer: (x.*ptr_contoh1)(); x adalah nama obyek
Pointer ke Fungsi Anggota • Pointer ke fungsi dengan nilai balik int dan dua parameter bertipe int: - Deklarasi: int (Contoh::*ptr_contoh2) (int, int); - Mengakses fungsi FContoh2 dengan pointer: ptr_contoh2 = &Contoh::FContoh2; - Menjalankan fungsi yang ditunjuk oleh pointer: (x.*ptr_contoh2)(2,3); x adalah nama obyek