1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Lập trình hướng đối tượng C++‎ - Chương 6: Hàm bạn và lớp bạn

9 9 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 9
Dung lượng 574,72 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Bài giảng Lập trình hướng đối tượng C++‎ - Chương 6: Hàm bạn và lớp bạn cung cấp cho người học những kiến thức như: Giới thiệu; Hàm độc lập là hàm bạn; Hàm thành viên là hàm bạn; Hàm bạn của nhiều lớp; Lớp bạn. Mời các bạn cùng tham khảo!

Trang 1

HÀM BẠN – LỚP BẠN

Chương 6

1

Trang 2

Nội dung

• Giới thiệu

• Hàm độc lập là hàm bạn

• Hàm thành viên là hàm bạn

• Hàm bạn của nhiều lớp

• Lớp bạn

Trang 3

Giới thiệu

• Tại sao cần hàm bạn?

3

class Diem {

int x, y;

public :

….

int GiaTriX()

{ return x; } };

class DuongTron {

Diem tam;

int bankinh;

public:

….

void InHoanhDoTam(){

cout<<tam.GiaTriX();}

};

Khai báo trong lớp Diem hàm sau:

friend void

DuongTron::InHoanhDoTam();

Muốn truy cập các thành phần private hay protected của 1 lớp

từ bên ngoài của lớp

phải thiết kế các hàm lấy giá trị dữ liệu thành

viên

Nếu số lượng các thành phần

dữ liệu trong lớp quá nhiều thiết kế hàm bạn (friend)

Trang 4

• Khái niệm hàm bạn

– Hàm bạn của 1 lớp là hàm có khả năng truy cập đến

các thành phần dùng riêng (dữ liệu và hàm) của lớp

đó

– Cú pháp: khai báo prototype của hàm trong lớp

muốn cho phép truy cập đó với từ khóa friend

class A {

int a1;

public :

Friend void HamDocLap(A);

Friend int B::HamThanhVien();

};

void HamDocLap(A x)

{ cout<<x.a1; }

class B {

int HamThanhVien(); };

int B::HamThanhVien() {

A y; … return y.a1;

Giới thiệu

Trang 5

Hàm độc lập là hàm bạn

• Hàm độc lập (không thuộc lớp nào) có thể được khai

báo là bạn của 1 lớp

• Chỉ cần khai báo tên hàm độc lập bên trong lớp

• Trong nội dung hàm độc lập, có thể truy cập bất kỳ

thành phần nào thuộc lớp đó

5

class Diem {

int x,y;

public :

friend int Trung(Diem, Diem);

};

int Trung(Diem a, Diem b){

if (a.x==b.x && a.y==b.y) return 1;

else

return 0;

}

Trang 6

Hàm độc lập là hàm bạn

class PhanSo {

int tu, mau;

public :

friend int SoSanhBang (PhanSo,PhanSo);

};

int SoSanhBang(PhanSo a, PhanSo b){

if (a.tu*b.mau== b.tu*a.mau) return 1;

else

return 0;

}

Trang 7

Hàm thành viên là hàm bạn

• Hàm thành viên của 1 lớp có thể được khai báo là bạn

của 1 lớp khác

• Chỉ cần khai báo <Tên lớp>::<Tên hàm thành viên>

bên trong lớp cần truy cập

• Trong nội dung hàm thành viên, có thể truy cập bất kỳ

thành phần nào thuộc lớp đã khai báo

7

class DoanThang;

class Diem {

int x,y;

public :

friend float

DoanThang::ChieuDai();

};

class DoanThang {

Diem d1, d2;

public :

float ChieuDai() { sqrt(

pow((d1.x - d2.x),2) +

pow((d1.y - d2.y),2)); }

};

Trang 8

Hàm bạn của nhiều lớp

Hàm bạn đã phá vỡ tính bao gói của OOP => không lạm dụng

class B;

class A {

friend void B::F();

friend int F1(A, B);

… };

class B {

friend int F1(A , B);

… };

void B::F(){ … }

int F1(A x, B y) { … }

Lớp có 2 hàm bạn

Hàm F1(…) là bạn của 2 lớp A và B

• Một lớp có thể có nhiều hàm bạn (độc lập hay hàm thành viên của lớp khác)

• Một hàm (độc lập hay hàm thành viên) có thể là bạn của nhiều lớp

Trang 9

Lớp bạn (friend class)

9

Khi muốn khai báo tất cả

các hàm thành viên của

lớp A là bạn của lớp B

Khai báo A là

lớp bạn của

lớp B

class DuongTron;

class Diem {

int x,y;

public :

friend class

DuongTron;

}:

class DuongTron {

Diem tam;

int bankinh;

public :

DuongTron( int x1, int y1, int bk) {tam.x = a; tam.y = y1; bankinh = bk;

}

void Ve() { cout << “(“ << tam.x << “,”

<< tam.y <<“,”

<< bankinh << “)”;

} };

Ngày đăng: 19/08/2021, 14:52

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm