Bài giảng Lập trình hướng đối tượng: Chương 5 - Nguyễn Minh Thành
lượt xem 6
download
Bài giảng Lập trình hướng đối tượng: Chương 5 Thiết lập các phương thức nhằm trình bày về thiết kế các phương thức, bài tập về thiết kế các phương thức, cài đặt phép toán, sự trùng tên phương thức, sử dụng từ khóa...cùng tìm hiểu bài giảng để hiểu hơn về thiết lập các phương thức.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Lập trình hướng đối tượng: Chương 5 - Nguyễn Minh Thành
- 1 Thiết Lập Các Phương Thức Môn Lập Trình Hướng Đối Tượng – Chương 5 Nguyễn Minh Thành [Mail] : Thanhnm@itc.edu.vn
- 2 Nhắc Lại Sự đóng gói là cơ chế ràng buộc dữ liệu và thao tác trên dữ liệu để thành một thể thống nhất, tránh được các tác động bất ngờ từ bên ngoài. Thể thống nhất này gọi là đối tượng.
- 3 Nhắc lại (tt) class { thuộc tính; phương thức(); } • Chỉ có các phương thức nằm trong class mới được quyền truy cập thuộc tính (hay dữ liệu). • Thuộc tính (hay dữ liệu) mà phương thức truy cập sẽ tương ứng với đối tượng được tạo từ class đó.
- 4 Thiết Kế Các Phương Thức • Có 5 nhóm hành động (phương thức) ▫ Nhóm khởi tạo: Cung cấp giá trị đầu cho đối tượng ▫ Nhóm cập nhật: Thay đổi giá trị thuộc tính của đối tượng ▫ Nhóm kiểm tra ràng buộc: Kiểm tra khởi tạo, cập nhật ▫ Nhóm cung cấp thông tin: Cung cấp thuộc tính nội bộ của đối tượng cho thế giới bên ngoài ▫ Nhóm xử lý tính toán: Xử lý tính toán có tác dụng tương tự thế giới cung cấp thông tin do bên ngoài gởi vào
- 5 Thiết Kế Các Phương Thức (tt) • Ví dụ 1: Thiết kế các hành động của lớp CDIEM ▫ 1. Nhóm khởi tạo public void Nhap(); public void KhoiTao (int xx, int yy, char cc); public void PhatSinh(); ▫ 2. Nhóm cập nhật //Trực tiếp public void GanX (int xx); public void GanY (int xx); //property set: Tìm hiểu sau
- 6 Thiết Kế Các Phương Thức (tt) • Ví dụ 1: Thiết kế các hành động của lớp CDIEM ▫ 2. Nhóm cập nhật //Gián tiếp public void DichPhai(uint k); public void DichTrai(uint k); public void DichLen(uint k); public void DichXuong(uint k); public void DichXien1(uint k); public void DichXien2(uint k); ▫ 3. Nhóm kiểm tra ràng buộc public bool KiemTraX(int xx); public bool KiemTraY(int yy);
- 7 Thiết Kế Các Phương Thức (tt) • Ví dụ 1: Thiết kế các hành động của lớp CDIEM ▫ 4. Nhóm cung cấp thông tin public void Xuat(); public int LayX(); public int LayY(); public char LayKiTu(); //property get: Tìm hiểu sau ▫ 5. Nhóm xử lý tính toán public float KhoangCach(CDIEM M); public int KhoangCachX(CDIEM M); public int KhoangCachY(CDIEM M);
- 8 Thiết Kế Các Phương Thức (tt) • Ví dụ 2: Thiết kế các hành động của lớp CHCN ▫ 1. Nhóm khởi tạo public void Nhap(); public void KhoiTao (CDIEM M, int mm, int nn); public void KhoiTao(int x, int y, int m, int n); public void KhoiTao(CDIEM X, CDIEM Y); public void PhatSinh(); ▫ 2. Nhóm cập nhật //Trực tiếp //property set: Tìm hiểu sau
- 9 Thiết Kế Các Phương Thức (tt) • Ví dụ 2: Thiết kế các hành động của lớp CHCN ▫ 2. Nhóm cập nhật //Gián tiếp public void DichPhai(uint k); public void DichTrai(uint k); public void DichLen(uint k); public void DichXuong(uint k); public void TangNgang(uint k); public void GiamNgang(uint k); public void TangDung(uint k); public void GiamDung(uint k); public void Xoaythuan(); public void Xoaynghich(); //Xoay 1 góc 90o với tâm xoay là điểm gốc (Xoay thuận theo chiều kim đồng hồ)
- 10 Thiết Kế Các Phương Thức (tt) • Ví dụ 2: Thiết kế các hành động của lớp CHCN ▫ 3. Nhóm kiểm tra ràng buộc public bool KiemTraM(int mm); public bool KiemTraN(int nn); ▫ 4. Nhóm cung cấp thông tin public void Xuat(); public void Xoa(); //property get: Tìm hiểu sau public int ChuVi(); public long DienTich(); public double DuongCheo();
- 11 Thiết Kế Các Phương Thức (tt) • Ví dụ 2: Thiết kế các hành động của lớp CHCN ▫ 5. Nhóm xử lý tính toán public int XetViTri(CDIEM M); //-1: Bên trong, 0: Trên cạnh, 1: Bên ngoài public int KhoangCachX(CDIEM M); public int KhoangCachY(CDIEM M);
- 12 Bài tập • Thiết kế các lớp sau: ▫ Lớp phân số (CPHANSO) ▫ Lớp các đoạn thẳng trong mặt phẳng (CDOAN) ▫ Lớp các tam giác (CTAMGIAC) ▫ Lớp các đường tròn (CDTRON) • Cài đặt hoàn chỉnh những lớp trên. • Cài đặt chương trình quản lý học sinh của một lớp học gồm tối đa 50 học sinh • Cài đặt chương trình quản lý học sinh của một trường học gồm tối đa 20 lớp học
- 13 Hàm Dựng (Contructor) • Là hàm khởi tạo đặc biệt, hàm dựng có một số tính chất sau : ▫ Được gọi đến một cách tự động khi một đối tượng của lớp được tạo ra (new) . Dùng để khởi động các giá trị đầu cho các thành phần dữ liệu của đối tượng thuộc lớp. ▫ Tên phương thức giống với tên lớp và có mức độ truy cập là public. ▫ Không có giá trị trả về. ▫ Trước khi phương thức tạo lập chạy, đối tượng chưa thực sự tồn tại trong bộ nhớ, sau khi tạo lập hoàn thành, bộ nhớ lưu trữ một thể hiện hợp lệ của lớp. ▫ Khi ta không định nghĩa một phương thức tạo lập nào cho lớp, trình biên dịch sẽ tự động tạo một phương thức tạo lập mặc định cho lớp đó và khởi tạo các biến bằng các giá trị mặc định.
- 14 Hàm Dựng (Contructor) (tt) • Khai báo : Tên hàm dựng chính là tên của lớp public tên_lớp([tham_số_khởi_tạo]) Ví dụ : class SinhVien { string hoten; int namsinh; string gioitinh; public SinhVien(){}; //Khởi tạo rỗng //Khởi tạo có giá trị sẵn public SinhVien(string ht, int ns, string gt) { hoten = ht; namsinh = ns; gioitinh = gt; } ... }
- 15 Thuộc tính • Để dễ dàng cho việc truy xuất dữ liệu trong lớp, C# đưa ra khái niệm thuộc tính. public tên_thuộc_tính { get { return dữ_liệu ; } set { dữ_liệu = value ; } } Ví dụ : class SinhVien { string hoten; int namsinh; string gioitinh; public string HoTen { get {return hoten;} set {hoten = value;} } }
- 16 Cài đặt phép toán (operator) • Giả sử khi ta thiết kế lớp phân số (CPHANSO) có phương thức cộng (Cong), trừ (Tru), nhân (Nhan) và chia (Chia) 2 phân số. Khi đó, ta muốn cộng 2 phân số a và b lưu vào phân số tổng c, ta phải viết là: c = a.Cong(b); Tương tự cho trường hợp nhân c = a.Nhan(b); • Cách này hơi gượng ép và không thể hiện hết ý nghĩa. Điều ta muốn viết là: c = a + b; c = a * b; Muốn làm được điều này, C# đã cung cấp cơ chế cài đặt phương thức thông qua các ký hiệu phép toán (operator).
- 17 Cài đặt phép toán (operator) • Công thức public static TênLớp operator ký hiệu(TênLớp trái, TênLớp phải) • Trong đó : ▫Ký hiệu: Gồm các ký hiệu phép toán số học, logic và so sánh ▫Trái: Tên tham số sẽ nằm bên trái phép toán ▫Phải: Tên tham số sẽ nằm bên phải phép toán • Ví dụ: Giả sử có lớp phân số (CPHANSO) public static CPHANSO operator + (CPHANSO ps1, CPHANSO ps2) { //Cài đặt } Giả sử có 2 phân số a, b và phân số tổng c. Yêu cầu thực hiện như sau: c = a + b;
- 18 Cài đặt phép toán (operator) Không dùng operator class Program { static void Main(string[] args) { CPHANSO a = new CPHANSO(3, 5); a.Xuat(); CPHANSO b = new CPHANSO(1, 2); b.Xuat(); CPHANSO c; c = a.Cong(b); Console.WriteLine("Ket qua: "); c.Xuat(); } }
- 19 Cài đặt phép toán (operator) Dùng operator class CPHANSO { private int tuso, mauso; public CPHANSO(int t, int m) { tuso = t; mauso = m; } public static CPHANSO operator +(CPHANSO ps1, CPHANSO ps2) { int tu = ps1.tuso*ps2.mauso + ps2.tuso*ps1.mauso; int mau = ps1.mauso*ps2.mauso; CPHANSO c = new CPHANSO(tu, mau); return c; } public void Xuat() { Console.WriteLine("{0}/{1}", tuso, mauso); } }
- 20 Sự trùng tên phương thức • Các phương thức có thể có tên trùng nhau ngay cả các phương thức này ở cùng trong 1 lớp nhưng trong số các tham số phải có ít nhất 1 tham số khác (khác về kiểu hoặc khác về số lượng tham số) public void Nhap() { } public void Nhap(int aa) { } public void Nhap(float aa) { } public void Nhap(int aa, float bb) { }
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Lập trình hướng đối tượng: Chương 1 - TS. Trần Công Án
57 p | 89 | 13
-
Bài giảng Lập trình hướng đối tượng: Chương 2 - Nguyễn Sơn Hoàng Quốc, ThS. Nguyễn Tấn Trần Minh Khang
14 p | 174 | 12
-
Bài giảng Lập trình hướng đối tượng - Chương 1: Phương pháp lập trình hướng đối tượng
9 p | 141 | 9
-
Bài giảng Lập trình hướng đối tượng C++ - Chương 2: Lập trình hướng đối tượng
53 p | 46 | 8
-
Bài giảng Lập trình hướng đối tượng (dùng Java): Chương 1 - Trần Minh Thái (2017)
55 p | 80 | 8
-
Bài giảng Lập trình hướng đối tượng - Bài 1: Tổng quan lập trình hướng đối tượng
53 p | 120 | 8
-
Bài giảng Lập trình hướng đối tượng (Dùng C#): Chương 2 - Trần Minh Thái
35 p | 103 | 8
-
Bài giảng Lập trình hướng đối tượng: Chương 1 - Trần Thị Anh Thi
7 p | 197 | 7
-
Bài giảng Lập trình hướng đối tượng 1: Chương 1 - ThS. Thái Kim Phụng
39 p | 101 | 7
-
Bài giảng Lập trình hướng đối tượng: Bài 1 - ThS. Trịnh Thành Trung
53 p | 88 | 7
-
Bài giảng Lập trình hướng đối tượng: Chương 1 - Trần Minh Thái
40 p | 116 | 6
-
Bài giảng Lập trình hướng đối tượng – Bài 01: Tổng quan về OOP
47 p | 63 | 5
-
Bài giảng Lập trình hướng đối tượng (dùng JAVA): Chương 1 - Trần Minh Thái
40 p | 99 | 5
-
Bài giảng Lập trình hướng đối tượng và C++: Chương 1
15 p | 105 | 4
-
Bài giảng Lập trình hướng đối tượng: Nhập môn - Trần Phước Tuấn
15 p | 139 | 4
-
Bài giảng Lập trình hướng đối tượng: Bài 1 - Tổng quan về lập trình hướng đối tượng
47 p | 11 | 4
-
Bài giảng Lập trình hướng đối tượng: Chương 1 - Các khái niệm cơ bản trong lập trình hướng đối tượng
36 p | 16 | 3
-
Bài giảng Lập trình hướng đối tượng: Bài 1 - Nguyễn Khanh Văn
0 p | 83 | 2
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn