1
Chương 3
Chương 3
Xây dưng lơp va giao diêṇ ́ ̀ ̣
Xây dưng lơp va giao diêṇ ́ ̀ ̣
N i dungộ
N i dungộ
Lâp trinh h ng đôi t ng la gi?̣ ̀ ướ ́ ượ ̀ ̀
Khai báo l pớ
Khai bao interfacé
Constructor & destructor
Thu c tính (field)ộ
Method
Inheritance
Protected fields
Overriding method
2
Nôi dung̣
Nôi dung̣
Polymorphism (Đa hình)
S dung nhiêu modules of code, môi module cung ử ̣ ̀ ̃
câp 1 ch c năng riêng va co thê đ c cô lâp ́ ứ ̀ ́ ̉ ượ ̣
(isolated) hay thâm chi đôc lâp hoan toan v i ̣ ́ ̣ ̣ ̀ ̀ ớ
nhau.
Dê dang s dung lai cac modulẽ ̀ ử ̣ ̣ ́
5
What is an Object?
What is an Object?
An object is a building block of an OOP
application
Objects in C# are created from types, just like
the variables.
The type of an object is known by a special
name in OOP, its class.
You can use class definitions to instantiate
objects, which means creating a real, named
instance of a class.
6
Câu truc cua object́ ́ ̉
Câu truc cua object́ ́ ̉
Môt object gôm co: ̣ ̀ ́
Field
Method
M t class ch có 2 khóa truy xu tộ ỉ ấ
Internal: ch cho phép s d ng bên trong project ỉ ử ụ
hiên hanh (default)̣ ̀
internal class MyClass
{
// Class members.
}
Public: cho phép cac project bên ngoài truy ́
xu tấ
public class MyClass
{
// Class members.
}
10
Interface la gi?̀ ̀
Interface la gi?̀ ̀
Interface la 1 tâp h p cac method va property điên hinh ̀ ̣ ợ ́ ̀ ̉ ̀
chung nao đo đ c nhom lai cung nhau đê đong goi ̀ ́ ượ ́ ̣ ̀ ̉ ́ ́
(encapsulate) 1 ch c năng nao đo. ứ ̀ ́
Interface không ch a ma đê th c thi, no chi đinh nghia ứ ̃ ̉ ự ́ ̉ ̣ ̃
cac thanh phân cua chinh no.́ ̀ ̀ ̉ ́ ́
Sau khi đinh nghia interface, co thê th c thi no trong 1 ̣ ̃ ́ ̉ ự ́
class class se hô tr (support) moi property va thanh ̃ ̃ ợ ̣ ̀ ̀
phân đ c xac đinh trong interface. ̀ ượ ́ ̣
dang cây phân câp (inheritance hierarchy)̣ ́
Interfaces không phai la class, vi vây không kê th a t ̉ ̀ ̀ ̣ ́ ừ ừ
System.Object.
Không thê kh i tao (instantiate) môt interface nh kh i tao ̉ ở ̣ ̣ ư ở ̣
1 class.
14
Các thành ph n c a classầ ủ
Các thành ph n c a classầ ủ
L p có th ch a các ph n sauớ ể ứ ầ
Constructor và destructor
Field và constant
Method
Property
Indexer
Event
Ch a các ki u khác (nested): class, struct, enumeration, ứ ể
interface và delegate
15
Constructor
Constructor
T o đôi t ng khi bi t m t s thông tin nào v nóạ ́ ươ ế ộ ố ề
17
Constructor
Constructor
18
class HocSinh
{
//
public HocSinh()
{
hoTen = “unknown";
namSinh = 1990;
diemVan = diemToan = 0;
}
public HocSinh(HocSinh hs)
{
hoTen = hs.hoTen;
namSinh = hs.namSinh;
diemVan = hs.diemVan;
diemToan = hs.diemToan;
}
public HocSinh(string ht)
{
hoTen = ht;
}
}
Constructor m c đ nhặ ị
Constructor m c đ nhặ ị
}
// Let caller set the full 'state' of the Car.
public Car(string pn, int cs)
{
petName = pn;
currSpeed = cs;
}
}
20
A custom default
constructor
Instance Constructors
static void Main(string[] args)
{
// Make a Car called Chuck
going 10 MPH.
Car chuck = new Car();
chuck.PrintState();
// Make a Car called Mary going
0 MPH.
Car mary = new Car("Mary");
mary.PrintState();
// Make a Car called Daisy
going 75 MPH.
Car daisy = new Car("Daisy",
75);
daisy.PrintState();
}
Th t th c thi cac constructorứ ự ự ́
}
public MyDerivedClass(int i, int j)
{
}
}
22
Vi du 1́ ̣
Vi du 1́ ̣
Co thê kh i tao MyDerivedClass nh sau:́ ̉ ở ̣ ư
MyDerivedClass myObj = new MyDerivedClass();
Chuôi s kiên sau se lân l t th c hiên:̃ ự ̣ ̃ ̀ ượ ự ̣
➤ The System.Object.Object constructor will execute.
➤ The MyBaseClass.MyBaseClass() constructor will
execute.
➤ The MyDerivedClass.MyDerivedClass() constructor will
execute
23
Vi du 2́ ̣
Vi du 2́ ̣
MyDerivedClass myObj = new MyDerivedClass(4, 8);
Chuôi cac constructor se lân l t th c hiên nh sau:̃ ́ ̃ ̀ ượ ự ̣ ư
➤ The System.Object.Object constructor will execute.
➤ The MyBaseClass.MyBaseClass() constructor will
execute.
➤ The MyDerivedClass.MyDerivedClass(int i, int j)
constructor will execute.
Hay