1 / 18

Nesting object dan friend Pertemuan 19

Nesting object dan friend Pertemuan 19. Matakuliah : T0456 / Algoritma dan Metode Object Oriented Programming Tahun : 2007. Learning Outcomes. Pada akhir pertemuan ini, diharapkan: Mahasiswa dapat menjelaskan kapan menggunakan konsep friend pada suatu class dan function.

trinh
Download Presentation

Nesting object dan friend Pertemuan 19

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Nesting object dan friendPertemuan 19 Matakuliah : T0456 / Algoritma dan Metode Object Oriented Programming Tahun : 2007

  2. Learning Outcomes Pada akhir pertemuan ini, diharapkan: Mahasiswa dapat menjelaskan kapan menggunakan konsep friend pada suatu class dan function. Buku Referensi: • C++ - How to program, Deitel & Deitel, Prentice Hall, 2001. Websites: • http://www.deitel.com 3

  3. Outline Materi • Friend of functions • Friend of class • Nesting of object • Contoh program 4

  4. Keyword Friend • Tujuan utama dari PBO adalah pengkapsulan data dan fungsi dalam suatu class untuk mehindarkan akses data yang tidak berhak. • Pengkapsulan pada object yang kompleks terkadang sulit dilakukan, sehingga seperti dalam dunia nyata, adakalanya aturan menjadi dilanggar. • Friend memungkinkan pihak di luar class mengakses anggota class (termasuk yang bersifat private).

  5. Friend lanjutan … • Friend di satu pihak dapat menyederhanakan kompleksitas suatu object, tetapi dipihak lain juga dapat meruntuhkan konsep pengkapsulan (jika terlalu banyak digunakan). • Oleh karena itu pemakaian friend harus digunakan seperlunya pada tempat yang tepat. • Saran dari Robert lafore: “Jika anda menemukan bahwa anda terlalu banyak menggunakan friend, mungkin anda perlu merombak rancangan program”. Greg Pery mengatakan: “ jika kelas friend terlalu banyak digunakan, mungkin diperlukan untuk mengkombinasikan kelas-kelas menjadi sebuah kelas.

  6. Anggota Fungsi Friend Fungsi Friend (friend function) • Fungsi friend adalah fungsi yang bukan anggota class yang dapat mengakses anggota class (termasuk yang private). Class Dapat mengakses anggota class

  7. Contoh Program // program C++ dengan fungsi friend #include <constream.h> #include <string.h> class MHS { private: long NIM; char Nama[20]; char jurusan[10]; public: MHS(); void Inisialisasi(long nim, char *nm, char *jur); friend void DisplayData( MHS m1 ); };

  8. void main() { MHS mahasiswa; mahasiswa.Inisialisasi(0302201, “amir”, “TI”); DisplayData(mahasiswa); } //definisi fungsi anggota: MHS::MHS() { NIM = 0; strcpy(Nama, “”); strcpy(jurusan, “”); }

  9. void MHS:: Inisialisasi(long nim, char *nm, char *jur) { MHS::NIM = nim; strcpy(MHS::Nama, nm); strcpy(MHS::jurusan, jur); } // Definisi fungsi friend void DisplayData( MHS m1 ) { cout << “NIM : “ << m1.NIM << endl; cout << “Nama : “ << m1.Nama << endl; cout << “Jurusan : “ << m1.jurusan << endl; }

  10. Class Friend // Program C++ dengan class friend #include <constream.h> class Harga { private: long int hargaNormal; public: Harga() : hargaNormal(180000) { } friend class HargaTeman; }; class HargaTeman { private: Harga biaya; public: void infoHarga(); };

  11. void HargaTeman::infoHarga() { cout << “Harga sebelum diskon: “ << biaya.hargaNormal << endl; cout << “Harga sesudah diskon: “ << (0.5*biaya.hargaNormal) << endl; } void main(){ HargaTeman ongkosKereta; ongkosKereta.infoHarga(); }

  12. Nesting object (Object bersarang) • Sebuah class dapat mempunyai object dari class lain sebagai data member. • Sebagai contoh di bawah sebuah class ComplexFrac didefinisikan dengan menggunakan object dari class Fraction, data member dari class ComplexFrac adalah object dari class Fraction.

  13. Numerator Denumerator Nesting object (Object bersarang) Fraction. ComplexFrac re Numerator Denumerator lm Contructor Print() Numerator Denumerator Contructor Print()

  14. Nesting object (Object bersarang) • Relasi antara Fraction dan ComplexFrac disebut relasi aggregation atau whole-part, Dalam hal ini ComplexFrac has a Fraction. (sebenarnya 2 fraction) • Class ComplexFrac harus menyediakan contructor dari object anggota (re, im) dengan argumen yang diperlukan. • Object anggota dikontruksi lebih dulu pada saat dideklarasikan kemudian baru kelas ComplexFrac. • Pada saat object ComplexFrac keluar scope destructor dipanggil sebaliknya.

  15. Contoh Program class Fraction { int numerator, denumerator; Public: Fraction(int, int); void Print() const; }; Fraction::Fraction(int num, int denum) { numerator = num; if (denum == 0) denumerator = 1; else denumerator = denum; cout << “contructor of fraction” << endl; } void Fraction::Print() const { cout << numerator << “/” << denumerator << endl; }

  16. class ComplexFrac { Fraction re, im; public: ComplexFrac(int, int); void Print(); }; ComplexFrac::ComplexFrac(int re_in, int im_in) : re(re_in, 1), im(im_in, 1) { } Void ComplexFrac::Print() { Re.Print(); Im.Print(); } void main() { ComplexFrac cf(2, 5); cf.Print(); }

  17. Diskusi dan Tanya JawabLatihan soal 18

More Related