Bài giảng Lập trình nâng cao: Bài 3 - Lý Anh Tuấn

48 46 0
Bài giảng Lập trình nâng cao: Bài 3 - Lý Anh Tuấn

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Bài giảng cung cấp cho người học các kiến thức: Khái niệm về lớp và đối tượng, thiết kế các thuộc tính và hành động của lớp, cài đặt các phương thức, truy xuất và cập nhật dữ liệu, nạp chồng phương thức,... Mời các bạn cùng tham khảo nội dung chi tiết.

Object-Oriented Programming Using C# NGƠN NGỮ LẬP TRÌNH NÂNG CAO Ver 1.0 Slide of 25 Object-Oriented Programming Using C# Nội dung Khái niệm lớp đối tượng Thiết kế thuộc tính hành động lớp Cài đặt phương thức - Ver 1.0 Truy xuất cập nhật liệu (get-set) Nạp chồng phương thức (overload) Hàm tạo (constructor) Nạp chồng toán tử (operator) Ghi đè phương thức có sẵn (override) Slide of 25 Object-Oriented Programming Using C# Khái niệm • Lớp đối tượng: Định nghĩa đặc điểm/thơng tin (thuộc tính) hành động/chức (phương thức) chung cho tất đối tượng loại • Đối tượng: Thể (instance) cụ thể lớp đối tượng Ver 1.0 Slide of 25 Object-Oriented Programming Using C# Khái niệm VD: Lớp SINHVIEN gồm • Thuộc tính: Họ tên, giới tính, ngày tháng năm sinh, điểm tb, đối tượng ưu tiên, • Phương thức: Học bài, làm thi, tập, Sinh viên Nguyễn Văn A, Lê Thị B đối tượng thuộc lớp SINHVIEN Ver 1.0 Slide of 25 Object-Oriented Programming Using C# Đối tượng lập trình hướng đối tượng Tách biệt giao tiếp cài đặt cụ thể Làm gì? Làm cách nào? Ver 1.0 interface Implementation Slide of 25 Object-Oriented Programming Using C# Một cách thể điển hình Che giấu liệu “giải thuật” cụ thể bên lớp (class) Ver 1.0 Slide of 25 Object-Oriented Programming Using C# Cú pháp định nghĩa lớp class { thuộc tính; phương thức () { Cài đặt } } Ver 1.0 Slide of 25 Object-Oriented Programming Using C# Từ khóa truy xuất  private (mặc định): Truy xuất nội lớp (thường sử dụng cho thuộc tính)  protected: Truy xuất nội lớp/ lớp (được sử dụng cho lớp sở)  public: Truy xuất nơi (thường sử dụng cho phương thức)  static: truy xuất không cần khởi tạo đối tượng lớp Ver 1.0 Slide of 25 Object-Oriented Programming Using C# VD: Định nghĩa lớp CHocSinh public class CHocSinh { private string hoten; private int toan, van; private float dtb; public void Nhap() {} public void Xuat() {} } Ver 1.0 Slide of 25 Object-Oriented Programming Using C# Tạo sử dụng đối tượng  Tạo đối tượng TênĐốiTượng = new (); VD: HOCSINH hsA = new HOCSINH();  Sử dụng đối tượng TênĐốiTượng.TênPhươngThức([tham số]); VD: Ver 1.0 hsA.Nhap(); hsA.Xuat(); Slide 10 of 25 Object-Oriented Programming Using C# class CViDu class Program { { private int a, b; static void Main(string[] args) public CViDu() { { CViDu vd = new CViDu(); a = 4; vd.Xuat(); b = 2; vd = new CViDu(1, 23); } vd.Xuat(); public CViDu(int aa, int bb) } { } a = aa; b = bb; } public void Xuat() { Console.WriteLine("a = {0}, b = {1}", a, b); } } Ver 1.0 Slide 34 of 25 Object-Oriented Programming Using C# Sử dụng từ khóa this class CViDu class Program { { int a, b; static void Main(string[] args) public void Gan(int a, int b) { { CViDu vd = new CViDu(); a = a; vd.Gan(21, 9); b = b; vd.Xuat(); } } public void Xuat() } { Console.WriteLine("a={0}, b={1}", a, b); } } Ver 1.0 Slide 35 of 25 Object-Oriented Programming Using C# Sử dụng từ khóa 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 CViDu { int a, b; public void Gan(int a, int b) { this.a = a; this.b = b; } public void Xuat() { Console.WriteLine("a={0}, b={1}", a, b); } } Ver 1.0 Slide 36 of 25 Object-Oriented Programming Using C# Nạp chồng toán tử Giả sử lớp phân số (CPhanSo) có phương thức cộng (Cong) nhân (Nhan) hai 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); Ver 1.0 Slide 37 of 25 Object-Oriented Programming Using C# Nạp chồng toán tử Nếu muốn viết cách tự nhiên sau: c = a + b; c = a * b; Thì phải cài đặt phương thức thơng qua ký hiệu phép toán (operator) Ver 1.0 Slide 38 of 25 Object-Oriented Programming Using C# Mẫu nạp chồng toán tử public static operator ký hiệu (TênLớp trái, TênLớp phải)  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 toán  KDL: bool operator so sánh TênLớp operator tính tốn Ver 1.0 Slide 39 of 25 Object-Oriented Programming Using C# VD: Nạp chồng toán tử + cho lớp 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; Ver 1.0 Slide 40 of 25 Object-Oriented Programming Using C# VD: Nạp chồng toán tử + cho lớp CPhanSo Không dùng operator class CPhanSo { private int tuso, mauso; public CPhanSo(int t, int m) { tuso = t; mauso = m; } public CPhanSo Cong(CPhanSo ps2) { int tu = tuso*ps2.mauso + ps2.tuso*mauso; int mau = mauso*ps2.mauso; CPhanSo c = new CPhanSo(tu, mau); return c.RutGon(); } } Ver 1.0 Slide 41 of 25 Object-Oriented Programming Using C# 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=new CPhanSo(); c = a.Cong(b); Console.WriteLine("Ket qua: "); c.Xuat(); } } Ver 1.0 Slide 42 of 25 Object-Oriented Programming Using C# VD: Nạp chồng toán tử + cho lớp CPhanSo 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.RutGon(); } public void Xuat() { Console.WriteLine("{0}/{1}", tuso, mauso); } } Ver 1.0 Slide 43 of 25 Object-Oriented Programming Using C# 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=new CPhanSo(); c = a + b; Console.WriteLine("Ket qua: "); c.Xuat(); } } Ver 1.0 Slide 44 of 25 Object-Oriented Programming Using C# Ghi đè phương thức Xuất  Phương thức Write() chỉ xuất liệu có kiểu Ví dụ: int a = 4; float b = 7; Console.Write(“a={0}, b={1}”, a, b);  Đối với đối tượng phương thức Write() khơng thực được, giả sử có lớp phân số (CPhanSo) CPhanSo ps = new CPhanSo(5, 3); Console.Write(“Phan so: “ + ps); Ver 1.0 Slide 45 of 25 Object-Oriented Programming Using C# Ghi đè phương thức Xuất Để sử dụng Console.Write(“Phan so: “+ps) phải cài đặt lại phương thức ToString() sau: public override string ToString() { string s=Tạo chuỗi cần xuất; return s; } Ver 1.0 Slide 46 of 25 Object-Oriented Programming Using C# Ghi đè phương thức Xuất 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; } } static void Main(string[] args) { CPhanSo a = new CPhanSo(3, 5); Console.Write(“Phan so: “ + a); } Ver 1.0 Slide 47 of 25 Object-Oriented Programming Using C# Bài tập Thiết kế cài đặt thuộc tính, hàm tạo, operator ghi đè phương thức xuất cho lớp sau:  Lớp phân số (CPhanSo)  Lớp thời gian (CTime)  Lớp ngày tháng năm (CDate) Ver 1.0 Slide 48 of 25 ... 25 Object-Oriented Programming Using C# Đối tượng lập trình hướng đối tượng Tách biệt giao tiếp cài đặt cụ thể Làm gì? Làm cách nào? Ver 1.0 interface Implementation Slide of 25 Object-Oriented...Object-Oriented Programming Using C# Nội dung Khái niệm lớp đối tượng Thiết kế thuộc tính hành động lớp Cài đặt phương thức - Ver 1.0 Truy xuất cập nhật liệu (get-set) Nạp chồng phương... Slide 15 of 25 Object-Oriented Programming Using C# Các hành động lớp Khởi tạo Kiểm tra ràng buộc Cập nhật Xử lý, tính tốn Cung cấp thơng tin Ver 1.0 Slide 16 of 25 Object-Oriented Programming

Ngày đăng: 15/05/2020, 22:37

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan