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
                
              
                                            
                                
            
                       
            
                 42 trang
42 trang | 
Chia sẻ: lylyngoc | Lượt xem: 1874 | Lượt tải: 2 
              
            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