Friend Function dan Friend Class Pada C++

Friend Function dan Friend Class Pada C++ -- Friend adalah suatu fungsi atau kelas yang diizinkan mengakses suatu atribut maupun metode satu atau lebih dengan class lain yang menjadi temannya, walaupun atribut dan metode yang diakses tersebut memiliki izin akses private atau protected.

Friend ini sebenarnya melanggar aturan  dari pemrograman berorientasi objek tentang enkapsulasi, dimana izin akses private dan protected yang tidak sembarang bisa diakses oleh kelas lain, walaupun begitu tujuan friend adalah unyuk memudahkan programmer untuk merancang kelas-kelas yang akan dibuat, terutama dalam tahap pengembangan.

1. Friend Function

Friend Function adalah suatu fungsi di luar kelas yang dapat mengakses semua sumber yang terdapat di dalam class. Maksud sumber disini yaitu function member dan data member. Untuk mendeklarasikan friend function, kita bisa menggunakan keyword 'friend' dan Deklarasikan prototype dari friend function di class yang public.

Ciri- ciri Friend Function : 
  • Sysntax untuk friend function : friend return_type function_name(); contoh friend void cetakNilai( int nilai);. identifier friend hanya digunakan pada pendeklarasian fungsi tidak pada pendefenisian fungsi.
  • Fungsi dapat dipanggil tanpa menggunakan object dari suatu class
  • Friend function dapat memiliki identier public atau private
Untuk lebih jelas perhatikan contoh Friend Function Pada Class di C++ berikut ini, program ini seperti biasa menggunakan program Microsoft Office Studio 2013 :

// FriendFunction.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>
using namespace std;

class CCube
{
public:

explicit CCube(double panjang = 1.0, double lebar = 2.0, double tinggi = 3.0) : m_panjang(panjang), m_lebar(lebar), m_tinggi(tinggi)
{
}

double volume()
{
return m_panjang*m_lebar*m_tinggi;
}

private:
double m_panjang;
double m_lebar;
double m_tinggi;

friend double luas_muka(const CCube& aCube);
};

double luas_muka(const CCube& aCube)
{
return 2.0*(aCube.m_panjang*aCube.m_lebar+aCube.m_panjang*aCube.m_tinggi+aCube.m_lebar*aCube.m_tinggi);
};

int _tmain(int argc, _TCHAR* argv[])
{
CCube balok1(10, 20, 30);

double volume1;

volume1 = balok1.volume();

cout << endl << "Volume Balok = " << volume1 << " m3" << endl;
cout << "Luas Permukaan = " << luas_muka(balok1) << " m2" << endl;
cout << "www.bantubelajar.com\n" << endl;
return 0;
}

Klik Debug => Start Without Debugging atau Kombinasi keyboard Ctrl + F5 dan hasilnya akan seperti ini :

Friend Function

2. Friend Class

Friend Class adalah kelas yang suatu fungsi dan anggotanya merupakan fungsi friend dari classnya, sehingga dapat mengakses walaupun memiliki izin akses private dan protected. Ciri- ciri  Friend Class : 
  • Friend class hanya bersifat satu arah.
  • Syntax: friend class X; dan dapat dituliskan pada bagian mana saja dari class yang akan menjadi friend.
  • Previledge dari friend class tidak di- diturunkan
Untuk lebih jelas perhatikan contoh Friend Function Pada Class di C++ berikut ini, program ini seperti biasa menggunakan program Microsoft Office Studio 2013 :

// FriendFunction.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>
using namespace std;

class CSquare;

class CRectangle {
int width, height;
public:
int area()
{
return (width * height);
}
void convert(CSquare a);
};

class CSquare {
private:
int side;
public:
void set_side(int a)
{
side = a;
}
friend class CRectangle;
};

void CRectangle::convert(CSquare a) {
width = a.side;
height = a.side;
}

int _tmain(int argc, _TCHAR* argv[])
{
CSquare sqr;
CRectangle rect;
sqr.set_side(5);
rect.convert(sqr);
cout << rect.area() << endl;
cout << "www.bantubelajar.com" << endl;
return 0;
}

Klik Debug => Start Without Debugging atau Kombinasi keyboard Ctrl + F5 dan hasilnya akan seperti ini :

Friend Class

Itulah penjelasan mengenai Friend Function dan Friend Class Pada C++. Semoga bermanfaat.