intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Lập trình: Chương 4 - Vũ Song Tùng

Chia sẻ: _ _ | Ngày: | Loại File: PDF | Số trang:47

32
lượt xem
3
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bài giảng Lập trình chương 4 trang bị cho người học những kiến thức cơ bản về lớp và đối tượng như: Định nghĩa lớp, biến thành viên, hàm thành viên, kiểm soát truy nhập, hàm tạo và hàm hủy, hàm tạo bản sao, hàm toán tử gán,thành viên tĩnh, nạp chồng toán tử, khai báo friend.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Lập trình: Chương 4 - Vũ Song Tùng

  1. om .c Lập trình ng co an Chương 4: Lớp và đối tượng th o ng du u cu 2/10/2017 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  2. Nội dung  4.1 Khái niệm om  4.2 Định nghĩa lớp  4.3 Biến thành viên .c  4.4 Hàm thành viên ng  4.5 Kiểm soát truy nhập co  4.6 Bài tập phần 1 an  4.7 Hàm tạo và hàm hủy  4.8 Hàm tạo bản sao th ng  4.9 Hàm toán tử gán o du  4.10 Thành viên tĩnh u  4.11 Nạp chồng toán tử cu  4.12 Khai báo friend Chương 4: Lớp và đối tượng 2 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  3. 4.1 Khái niệm  Đối tượng là gì? om – Mô hình đại diện của một đối tượng vật lý: .c  Person, student, employee, employer  Car, bus, vehicle,… ng – Đối tượng logic co  Trend, report, button, window,… an  Một đối tượng có: th – Các thuộc tính ng – Trạng thái o du – Hành vi u – Căn cước cu – Ngữ nghĩa Chương 4: Lớp và đối tượng 3 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  4. Lớp là gì?  Là sự thực thi của các đối tượng có chung các thuộc om tính, hành vi, quan hệ, ngữ nghĩa. .c  Lớp là một kiểu dữ liệu mới có cấu trúc, trong đó việc ng truy nhập các biến thành viên được kiểm soát thông co qua các hàm thành viên.  Các dữ liệu của lớp  biến thành viên an th  Các hàm của lớp  hàm thành viên ng  Một biến của một lớp  một đối tượng o du u cu Chương 4: Lớp và đối tượng 4 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  5. 4.2 Định nghĩa lớp  Kiểu dữ liệu có cấu trúc om sruct Date{ //sử dụng void main(){ int day, month, year; .c Date d; }; set_date(d,32,13,2010); void set_date(Date& date,int d, int m, int y){ ng add_day(d,5); date.day = d; add_year(d,1); date.month = m; co d.month = 13; date.year = y; } } an void add_day(Date& date, int n){ th date.day += n; ... ng } Truy nhập biến void add_month(Date& date, int n) ){ o thành viên từ du date.month += n; ... bên ngoài } u cu void add_year(Date& date, int n) ){ date.year += n; } Chương 4: Lớp và đối tượng 5 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  6. Các vấn đề với struct  Truy nhập trực tiếp vào các biến thành viên của cấu trúc  không an toàn om Khi có sự thay đổi tên của các biến thành viên  .c  ng người sử dụng phải thay đổi lại mã chương trình ứng co dụng – Ví dụ: thay đổi lại cấu trúc Date an sruct Date{ th int d, m, y; ng }; o – Thì đoạn mã sau sẽ có lỗi không biên dịch du Date d; d.month = 10; u cu Chương 4: Lớp và đối tượng 6 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  7. Lớp hóa  Định nghĩa lớp Date Tên lớp om class Date{ int day; Biến thành viên .c int month; int year; ng public: Kiểm soát quyền co void set_date(int d, int m, int y){ truy nhập day = d; an month = m; year = y; th } int get_day() { return day; } Hàm thành viên ng int get_month() { return month; } o int get_year() { return year; } du void add_year(int n) ){ year += n; u } cu ... }; Chương 4: Lớp và đối tượng 7 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  8.  Sử dụng lớp Date Đối tượng om void main(){ Date d; .c d.set_date(1,1,2010); d.add_year(10); ng d.day = 10; //?? Có lỗi. co d.month = 10; //?? day, month, year là d.year = 2009;//?? các biến thành viên an int i = d.day;//?? int day = d.get_day(); của Date thuộc kiểu th int month = d.get_month(); không được phép int year = d.get_year(); ng truy nhập từ bên } ngoài (kiểu private) o du u cu Chương 4: Lớp và đối tượng 8 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  9.  Thay đổi tên biến thành viên của lớp om class Date{ //Sử dụng int d; void main{ .c int m; Date d; int y; d.set_date(1,1,2010); ng public: d.add_year(10); int day = d.get_day(); co void set_date(int _d, int _m, int _y){ d = _d; int month = d.get_month(); int year = d.get_year(); an m = _m; y = _y; } th } int get_day() { return d; } ng int get_month() { return m; } o int get_year() { return y; } du void add_year(int n) ){ year += n; Có sự khác biệt u } cu ... không? }; Chương 4: Lớp và đối tượng 9 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  10. 4.3 Biến thành viên  Khai báo biến thành viên của lớp class Date{ om int day,month, year; //khai báo tưng tự như cấu trúc .c ... }; ng  Mặc định các biến thành viên không truy nhập được từ bên co ngoài an Date d; th d.day = 10;; //Lỗi, vì biến thành viên day của Date thuộc kiểu private ng  Có thể cho phép biến thành viên truy nhập từ bên ngoài bằng o du cách chuyển thành biến public. Tuy nhiên, ít khi sử dụng như vậy vì không còn che giấu dữ liệu u cu class Date{ public: int day,month, year; //truy nhập được từ bên ngoài ... }; Chương 4: Lớp và đối tượng 10 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  11.  Truy nhập các biến thành viên thông qua các hàm thành viên class Date{ int day, month,year; om public: Hàm thành viên int get_day() { return day; } để truy nhập biến .c void set_day(int d){ day = d; } thành viên }; ng co  Khởi tạo biến thành viên thông qua hàm tạo class Date{ an int day, month,year; th public: ng Date(int d, int m, int y){ //hàm tạo o day = d; month = m; year = y; du } u ... cu }; Chương 4: Lớp và đối tượng 11 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  12. 4.4 Hàm thành viên  Khai báo và định nghĩa hàm thành viên class Date{ om int day, month,year; .c public: Khai báo và int get_day() { return day; } định nghĩa ng void set_day(int d); co . . . Chỉ khai báo, }; không định an void Date::set_day(int d){ nghĩa th day = d; ng } Định nghĩa bên ngoài phần khai o báo lớp du  Để che giấu cách thực hiện, hàm thành viên thường được khai u báo trong tập tin đầu (*.h), phần định nghĩa được thực hiện cu trong tệp tin nguồn (*.cpp). Khi đóng gói thành thư viện, người sử dụng chỉ cần tệp tin thư viện (*.lib) và tệp tin đầu (*.h), không cần tệp tin nguồn (*.cpp) Chương 4: Lớp và đối tượng 12 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  13.  Khai báo hàm thành viên trong tệp tin đầu (*.h) //tệp tin Date.h om class Date{ int day, month,year; .c public: ng int get_day(); co void set_day(int d); . . . an }; th  Định hàm thành viên trong tệp tin nguồn (*.cpp) o ng //tệp tin Date.cpp du void Date::set_day(int d){ u day = d; cu } void Date::get_day(){ return day;} Chương 4: Lớp và đối tượng 13 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  14. Con trỏ đối tượng  Sử dụng con trỏ đối tượng om .c void main{ Date d; ng d.set_date(1,1,2010); Date *pd = &d; co //con trỏ pd trỏ vào đối tượng d pd->set_date(1,1,2010); an Date *pd1 = new Date; //cấp phát bộ nhớ, gọi hàm tạo pd1->set_day(10); th . . . ng delete pd1; //hủy bộ nhớ Date *pd2 = new Date[5]; o du for(int i = 0 ;i < 5; i++) pd2[i].set_date(1,1,2010); u . . . cu delete [] pd2; } Chương 4: Lớp và đối tượng 14 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  15. 4.5 Kiểm soát truy nhập  private: các thành viên chỉ có thể truy nhập từ các om thành viên của lớp và từ các bạn bè của lớp .c  public: các thành viên công cộng, truy nhập được ở ng mọi nơi co  protected: các thành viên không truy nhập được từ an bên ngoài, nhưng truy nhập được từ lớp dẫn xuất th Lớp dẫn xuất ng class A{ class B: public A{ o du protected: public: int a; void g(){ Lớp cơ sở u void f(); f(); cu }; } }; Chương 4: Lớp và đối tượng 15 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  16. 4.6 Bài tập  Xây dựng một lớp tên person để đại diện cho một om người với các yêu cầu: .c – Tên có độ dài tối đa 50 ký tự – Ngày, tháng, năm sinh có kiểu int (hoặc thuộc kiểu Date như ng đã gợi ý trong bài giảng). co – Quê quán có độ dài tối đa 100 ký tự an – Hàm nhập tên, ngày sinh, quê từ bán phím th – Hàm hiển thị thông tin ra màn hình ng – Hàm lấy tên, hàm gán tên o du – Hàm lấy quê quán, hàm gán quê quán – Hàm lấy ngày sinh, hàm gan ngày sinh u cu – Viết chương trình chính minh họa cách sử dụng Chương 4: Lớp và đối tượng 16 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  17. 4.7 Hàm tạo và hàm hủy  Vấn đề 1: Nghiên cứu đoạn mã sau om class Date{ int day, month,year; .c public: int get_day() { return day; } ng void set_day(int d){ day = d; } co }; Câu hỏi: void main(){ an d.day = ? Date d; d.month = ? th int i = d.get_date(); d.year = ? } ng  Làm thế nào để sau khi được tạo ra, đối tượng có o du trạng thái ban đầu theo ý muốn của người sử dụng? u  Giải pháp: sử dụng hàm tạo cu Chương 4: Lớp và đối tượng 17 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  18. 4.7 Hàm tạo và hàm hủy (…)  Vấn đề 2: đối tượng sử dụng bộ nhớ động om class Array{ int n; //số phần tử của array .c int *data; //mảng chứa giá trị các phần tử public: ng ... }; co an  Câu hỏi: làm thế nào để cấp phát bộ nhớ và hủy bộ th nhớ cho biến thành viên data một cách an toàn ng o du  Giải pháp: sử dụng hàm tạo và hàm hủy. u cu Chương 4: Lớp và đối tượng 18 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  19. 4.7 Hàm tạo và hàm hủy (…)  Hàm tạo: luôn được gọi khi đối tượng được tạo ra om  Hàm hủy: luôn được gọi khi đối tượng bị hủy .c  Cú pháp: ng class A{ int a, b; co public: A(){a = 0; b = 0;} 1 an A(int _a){ a = _a;} 2 th A(int _a, int _b){ a = _a; b = _b;} 3 ~A(); ng }; o du  Một lớp có thể có nhiều hàm tạo u – Hàm tạo 1: hàm tạo không đối cu – Hàm tạo 2: hàm tạo một đối – Hàm tạo 3: hàm tạo hai đối  Một lớp chỉ có duy nhất một hàm hủy Chương 4: Lớp và đối tượng 19 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  20.  Sử dụng void main{ A a(); //gọi hàm tạo (?) om A a1(10); //gọi hàm tạo (?) A a2(1,2); //gọi hàm tạo (?) .c } //gọi hàm hủy cho ? ng co void f(A a){ gọi hàm tạo (?) A b(0,0); an if(...){ gọi hàm tạo (?) th A c; ... gọi hàm hủy cho ? ng } o du } gọi hàm hủy cho ? u cu void main{ A *a = new A(10); //gọi hàm tạo (?) . . . //sử dụng delete a; //gọi hàm hủy } Chương 4: Lớp và đối tượng 20 CuuDuongThanCong.com https://fb.com/tailieudientucntt
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2