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. Constructor selalu instance 2. Method bisa static atau instance 3. Variabel/property bisa static atau instance 4. 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 ALGORITMA/DESKRIPSI KONSTRUKTOR Jurusan= Jurusan Print (Jurusan) KAMUS/DEKLARASI VARIABEL DESTRUKTOR - ALGORITMA/DESKRIPSI DESTRUKTOR Jurusan= Jurusan Print (Jurusan) ALGORITMA/DESKRIPSI DESTRUKTOR Jurusan= Jurusan Print (Jurusan) KAMUS/DEKLARASI VARIABEL jurusan[20] = char ALGORITMA/DESKRIPSI Private : class INFORMATIKA {Jurusan [20]} Public : class INFORMATIKA {INFORMATIKA (*Jurusan), ~INFORMATIKA} INFORMATIKA R ( R ) INFORMATIKA S ( S ) INFORMATIKA T ( T )
Contoh : 1 Algoritma (obyek lokal) (SISYLIA.P, MUSI.H, REZKY.R, WAHYU.H 1. mendefinisikan class ( class INFORMATIKA { jurusan 120} ) dengan penentu akses secara private 2. mendefinisikan class ( class INFORMATIKA { INFORMATIKA (*jurusan ), ~INFORMATIKA () } )dengan penentu akses secara public 3. membuat konstruktor INFORMATIKA (*jurusan) dengan penentu akses secara public 4. pengaksesan konstruktor INFORMATIKA ( jurusan = jurusan ) 5. mencetak konstruktor INFORMATIKA (jurusan) 6. membuat destruktor ~INFORMATIKA () dengan penentu akses secara public 7. pengaksesan destruktor ~IINFORMATIKA() (jurusan=jurusan) 8. Mencetak ( jurusan ) 9. Definisi objek ( INFORMATIKA R ( R )) dengan format objek secara global 10. mencetak, menjalankan perintah fungsi main () 11. definisi objek ( INFORMATIKA S ( S ) ) dengan format objek secara local 12. definisi objek ( INFORMATIKA T ( T ) ) dengan format objek secara local 13. mencetak, mengakhiri perintah fungsi main ( ) 14. 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 ALGORITMA/DESKRIPSI KONSTRUKTOR jurusan=jurusan print(jurusan) KAMUS/DEKLARASI DESTRUKTOR - ALGORITMA/DESKRIPSI DESTRUKTOR jurusan=jurusan Print(jurusan) KAMUS/DEKLARASI VARIABEL jurusan [20] = char ALGORITMA/DESKRIPSI private: class INFORMATIKA{jurusan[20]} public: class INFORMATIKA{INFORMATIKA(*jurusan),( ~INFORMATIKA ( ))} INFORMATIKA R ( R ) INFORMATIKA S ( S ) INFORMATIKA T ( T ) exit(1)
Contoh : 2 Algoritma (Vivi, nurfa, yadi) 1. Deklarasi class (class INFORMATIKA{jurusan[20]}) dengan penentu akses private 2. Deklarasi class (class INFORMATIKA{~INFORMATIKA(*jurusan)}) dengan penentu akses public 3. Membuat konstruktor INFORMATIKA (*jurusan) dengan penentu akses public 4. Pengaksesan konstruktor INFORMATIKA (*jurusan)= jurusan 5. Mecetak konstruktor INFORMATIKA (jurusan) 6. Membuat desstruktor ~INFORMATIKA () dengan penentu akses public 7. Pengakssan destruktor destruktor ~INFORMATIKA() = jurusan 8. Mencetak destruktor ~INFORMATIKA() 9. Definisi objek global INFORMATIKA R ( R ) 10. Definisi objek lokal INFORMATIKA S ( S ) 11. Definisi objek lokal INFORMATIKA T ( T ) 12. Mengakhiri program exit(1) 13. 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