nesting object dan friend pertemuan 19

Post on 13-Jan-2016

30 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

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

Nesting object dan friend Pertemuan 19

Matakuliah : T0456 / Algoritma dan Metode Object Oriented Programming

Tahun : 2007

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

Bina Nusantara

Outline Materi

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

4

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

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.

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

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

};

Bina Nusantara

void main() {

MHS mahasiswa;

mahasiswa.Inisialisasi(0302201,

“amir”, “TI”);

DisplayData(mahasiswa);

}

//definisi fungsi anggota:

MHS::MHS() {

NIM = 0;

strcpy(Nama, “”);

strcpy(jurusan, “”);

}

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;

}

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

};

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

}

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)

Bina Nusantara

ContructorPrint()

NumeratorDenumerator

Fraction. ComplexFrac

ContructorPrint()

NumeratorDenumerator

NumeratorDenumerator

re

lm

Nesting object (Object bersarang)

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)

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;

}

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

}

Bina Nusantara 18

Diskusi dan Tanya JawabLatihan soal

top related