1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Lập trình hướng đối tượng trong C #: Chương 3 - GV. Phạm Mạnh Cương

32 12 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 32
Dung lượng 138,5 KB

Nội dung

Nội dung chính của chương 3 Lớp và đối tượng trong bài giảng Lập trình hướng đối tượng trong C # nêu định nghĩa lớp, tạo đối tượng, sử dụng các thành viên tĩnh, truyền tham số, hàm dựng và nạp chồng phương thức, đóng gói dữ liệu với property.

CHƯƠNG 3: Lớp đối tượng Nội dung  Định nghĩa lớp  Tạo đối tượng  Sử dụng thành viên tĩnh  Truyền tham số  Hàm dựng nạp chồng phương thức  Đóng gói liệu với property Định nghĩa lớp    Lớp C# cho phép người lập trình tự định nghĩa kiểu liệu phức tạp (user-defined types) sử dụng tương tự kiểu liệu có sẵn (built-in data types) Lớp thường sử dụng để định nghĩa vấn đề trừu tượng như: ngày tháng, vector … Lớp cho phép tách rời phần cài đặt (implementation) phần giao diện (interface) 1.Định nghĩa lớp (tt)  Một lớp có chứa liệu (member data) hàm (member function) Class data1 data2 data3 functiona() functionb() functionc() Ví dụ class Employee { // khai báo tên lớp // từ khóa cho biết khơng thể truy nhập từ lớp private int EmpID ; // member data private char EmpName[30]; private float EmpSalary; // từ khóa cho biết truy nhập từ ngồi lớp public void AddEmployee(); }; // member function Bổ từ truy xuất Từ khố Giải thích public Truy xuất nơi protected Truy xuất nội lớp lớp private (mặc định) Chỉ truy xuất nội lớp Ví dụ using System; public class Time { // phương thức public public void DisplayCurrentTime() { Console.WriteLine("stub for DisplayCurrentTime"); } // biến private private int Year; int Month; int Date; public int Hour,Minute, Second; } public class Tester { static void Main() { Time t = new Time(); t.DisplayCurrentTime(); } } Điều khiển truy nhập Class private data1 data2 functiond() public functiona() functionb() functionc() Phần khai báo với từ khóa private truy nhập hàm thành phần class Phần khai báo với từ khóa public truy nhập nơi chương trình 2.Tạo đối tượng Cú pháp khai báo đối tượng cấp phát vùng nhớ cho đối tượng: TênLớp TênBiếnĐốiTượng; TênBiếnĐốiTượng = new TênLớp(DanhSáchĐốiSố); TênLớp TênBiếnĐốiTượng = new TênLớp(DanhSáchĐốiSố); Chú ý: • Sau khai báo biến đối tượng biến trỏ • Sau cấp phát bắng từ khóa new biến trỏ tới đối tượng thực 2.Tạo đối tượng Ví dụ: Chương trình nhập chiều dài, chiều rộng hình chữ nhật xuất diện tích, chu vi hình chữ nhật using System; namespace LopDoiTuongHCN { class HCN { protected float Dai, Rong; public float ChuVi() { return (Dai + Rong )*2; } public float DienTich() { return Dai* Rong; } public void Nhap() { Console.WriteLine("Nhap chieu dai: "); Dai = float.Parse(Console.ReadLine()); Console.WriteLine("Nhap chieu rong: "); Rong = float.Parse(Console.ReadLine()); }  public void Xuat() { Console.WriteLine("Hinh chu nhat: Dai = {0}, Rong = {1}", Dai, Rong); } } class Application { static void Main(string[] args) { HCN h; h = new HCN(); h.Nhap(); h.Xuat(); Console.WriteLine("Chu vi hinh chu nhat: {0}", h.ChuVi()); Console.WriteLine("Dien tich hinh chu nhat: {0}", h.DienTich()); Console.ReadLine(); } } } Ví dụ Trị trả tham số public class Time { // phương thức public public void DisplayCurrentTime() { System.Console.WriteLine("{0}/{1}/{2} {3}:{4}:{5}“, Month, Date, Year, Hour, Minute, Second); } public int GetHour( ) { return Hour; } public void GetTime(ref int h, ref int m, ref int s) { h = Hour; m = Minute; s = Second; } Ví dụ (tt) // hàm dựng public Time(System.DateTime dt) { Year = dt.Year; Month = dt.Month; Date = dt.Day; Hour = dt.Hour; Minute = dt.Minute; Second = dt.Second; } // biến thành viên private private int Year; private int Month; private int Date; private int Hour; private int Minute; private int Second; } Ví dụ (tt) public class Tester { static void Main( ) { System.DateTime currentTime = System.DateTime.Now; Time t = new Time(currentTime); t.DisplayCurrentTime( ); int theHour = 0; int theMinute = 0; int theSecond = 0; t.GetTime(ref theHour, ref theMinute, ref theSecond); System.Console.WriteLine("Current time: {0}:{1}:{2}", theHour, theMinute, theSecond); } } Ví dụ: Đối tượng làm tham số object d2 object d1 soluong dongia thanhtien soluong dongia thanhtien day d1.day d2.add_solg(d1,65); Hàm thành phần d2 truy Hàm thành phần d2 tru nhập tới liệu soluong củ nhập trực tiếp tới liệu soluong đối tượng d1 Truyền tham số đầu (out parameter) Mặc định, C# quy định tất biến phải gán giá trị trước sử dụng, vậy,trong ví dụ trên, không khởi tạo biến theHour, theMinute giá trị trình biên dịch thơng báo lỗi Từ khóa out cho phép ta sử dụng tham chiếu mà không cần phải khởi gán giá trị đầu Trong ví dụ trên, ta sửa phương thức GetTime thành: public void GetTime(out int h, out int m, out int s) Hàm tạo, hàm dựng chồng phương thức (constructor)  Hàm tạo hàm thành phần tự động viện dẫn khởi tạo đối tượng lớp  Hàm tạo phải có tên trùng với tên lớp khơng có giá trị trả  Nếu khơng khai báo hàm tạo hàm tạo mặc định tự động tạo  Nếu khai báo hàm tạo khơng tự động có hàm tạo mặc định Ví dụ: Hàm tạo mặc định public class Time // private member variables { int Year; // public accessor methods int Month; public void DisplayCurrentTime( ) int Date; { int Hour; System.Console.WriteLine("{0}/{1}/{2} 3}:{4}:{5}", int Minute; Month, Date, Year, Hour, int Second; Minute, Second); } } public class Tester { // constructor static void Main( ) public Time(System.DateTime dt) { { System.DateTime currentTime = Year = dt.Year; System.DateTime.Now; Month = dt.Month; Time t = new Time(currentTime); Date = dt.Day; t.DisplayCurrentTime( ); Hour = dt.Hour; } Minute = dt.Minute; } Second = dt.Second; Kết quả: } 11/16/2000 16:21:40 Hàm tạo chép    Hàm tạo chép khởi tạo đối tượng dựa đối tượng khác thuộc lớp Mỗi lớp có hàm tạo chép mặc định – có tham số đối tượng lớp Ta định nghĩa lại hàm tạo chép Một hàm dựng chép public Time(Time existingTimeObject) { Year = existingTimeObject.Year; Month = existingTimeObject.Month; Date = existingTimeObject.Date; Hour = existingTimeObject.Hour; Minute = existingTimeObject.Minute; Second = existingTimeObject.Second; } Nạp chồng phương thức   Ta muốn có nhiều phương thức tên mà phương thức lại có tham số khác nhau, số lượng tham số khác Như vậy, ý nghĩa phương thức sáng phương thức linh động nhiều trường hợp Nạp chồng cho phép ta làm việc Ví dụ Nạp chồng hàm dựng public class Time { // public accessor methods public void DisplayCurrentTime( ) { System.Console.WriteLine("{0}/{1}/{2} {3}: {4}:{5}", Month, Date, Year, Hour, Minute, Second); } // constructors public Time(System.DateTime dt) { Year = dt.Year; Month = dt.Month; Date = dt.Day; Hour = dt.Hour; Minute = dt.Minute; Second = dt.Second; } public Time(int Year, int Month, int Date, int Hour, int Minute, int Second) { this.Year = Year; this.Month = Month; this.Date = Date; this.Hour = Hour; this.Minute = Minute; this.Second = Second; } // private member variables private int Year; private int Month; private int Date; private int Hour; private int Minute; private int Second; } public class Tester { static void Main( ) { System.DateTime currentTime = System.DateTime.Now; Time t = new Time(currentTime); t.DisplayCurrentTime( ); Time t2 = new Time(2000,11,18,11,03,30); t2.DisplayCurrentTime( ); } } Đóng gói liệu với property C# cung cấp khai báo hàm chung gọi property cho hàm get set Ví dụ: Trong lớp DocGia có biến thành viên m_sHoTen, cài đặt Property cho biến thành viên sau: public string HoTen { get { return m_sHoTen; } set { m_sHoTen = value; } } Lưu ý:  Thứ khai báo Property khơng có tham số cặp ngoặc  Trong thân property dùng hai từ khóa get/set tương ứng cho hai hành động lấy/thiết đặt giá trị thuộc tính Phương thức get Thân phương thức truy cập get giống phương thức khác phương thức trả đối tượng kiểu đặc tính lớp Ví dụ muốn lấy Hour sau: get { return hour; } Phương thức set Phương thức set thiết lập giá trị property đối tượng có trị trả void Phương thức set ghi vào sở liệu hay cập nhật biến thành viên cần Ví dụ: set { hour = value; } CẢM ƠN ... thành phần class Phần khai báo với từ khóa public truy nhập nơi chương trình 2.Tạo đối tượng C? ? pháp khai báo đối tượng c? ??p phát vùng nhớ cho đối tượng: TênLớp TênBiếnĐốiTượng; TênBiếnĐốiTượng =... dụ: Chương trình nhập chiều dài, chiều rộng hình chữ nhật xuất diện tích, chu vi hình chữ nhật using System; namespace LopDoiTuongHCN { class HCN { protected float Dai, Rong; public float ChuVi()... public class Cat { public Cat() { instances++; } public static void HowManyCats() { Console.WriteLine("{0} cats adopted",instances); } public void HowManyCats1() { Console.WriteLine("{0} cats

Ngày đăng: 11/05/2021, 02:23

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN