CHương 3 Lập trình hướng đối tượng C phần 2

28 2K 2
CHương 3 Lập trình hướng đối tượng C phần 2

Đ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

Chương LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG TRONG C# Lê Quý Tài quytai3985@gmail.com Nội dung 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ệ Đóng gói liệu với thuộc tính (property)  Thuộc tính (property) đặc tính C#  Thuộc tính phương thức lấy giá trị (get) gán giá trị (set)  Cho phép truy cập đến thành phần liệu đối tượng mức độ đọc ghi che giấu cài đặt thực bên lớp  Mỗi thuộc tính thường quản lý biến liệu lớp Thuộc tính (property)  Các thuộc tính    Chỉ đọc (read only): có phương thức get (chỉ đọc giá trị thuộc tính) Chỉ ghi (write only): có phương thức set (chỉ ghi giá trị cho thuộc tính) Vừa đọc vừa ghi (read/write): có phương thức get set Được phép đọc ghi giá trị Thuộc tính (property)  Cú pháp public { //Phương thức lấy giá trị get { //các lệnh return ; } set { //các lệnh = value; } }  Chú ý  value: từ khoá giá trị dùng để gán Ví dụ - Thuộc tính  Khai báo lớp Student class Student { //Tên property khơng có dấu _, tên // thành phần liệu có dấu _ string _Ten; float _DiemToan, _DiemTin, _DiemTB; //Hàm tạo public Student() { _Ten = ""; _DiemToan = 0; _DiemTin = 0; _DiemTB = 0; } //Thuộc tính Ten (read/write) public string Ten { get { return _Ten; } set { _Ten = value; } } //Thuộc tính DiemToan (read/write) public float DiemToan { get { return _DiemToan; } set { _DiemToan = value; _DiemTB = (_DiemToan + _DiemTin) / 2; } } //Thuộc tính DiemTin (read/write) public float DiemTin { get { return _DiemTin; } set { _DiemTin = value; _DiemTB = (_DiemToan + _DiemTin) / 2; } } 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(); } Kế thừa đa hình  Kế thừa   Là chế cho phép định nghĩa lớp (lớp dẫn xuất - drived class) dựa lớp có sẵn (lớp sở - base class) Lớp dẫn xuất kế thừa hầu hết thành phần lớp sở (biến thành viên, phương thức), ngoại trừ      Các thành phần private Phương thức tạo lập Phương thức huỷ Các thành phần tĩnh Lớp dẫn xuất kế thừa trực tiếp từ lớp sở Kế thừa  Cú pháp định nghĩa: class : { // Thân lớp dẫn xuất }  Ví dụ:  Khai báo lớp Nguoi gồm    Các thuộc tính: HoTen, NgaySinh, QueQuan Phương thức: Xuat Khai báo lớp SinhVien kế thừa từ lớp Nguoi  Bổ sung thêm thuộc tính MaSV 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; } 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(); } } Ghi đè phương thức lớp cha  Ghi đè phương thức lớp cha: Dùng từ khố override Ví dụ: public override void Xuat()  { //Nội dung phương thức }  Che phương thức lớp cha: Dùng từ khố new Ví dụ: public new Xuat()  { } //Nội dung phương thức Cấm kế thừa lớp  Dùng từ khoá sealed  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() { } } Đa hình (polymorphism)  Ý tưởng: “Sử dụng giao diện chung cho nhiều phương thức khác nhau”  Dựa phương thức ảo (Virtual method) liên kết động (late binding)  Cho phép gửi loại thông điệp tới nhiều đối tượng khác mà đối tượng lại có cách xử lý riêng theo ngữ cảnh tương ứng Đa hình  Các bước thực Bước 1: Đánh dấu phương thức ảo (virtual) lớp sở  Ví dụ: public virtual void Draw( ) { //Nội dung phương thức } Bước 2: Đánh dấu phương thức ghi đè (override) lớp dẫn xuất  public override void Draw( ) { } //Nội dung phương thức Đa hình  Ví dụ:  Khai báo lớp Nguoi gồm    Các thuộc tính: HoTen, NgaySinh, QueQuan Phương thức: Xuat (virtual) Khai báo lớp SinhVien kế thừa từ lớp Nguoi   Bổ sung thêm thuộc tính MaSV Phương thức: Xuat (override) 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); } } Ví dụ - Đa hình class SinhVien : Nguoi { public string MaSV; public SinhVien(string ht, DateTime dt, string qq, string ma) : base(ht, dt, qq) { this.MaSV = ma; } public override void Xuat() //Ghi đè phương thức { Console.WriteLine("Ma sinh vien: " + MaSV); base.Xuat(); //Kế thừa lại phương thức } } Ví dụ - Đa hình 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(); //Phương thức Xuat lớp Nguoi SinhVien sv1 = new SinhVien("Nguyen Thi B", Convert.ToDateTime("12/9/1994"), "Ha Tay", "15A4040012"); Console.WriteLine("\nThong tin cua sinh vien: "); sv1.Xuat(); //Phương thức Xuat lớp SinhVien Console.ReadLine(); } } Bài tập nhà  Bài Tam giác  Xây dựng lớp TamGiac gồm:   Dữ liệu: Độ dài cạnh Phương thức:      Phương thức tạo không tham số Phương thức nhập Phương thức Phương thức tính diện tích Xây dựng lớp TuDien kế thừa từ lớp TamGiac Bổ sung liệu: chiều cao  Điều chỉnh lại phương thức nhập,  Bổ sung thêm phương thức tính thể tích (Cơng thức: V= 1/3h * S, S diện tích đáy tứ diện (tam giác)  Bài tập nhà  Bài Tiền điện  Xây dựng lớp TienDien  Dữ liệu:      Họ tên chủ hộ Địa Số công tơ tháng trước Số công tơ tháng Phương thức      Phương thức tạo không tham số Phương thức nhập Phương thức Thuộc tính (property) số cơng tơ dùng (=Số công tơ tháng - Số công tơ tháng trước) Phương thức tính tiền điện: (= Số điện dùng * 500) Bài tập nhà  Xây dựng lớp TienDienMoi (Tiền điện mới) kế thừa từ lớp TienDien (Tính theo định mức quy định, định mức 500, 600)   Bổ sung thêm thành phần liệu Định mức Điều chỉnh lại phương thức Nhập, Hiện Tính tiền điện Bài tập nhà  Bài Quản lý nhân viên   Quản lý thơng tin nhân viên Tính lương cho nhân viên Biết có loại nhân viên     Nhân viên sản xuất: Số sản phẩm * 30000đ Nhân viên công nhật: Số ngày công * 90000đ Nhân viên quản lý: Hệ số lương * Lương Hướng dẫn: Xây dựng lớp  Xây dựng lớp NhanVien    Dữ liệu: Họ tên, Địa chỉ, ngày sinh Phương thức: Nhập, Xuất, Tính lương Xây dựng lớp NhanVienSanXuat    Kế thừa lớp NhanVien Bổ sung thêm thành phần liệu: Số sản phẩm Điều chỉnh lại phương thức Nhập, Xuất, Tính lương Bài tập nhà  Hướng dẫn: Xây dựng lớp  Xây dựng lớp NhanVienCongNhat     Xây dựng lớp NhanVienQuanLy     Kế thừa lớp NhanVien Bổ sung thêm thành phần liệu: Số ngày công Điều chỉnh lại phương thức Nhập, Xuất, Tính lương Kế thừa lớp NhanVien Bổ sung thêm thành phần liệu: Hệ số lương, Lương Điều chỉnh lại phương thức Nhập, Xuất, Tính lương Xây dựng lớp DanhSachNhanVien Dữ liệu: class DanhSachNhanVien  { int SoLuongNhanVien; //Số lượng nhân viên NhanVien [] DS; //Danh sách nhân viên } Bài tập nhà  Xây dựng lớp DanhSachNhanVien   Phương thức:  Nhập danh sách, In danh sách, Xuất lương Chú ý:   Xây dựng lớp tính lương lớp sở (NhanVien) phương thức ảo (virtual) Ở lớp dẫn xuất (NhanVienSanXuat, NhanVienCongNhat, NhanVienQuanLy) kế thừa lại phương thức tính lương cách ghi đè (override)

Ngày đăng: 26/05/2016, 10:40

Từ khóa liên quan

Mục lục

  • Slide 1

  • Nội dung

  • 5. Đóng gói dữ liệu với thuộc tính (property)

  • Thuộc tính (property)

  • Thuộc tính (property)

  • Ví dụ - Thuộc tính

  • Ví dụ - Thuộc tính (tiếp)

  • 6. Kế thừa và đa hình

  • Kế thừa

  • Ví dụ - Kế thừa

  • Ví dụ - Kế thừa

  • Gọi phương thức tạo lập

  • Ví dụ - Phương thức tạo lập

  • Ví dụ - Phương thức tạo lập

  • Ghi đè phương thức của lớp cha

  • Cấm kế thừa lớp

  • Đa hình (polymorphism)

  • Đa hình

  • Đa hình

  • Ví dụ - Đa hình

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

Tài liệu liên quan