Bài giảng Lập trình hướng đối tượng trong C++ - Phạm Thị Quỳnh - Chương 4: Đối tượng và lớp (Phần 1)
Lớp trong C++ cho phép người lập trình tự định nghĩa các kiểu dữ liệu phức tạp (user-defined types) và được sử dụng tương tự như kiểu dữ liệu có sẵn (built-in data types).
Lớp thường được sử dụng để định nghĩa các vấn đề trừu tượng như: số phức, ngày tháng, vector
Lớp cho phép tách rời phần cài đặt (implementation) và phần giao diện (interface).
CHƯƠNG 4: ĐỐI TƯỢNG & LỚP (I) Khái niệm cơ bản về lớp 1. Định nghĩa lớp Lớp trong C++ cho phép người lập trình tự định nghĩa các kiểu dữ liệu phức tạp (user-defined types) và được sử dụng tương tự như kiểu dữ liệu có sẵn (built-in data types). Lớp thường được sử dụng để định nghĩa các vấn đề trừu tượng như: số phức, ngày tháng, vector … Lớp cho phép tách rời phần cài đặt (implementation) và phần giao diện (interface). Định nghĩa lớp … Một lớp có chứa dữ liệu (member data) và hàm (member function). Điều khiển truy nhập Khai báo lớp class class_name { access_specifier_1: member1; access_specifier_2: member2; ... }; private members chỉ được truy nhập bởi các thành phần khác của lớp hoặc bạn của lớp. protected members được truy nhập bởi các thành phần khác của lớp, của lớp kế thừa hoặc bạn của lớp. public members được truy nhập ở mọi nơi mà đối tượng của lớp xuất hiện. Ví dụ: khai báo lớp class CRectangle { private: int x, y; public: void set_values (int,int); int area (); }; Cài đặt lớp int Crectangle::area () { return (x*y); } void CRectangle::set_values (int a, int b) { x = a; y = b; } Khai báo đối tượng int main () { CRectangle rect; // khai báo đối tượng rect của lớp CRectangle rect.set_values (3,4); // gọi hàm thành phần set_values() trên đối tượng rect cout để truy nhập đến các thành phần của đối tượng trỏ bởi con trỏ. Ví dụ: Con trỏ trỏ đến lớp class Crectangle { private: int width, height; public: void set_values (int, int); int area (); } void CRectangle::set_values (int a, int b) { width = a; height = b; } int CRectangle::area () { return (width * height); } int main () { CRectangle a, *b, *c; CRectangle * d = new CRectangle[2]; b= new CRectangle; c= &a; a.set_values (1,2); b->set_values (3,4); d->set_values (5,6); d[1].set_values (7,8); cout area() area() << endl; cout << "d[0] area: " << d[0].area() << endl; cout << "d[1] area: " << d[1].area() << endl; delete[] d; delete b; return 0; } Thành phần tĩnh Dữ liệu thành phần tĩnh Là thành phần dữ liệu có giá trị như nhau đối với tất cả các đối tượng của lớp. Sự tồn tại của dữ liệu thành phần tĩnh không phụ thuộc vào sự tồn tại của đối tượng thuộc lớp. Sau khi khai báo thành phần dữ liệu tĩnh ở trong lớp, phải khởi tạo giá trị cho nó ở bên ngoài lớp. Hàm thành phần tĩnh Dùng để truy nhập tới các dữ liệu thành phần tĩnh. Luôn được định nghĩa ở bên ngoài lớp Ví dụ: Thành phần tĩnh class CDummy { public: static int n; static void show(); CDummy () { n++; }; ~CDummy () { n--; }; }; int CDummy::n=0; void CDummy::show() { cout<<n; } int main () { CDummy a; CDummy b[5]; CDummy * c = new CDummy; cout << CDummy::n << endl; delete c; cout << CDummy::n << endl; CDummy::show(); return 0; }
File đính kèm:
- Bài giảng Lập trình hướng đối tượng trong C++ - Phạm Thị Quỳnh - Chương 4 Đối tượng và lớp (Phần 1).ppt