Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 30 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
30
Dung lượng
274,23 KB
Nội dung
Chương LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG TRONG C# Lê Quý Tài quytai3985@gmail.com Nội dung 5/26/16 Lớp đối tượng Tạo huỷ đối tượng Truyền tham số Nạp chồng hàm Đóng gói liệu với thuộc tính Kế thừa đa hình Lớp trừu tượng giao diện Xử lý ngoại lệ Chương - Lập trình hướng đối tượng C# 2/28 Lớp trừu tượng giao diện Lớp trừu tượng Là lớp không hoàn thiện Thiết lập lớp sở cho lớp dẫn xuất Phương thức trừu tượng Là phương thức không hoàn thiện (chỉ có nguyen mẫu, phần mô tả cài đặt chi tiết) Không có thực thi Cú pháp abstract public class abstract public void (); (có dấu chấm phẩy ; sau tên phương thức) 5/26/16 Chương - Lập trình hướng đối tượng C# 3/28 Lớp trừu tượng Ví dụ Xây dựng lớp HinhHoc gồm phương thức: Tính chu vi, diện tích phương thức trừu tượng Xây dựng lớp TamGiac, HinhChuNhat kế thừa từ lớp HinhHoc, xây dựng phương thức tính chu vi, diện tích //Lớp trừu tượng abstract public class HinhHoc { abstract public void Nhap(); abstract public double ChuVi(); abstract public double DienTich(); } 5/26/16 Chương - Lập trình hướng đối tượng C# 4/28 Ví dụ lớp trừu tượng //Lớp TamGiac public class TamGiac:HinhHoc { private double a, b, c; public override void Nhap() { Console.Write("Nhap canh a: "); a=Convert.ToDouble(Console.ReadLine()); Console.Write("Nhap canh b: "); b=Convert.ToDouble(Console.ReadLine()); Console.Write("Nhap canh c: "); c=Convert.ToDouble(Console.ReadLine()); } public override double ChuVi() { return a + b + c; } public override double DienTich() { double p = (a + b + c) / 2; return Math.Sqrt(p * (p - a) * (p - b) * (p - c)); } 5/26/16 Chương - Lập trình hướng đối tượng C# } 5/28 Ví dụ lớp trừu tượng //Lớp hình chữ nhật public class HinhChuNhat : HinhHoc { private double a, b; public override void Nhap() { Console.Write("Nhap chieu dai: "); a = Convert.ToDouble(Console.ReadLine()); Console.Write("Nhap chieu rong: "); b = Convert.ToDouble(Console.ReadLine()); } public override double ChuVi() { return (a + b) * 2; } public override double DienTich() { return a * b; } 5/26/16 Chương - Lập trình hướng đối tượng C# } 6/28 class Program { static void Main(string[] args) { HinhHoc H1; TamGiac TG1 = new TamGiac(); TG1.Nhap(); Console.WriteLine("Thong tin ve tam giac: "); Console.WriteLine("Chu vi la : {0}", TG1.ChuVi()); Console.WriteLine("Dien tich la : {0,8:f2}", TG1.DienTich()); HinhChuNhat HCN1 = new HinhChuNhat(); HCN1.Nhap(); Console.WriteLine("Thong tin ve hinh chu nhat: "); H1 = HCN1 ; Console.WriteLine("Chu vi la : {0}", H1.ChuVi()); Console.WriteLine("Dien tich la : {0,8:f2}", H1.DienTich()); Console.ReadLine(); } } 5/26/16 Chương - Lập trình hướng đối tượng C# 7/28 Giao diện (interface) Giao diện Là dạng lớp trừu tượng Sử dụng với mục đích hỗ trợ tính đa hình Chỉ có nguyên mẫu phương thức, mục, thuộc tính (Lớp kế thừa từ giao diện phải có cài đặt cụ thể) 5/26/16 Lớp kế thừa giao diện gọi lớp thực thi (implement) giao diện Chương - Lập trình hướng đối tượng C# 8/28 Giao diện Cú pháp [Mức độ truy cập] interface = 60) { string fault = minute + "is not a valid minute"; throw new InvalidTimeException(fault); } 5/26/16 Chương - Lập trình hướng đối tượng C# 24/28 Ví dụ ném ngoại lệ using System; class TinhGiaTri { private int a, b; public void TinhToan() { Console.Write("Nhap so nguyen a: "); a = int.Parse(Console.ReadLine()); Console.Write("Nhap so nguyen b: "); b = int.Parse(Console.ReadLine()); try { int thuong = a / b; Console.WriteLine("Thuong la: {0}", thuong); } catch (DivideByZeroException e) { throw new DivideByZeroException("Lỗi chia cho nhé! ",e); } } } 5/26/16 Chương - Lập trình hướng đối tượng C# 25/28 Ví dụ ném ngoại lệ class Program { static void Main(string[] args) { TinhGiaTri GT1 = new TinhGiaTri(); try { GT1.TinhToan(); } catch (Exception e) { Console.WriteLine(e.Message); } Console.ReadLine(); } } 5/26/16 Chương - Lập trình hướng đối tượng C# 26/28 Ngoại lệ người dùng tự định nghĩa Khi không tìm lớp ngoại lệ phù hợp tự định nghĩa lớp ngoại lệ cách kế thừa từ lớp Exception 5/26/16 Chương - Lập trình hướng đối tượng C# 27/28 Bài tập nhà Bài Quản lý sinh viên Xây dựng lớp sinh viên quản lý Họ tên, Ngày sinh, Điểm thi môn Lập trình, Cơ sở liệu, Thiết kế web Xây dựng lớp danh sách gồm N sinh viên Đưa số lượng sinh viên làm khoá luận tốt nghiệp; Số lượng sinh viên làm chuyên đề tốt nghiệp với điều kiện: 5/26/16 Làm khoá luận điểm Trung bình >= không môn Làm chuyên đề tốt nghiệp Không có môn Chương - Lập trình hướng đối tượng C# 28/28 Bài tập nhà Bài Quản lý thuê xe Một gia đình làm dịch vụ cho thuê xe ô tô cần quản lý việc cho thuê xe Gia đình có loại xe: Xe du lịch xe tải Thông tin thuê xe bao gồm: Họ tên người thuê, số thuê Tiền thuê xe du lịch tính sau: 250.000đ cho đầu 70.000đ cho Tiền thuê xe tải tính sau: 220.000đ cho đầu 85.000đ cho Viết chương trình thực yêu cầu: 5/26/16 a) Nhập danh sách thông tin thuê xe (bao gồm xe tải xe du lịch) b) In hình tất thông tin thuê xe bao gồm: họ tên người thuê, số thuê, thành tiền Chương - Lập trình hướng đối tượng C# 29/28 Bài tập nhà Hướng dẫn Xây dựng lớp Xe với gồm Phương thức: Ba phương thức trừu tượng nhập, hiện, tính tiền với tham số đầu vào số thuê Xây dựng lớp XeTai,XeKhach kế thừa từ lớp Xe với với việc triển khai phương thức lớp Xe 5/26/16 Xây dựng lớp Khach với thông tin Dữ liệu: Họ tên khách, số thuê, loại xe thuê Phương thức: Nhập thông tin khách hàng, thông tin khách hàng, tính tiền khách hàng Xây dựng lớp QuanLy để quản lý loại xe gia đình mà khách hàng thuê gồm: Dữ liệu: Mảng chiều chứa khách hàng thuê xe Phương thức: Nhập, hiện, tính tổng tiền … Chương - Lập trình hướng đối tượng C# 30/28 [...]... dẹp” c n thiết 5/26/16 finally luôn đư c th c hiện dù ngoại lệ c đư c bắt hay không finally đư c th c hiện c khi không c ngoại lệ đư c ném ra Chương 3 - Lập trình hướng đối tượng trong C# 21/28 C pháp try … catch … finally try { … } catch(Exception1 e1) { … } catch(Exception2 e2) { … } finally { … } 5/26/16 Chương 3 - Lập trình hướng đối tượng trong C# 22/28 Ví dụ 5/26/16 Chương 3 - Lập trình hướng. .. e.Message); } Console.ReadLine(); } 5/26/16 Chương 3 - Lập trình hướng đối tượng trong C# } 20/28 C u tr c try …catch … finally C thể bắt nhiều loại ngoại lệ kh c nhau bằng c ch sử dụng nhiều khối lệnh catch đặt kế tiếp khối lệnh catch sau không thể bắt ngoại lệ là lớp dẫn xuất c a ngoại lệ đư c bắt trong khối lệnh catch trư c Khối lệnh finally c thể đư c đặt cuối c ng để th c hiện c c công vi c “dọn... Làm chương trình dễ đ c hơn, an toàn hơn Chương 3 - Lập trình hướng đối tượng trong C# 18/28 C u tr c try … catch Vi c phân tách đoạn chương trình thông thường và phần xử lý ngoại lệ đư c thể hiện thông qua c pháp try – catch Khối lệnh try {…}: khối lệnh c khả năng ném ngoại lệ Khối lệnh catch() {…}: bắt và xử lý với ngoại lệ try { // throw an exception } catch (TypeOfException e) { exception-handling... tr c try …catch …finally Ném ra ngoại lệ Ngoại lệ do người sử dụng định nghĩa Chương 3 - Lập trình hướng đối tượng trong C# 13/ 28 Giới thiệu về ngoại lệ Trong lập trình c thể gặp c c lỗi sau: Lỗi c pháp Lỗi logic thuật toán Lỗi th c thi Ngoại lệ: c c trường hợp hoạt động không bình thường Xử lý ngoại lệ như thế nào 5/26/16 Làm thế nào để c thể tiếp t c th c hiện Chương 3 - Lập trình hướng. .. đư c ném tường minh Chương 3 - Lập trình hướng đối tượng trong C# 16/28 Phả hệ ngoại lệ trong C# 5/26/16 Chương 3 - Lập trình hướng đối tượng trong C# 17/28 Ưu điểm c a ném bắt ngoại lệ 5/26/16 Dễ sử dụng Chuyển điều khiển đến nơi c khả năng xử lý ngoại lệ C thể ném nhiều ngoại lệ Tách xử lý ngoại lệ khỏi thuật toán Tách mã xử lý Sử dụng c pháp kh c Không bỏ sót ngoại lệ Làm chương. .. TinhGiaTri(); try { GT1.TinhToan(); } catch (Exception e) { Console.WriteLine(e.Message); } Console.ReadLine(); } } 5/26/16 Chương 3 - Lập trình hướng đối tượng trong C# 26/28 Ngoại lệ do người dùng tự định nghĩa Khi không tìm đư c lớp ngoại lệ phù hợp chúng ta c thể tự định nghĩa lớp ngoại lệ bằng c ch kế thừa từ lớp Exception 5/26/16 Chương 3 - Lập trình hướng đối tượng trong C# 27/28 Bài tập về nhà Bài... } Chương 3 - Lập trình hướng đối tượng trong C# 11/28 Ví dụ Giao diện class Program { static void Main(string[] args) { SinhVien SV1 = new SinhVien(); SV1.Nhap(); SV1.Xuat(); INguoi N1 = (INguoi)SV1; //Ép kiểu N1.Xuat(); Console.ReadLine(); } } 5/26/16 Chương 3 - Lập trình hướng đối tượng trong C# 12/28 8 Xử lý ngoại lệ 5/26/16 Giới thiệu về ngoại lệ Xử lý ngoại lệ C u tr c try … catch C u... Bản chất con người Thiếu kinh nghiệm, c tình bỏ qua Chương 3 - Lập trình hướng đối tượng trong C# 15/28 Xử lý ngoại lệ trong C# 5/26/16 Đư c kế thừa từ C+ +, Java Dựa trên c chế ném và bắt ngoại lệ Ném ngoại lệ: Dừng chương trình và chuyển điều khiển lên m c trên (nơi bắt ngoại lệ) Bắt ngoại lệ: xử lý ngoại lệ Ngoại lệ: là đối tượng mang thông tin về lỗi đã xảy ra Ngoại lệ đư c ném... đình làm dịch vụ cho thuê xe ô tô c n quản lý vi c cho thuê xe Gia đình c 2 loại xe: Xe du lịch và xe tải Thông tin thuê xe bao gồm: Họ tên người thuê, số giờ thuê Tiền thuê xe du lịch đư c tính như sau: 250.000đ cho giờ đầu và 70.000đ cho c c giờ tiếp theo Tiền thuê xe tải đư c tính như sau: 220.000đ cho giờ đầu và 85.000đ cho c c giờ tiếp theo Viết chương trình th c hiện c c yêu c u: 5/26/16... với với vi c triển khai c c phương th c trong lớp Xe 5/26/16 Xây dựng lớp Khach với c c thông tin Dữ liệu: Họ tên khách, số giờ thuê, loại xe thuê Phương th c: Nhập thông tin khách hàng, hiện thông tin khách hàng, tính tiền khách hàng Xây dựng lớp QuanLy để quản lý c c loại xe c a gia đình mà khách hàng thuê gồm: Dữ liệu: Mảng một chiều chứa c c khách hàng thuê xe Phương th c: Nhập, hiện,