nesting object dan friend pertemuan 19

18

Upload: trinh

Post on 13-Jan-2016

30 views

Category:

Documents


1 download

DESCRIPTION

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. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Nesting object dan friend Pertemuan 19
Page 2: Nesting object dan friend Pertemuan 19

Nesting object dan friend Pertemuan 19

Matakuliah : T0456 / Algoritma dan Metode Object Oriented Programming

Tahun : 2007

Page 3: Nesting object dan friend Pertemuan 19

Bina Nusantara

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

Page 4: Nesting object dan friend Pertemuan 19

Bina Nusantara

Outline Materi

• Friend of functions• Friend of class• Nesting of object• Contoh program

4

Page 5: Nesting object dan friend Pertemuan 19

Bina Nusantara

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

Page 6: Nesting object dan friend Pertemuan 19

Bina Nusantara

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.

Page 7: Nesting object dan friend Pertemuan 19

Bina Nusantara

Fungsi Friend (friend function)

• Fungsi friend adalah fungsi yang bukan anggota class yang dapat mengakses anggota class (termasuk yang private).

Class

Anggota

Fungsi Friend

Dapat mengakses anggota class

Page 8: Nesting object dan friend Pertemuan 19

Bina Nusantara

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

};

Page 9: Nesting object dan friend Pertemuan 19

Bina Nusantara

void main() {

MHS mahasiswa;

mahasiswa.Inisialisasi(0302201,

“amir”, “TI”);

DisplayData(mahasiswa);

}

//definisi fungsi anggota:

MHS::MHS() {

NIM = 0;

strcpy(Nama, “”);

strcpy(jurusan, “”);

}

Page 10: Nesting object dan friend Pertemuan 19

Bina Nusantara

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;

}

Page 11: Nesting object dan friend Pertemuan 19

Bina Nusantara

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();

};

Page 12: Nesting object dan friend Pertemuan 19

Bina Nusantara

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();

}

Page 13: Nesting object dan friend Pertemuan 19

Bina Nusantara

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

Nesting object (Object bersarang)

Page 14: Nesting object dan friend Pertemuan 19

Bina Nusantara

ContructorPrint()

NumeratorDenumerator

Fraction. ComplexFrac

ContructorPrint()

NumeratorDenumerator

NumeratorDenumerator

re

lm

Nesting object (Object bersarang)

Page 15: Nesting object dan friend Pertemuan 19

Bina Nusantara

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

Nesting object (Object bersarang)

Page 16: Nesting object dan friend Pertemuan 19

Bina Nusantara

Contoh Programclass 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;

}

Page 17: Nesting object dan friend Pertemuan 19

Bina Nusantara

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();

}

Page 18: Nesting object dan friend Pertemuan 19

Bina Nusantara 18

Diskusi dan Tanya JawabLatihan soal