![](images/graphics/blank.gif)
Bài giảng Cơ sở lập trình 2: Chương 3 - Lê Quý Tài
lượt xem 11
download
![](https://tailieu.vn/static/b2013az/templates/version1/default/images/down16x21.png)
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.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Cơ sở lập trình 2: Chương 3 - Lê Quý Tài
- Chương 3 LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG TRONG C#
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- Đ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
- Đ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
- Đ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
- 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
![](images/graphics/blank.gif)
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Cơ sở lập trình: Ngôn ngữ lập trình C/C++ - Trịnh Tấn Đạt
142 p |
21 |
9
-
Bài giảng Cơ sở lập trình 1: Giới thiệu môn học - Lê Quý Tài
9 p |
140 |
8
-
Bài giảng Cơ sở lập trình: Chương 1 - Lê Viết Mẫn
55 p |
76 |
5
-
Bài giảng Cơ sở lập trình Csharp: Bài 4 - Cấu trúc lặp
17 p |
83 |
4
-
Bài giảng Cơ sở lập trình: Chương 1 - Thuật toán và thuật giải
30 p |
25 |
4
-
Bài giảng Cơ sở lập trình: Chương 2 - Tổng quan về lập trình máy tính
14 p |
15 |
3
-
Bài giảng Cơ sở lập trình: Chương 4 - Các cấu trúc điều khiển
41 p |
19 |
3
-
Bài giảng Cơ sở lập trình - Trường ĐH Thương mại
108 p |
58 |
3
-
Bài giảng Cơ sở lập trình: Chương 1 - Khái niệm lập trình
428 p |
22 |
3
-
Bài giảng Cơ sở lập trình: Các phần tử cơ bản của ngôn ngữ C
55 p |
13 |
2
-
Bài giảng Cơ sở lập trình: Kiểu cấu trúc
26 p |
14 |
2
-
Bài giảng Cơ sở lập trình: Kiểu chuỗi ký tự
21 p |
10 |
2
-
Bài giảng Cơ sở lập trình: Kiểu con trỏ
50 p |
7 |
2
-
Bài giảng Cơ sở lập trình: Kiểu dữ liệu mảng
54 p |
11 |
2
-
Bài giảng Cơ sở lập trình: Các khái niệm cơ bản về lập trình
20 p |
12 |
2
-
Bài giảng Cơ sở lập trình: Các cấu trúc điều khiển trong ngôn ngữ C
38 p |
12 |
2
-
Bài giảng Cơ sở lập trình: Chương trình con
22 p |
7 |
2
-
Bài giảng Cơ sở lập trình: Kiểu tập tin
32 p |
6 |
1
![](images/icons/closefanbox.gif)
![](images/icons/closefanbox.gif)
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
![](https://tailieu.vn/static/b2013az/templates/version1/default/js/fancybox2/source/ajax_loader.gif)