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 |
Chia sẻ: lylyngoc | Lượt xem: 1684 | 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