Tải bản đầy đủ (.pdf) (118 trang)

Lập trình cơ sở dữ liệu C Sharp-Phần 3 pdf

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.81 MB, 118 trang )

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)


Down cast – up cast

Abstract class

Sealed class, nested class

Interface
3
Overview
Overview
“Everything is an object! At least, that is the view from
inside the CLR and the C# programming language. This is
no surprise, because C# is, after all, an object-oriented
language. The objects that you create through class
definitions in C# have all the same capabilities as the other
predefined objects in the system…”
Apress-Accelerated C# 2008
4
Object-oriented Programming (OOP)
Object-oriented Programming (OOP)

Ky thuât lâp trinh truyên thông ( procedural ̃ ̣ ̣ ̀ ̀ ́
programming):

all functionality is contained in a few modules of
code (often just one)
 Kho thay thê cai tiêń ́ ̉ ́

Ky thuât OOP :̃ ̣


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

7
Life Cycle of an Object
Life Cycle of an Object

Gôm 2 giai đoan (two important stages):̀ ̣
➤ Construction: đôi t ng cân đ c kh i tao, va đ c th c ́ ượ ̀ ượ ở ̣ ̀ ượ ự
thi b i ham constructor ở ̀
➤ Destruction: khi đôi t ng bi huy bo, 1 sô nhiêm vu clean-́ ượ ̣ ̉ ̉ ́ ̣ ̣
up cân đ c th c thi đê giai phong bô nh ̀ ượ ự ̉ ̉ ́ ̣ ớ  ham ̀
destructor.
8
T o l p trong C#ạ ớ
T o l p trong C#ạ ớ

Khai báo l pớ

N u ko khai báo l p c s thì C# m c đ nh xem ế ớ ơ ở ặ ị
l p c s là objectớ ơ ở

L p luôn là ớ ki u d li u tham chi u (reference ể ữ ệ ế
type) trong C#
9
[access modifier] class <class name> [: base class]
{
// class body
}
Khóa truy xu t cho classấ
Khóa truy xu t cho classấ
(Access modifier)
(Access modifier)


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. ̀ ượ ́ ̣


Interfaces cannot exist on their own  không thê kh i tao ̉ ở ̣
1 interface (‘‘instantiate an interface’’)
11
Biêu diên interface băng UML̉ ̃ ̀
Biêu diên interface băng UML̉ ̃ ̀
12
Khai bao interfacé
Khai bao interfacé

Khai bao interface cung t ng t nh khai bao l p:́ ̃ ươ ự ư ́ ớ
interface IMyInterface
{
// Interface members.
}

Cac khoa truy xuât: internal (default), public, không ́ ́ ́
đ c phep dung astract hay sealedượ ́ ̀

Tinh kê th a cua interface cung t ng t nh tinh ́ ́ ừ ̉ ̃ ươ ự ư ́
kê th a cua clasś ừ ̉
public interface IMyInterface : IMyBaseInterface, IMyBaseInterface2
{
// Interface members.
}
13
So sanh Interface va clasś ̀
So sanh Interface va clasś ̀

Tât ca class đêu kê th a t l p c s System.Object theo ́ ̉ ̀ ́ ừ ừ ớ ơ ở

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


Co cung tên v i class, co thê không co tham sô nao ́ ̀ ớ ́ ̉ ́ ́ ̀
(parameter) va không tra vê bât ky gia tri nao (kê ca void). ̀ ̉ ̀ ́ ̀ ́ ̣ ̀ ̉ ̉

Môi class phai co it nhât 1 constructor. Nêu ban không tao ̃ ̉ ́ ́ ́ ́ ̣ ̣
constructor cho 1 class thi compiler se t đông phat ra 1 ̉ ̃ ự ̣ ́
default constructor

Cho phép overload constructor đ t o ra nhi u cách ể ạ ề
kh i t o đ i t ngở ạ ố ượ
16
Phân loai Constructoṛ
Phân loai Constructoṛ

Constructor m c đ nhặ ị

Không có tham số

Kh i t o đ i t ng t class khi ch a bi t thông tin gì v nóở ạ ố ượ ừ ư ế ề

Constructor sao chép

Tham s vào là đ i t ng cùng l pố ố ượ ớ

T o ra đôi t ng nh b n sao c a đôi t ng đ u vàoạ ́ ượ ư ả ủ ́ ượ ầ

Constructor không măc đinh khac̣ ̣ ́

Có m t hay nhi u tham s vàoộ ề ố


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ặ ị

Constructor sao chép
Constructor sao chép
Constructor khác
Constructor khác
(t o h c sinh khi bi t h tên)ạ ọ ế ọ
(t o h c sinh khi bi t h tên)ạ ọ ế ọ
Constructor
Constructor

Khai báo private cho constructor s ko cho phép kh i t o ẽ ở ạ
đ i t ngố ượ
19
Ko th t o ể ạ
th hi n/objể ệ
class Car
{
// The 'state' of the Car.
public string petName;
public int currSpeed;
// A custom default constructor.
public Car()
{
petName = "Chuck";
currSpeed = 10;
}
// Here, currSpeed will receive the
// default value of an int (zero).
public Car(string pn)
{
petName = pn;

}
// 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ứ ự ự ́

Th t th c thi cac constructorứ ự ự ́

In C#, constructors are called using the new
keyword.

Khi l p dân xuât đ c kh i tao, l p c s cua no ớ ̃ ́ ượ ở ̣ ớ ơ ở ̉ ́
cung phai đ c kh i tao. Va khi l p c s nay đ c ̃ ̉ ượ ở ̣ ̀ ớ ơ ở ̀ ượ
kh i tao thi l p c s cua chinh no cung phai đ c ở ̣ ̀ ớ ơ ở ̉ ́ ́ ̃ ̉ ượ
kh i tao va c thê cho đên khi tiên đên l p ở ̣ ̀ ứ ́ ́ ́ ́ ớ
System.Object
21
Vi dú ̣
Vi dú ̣
public class MyBaseClass
{
public MyBaseClass()
{
}
public MyBaseClass(int i)
{
}
}
public class MyDerivedClass :
MyBaseClass
{
public MyDerivedClass()
{
}
public MyDerivedClass(int i)
{

}
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

➤ The System.Object.Object constructor will execute.
➤ The MyBaseClass.MyBaseClass(int i)constructor will
execute.
➤ The MyDerivedClass.MyDerivedClass(int i, int j)
constructor will execute.
24
Constructor initializer
Constructor initializer

Co thê s dung constructor initializer đê xac đinh loai ́ ̉ ử ̣ ̉ ́ ̣ ̣
constructor nao cân th c hiêǹ ̀ ự ̣

Vi du: xac đinh constructor cua l p c ban nao cân dung ́ ̣ ́ ̣ ̉ ớ ơ ̉ ̀ ̀ ̀
trong đinh nghia cua constructor cua l p suy dân (derived ̣ ̃ ̉ ̉ ớ ̃
class)
public class MyDerivedClass : MyBaseClass
{

public MyDerivedClass(int i, int j) : base(i)
{
}
}
25

×