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

Bài giảng Cơ sở lập trình 2: Chương 3 - Lê Quý Tài

Chia sẻ: Kiếp Này Bình Yên | Ngày: | Loại File: PPTX | Số trang:28

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

Chương 3 trang bị cho người học những hiểu biết về lập trình hướng đối tượng trong C#. Trong chưng này các bạn sẽ cùng tìm hiểu những nội dung sau đây: Đóng gói dữ liệu với thuộc tính, kế thừa và đa hình, lớp trừu tượng và giao diện, Xử lý ngoại lệ. Mời các bạn cùng tham khảo.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Cơ sở lập trình 2: Chương 3 - Lê Quý Tài

  1. Chương 3 LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG TRONG C#
  2. Nội dung 1 Lớp và đối tượng 2 Tạo và huỷ đối tượng 3 Truyền tham số 4 Nạp chồng hàm 5 Đóng gói dữ liệu với thuộc tính 6 Kế thừa và đa hình 7 Lớp trừu tượng và giao diện 8 Xử lý ngoại lệ 12/24/15 Chương 3. Lập trình hướng đối 2/28
  3. 5. Đóng gói dữ liệu với thuộc tính (property) o Thuộc tính (property) là đặc tính mới trong C#. o Thuộc tính là các phương thức lấy giá trị (get) và gán giá trị (set). o Cho phép truy cập đến các thành phần dữ liệu của đối tượng ở mức độ đọc hoặc ghi hoặc cả 2 và che giấu cài đặt thực sự bên trong lớp. o Mỗi thuộc tính thường quản lý một biến dữ liệu của lớp. 12/24/15 Chương 3. Lập trình hướng đối 3/38
  4. Thuộc tính (property) o Các thuộc tính n Chỉ đọc (read only): chỉ có phương thức get (chỉ đọc giá trị của thuộc tính) n Chỉ ghi (write only): chỉ có phương thức set (chỉ ghi giá trị cho thuộc tính) n Vừa đọc vừa ghi (read/write): có cả 2 phương thức get và set. Được phép đọc và ghi giá trị 12/24/15 Chương 3. Lập trình hướng đối 4/38
  5. Thuộc tính (property) o Cú pháp public { //Phương thức lấy giá trị get { //các lệnh return ; } set { //các lệnh = value; } 12/24/15 Chương 3. Lập trình hướng đối 5/38
  6. Ví dụ - Thuộc tính o Khai báo lớp Student //Thuộc tính DiemToan (read/write) class Student public float DiemToan { { get { return _DiemToan; } //Tên các property không có dấu _, tên set // các thành phần dữ liệu có dấu _ { string _Ten; _DiemToan = value; float _DiemToan, _DiemTin, _DiemTB; _DiemTB = (_DiemToan + //Hàm tạo _DiemTin) / 2; public Student() } { } _Ten = ""; //Thuộc tính DiemTin (read/write) _DiemToan = 0; public float DiemTin _DiemTin = 0; { _DiemTB = 0; get { return _DiemTin; } } set //Thuộc tính Ten (read/write) { _DiemTin = value; public string Ten _DiemTB = (_DiemToan + { _DiemTin) / 2; get { return _Ten; } } set { _Ten = value; } } } 12/24/15 Chương 3. Lập trình hướng đối 6/38
  7. Ví dụ - Thuộc tính (tiếp) //Thuoc tinh DiemTrungBinh- (read only) public float DiemTrungBinh { get { return _DiemTB; } } static void Main(string[] args) { Student s1 = new Student(); Console.Write("Nhap ho ten: "); s1.Ten = Console.ReadLine(); Console.Write("Nhap diem Toan: "); s1.DiemToan = float.Parse(Console.ReadLine()); Console.Write("Nhap diem Tin: "); s1.DiemTin = float.Parse(Console.ReadLine()); Console.WriteLine("Ten: {0}, diem Toan: {1}, diem Tin: {2}, diem Trung binh: {3}", s1.Ten, s1.DiemToan, s1.DiemTin, s1.DiemTrungBinh); Console.ReadLine(); } 12/24/15 Chương 3. Lập trình hướng đối 7/38
  8. 6. Kế thừa và đa hình o Kế thừa n Là cơ chế cho phép định nghĩa một lớp mới (lớp dẫn xuất - drived class) dựa trên một lớp có sẵn (lớp cơ sở - base class) n Lớp dẫn xuất kế thừa hầu hết các thành phần của lớp cơ sở (biến thành viên, phương thức), ngoại trừ o Các thành phần private o Phương thức tạo lập o Phương thức huỷ o Các thành phần tĩnh n Lớp dẫn xuất chỉ có thể kế thừa trực tiếp từ một lớp cơ sở 12/24/15 Chương 3. Lập trình hướng đối 8/28
  9. Kế thừa o Cú pháp định nghĩa: class : { // Thân lớp dẫn xuất } o Ví dụ: n Khai báo lớp Nguoi gồm o Các thuộc tính: HoTen, NgaySinh, QueQuan o Phương thức: Xuat n Khai báo lớp SinhVien kế thừa từ lớp Nguoi o Bổ sung thêm thuộc tính MaSV 12/24/15 Chương 3. Lập trình hướng đối 9/28
  10. Ví dụ - Kế thừa class Nguoi { public string HoTen; public DateTime NgaySinh; public string QueQuan; public void Xuat() { Console.WriteLine("Ho va ten: " +HoTen); Console.WriteLine("Ngay sinh: {0}/{1}/{2}", NgaySinh.Day,NgaySinh.Month,NgaySinh.Year); Console.WriteLine("Que quan: " +QueQuan); } } class SinhVien:Nguoi { public string MaSV; 12/24/15} Chương 3. Lập trình hướng đối 10/28
  11. Ví dụ - Kế thừa class Program { static void Main(string[] args) { Nguoi P1 = new Nguoi(); P1.HoTen = "Nguyen Van A"; P1.NgaySinh = Convert.ToDateTime("3/9/1994"); P1.QueQuan = "Ha Noi"; Console.WriteLine("Thong tin cua nguoi: "); P1.Xuat(); SinhVien sv1 = new SinhVien(); sv1.HoTen = "Nguyen Van B"; sv1.NgaySinh = Convert.ToDateTime("30/9/1994"); sv1.QueQuan = "Thai Binh"; sv1.MaSV = "15A4040011"; Console.WriteLine("\nThong tin cua sinh vien: "); sv1.Xuat(); Console.WriteLine("Ma sinh vien: " + P1.MaSV); Console.ReadLine(); } 12/24/15} Chương 3. Lập trình hướng đối 11/28
  12. Gọi phương thức tạo lập o Phương thức tạo lập trong lớp dẫn xuất n Nếu lớp cơ sở không có phương thức tạo lập hoặc có phương thức tạo lập không có tham số thì phương thức tạo lập ở lớp dẫn xuất được định nghĩa như cách thông thường n Nếu lớp cơ sở phương thức tạo lập có tham số thì phương thức tạo lập của lớp dẫn xuất cũng phải có tham số n Cú pháp: (Tham số lớp dẫn xuất): base(tham số lớp cơ sở) n Truy xuất đến các thành phần của lớp cơ sở: base.TênThànhPhần 12/24/15 Chương 3. Lập trình hướng đối 12/28
  13. Ví dụ - Phương thức tạo lập o Xây dựng phương thức tạo lập cho lớp Nguoi và lớp SinhVien class Nguoi { public string HoTen; public DateTime NgaySinh; public string QueQuan; public void Xuat() { Console.WriteLine("Ho va ten: " +HoTen); Console.WriteLine("Ngay sinh: {0}/{1}/{2}", NgaySinh.Day,NgaySinh.Month,NgaySinh.Year); Console.WriteLine("Que quan: " +QueQuan); } public Nguoi(string ht, DateTime dt, string qq) { this.HoTen = ht; this.NgaySinh = dt; this.QueQuan = qq; } } 12/24/15 Chương 3. Lập trình hướng đối 13/28
  14. Ví dụ - Phương thức tạo lập class SinhVien:Nguoi { public string MaSV; public SinhVien(string ht, DateTime dt, string qq, string ma): base(ht, dt, qq) { this.MaSV=ma; } } class Program { static void Main(string[] args) { Nguoi P1 = new Nguoi("Nguyen Van A", Convert.ToDateTime("3/8/1994"),"Ha Noi"); Console.WriteLine("Thong tin cua nguoi: "); P1.Xuat(); SinhVien sv1 = new SinhVien("Nguyen Thi B",Convert.ToDateTime("12/9/1994"),"Ha Tay","15A4040012"); Console.WriteLine("\nThong tin cua sinh vien: "); sv1.Xuat(); Console.WriteLine("Ma sinh vien: " +sv1.MaSV); Console.ReadLine(); } } 12/24/15 Chương 3. Lập trình hướng đối 14/28
  15. Ghi đè phương thức của lớp cha o Ghi đè phương thức lớp cha: Dùng từ khoá override n Ví dụ: public override void Xuat() { //Nội dung phương thức } o Che phương thức lớp cha: Dùng từ khoá new n Ví dụ: public new Xuat() { //Nội dung phương thức 12/24/15 Chương 3. Lập trình hướng đối 15/28
  16. Cấm kế thừa lớp o Dùng từ khoá sealed o Ví dụ: using System; public sealed class MyClass { public MyClass(){} } public class MyNewClass:MyClass //Định nghĩa lỗi { } class Test { public static void Main() { } } 12/24/15 Chương 3. Lập trình hướng đối 16/28
  17. Đa hình (polymorphism) o Ý tưởng: “Sử dụng một giao diện chung cho nhiều phương thức khác nhau” o Dựa trên phương thức ảo (Virtual method) và liên kết động (late binding) o Cho phép gửi một loại thông điệp tới nhiều đối tượng khác nhau mà đối tượng lại có cách xử lý riêng theo ngữ cảnh tương ứng. 12/24/15 Chương 3. Lập trình hướng đối 17/28
  18. Đa hình o Các bước thực hiện n Bước 1: Đánh dấu phương thức ảo (virtual) trong lớp cơ sở Ví dụ: public virtual void Draw( ) { //Nội dung phương thức } n Bước 2: Đánh dấu phương thức ghi đè (override) trong lớp dẫn xuất public override void Draw( ) 12/24/15 Chương 3. Lập trình hướng đối 18/28
  19. Đa hình o Ví dụ: n Khai báo lớp Nguoi gồm o Các thuộc tính: HoTen, NgaySinh, QueQuan o Phương thức: Xuat (virtual) n Khai báo lớp SinhVien kế thừa từ lớp Nguoi o Bổ sung thêm thuộc tính MaSV o Phương thức: Xuat (override) 12/24/15 Chương 3. Lập trình hướng đối 19/28
  20. Ví dụ - Đa hình class Nguoi { public string HoTen; public DateTime NgaySinh; public string QueQuan; public Nguoi(string ht, DateTime dt, string qq) { this.HoTen = ht; this.NgaySinh = dt; this.QueQuan = qq; } public virtual void Xuat() //Khai báo phương thức ảo { Console.WriteLine("Ho va ten: " + HoTen); Console.WriteLine("Ngay sinh: {0}/{1}/{2}", NgaySinh.Day, NgaySinh.Month, NgaySinh.Year); Console.WriteLine("Que quan: " + QueQuan); } 12/24/15} Chương 3. Lập trình hướng đối 20/28
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

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