Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 27 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
27
Dung lượng
367,87 KB
Nội dung
1 Thiết Lập Các Phương Thức Mơn Lập Trình Hướng Đối Tượng – Chương Nguyễn Minh Thành [Mail] : Thanhnm@itc.edu.vn Nhắc Lại Sự đóng gói chế ràng buộc liệu thao tác liệu để thành thể thống nhất, tránh tác động bất ngờ từ bên Thể thống gọi đối tượng Nhắc lại (tt) class { thuộc tính; phương thức(); } • Chỉ có phương thức nằm class quyền truy cập thuộc tính (hay liệu) • Thuộc tính (hay liệu) mà phương thức truy cập tương ứng với đối tượng tạo từ class Thiết Kế Các Phương Thức • Có 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 đố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 đối tượng cho giới bên ▫ Nhóm xử lý tính tốn: Xử lý tính tốn có tác dụng tương tự giới cung cấp thơng tin bên gởi vào Thiết Kế Các Phương Thức (tt) • Ví dụ 1: Thiết kế hành động lớp CDIEM ▫ Nhóm khởi tạo public void Nhap(); public void KhoiTao (int xx, int yy, char cc); public void PhatSinh(); ▫ 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 Thiết Kế Các Phương Thức (tt) • Ví dụ 1: Thiết kế hành động lớp CDIEM ▫ 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); ▫ Nhóm kiểm tra ràng buộc public bool KiemTraX(int xx); public bool KiemTraY(int yy); Thiết Kế Các Phương Thức (tt) • Ví dụ 1: Thiết kế hành động lớp CDIEM ▫ 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 ▫ Nhóm xử lý tính tốn public float KhoangCach(CDIEM M); public int KhoangCachX(CDIEM M); public int KhoangCachY(CDIEM M); Thiết Kế Các Phương Thức (tt) • Ví dụ 2: Thiết kế hành động lớp CHCN ▫ 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(); ▫ Nhóm cập nhật //Trực tiếp //property set: Tìm hiểu sau Thiết Kế Các Phương Thức (tt) • Ví dụ 2: Thiết kế hành động lớp CHCN ▫ 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 góc 90o với tâm xoay đ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ế hành động lớp CHCN ▫ Nhóm kiểm tra ràng buộc public bool KiemTraM(int mm); public bool KiemTraN(int nn); ▫ 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(); 13 Hàm Dựng (Contructor) • Là hàm khởi tạo đặc biệt, hàm dựng có số tính chất sau : ▫ Được gọi đến cách tự động đối tượng lớp tạo (new) Dùng để khởi động giá trị đầu cho thành phần liệu đối tượng thuộc lớp ▫ Tên phương thức giống với tên lớp có mức độ truy cập public ▫ Khơng có giá trị trả ▫ Trước phương thức tạo lập chạy, đối tượng chưa thực tồn nhớ, sau tạo lập hoàn thành, nhớ lưu trữ thể hợp lệ lớp ▫ Khi ta không định nghĩa phương thức tạo lập cho lớp, trình biên dịch tự động tạo phương thức tạo lập mặc định cho lớp khởi tạo biến giá trị mặc định 14 Hàm Dựng (Contructor) (tt) • Khai báo : Tên hàm dựng tên 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 liệu lớp, C# đưa 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 tốn (operator) • Giả sử ta thiết kế lớp phân số (CPHANSO) có phương thức cộng (Cong), trừ (Tru), nhân (Nhan) chia (Chia) phân số Khi đó, ta muốn cộng phân số a 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 gượng ép nghĩa Điều ta muốn viết là: c = a + b; c = a * b; Muốn làm điều này, C# cung cấp chế cài đặt phương thức thông qua ký hiệu phép toán (operator) 17 Cài đặt phép tố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 ký hiệu phép toán số học, logic so sánh ▫Trái: Tên tham số nằm bên trái phép toán ▫Phải: Tên tham số nằm bên phải phép tố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ó phân số a, b phân số tổng c Yêu cầu thực sau: c = a + b; 18 Cài đặt phép tố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ó tên trùng phương thức lớp số tham số phải có tham số khác (khác kiểu khác số lượng tham số) public { } public { } public { } public { } void Nhap() void Nhap(int aa) void Nhap(float aa) void Nhap(int aa, float bb) 21 Sử dụng từ khố this • Ví dụ class ViDu { int a, b; public void GanGiaTri(int a, int b) { a = a; b = b; } public void Xuat() { Console.WriteLine("a={0}, b={1}", a, b); } } class Program { static void Main(string[] args) { ViDu vd = new ViDu(); vd.GanGiaTri(21, 9); vd.Xuat(); } } 22 Sử dụng từ khố (this) • Trường hợp tên tham số trùng với tên thuộc tính đối tượng ta dùng từ khóa this Từ khố this dùng để tham chiếu đến thân đối tượng class ViDu { int a, b; public void GanGiaTri(int a, int b) { this.a = a; this.b = b; } public void Xuat() { Console.WriteLine("a={0}, b={1}", a, b); } } 23 Nạp chồng (Overloading) • Một số phương thức định nghĩa mặc định cho lớp Tuy nhiên, ta viết lại Điều gọi nạp chồng phương thức • Thơng thường, phương thức toString phương thức mặc định lớp Thường trả tên lớp Ta viết lại để xuất nội dung lớp 24 Nạp chồng (Overloading) phương thức xuất toString() class CPHANSO { private int tuso, mauso; public CPHANSO(int t, int m) { tuso = t; mauso = m; } public override string ToString() { string s = tuso.ToString() + "/" + mauso.ToString(); return s; } public void Xuat() { Console.WriteLine("{0}/{1}", tuso, mauso); } } 25 Nạp chồng (Overloading) phương thức xuất toString() static void Main(string[] args) { CPHANSO a = new CPHANSO(3, 5); Console.Write("Xuat bang phuong thuc xuat doi tuong: "); a.Xuat(); Console.WriteLine("Xuat bang phuong thuc WriteLine: " + a.ToString()); } Kết quả: 26 FAQs 27 Hết chương Môn Lập Trình Hướng Đối Tượng ... tạo lập chạy, đối tượng chưa thực tồn nhớ, sau tạo lập hoàn thành, nhớ lưu trữ thể hợp lệ lớp ▫ Khi ta không định nghĩa phương thức tạo lập cho lớp, trình biên dịch tự động tạo phương thức tạo lập. .. với đối tượng tạo từ class 4 Thiết Kế Các Phương Thức • Có 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 đối tượng. .. Console.WriteLine("Xuat bang phuong thuc WriteLine: " + a.ToString()); } Kết quả: 26 FAQs 27 Hết chương Môn Lập Trình Hướng Đối Tượng