Hướng đối tượng - Lớp và đối tượng

20 447 0
Hướng đối tượng - Lớp và đối tượng

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Hướng đối tượng - Lớp và đối tượng

LỚP ĐỐI TƯỢNGI.I. Cài đặt lớp tạo thực thểCài đặt lớp tạo thực thểDùng từ khóa Dùng từ khóa classclass. . class class class_nameclass_name {{ permission_label_1permission_label_1: : member1member1;; permission_label_2permission_label_2: : member2member2;; . } . } object_nameobject_name;; Trong đó :Trong đó :class_name:class_name: Tên của lớp. Tên của lớp. object_nameobject_name là một hoặc nhiều danh biểu xác định là một hoặc nhiều danh biểu xác định đối tượng (object) đối tượng (object) (thực thể instance).(thực thể instance). members:members: dữ liệu hoặc phát biểu hàm dữ liệu hoặc phát biểu hàmpermission labels: permission labels: (tùy chọn) có thể là các từ khóa(tùy chọn) có thể là các từ khóa: : private:private:, , public:public: hoặc hoặc protected:protected:. Nhằm xác định quyền truy cập các members liên quan. Nhằm xác định quyền truy cập các members liên quanThiếu dấu ” ;” này sẽ bị những thông báo lỗi rất khó hiểu! LỚP ĐỐI TƯỢNGThuộc tính truy cậpThuộc tính truy cậpprivate:private: members của class chỉ có thể members của class chỉ có thể truy xuất bởi các members khác thuộc truy xuất bởi các members khác thuộc cùng lớp hoặc từ các lớp "cùng lớp hoặc từ các lớp "friendfriend". ". protected:protected: members có thể truy xuất từ members có thể truy xuất từ các members khác thuộc cùng lớp hoặc các members khác thuộc cùng lớp hoặc từ các lớp "từ các lớp "friendfriend“, từ các members “, từ các members của các lớp dẫn xuất. của các lớp dẫn xuất. public:public: members truy xuất được từ bất cứ members truy xuất được từ bất cứ nơi nào thấy được class.nơi nào thấy được class. LỚP ĐỐI TƯỢNGCài đặt lớp tạo thực thểCài đặt lớp tạo thực thể Có sự khác biệt giữa khai báo theo kiểu Có sự khác biệt giữa khai báo theo kiểu lập trình hướng thủ tục hướng đối lập trình hướng thủ tục hướng đối tượng.tượng.Sử dụng toán tử phân giải phạm vi (scope Sử dụng toán tử phân giải phạm vi (scope resolution operator) resolution operator) : :: :Ví dụ Ví dụ 1 về lập trình kiểu thủ tục1 về lập trình kiểu thủ tụcVí dụ Ví dụ 2 về thiết kế Class Object (1) 2 về thiết kế Class Object (1)Ví dụ Ví dụ 3 về thiết kế Class Object (2) 3 về thiết kế Class Object (2)Ví dụ Ví dụ 4 về mảng các đối tượng (arrays of objects)4 về mảng các đối tượng (arrays of objects) LỚP ĐỐI TƯỢNGII.Phương thức thiết lập phương thức hủy bỏII.Phương thức thiết lập phương thức hủy bỏ(Constructors and Destructors)(Constructors and Destructors)Phương thức thiết lậpPhương thức thiết lập là phương thức sẽ được gọi một là phương thức sẽ được gọi một cách tự động khi đối tượng được khởi tạo.cách tự động khi đối tượng được khởi tạo.Trong C++ không cho phép khởi tạo dữ liệu trong khi khai Trong C++ không cho phép khởi tạo dữ liệu trong khi khai báo class vì vậy xây dựng constructor là rất cần thiết. báo class vì vậy xây dựng constructor là rất cần thiết. Thực chất constructor là một method InitThực chất constructor là một method Init Khai báo phương thức này bằng cú pháp:Khai báo phương thức này bằng cú pháp:Class class_name {member;… public:member;… ;class_name(void); // constructor here !} object_name;Ví dụ Ví dụ 55Lưu ý: không định nghĩa giá trị trả về cho method này LỚP ĐỐI TƯỢNGPhương thức thiết lậpPhương thức thiết lập(Constructors)(Constructors)Chuyển tham số cho constructorChuyển tham số cho constructorTrong nhiều trường hợp ta cần khởi tạo Trong nhiều trường hợp ta cần khởi tạo đối tượng với các tính chất được xác định đối tượng với các tính chất được xác định đặc biệt, khi đó cần chuyển một hoặc đặc biệt, khi đó cần chuyển một hoặc nhiều tham số cho constructor.nhiều tham số cho constructor.Có thể truyền tham số cho constructor Có thể truyền tham số cho constructor ngay trong khai báo class. ngay trong khai báo class. Ví dụ Ví dụ 5b5bCũng có thể truyền tham số cho Cũng có thể truyền tham số cho constructor khi khai báo object. constructor khi khai báo object. Ví dụ Ví dụ 5c5c LỚP ĐỐI TƯỢNGPhương thức hủy bỏ(Destructors)Phương thức hủy bỏPhương thức hủy bỏ là phương thức sẽ được là phương thức sẽ được gọi một cách tự động khi đối tượng bị hủy.gọi một cách tự động khi đối tượng bị hủy. Khai báo phương thức này bằng cú pháp:Khai báo phương thức này bằng cú pháp:Class class_name {member;… public:member;class_name(void); // Constructor here! … ;~class_name(void); // Destructor here !} object_name;Ví dụ Ví dụ 66Coi chừng ngã LỚP ĐỐI TƯỢNGPhân bổ bộ nhớ động Phân bổ bộ nhớ động Nhiều đối tượng cần được tạo ra trong thời gian Nhiều đối tượng cần được tạo ra trong thời gian chạy chương trình cần bị hủy (giải phóng chạy chương trình cần bị hủy (giải phóng khỏi bộ nhớ) khi đã hết nhiệm vụ.khỏi bộ nhớ) khi đã hết nhiệm vụ.Cú pháp Cú pháp cấp phát vùng nhớcấp phát vùng nhớ: : (datatype)(datatype) pointer_var = pointer_var = newnew datatype datatypeVí dụ:int *p;Student *sv_ptr; // Student là một classp = new int;sv_ptr = new Student; // Cấp phát độngVí dụ 8Tham khảo thêm về sử dụng bộ nhớ trong C++ LỚP ĐỐI TƯỢNGThu hồi bộ nhớ động Thu hồi bộ nhớ động Cú pháp Cú pháp thu hồi vùng nhớthu hồi vùng nhớ: : deletedelete pointer_var pointer_varVí dụ:int *ptr;Student *sv_ptr; // Student là một classptr = new int; // cấp phát vùng nhớ *p*ptr = 1276;cout << *ptr;delete ptr; // Thu hồi vùng nhớ *psv_ptr = new Student;…. // xử lí *sv_ptr ở đâydelete sv_ptr; LỚP ĐỐI TƯỢNGTham chiếu bộ nhớ động Tham chiếu bộ nhớ động KHÔNG DÙNG TOÁN TỬ (.) tham chiếu KHÔNG DÙNG TOÁN TỬ (.) tham chiếu đến các phương thức trong một đối tượng đến các phương thức trong một đối tượng được trỏ: vì toán tử này yêu cầu bên trái được trỏ: vì toán tử này yêu cầu bên trái nó là một đối tượng.nó là một đối tượng.PHẢI DÙNG TOÁN TỬ MŨI TÊN (->)PHẢI DÙNG TOÁN TỬ MŨI TÊN (->)Ví dụ:Student *Sv_ptr;Sv_ptr= new Student;Sv_ptr.hanhdong(); // SAISv_ptr->hanhdong(); //ĐÚNG LỚP ĐỐI TƯỢNGIII. Lớp thừa kếIII. Lớp thừa kế(Inheritance)(Inheritance)Một lớp con có thể thừa kế các thành phần (member) bao Một lớp con có thể thừa kế các thành phần (member) bao gồm data method của một lớp cha (base class)gồm data method của một lớp cha (base class)Lớp con có thể thêm các thành phần mới hoặc overwrite Lớp con có thể thêm các thành phần mới hoặc overwrite các member của siêu lớp.các member của siêu lớp. Khai báo:Class class_name: inheritance_type base_class {private data and function listpublic:public data and funtion list} object_list;Lớp cha (base classs):class animal { public: void eat(void) void sleep(void) void breathe(void) };Lớp con (derived class):class mouse : public animal {public: int tail(void) int fur(void)} jerry;Inheritance_type có thể là public, private hoặc protected [...]...LỚP ĐỐI TƯỢNG Thuộc tính kế thừa inheritance_ right có thể là: – public: Mọi thành phần private của lớp cha là private ở lớp con Mọi thành phần public của lớp cha là public ở lớp con – private: Mọi thành phần của lớp cha là private ở lớp con – protected: Ví dụ 7 LỚP ĐỐI TƯỢNG VI Con trỏ this Không nhất thiết dùng tên của đối tượng để truy cập các thành phần của của đối tượng trong... truy cập các thành phần của của đối tượng trong một hàm cũng là thành phần của đối tượng đó Để tham chiếu tường minh đến các thành phần của một đối tượng, các hàm thành phần của cùng đối tượng có thể truy cập đến một con trỏ đặc biệt: this Cú pháp: this -> member Ví dụ về sử dụng con trỏ this LỚP ĐỐI TƯỢNG VII Hàm lớp friend Khai báo hàm bao gồm khai báo kiểu giá trị trả về, tên hàm, số lượng... số khác nhau Ví dụ 9_4 • Quá tải constructor Ví dụ 9_5 LỚP ĐỐI TƯỢNG Hàm lớp friend Vì một hàm không thể là thành viên của cùng một lúc hai class nên ta cần một biện pháp sao cho một hàm có thể truy cập được các member private của một class mà nó không phải là thành viên Một hàm như thế sẽ được gọi là “Friend - bạn” của class LỚP ĐỐI TƯỢNG Hàm friend Chú ý: Một hàm friend khai báo trong một... cho mọi đối tượng thuộc class Cú pháp: static data_type static_var; Dữ liệu tĩnh phải được khởi tạo trước khi hàm main() bắt đầu: data_type class_name :: static_var=value; Ví dụ 11 LỚP ĐỐI TƯỢNG IX Lớp có phương thức tĩnh Tương tự dữ liệu tĩnh, phương thức tĩnh là các hàm toàn cục như các hàm thành viên khác của class Nó không phải là một phương thức thành viên của bất cứ đối tượng nào của lớp mà... của lớp beta trở thành friend của alpha Ví dụ: class beta; class alpha { Giờ đây get_data() có private: int data; thể truy cập dữ liệu của public: friend class beta; alpha }; class beta { public: void display(alpha d) {cout . khác biệt giữa khai báo theo kiểu lập trình hướng thủ tục và hướng đối lập trình hướng thủ tục và hướng đối tượng. tượng.Sử dụng toán tử phân giải phạm vi (scope. thisthisCú pháp: Cú pháp: this -& gt; memberthis -& gt; memberVí dụ về sử dụng con trỏ this LỚP VÀ ĐỐI TƯỢNGVII. Hàm và lớp friendVII. Hàm và lớp friendKhai báo hàm

Ngày đăng: 13/11/2012, 17:00

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan