Bài giảng Kỹ thuật lập trình - Chương 4: Lớp và đối tượng

pdf 35 trang phuongnguyen 3450
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Kỹ thuật lập trình - Chương 4: Lớp và đối tượng", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfbai_giang_ky_thuat_lap_trinh_chuong_4_lop_va_doi_tuong.pdf

Nội dung text: Bài giảng Kỹ thuật lập trình - Chương 4: Lớp và đối tượng

  1. Chương 4 Lớp và đối tượng
  2. Nội dung Khái niệm đối tượng Các mức truy xuất Các thành phần của lớp
  3. Đối tượng Khái niệm đối tượng (object) trong lập trình hướng đối tượng giống như một đối tượng cụ thể trong thế giới thực. Mỗi đối tượng có các thuộc tính và các hành vi riêng. . Thuộc tính (attribute) mô tả đặc điểm của đối tưởng. . Hành vi là phương thức hoạt động của đối tượng, gọi tắt là phương thức (method).
  4. Đối tượng Ví dụ: Phân số Đặc điểm . Tử số . Mẫu số Thao tác . Cộng, trừ, nhân, chia . Tối giản . Nghịch đảo
  5. Đối tượng Ví dụ: xe hơi . Màu trắng . 4 cửa . 4 bánh . Hiệu Toyota . Chạy tới . Chạy lui . Xe dừng .
  6. Đối tượng Đối tượng: XeHoi Tên đối tượng Hiệu xe Màu xe Thuộc tính Số bánh xe Số cửa Chạy tới Chạy lui Phương thức Dừng xe
  7. Đối tượng Các đối tượng có các đặc điểm (thuộc tính và phương thức) giống nhau được gom nhóm thành một lớp để phân biệt với các đối tượng khác và dễ quản lý. Một lớp (class) là sự phân loại của các đối tượng hay là kiểu (type) của đối tượng. Ví dụ: − Các chiếc xe Toyota, Honda, Porsche thuộc lớp xe hơi. • Các con chó giữ nhà, chó săn, chó kiểng thuộc lớp chó.
  8. Khai báo đối tượng class TenLop { //khai báo biến lớp kieubien tenBien1; kieubien tenBien2; //khai báo phương thức PhuongThuc1(); PhuongThuc2(); }
  9. Khởi tạo đối tượng TenLop tenBien = new TenLop(); Ví dụ: . PhanSo a = new PhanSo(); . XeHoi b = new XeHoi();
  10. Khai báo đối tượng Đối tượng phân số: class PhanSo { //khai báo biến lớp int tuSo; int mauSo; //khai báo phương thức }
  11. Mức truy xuất public . Có thể truy xuất ở mọi nơi khác private . Chỉ có thể truy xuất ở trong class protected . Chỉ có thể truy xuất ở trong class hoặc class kế thừa
  12. Biến lớp Lưu trữ tình trạng của đối tượng Sử dụng cách khai báo biến thông thường Thêm mức truy xuất Ví dụ . public int tuSo; . private int mauSo . protected soBanhXe; Truy xuất biến lớp: . tenDoiTuong.bienLop
  13. Phương thức (method) Các hàm bên trong lớp Mô tả hoạt động của đối tượng Thêm mức truy xuất khi khai báo Truy xuất phương thức . tenBien.TenPhuongThuc(); . Ví dụ: • PhanSo a = new PhanSo(); • a.ToiGian(); • PhanSo b = a.NhanMotSo(2);
  14. static Dùng cho các thành phần lớp không phụ thuộc vào đối tượng cụ thể Có thể truy cập trong bản thân lớp Được truy cập trực tiếp từ tên lớp Phương thức static chỉ truy cập được những thành viên static của lớp Truy cập: . TenLop.TenBien . TenLop.TenPhuongThuc()
  15. Hàm khởi tạo (constructor) Khởi tạo giá trị ban đầu cho đối tượng khi khai báo Cùng tên với tên lớp Không khai báo kiểu trả về Khai báo: class TenLop { public TenLop() { } }
  16. Constructor mặc định Là constructor không có tham số và không thực hiện lệnh gì cả Nếu không khai báo constructor thì trình biên dịch sẽ tự thêm constructor mặc định
  17. Constructor Một lớp có thể có nhiều constructor Các constructor khác nhau về tham số . Số tham số . Kiểu tham số Đối tượng được khởi tạo theo constructor tương ứng khi khai báo Chú ý: Khi khai báo constructor khác, constructor mặc định sẽ không có. Nếu muốn sử dụng thì phải khai báo lại.
  18. Constructor class PhanSo { //khai báo biến lớp public int tuSo; public int mauSo; public PhanSo() { tuSo = 0; mauSo = 1; } public PhanSo(int ts, int ms) { tuSo = ts; mauSo = ms; } }
  19. Constructor Khởi tạo đối tượng phân số có tử số = 0, mẫu số = 1: . PhanSo a = new PhanSo(); . PhanSo b = new PhanSo(0, 1); Khởi tạo đối tượng phân số có tử số = 1, mẫu số = 2 . PhanSo c = new PhanSo(1, 2)
  20. Tham chiếu this Tham khảo đến đối tượng hiện hành Trong trường hợp đặt tên tham số trùng với tên biến lớp, sử dụng this để chỉ biến lớp class PhanSo { public int tuSo; public int mauSo; public PhanSo(int tuSo, int mauSo) { this.tuSo = tuSo; this.mauSo = mauSo; } }
  21. Truyền đối tượng vào phương thức Đối tượng là kiểu tham chiếu Nếu có câu lệnh tác động đến giá trị các biến lớp của đối tượng trong phương thức đối tượng bị thay đổi sau khi hoàn tất phương thức.
  22. Chương 4 Lớp và đối tượng
  23. Nội dung Thuộc tính Operator
  24. Bảo vệ truy cập biến lớp Thay đổi tên biến thay đổi code ở những chỗ dùng biến? Hạn chế người dùng thay đổi giá trị biến? Kiểm tra hợp lệ khi gán giá trị biến? Biến chỉ đọc (read only)? Truy cập giá trị là kết quả của việc xử lý các biến lớp?
  25. Bảo vệ truy cập biến lớp  Không cho phép truy cập biến lớp  dùng hàm để truy cập class PhanSo { private int tuSo; public int mauSo; public int LayTuSo() { return tuSo; } public void GanTuSo(int gt) { tuSo = gt; } }
  26. Thuộc tính Dùng để bảo vệ việc truy cập biến lớp Cho phép chỉnh sửa code không làm ảnh hưởng nhiều đến chương trình
  27. Thuộc tính class PhanSo { private int tuSo; private int mauSo; public int TuSo { get { return tuSo; } set { tuSo = value; } } public int MauSo { get { return mauSo; } set { mauSo = value; } } }
  28. Kiểm tra hợp lệ class PhanSo { private int tuSo; private int mauSo; public int TuSo { } public int MauSo { get { return mauSo; } set { if(value == 0) mauSo = 1; else mauSo = value; } } }
  29. Thuộc tính chỉ đọc Không cho người dùng sửa giá trị biến Chỉ có get, không có set class PhanSo { private int tuSo; private int mauSo; private double giaTri; public double GiaTri { get { return giaTri; } } public double LayGiaTri() { giaTri = (double)tuSo / (double)mauSo; return giaTri; } }
  30. Thuộc tính là kết quả xử lý class PhanSo { private int tuSo; private int mauSo; private double giaTri; public int TuSo{ } public int MauSo{ } public double GiaTri { get { return (double)tuSo / (double)mauSo; } } }
  31. Toán tử Các phép tính +, -, *, / Phép so sánh >, =, <= Các kiểu xây dựng sẵn (int, string, double ) sử dụng được toán tử.  Các kiểu do người dùng tạo cũng cần toán tử . Ví dụ: • Phân số • Số La Mã
  32. Thực hiện bằng hàm Xây dựng hàm để thực hiện tính toán class PhanSo { private int tuSo; private int mauSo; public PhanSo Cong(PhanSo b) { PhanSo c = new PhanSo(); c.TuSo = this.MauSo * b.TuSo + this.TuSo * b.MauSo; c.MauSo = this.MauSo * b.MauSo; return c; } }
  33. Sử dụng toán tử public static PhanSo operator +(PhanSo trai, PhanSo phai) { PhanSo c = new PhanSo(); c.TuSo = trai.MauSo * phai.TuSo + trai.TuSo * phai.MauSo; c.MauSo = trai.MauSo * phai.MauSo; return c; }
  34. Sử dụng toán tử Các toán tử logic phải đi đôi với nhau . > và = và <= . == và !=
  35. Lưu ý Sử dụng toán tử đúng chỗ, hợp lý Nên sử dụng đúng ý nghĩa toán tử (toán tử + thì nên là phép cộng) Sử dụng toán tử để thực hiện công việc đơn giản