Bài giảng Lập trình Ứng dụng quản lý - Tuần 4: C#.NET cơ bản - Lập trình hướng đối tượng
9/25/2018
Lập trình Ứng dụng quản lý
C#.NET cơ bản
Lập trình hướng đối tượng
Nội dung
Class và thừa kế
Interface và Struct
Phân cấp dữ liệu trong .NET
Truyền tham số trong C#
1
9/25/2018
Nội dung
Class và thừa kế
Interface và Struct
Phân cấp dữ liệu trong .NET
Truyền tham số trong C#
Trừu tượng hóa dữ liệu
Trừu tượng hóa dữ liệu là một phương pháp tích
hợp các dữ liệu cơ sở hoặc kiểu dữ liệu có sẵn
nhằm mô tả, biểu diễn một khái niệm hay một đối
tượng trong thế giới thực.
Ví dụ biểu diễn dữ liệu thông tin một Sinh viên,
một Nhâ n viên.
2
9/25/2018
Class
Cú phá p khai bá o trong C#
[accessmodifier] class ClassName
{
[accessmodifier] [datatype] fieldName;
...
[accessmodifier] methodName(parameters);
}
Thành phần trong class
Thành phần dữ liệu: fields, constants
Thành phần xử lý: methods
Thành phần
Thành phần instance (thể hiện) và static (tĩnh)
Tùy theo dữ liệu hay xử lý là chung hay riêng cho mỗi
instance.
Từ khóa: static
class ClassName
{
datatype fieldInstance;
datatype fieldStatic;
datatype methodInstance(params)
{
...
}
datatype methodStatic(params)
{
...
}
}
3
9/25/2018
Kế thừa
Cú phá p
class ClassName : ClassBase
{
...
}
Trong C# chỉ cho phép kế thừa public.
Trong C# chỉ cho phép đơn thừa kế.
Trong C# một lớp bắt buột phải thừa kế từ một lớp
nào đó. ???
Đa hình
Cú phá p
class ClassBase
{
public datatype methodVirtual()
{
...
}
}
class ClassName : ClassBase
{
public datatype methodVirtual()
{
return ethodVirtual();
}
}
4
9/25/2018
Abstract
C# cho phép cả class và phương thức có thể khai
bá o abstract.
Một class abstract khô ng có instance và một
phương thức abstract phải được overriden trong
bất kỳ lớp dẫn xuất khô ng abstract nào.
Một phương thức abstract sẽ tự động được khai
bá o virtual.
Nếu một lớp có phương thức abstract thì nó cũng
là lớp abstract.
Sealed
C# cho phé p cá c class và phương thức được khai
bá o sealed.
Một class sealed thì khô ng cho phép kế thừa.
Một phương thức sealed thì khô ng cho phé p
overriden.
class ClassBase
{
...
}
class ClassName
{
public datatype method()
{
...
}
}
5
9/25/2018
Construction
Constructor
class ClassName
{
public ClassName()
{
}
...
}
Cá c contructor theo cùng luật overloading như
các phương thức khác.
Constructor mặc định có thể không cần cài đặt.
Static Constructor
class ClassName
{
public static ClassName()
{
...
}
}
Constructor static để khởi tạo các thành phần
static. Constructor static không có bổ từ tầm vực
truy xuất, không có bất kỳ một tham số nào và chỉ
có duy nhất một constructor static trong một lớp.
6
9/25/2018
Constructor gọi constructor khác
class ClassName
class ClassName
{
{
field1;
field2;
field1;
field2;
public ClassName()
public ClassName()
{
{
field1 = default1;
field1 = default1;
}
}
public ClassName(info1)
public ClassName(info1)
{
: this()
field1 = default1;
{
field2 = info1;
}
field2 = info1;
}
}
}
Constructor trong kế thừa
class ClassBase
{
field1;
public ClassBase(info1)
{
field1 = info1;
}
}
class ClassName : ClassBase
{
public ClassName(info1)
: base(info1)
{
}
}
7
9/25/2018
Disposal
Mọi vùng nhớ cấp phát cho đối tượng trong .NET
đều được bộ thu gom rác (garbage collection)
quản lý.
C# hỗ trợ mẫu Destruction để giải quyết vấn đề
cần giải phóng sớm các tài nguyên chiếm nhiều
bộ nhớ hoặc các tài nguyên có vùng nhớ không
được quản lý (unsafe). Gồm 2 giai đoạn
Thực thi giao diện Dispose giải phóng tài nguyên
sớm.
Cài đặt Destructor để giải phóng vùng nhớ không
được quản lý.
Ví dụ
class ClassName
{
fieldLargeMem;
fieldUnsafe;
{
giải phóng fieldLargeMem
}
{
giải phóng fieldUnsafe
}
}
8
9/25/2018
Phân biệt Close và Dispose
class ClassName : IDisposable
{
fieldLargeMem;
public void Dispose()
{
giải phóng fieldLargeMem
}
public void Close()
{
...
}
}
Class Object
System.Object là class cơ sở cao nhất trong cây
thừa kế các kiểu dữ liệu của .NET.
Nếu class không được khai báo tường minh thừa
kế bất kỳ class nào thì mặc định kế thừa Object.
Một số phương thức được định nghĩa trong
Object:
Phương thức
Đặc tí nh
Chức năng
Trả về một chuỗi mô tả của đối
tượng
string ToString()
public virtual
int GetHashTable() public virtual Được sử dụng trong dictionary
9
9/25/2018
Class Object (tt)
Phương thức
Đặc tí nh
Chức năng
So sánh các thực thể của đối
tượng
bool Equals(object obj) public virtual
bool Equals(object
public static
So sánh các thực thể của đối
tượng
objA, object objB)
bool
So sánh hai sự tham chiếu đến
một đối tượng
ReferenceEquals(obje public static
ct objA, object objB)
Trả về chi tiết kiểu của một đối
tượng
Type GetType()
Public
object
MemberwiseClone()
tạo ra một bản copy của đối
tượng
Protected
Protected
virtual
Đây là một dạng Destructor
của .Net
void Finalize()
Property
Giúp truy suất an toàn thành phần dữ liệu của đối
tượng.
class ClassName
{
datatype field;
public
{
{
return field;
}
{
field =
}
}
}
10
9/25/2018
Property (tt)
Bản chất của property là method.
Property chỉ đọc (readonly) hay chỉ ghi
(writeonly).???
Property có thể được cài đặt virtual hay
abstract.
Indexer
class ClassI
{
string[] arrData;
public string
{
get
{
return arrData[i];
}
set
{
arrData[i] = value;
}
}
}
11
9/25/2018
Nội dung
Class và thừa kế
Interface và Struct
Phân cấp dữ liệu trong .NET
Truyền tham số trong C#
Interface
C# hỗ trợ interface (giao diện) để thực thi đa
thừa kế. ???
Một interface thì khô ng có constructor hay
field.
Các thành phần trong interface mặc định là
public và không cho phép tầm vực truy suất
khá c.
Các thành phần trong interface không được
phé p khai bá o virtual hay static.
12
9/25/2018
Ví dụ
class CTest : ITest1, ITest2
interface ITest1
{
{
public void func1()
{
void func1();
void func2(int i);
}
...
}
public void func2(int t)
{
interface ITest2
{
...
int func1();
}
}
int ITest2.func1()
{
...
}
}
Struct
Cú phá p
[accessmodifier] struct structName
{
[accessmodifier] datatype fieldName;
[accessmodifier] datatype methodName()
{
...
}
}
Struct là value type.
Struct không hỗ trợ kế thừa.
Không được phép cài đặt constructor mặc định.
Tầm vực truy suất mặc định là public.
13
9/25/2018
Nội dung
Class và thừa kế
Interface và Struct
Phân cấp dữ liệu trong .NET
Truyền tham số trong C#
Phân cấp kiểu dữ liệu trong .NET
14
9/25/2018
Phân cấp kiểu dữ liệu trong .NET (tt)
Bất kỳ kiểu dữ liệu nào cũng được dẫn xuất từ
Object, được định nghĩa tập các phương thức
thông dụng cho tất cả các kiểu (như: ToString(),
Equals(), GetHashCode(),...).
Các kiểu dữ liệu số (numerical) dẫn xuất từ
System.ValueType (tự động cấp phát trên
stack).
Kiểu dữ liệu số có các giá trị mặc định tương ứng
(như MaxValue, MinValue,...)
Các kiểu dữ liệu số có phương thức hỗ trợ lấy giá
trị (value) từ chuỗi (string) đó là Parse() và
TryParse().
Implicitly Typed Local Variables
Từ C# 3.0 cho phép khai báo biến với kiểu dữ
liệu không tường minh bằng từ khóa var. Thực
chất compiler sẽ tự gán kiểu giá trị thích hợp cho
biến.
Giới hạn: chỉ sử dụng cho biến cục bộ trong
method hoặc property. Phải gán giá trị khởi tạo
(≠ null) cho biến.
15
9/25/2018
Nội dung
Class và thừa kế
Interface và Struct
Phân cấp dữ liệu trong .NET
Truyền tham số trong C#
Truyền tham số cho phương thức
Dạng tham số
Ý nghĩa
Khô ng kèm theo từ khóa bổ trợ
Tham số được truyền bằng giá trị
(value), nghĩa là phương thức được
gọi nhận một bản sao của dữ liệu
gốc
Đi kèm từ khóa out
Đi kèm từ khóa ref
Tham số phải được gán giá trị bởi
phương thức được gọi nhận tham
số.
Tham số có thể được gán lại giá trị
trong phương thức và điều này là
không bắt buộc
Đi kèm từ khóa params
Cho phé p truyền biến thiên về số
lượng tham số với cách khai báo
như là 1 tham số
16
9/25/2018
Ví dụ truyền tham số thông thường
Ví dụ truyền tham số với out
17
9/25/2018
Ví dụ truyền tham số với ref
Ví dụ truyền tham số với params
18
9/25/2018
Ví dụ truyền tham số với params (tt)
Phân biệt kiểu tham số và kiểu dữ liệu
19
9/25/2018
Phân biệt kiểu tham số và kiểu dữ liệu (tt)
Phân biệt kiểu tham số và kiểu dữ liệu (tt)
20
Tải về để xem bản đầy đủ
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Lập trình Ứng dụng quản lý - Tuần 4: C#.NET cơ bản - Lập trình hướng đối tượng", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
File đính kèm:
bai_giang_lap_trinh_ung_dung_quan_ly_tuan_4_c_net_co_ban_lap.pdf

