Chương 3: Xây dựng lớp _ đối tượng - Nguyễn Thị Khiêm Hòa

 Mô tả một thực thể hay một quan hệ trong thế giới thực  Có các thuộc tính (properties) và hành vi (behaviors)  Có thể là thực thể vật lý hay thực thể khái niệm.  Mô tả những vấn đề cần thao tác trong hệ thống Đối tượng = Dữ liệu + Hành vi

pdf42 trang | Chia sẻ: lylyngoc | Lượt xem: 1593 | Lượt tải: 2download
Bạn đang xem trước 20 trang tài liệu Chương 3: Xây dựng lớp _ đối tượng - Nguyễn Thị Khiêm Hòa, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Xây dựng lớp _ đối tượng Chương 3: Giảng viên: Ths. Nguyễn Thị Khiêm Hòa Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Nội dung  Định nghĩa Lớp  Tạo đối tượng  Xây dựng các phương thức  Sử dụng các thành phần tĩnh (Static)  Đóng gói dữ liệu Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Đối tượng (Object)  Mô tả một thực thể hay một quan hệ trong thế giới thực  Có các thuộc tính (properties) và hành vi (behaviors)  Có thể là thực thể vật lý hay thực thể khái niệm.  Mô tả những vấn đề cần thao tác trong hệ thống Đối tượng = Dữ liệu + Hành vi Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Đối tượng (Object)  Thuộc tính: mô tả thông tin của đối tượng  Trạng thái: được định nghĩa bởi giá trị của thuộc tính tại một thời điểm nào đó.  Hành vi: chỉ ra các hoạt động của đối tượng được cài đặt thành phương thức (methods) Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Multimedia: Lớp đối tượng và đối tượng Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Lớp và đối tượng  Lớp (Class):  Thiết kế của đối tượng  Chứa thuộc tính và phương thức  Được xem như kiểu dữ liệu trừu tượng  Đối tượng (Object):  Thể hiện (Instance) của lớp, đóng vai trò biến trong chương trình.  Được tạo bởi từ khóa new  Có hoạt động Object kitchen Living Room Bath Office Dining Room Family Room Covered Porch Class Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Xây dựng lớp và tạo đối tượng [Bổ từ truy cập] class [: Lớp cơ sở] { // Các thành phần dữ liệu // Hàm }  Xây dựng lớp  Khai báo một lớp bằng cách sử dụng từ khoá class. Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Xây dựng lớp và tạo đối tượng public class hocsinh { private string hoten; public int lop ; public void lenlop() { lop = lop +1; } } // kết thúc lớp Ví dụ Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Xây dựng lớp và tạo đối tượng public class Taikhoan { private string tentk; private double sodutk = 0; private double gioihanrut; public void naptien(double tiennap) { sodutk = sodutk + tiennap; } public void ruttien(double tienrut) { sodutk = sodutk - tienrut; } } Ví dụ Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Xây dựng lớp và tạo đối tượng  Tạo đối tượng Taikhoan tk = new Taikhoan();  Truy xuất thành phần tk.naptien(100000); Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Bổ từ truy cập  Quy định giới hạn truy xuất vào các thành phần của lớp Khai báo Phạm vi public Không giới hạn. private Chỉ truy cập trong nội bộ của lớp. internal Cho phép các lớp trong cùng chương trình truy cập. protected Được truy xuất bởi các thành viên trong lớp và lớp dẫn xuất protected internal Cho phép các lớp cùng chương trình, hoặc các lớp dẫn xuất truy cập Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Phương thức khởi tạo  Phương thức đặc biệt, được gọi tự động khi tạo ra đối tượng  Tên phương thức có cùng tên với lớp  Giới hạn truy cập: public  Phương thức khởi tạo mặc định không có tham số  Không có giá trị trả về  Không cho phép tham chiếu trực tiếp Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Phương thức khởi tạo  Giá trị mặc định của các kiểu dữ liệu Kiểu dữ liệu Giá trị mặc định int, long, byte,… 0 bool false char ‘\0’, Null enum 0 Reference Null Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Phương thức khởi tạo public class Taikhoan { … public Taikhoan() { tentk = Null; sodutk = 0; gioihanrut = 0; } } Ví dụ Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Nạp chồng phương thức khởi tạo Có thể tạo nhiều phương thức khởi tạo cùng tên  Cũng có thể dùng con trỏ this public class Lion { private string name; private int age; public Lion() : this( "unknown", 0 ) { Console.WriteLine("Default: {0}", name); } } Ví dụ Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Nạp chồng phương thức khởi tạo public class Lion { private string name; private int age; . . . public Lion( string theName, int theAge ) { name = theName; age = theAge; Console.WriteLine("Specified: {0}", name); } } Ví dụ Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Phương thức khởi tạo sao chép  Tạo một đối tượng mới bằng cách sao chép toàn bộ các thành phần dữ liệu từ một đối tượng đã có cùng lớp. public class Thoigian { … public ThoiGian( ThoiGian tg) { Nam = tg.Nam; Thang = tg.Thang; Ngay = tg.Ngay; Gio = tg.Gio; Phut = tg.Phut; Giay = tg.Giay; } … } Ví dụ Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Phương thức khởi tạo sao chép static void main() { Thoigian t1(14,2,2011,7,30,0); Thoigian t2 = new Thoigian(t1); … } Ví dụ Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Bài tập Xây dựng lớp Tài khoản hoàn chỉnh Thực hiện 10 min Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Từ khóa this  Dùng để tham chiếu đến thể hiện hiện hành của một đối tượng.  Con trỏ ẩn đến tất các phương thức không có thuộc tính tĩnh (nonstatic) trong một lớp  Mỗi phương thức có thể tham chiếu đến những phương thức khác và các biến thành viên thông qua tham chiếu this này Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Từ khóa this public void SetYear( int Nam) { this.Nam = Nam; } Ví dụ  Sử dụng khi các biến thành viên cùng tên với tham số Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Từ khóa this class Point { … public void Dispose() { GC.SuppressFinalize( this ); } public override void Finalize() { Dispose(); base.Finalize(); } } Ví dụ  Truyền đối tượng hiện hành làm tham số cho một phương thức của đối tượng khác. Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Từ khóa this class Point { private double x; private double y; public Point(double a, double b) { this.x = a; this.y = b; } public Point(): this(5,5) {} } Ví dụ  Gọi nạp chồng phương thức thiết lập từ phương thức thiết lập khác Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Sử dụng các thành phần tĩnh của lớp  Thành phần tĩnh  Thuộc về một lớp  Được khởi tạo trước khi khởi tạo đối tượng (thể hiện) của lớp  Dùng chung cho tất cả các thể hiện của lớp  Sử dụng không thông qua một thể hiện nào trong lớp  Khai báo thành phần tĩnh bằng từ khóa static  Thuộc tính tĩnh lưu trữ trạng thái liên quan đến tất cả các thể hiện Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Phương thức tĩnh  Hàm Main()  Được xem là hoạt động chung chứ không riêng thể hiện nào của lớp  Không có tham chiếu this  Không được các thể hiện tham chiếu đến  Không được gọi trực tiếp các phương thức không tĩnh(nonstatic) Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Phương thức khởi tạo tĩnh  Được thực thi 1 lần khi chương trình thực thi  Thực thi trước bất kỳ thể hiện được tạo ra  Không tham số và bổ từ truy cập  Không cho phép truy xuất trực tiếp  Dùng khởi tạo các thành phần tĩnh public class A { static int x; static A() { x = 0; } } Ví dụ Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Bài tập Tạo ra lớp đường tròn, có thành phần tĩnh là số lượng đường tròn có trong lớp này Thực hiện 10 min Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Hủy đối tượng  Ngôn ngữ C# cung cấp cơ chế thu dọn (garbage collection)  Khai báo tường minh các phương thức hủy để giải phóng các tài nguyên với các đoạn mã không được quản lý.  Phương thức Finalize()  Giải phóng các tài nguyên mà đối tượng nắm giữ, và không tham chiếu đến các đối tượng khác.  Được gọi bởi cơ chế thu dọn khi đối tượng bị hủy. Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Phương thức hủy  Khai báo: ~MyClass(){}  Gọi phương thức Finalize(). class Point { … public void Dispose() { GC.SuppressFinalize( this ); } public override void Finalize() { Dispose(); base.Finalize(); } } Ví dụ Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Xây dựng phương thức  Phương thức là tập hợp các lệnh thực hiện một chức năng using System; public class Time { public void DisplayCurrentTime() { Console.WriteLine(“{0}:{1}:{2}”,Hour, Minute, Second); } public void GetTime(int h, int m, int s) { h = Hour; m = Minute; s = Second; } } Ví dụ Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Tham biến và tham trị  Tham trị  Trực tiếp chứa DL  Phải được khởi tạo  Không có giá trị null int i; i = 42; CostObj c; • 42  Tham biến  Chứa địa chỉ  Khai báo bởi từ khóa new  Được hủy bởi .NET garbage collection  Lớp là một tham chiếu 42 i c Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Truyền tham số cho phương thức  Tham trị using System; public class Time { public void GetTime(int h, int m, int s) { h = Hour; m = Minute; s = Second; } public void DisplayCurrentTime() { int h=0, m=0, s=0; this.GetTime(h, m, s); Console.WriteLine(“{0}:{1}:{2}”,h,m,s); } } Ví dụ Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Truyền tham chiếu  Dùng từ khóa ref using System; public class Time { public void GetTime(ref int h, ref int m, ref int s) { h = Hour; m = Minute; s = Second; } public void DisplayCurrentTime() { int h=0, m=0, s=0; this.GetTime(ref h, ref m, ref s); Console.WriteLine(“{0}:{1}:{2}”,h,m,s); } } Ví dụ Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Truyền tham chiếu  Cách gọi phương thức khi truyền tham chiếu using System; public class Tester { static void Main() { System.DateTime currentTime = System.DateTime.Now; Time t = new Time( currentTime); t.DisplayCurrentTime(); int h = 0, m = 0, s = 0; t.GetTime(ref h, ref h, ref s); System.Console.WriteLine(“Current time: {0}:{1}:{2}”, h, m, s); } } Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Truyền tham chiếu với biến chưa khởi tạo  Cách gọi phương thức khi truyền tham chiếu với từ khóa out using System; public class Time { public void GetTime(out int h, out int m, out int s) { h = Hour; m = Minute; s = Second; } } public class Tester { static void Main() { … int h, m, s; t.GetTime(out h, out m, out s); System.Console.WriteLine(“Current time: {0}:{1}:{2}”, h, m, s); } } Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Nạp chồng phương thức  Tạo ra nhiều phương thức cùng tên  Tham số khác nhau:  Số lượng tham số khác nhau  Kiểu tham số khác nhau Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Nạp chồng phương thức using System; public class Area { private double areaVal; public void AreaCal(double radius) { areaVal = 22/7*radius*radius; } public void AreaCal(double length, double width) { areVal = length * width; } } Ví dụ Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Đóng gói dữ liệu  Nhằm tránh truy xuất trực tiếp đến các thành phần dữ liệu của lớp  Cú pháp: public class { //khai báo các thuộc tính { get { //câu lệnh } set { //câu lệnh } } } Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Đóng gói dữ liệu public class Tester { static void Main() { Employee p = new Employee; p.Name = “Nguyễn”; … } } public class Employee { private string fullName; public string Name { get { return fullName } set { fullName = value; } } } Ví dụ Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Đóng gói dữ liệu  Các kiểu thuộc tính  Read/ Write Property  Read Only  Write Only Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Bài tập  Xây dựng lớp Point chứa tọa độ của một điểm trên mặt phẳng Oxy. Nhập 2 điểm trên mặt phẳng rồi tính khoảng cách giữa hai điểm đó. Thực hiện 45 min Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Q & A
Tài liệu liên quan