Danh mục

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

Số trang: 9      Loại file: pdf      Dung lượng: 574.72 KB      Lượt xem: 11      Lượt tải: 0    
Thư viện của tui

Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

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!
Nội dung trích xuất từ tài liệu:
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 Chương 6HÀM BẠN – LỚP BẠN 1Nộ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 2Giới thiệu• Tại sao cần hàm bạn?class Diem { Muốn truy cập các thành phần int x, y; private hay protected của 1 lớp public: từ bên ngoài của lớp …. int GiaTriX() phải thiết kế các hàm { return x; } lấy giá trị dữ liệu thành}; viênclass DuongTron { Nếu số lượng các thành phần dữ liệu trong lớp quá nhiều Diem tam; int bankinh; public: thiết kế hàm bạn (friend) …. Khai báo trong lớp Diem hàm sau: void InHoanhDoTam(){ friend void coutGiới thiệu• 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 { class B { int a1; … public : int HamThanhVien(); … }; Friend void HamDocLap(A); Friend int B::HamThanhVien(); int B::HamThanhVien()}; {void HamDocLap(A x) A y; … { coutHà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 đó. 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; } 5Hà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; } 6Hà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 :: 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. class DoanThang { Diem d1, d2; public:class DoanThang; …class Diem { float ChieuDai() { int x,y; sqrt( public: pow((d1.x - d2.x),2) … + friend float pow((d1.y - d2.y),2)); DoanThang::ChieuDai(); }}; }; 7Hàm bạn của nhiều lớp • 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.Hàm bạn đã phá vỡ tính bao gói của OOP => không lạm dụng. class B; class B { class A { … … void F(); friend void B::F(); friend int F1(A , B); friend int F1(A, B); … … }; }; void B::F(){ … } Lớp có 2 hàm bạn int F1(A x, B y) { … } Hàm F1(…) là bạn của 2 lớp A và B 8Lớp bạn (friend class) Khi muốn khai báo tất cả Khai báo A là các hàm thành viên của lớp bạn của lớp A là bạn của lớp B lớp Bclass DuongTron; class DuongTron {class Diem { Diem tam; int x,y; int bankinh; public: public: ... ... DuongTron(int x1, int y1, int bk) friend class {tam.x = a; tam.y = y1; bankinh = bk;DuongTron; } }: void Ve() { cout ...

Tài liệu được xem nhiều: