Bài giảng Thiết kế và cài đặt lớp - Đối tượng

Lớp (Class): Để định nghĩa một kiểu dữ liệu mới

hay một lớp đầu tiên phải khai báo rồi sau đó mới

định nghĩa các thành phần dữ liệu (thuộc tính) và

các hàm (phương thức) của kiểu dữ liệu đó.

Cú pháp:

[Mức độ truy cập] Class <Tên lớp> [:Lớp cơ sở]

{

<Phần thân của lớp>

}

pdf10 trang | Chuyên mục: Công Nghệ Phần Mềm | Chia sẻ: dkS00TYs | Lượt xem: 1640 | Lượt tải: 0download
Tóm tắt nội dung Bài giảng Thiết kế và cài đặt lớp - Đối tượng, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
1OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com1
Class & Object
1
Thiết kế và cài đặt
lớp & đối tượng
OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com2
1. Class
Lớp (Class): Để định nghĩa một kiểu dữ liệu mới
hay một lớp đầu tiên phải khai báo rồi sau đó mới
định nghĩa các thành phần dữ liệu (thuộc tính) và
các hàm (phương thức) của kiểu dữ liệu đó.
Cú pháp:
[Mức độ truy cập] Class [:Lớp cơ sở]
{
}
2OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com3
Class & Object (tt)
Mức độ truy cập: gồm các từ khóa sau public,
private, internal, protected, internal protected
Tên lớp (name class): định danh của lớp
Lớp cơ sở (basic class): lớp cha
Thân lớp: được bao bọc bới dấu { } là nơi
chứa khai báo:
Các thành phần dữ liệu (data members)
Các phương thức (methods)
OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com4
Mức độ truy cập (Access Modifier : A.M)
A.M Ý nghĩa
public Thành viên được nhìn thấy bởi bất kỳphương thức nào của lớp khác.
private Chỉ có các phương thức của lớp A (cùng lớp)mới được phép truy cập đến thành phần này
protected
Chỉ có các phương thức của lớp A hoặc của
lớp dẫn xuất (con) từ A mới được phép truy
cập đến thành phần này
internal
Các thành viên internal trong lớp A được truy
xuất trong các phương thức của bất kỳ lớp
trong khối kết hợp (assembly) của A
protected
internal Tương đương với protected or internal
3OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com5
Ghi chú về Access Modifier
Mặc định Mức độ truy cập là private nếu chúng
ta bỏ trống từ khóa về Khả năng truy cập
Mức độ truy cập internal cho phép truy cập:
Các phương thức của các lớp trong cùng một
khối kết hợp (assembly) với lớp đang định
nghĩa.
Các lớp thuộc cùng một project có thể xem là
cùng một khối kết hợp.
Các Project khác với Project hiện tại không thể
truy cập các đối tượng có múc truy cập là
internal
OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com6
ví dụ minh họa
CPhanSo
Tu
Mau
Nhap()
Xuat()
Cong()
Tru()
Nhan()
Chia()
ToiGian()
KiemTra()
CPhanSo
3
5
Tên lớp
Thuộc tính
(thành phần dữ liệu)
Phương thức
Sơ đồ lớp
Sơ đồ thể hiện
4OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com7
VD minh họa
namespace Toanhoc // xem trang 90
{ Public class CPhanSo
{ int Tu, Mau; //private members
public void Nhap()
{
// Code nhập tử và mẫu số
}
public void Xuat()
{
// Code xuất tử và mẫu số
}
}
}
Một namespace có bao nhiêu class và class được viết ở
đâu trong namespace?
OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com8
2. Object
Object thể hiện của 1 class ra thành 1 thực thể
Có thể tạo nhiều object từ 1 class, từng object
trong cùng class có những đặc tính khác nhau
Object là 1 kiểu tham chiếu nên dữ liệu được tạo
ra ở vùng nhớ Heap và phải dùng toán tử new để
cấp phát object
syntax:
ClassName ObjectName ;
ObjectName = new ClassName([parameter list]) ;
hoặc
ClassName ObjectName = new ClassName([param list]) ;
5OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com9
VD trang 7-8
namespace LopDoiTuongHCN
{
Public class HCN
{ protected float Dai, Rong;
public float ChuVi()
{
return (Dai+Rong)*2 ;
}
public float DienTich()
{
return Dai*Rong ;
}
}
}
OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com10
3. Phương thức tạo lập (constructor) // thiết lập
Constructor có cùng tên với tên của class
Constructor thường có thuộc tính public.
Constructor không có giá trị trả về và không
khai báo void
Có thể có nhiều Constructor trong cùng lớp
(overloaded function)
Khi một lớp có nhiều Constructor, việc tạo
các đối tượng phải kèm theo các tham số
phù hợp với một trong các Constructor đã
khai báo.
6OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com11
3. Phương thức tạo lập (constructor) (tt)
Constructor được gọi tự động khi một đối
tượng của lớp được tạo ra.
Trình biên dịch sẽ tự động tạo một
constructor mặc định cho lớp đó và khởi tạo
các biến bằng các giá trị mặc định.
Nếu lớp chỉ có 1 constructor có tham số thì
khi khởi tạo đối tượng (= new) ta phải truyền
tham số cho constructor.
OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com12
Vd: Where is constructor and member Variables ?
// Define Constructor
// Biến thành viên - private
xem thêm VD: trang 10-11
// Use Constructor
7OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com13
4. Copy constructor
Phương thức tạo lập sao chép (Copy
constructor) khởi gán giá trị cho đối tượng
mới bằng cách sao chép dữ liệu của đối
tượng đã tồn tại (cùng kiểu).
OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com14
VD: copy constructor
public ThoiGian(ThoiGian tg)
{ Nam = tg.Year;
Thang = tg.Month;
Ngay = tg.Date;
Gio = tg.Hour;
Phut = tg.Minute;
Giay = tg.Second;
}
Khi đó cú pháp (syntax) khai báo t2 là:
// Giải sử t1 đã được tạo và có giá trị t.gian hiện hành
ThoiGian t2 = new Thoigian(t1) ;
8OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com15
5. Quá tải hàm (overloaded function) // nạp chồng
Là định nghĩa các hàm cùng tên nhưng khác
tham số hoặc kiểu trả về. Hàm thích hợp nhất
được gọi khi chạy chương trình.
Public class Date
{ public Date()
{ // Coding here
}
public Date(DateTime dt)
{ // Coding here
}
public Date(Date ExistingDate)
{ // Coding here
}
} vd: xem trang 12-15
OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com16
6. Sử dụng hàm thành viên tĩnh (static)
Những thuộc tính và phương thức trong
một lớp có thể là những thành viên thể hiện
(instance members) hay những thành viên
tĩnh (static members).
instance members hay thành viên của đối
tượng liên quan đến thể hiện của một kiểu
dữ liệu
Trong khi static members (có từ khóa static
đứng trước) được xem như một phần của
lớp.
9OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com17
6. Sử dụng hàm thành viên tĩnh (static) (tt)
Việc truy cập đến thành viên tĩnh phải thực hiện
thông qua tên lớp (không được truy cập thành
viên tĩnh thông qua đối tượng) // điều này khác
với ngôn ngữ C++.
Cú pháp truy cập static members C# :
TênLớp.TênThànhViênTĩnh
Phương thức tĩnh hoạt động ít nhiều giống như
phương thức toàn cục
 thảo luận:
Phương thức tĩnh trùng tên thì sao?
Phương thức tĩnh có thuộc đối tượng nào
không?
VD xem trang 16-17
OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com18
7. Tham số của phương thức
Truyền tham trị bằng tham số kiểu giá trị
Truyền tham chiếu bằng tham số kiểu giá trị với
từ khóa ref
Truyền tham chiếu với tham số kiểu giá trị bằng
từ khóa out (từ khóa out cho phép ta sử dụng
tham chiếu mà không cần phải khởi tạo)
Truyền tham trị với tham số thuộc kiểu tham
chiếu; (chỉ có thể thực hiện các thao tác làm
thay đổi các dữ liệu thành phần của đối số)
Truyền tham chiếu với tham số thuộc kiểu dữ
liệu tham chiếu
VD xem trang 18-24
10
OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com19
Q&A
Bài tập:
1. Đọc lại bài giảng
2. Làm bài tập
3. Đọc tiếp bài: Lớp & đối tượng
4. Buổi tới thảo luận & kiểm tra bài cũ
19
OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com20
int uscln(int a,int b)
{ while(a*b)
{ if(a>b) a%=b;
else b%=a;
}
return (a+b);
}
int UCLN(int a,int b)
{ a=abs(a); b=abs(b);
if(a==b) return (a);
else if(a>b) return(UCLN(a-b,b));
else return(UCLN(a,b-a));
}
int BCNN(int a, int b)
{
return ((a*b)/UCLN(a,b));
}

File đính kèm:

  • pdf02_Class_Object_1.pdf
Tài liệu liên quan