Bài giảng Cơ sở Lập trình (Fundamental of Programming) - Chương 3: Xây dựng lớp, đối tượng - Nguyễn Thị Khiêm Hòa

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

pdf42 trang | Chia sẻ: phuongt97 | Lượt xem: 425 | Lượt tải: 0download
Bạn đang xem trước 20 trang nội dung tài liệu Bài giảng Cơ sở Lập trình (Fundamental of Programming) - 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
Chương 3: Xây dựng lớp _ đối tượng 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): Class Covered Porch  Thiết kế của đối tượng kitchen Bath Office  Chứa thuộc tính và phương thức Dining Room Living Room Family  Được xem như kiểu dữ liệu trừu tượng Room  Đối tượng (Object):  Thể hiện (Instance) của lớp, đóng vai trò biến trong chương trình. Object  Được tạo bởi từ khóa new  Có hoạt động 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  Xây dựng lớp  Khai báo một lớp bằng cách sử dụng từ khoá class. [Bổ từ truy cập] class [: Lớp cơ sở] { // Các thành phần dữ liệu // Hàm } 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 Ví dụ public class hocsinh { private string hoten; public int lop ; public void lenlop() { lop = lop +1; } } // kết thúc lớp 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 Ví dụ 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; } } 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. Cho phép các lớp trong cùng chương trình internal truy cập. Được truy xuất bởi các thành viên trong lớp và protected lớp dẫn xuất protected Cho phép các lớp cùng chương trình, hoặc các internal 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 Ví dụ public class Taikhoan { public Taikhoan() { tentk = Null; sodutk = 0; gioihanrut = 0; } } 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 Ví dụ public class Lion { private string name; private int age; public Lion() : this( "unknown", 0 ) { Console.WriteLine("Default: {0}", name); } } 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 Ví dụ public class Lion { private string name; private int age; . . . public Lion( string theName, int theAge ) { name = theName; age = theAge; Console.WriteLine("Specified: {0}", name); } } 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. Ví dụ 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; } } 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 Ví dụ static void main() { Thoigian t1(14,2,2011,7,30,0); Thoigian t2 = new Thoigian(t1); } Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Bài tập Thực hiện Xây dựng lớp Tài khoản hoàn chỉnh 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  Sử dụng khi các biến thành viên cùng tên với tham số Ví dụ public void SetYear( int Nam) { this.Nam = Nam; } Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Từ khóa this  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. Ví dụ class Point { public void Dispose() { GC.SuppressFinalize( this ); } public override void Finalize() { Dispose(); base.Finalize(); } } Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Từ khóa this  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 Ví dụ 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) {} } 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 Ví dụ { static int x; static A() { x = 0; } } Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Bài tập Thực hiện 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 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(). Ví dụ class Point { public void Dispose() { GC.SuppressFinalize( this ); } public override void Finalize() { Dispose(); base.Finalize(); } } 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 Ví dụ 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; } } 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ị  Tham biến  Trực tiếp chứa DL  Chứa địa chỉ  Phải được khởi tạo  Khai báo bởi từ khóa new  Không có giá trị null  Được hủy bởi .NET garbage collection  Lớp là một tham chiếu int i; i = 42; CostObj c; i 42 c • 42 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ị Ví using System; dụ 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); } } 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; Ví public class Time dụ { 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); } } 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 Ví dụ 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; } } 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 Ví dụ public class Employee { private string fullName; public string Name { get { public class Tester return fullName { } static void Main() set { { Employee p = new Employee; fullName = value; p.Name = “Nguyễn”; } } } } } 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 Thực hiện  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 đó. 45 min Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Q & A Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM

Các file đính kèm theo tài liệu này:

  • pdfbai_giang_co_so_lap_trinh_fundamental_of_programming_chuong.pdf