1. Trang chủ
  2. » Công Nghệ Thông Tin

Kiến thức cơ bản về C# - Class

52 370 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 52
Dung lượng 3,04 MB

Nội dung

Lương Trần Hy Hiến© 2010 Khoa CNTT – ĐH Sư Phạm TpHCMĐịnh nghĩa lớp 6 public class Cat : Animal { private string name; private string owner; public Catstring name, string owner Fields C

Trang 1

Lập trình Windows Form với C#

Bài 3: Kiến thức cơ bản về C# (tt)

Class

Lương Trần Hy Hiến FIT, HCMUP

Trang 2

Lương Trần Hy Hiến© 2010 Khoa CNTT – ĐH Sư Phạm TpHCM

Trang 3

Lương Trần Hy Hiến© 2010 Khoa CNTT – ĐH Sư Phạm TpHCM

Định nghĩa lớp

Trang 4

Lương Trần Hy Hiến© 2010 Khoa CNTT – ĐH Sư Phạm TpHCM

Classes in OOP

define

– Attributes (state, properties, fields)

– Behavior (methods, operations)

– Objects describe particular instance of a class

modeled object relevant to the problem

4

Trang 5

Lương Trần Hy Hiến© 2010 Khoa CNTT – ĐH Sư Phạm TpHCM

Classes in C#

Classes in C# could have following members:

– Fields, constants, methods, properties, indexers, events,

operators, constructors, destructors

– Inner types (inner classes, structures, interfaces, delegates, )

Members can have access modifiers (scope)

– public , private , protected , internal

Members can be

– static (common) or specific for a given object

5

Trang 6

Lương Trần Hy Hiến© 2010 Khoa CNTT – ĐH Sư Phạm TpHCM

Định nghĩa lớp

6

public class Cat : Animal

{

private string name;

private string owner;

public Cat(string name, string owner)

Fields

Constructor

Property Begin of class definition

Inherited (base) class

Trang 7

Lương Trần Hy Hiến© 2010 Khoa CNTT – ĐH Sư Phạm TpHCM

Định nghĩa lớp (2)

7

public string Owner {

get { return owner;}

set { owner = value; } }

public void SayMiau() {

Console.WriteLine("Miauuuuuuu!");

} }

Method

End of class definition

Trang 8

Lương Trần Hy Hiến© 2010 Khoa CNTT – ĐH Sư Phạm TpHCM

Class Definition and Members

– Class declaration

– Inherited class or implemented interfaces

– Fields (static or not)

– Constructors (static or not)

– Properties (static or not)

– Methods (static or not)

– Events, inner types, etc.

8

Trang 9

Lương Trần Hy Hiến© 2010 Khoa CNTT – ĐH Sư Phạm TpHCM

Thuộc tính truy cập (Access Modifiers)

Thuộc tính Giới hạn truy cập

Private Chỉ trong lớp (mặc định)

Protected Trong lớp và lớp con

Internal Trong chương trình

Protected internal Trong chương trình và lớp con

9

 tính đóng gói ( encapsulation )

Trang 10

Lương Trần Hy Hiến© 2010 Khoa CNTT – ĐH Sư Phạm TpHCM

Từ khóa 'this'

hiện hiện hành của một đối tượng

public void SetYear( int Nam)

Trang 11

Lương Trần Hy Hiến© 2010 Khoa CNTT – ĐH Sư Phạm TpHCM

represents information about a dog

– The dog should have name and breed

– If there is no name or breed assigned

to the dog

• It should be named "Balkan"

• Its breed should be "Street excellent"

– It should be able to view and change the name and

the breed of the dog

– The dog should be able to bark

11

Trang 12

Lương Trần Hy Hiến© 2010 Khoa CNTT – ĐH Sư Phạm TpHCM

public class Dog

{

private string name;

private string breed;

public Dog() {

Trang 13

Lương Trần Hy Hiến© 2010 Khoa CNTT – ĐH Sư Phạm TpHCM

Defining Class Dog – Example (2)

public string Name {

get { return this.name; } set { this.name = value; } }

public string Breed {

get { return this.breed; } set { this.breed = value; } }

public void SayBau() {

Console.WriteLine("{0} said: Bauuu!", this.name);

} }

13

Trang 14

Lương Trần Hy Hiến© 2010 Khoa CNTT – ĐH Sư Phạm TpHCM

Lớp và đối tượng

Trang 15

Lương Trần Hy Hiến© 2010 Khoa CNTT – ĐH Sư Phạm TpHCM

Constructors

Trang 16

Lương Trần Hy Hiến© 2010 Khoa CNTT – ĐH Sư Phạm TpHCM

Phương thức khởi tạo

public MyClass(int number) // another overload

{

// construction code }

}

16

Trang 17

Lương Trần Hy Hiến© 2010 Khoa CNTT – ĐH Sư Phạm TpHCM

Phương thức khởi tạo

luôn có hàm tạo mặc định để tránh lỗi biên dịch.

17

Trang 18

Lương Trần Hy Hiến© 2010 Khoa CNTT – ĐH Sư Phạm TpHCM

VD: Lớp điểm trong mặt phẳng Oxy

}

Trang 19

Lương Trần Hy Hiến© 2010 Khoa CNTT – ĐH Sư Phạm TpHCM

{

name = "[no name]";

age = 0;

} // Constructor with parameters public Person(string name, int age) {

this name = name;

this age = age;

} // More code

}

Trang 20

Lương Trần Hy Hiến© 2010 Khoa CNTT – ĐH Sư Phạm TpHCM

Gọi lại Constructor

} public Point(int xCoord, int yCoord) {

this xCoord = xCoord;

this yCoord = yCoord;

} // More code

}

Trang 21

Lương Trần Hy Hiến© 2010 Khoa CNTT – ĐH Sư Phạm TpHCM

Phương thức hủy

collection) và do vậy không cần phải khai báo tường minh các phương thức hủy.

chế thu dọn khi đối tượng bị hủy.

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.

21

Trang 22

Lương Trần Hy Hiến© 2010 Khoa CNTT – ĐH Sư Phạm TpHCM

Trang 23

Lương Trần Hy Hiến© 2010 Khoa CNTT – ĐH Sư Phạm TpHCM

}

23

Trang 24

Lương Trần Hy Hiến© 2010 Khoa CNTT – ĐH Sư Phạm TpHCM

Hàm hủy (tt)

Lớp sẽ thực thi giao diện System.IDisposable , tức

là thực thi phương thức IDisposable.Dispose().

Không biết trước được khi nào một Destructor đượcgọi.

Có thể chủ động gọi thu dọn rác bằng cách gọi

phương thức System.GC.Collect().

System.GC là một lớp cơ sở NET mô tả bộ thu gom rác và phương thức Collect() dùng để gọi bộ thu gom rác.

24

Trang 25

Lương Trần Hy Hiến© 2010 Khoa CNTT – ĐH Sư Phạm TpHCM

Thuộc tính (Property)

Đóng gói dữ liệu với Property

– VD: Lớp người có chuỗi m_sHoten

– Cài đặt Property HoTen:

public string HoTen

{

get { return m_sHoTen; }

set { m_sHoTen = value ; }

}

– Sử dụng Property:

Nguoi A = new Nguoi();

A HoTen = “Lương Trần Hy Hiến”; //đặt giá trị string tentoi = A HoTen ; //lấy giá trị

25

Trang 26

Lương Trần Hy Hiến© 2010 Khoa CNTT – ĐH Sư Phạm TpHCM

Thuộc tính (Property)

26

Trang 27

Lương Trần Hy Hiến© 2010 Khoa CNTT – ĐH Sư Phạm TpHCM

public class Point

public int YCoord {

get { return yCoord ; } set { yCoord = value; } }

// More code

}

27

Trang 28

Lương Trần Hy Hiến© 2010 Khoa CNTT – ĐH Sư Phạm TpHCM

Dynamic Properties

không dựa vào một Field nào

public float Area {

get {

return width * height ; }

} }

Trang 29

Lương Trần Hy Hiến© 2010 Khoa CNTT – ĐH Sư Phạm TpHCM

UserProfile profile = new UserProfile () {

FirstName = "Steve",

LastName = "Balmer",

UserId = 91112 };

Trang 30

Lương Trần Hy Hiến© 2010 Khoa CNTT – ĐH Sư Phạm TpHCM

Thành viên static

Thành viên tĩnh được xem như một phần của lớp.

Có thể truy cập đến thành viên tĩnh của một lớp

thông qua tên lớp

C# không cho phép truy cập đến các phương thức tĩnh và các biến thành viên tĩnh thông qua một thể hiện.

Không có friend

Phương thức tĩnh hoạt động ít nhiều giống như phương thức toàn cục

30

Trang 31

Lương Trần Hy Hiến© 2010 Khoa CNTT – ĐH Sư Phạm TpHCM

Trang 32

Lương Trần Hy Hiến© 2010 Khoa CNTT – ĐH Sư Phạm TpHCM

Static Members – Example

public class SqrtPrecalculated

{

public const int MAX_VALUE = 10000;

// Static field private static int[] sqrtValues ; // Static constructor

private static SqrtPrecalculated () {

sqrtValues = new int[MAX_VALUE + 1];

for (int i = 0; i < sqrtValues.Length; i++) {

sqrtValues[i] = (int)Math.Sqrt(i);

} }

//(example continues)

32

Trang 33

Lương Trần Hy Hiến© 2010 Khoa CNTT – ĐH Sư Phạm TpHCM

Static Members – Example (2)

// The Main() method is always static

static void Main()

Trang 34

Lương Trần Hy Hiến© 2010 Khoa CNTT – ĐH Sư Phạm TpHCM

Hướng đối tượng

public class BankAccount{

protected string ID;

protected string Owner;

protected decimal _Balance ;

public BankAccount( string ID,

string Owner) {

this ID = ID;

this Owner = Owner;

}

public decimal Balance {

get {

return _Balance; }

} }

Fields

Thuộc tính chỉ đọc

34

Trang 35

Lương Trần Hy Hiến© 2010 Khoa CNTT – ĐH Sư Phạm TpHCM

Hướng đối tượng

Trang 36

Lương Trần Hy Hiến© 2010 Khoa CNTT – ĐH Sư Phạm TpHCM

Chồng hàm (overload)

khác nhau về kiểu trả về.

khác nhau về đặc tính của một thông số

36

Trang 37

Lương Trần Hy Hiến© 2010 Khoa CNTT – ĐH Sư Phạm TpHCM

Inheritance

Trang 38

Lương Trần Hy Hiến© 2010 Khoa CNTT – ĐH Sư Phạm TpHCM

Sự thừa kế

hợp khai báo class mà không cho phép

Trang 39

Lương Trần Hy Hiến© 2010 Khoa CNTT – ĐH Sư Phạm TpHCM

Đa hình

– khai báo khóa virtual trong phương thức của lớp cơ sở

tương ứng lớp dẫn xuất phải có từ khóa

override

39

Trang 40

Lương Trần Hy Hiến© 2010 Khoa CNTT – ĐH Sư Phạm TpHCM

Trang 41

Lương Trần Hy Hiến© 2010 Khoa CNTT – ĐH Sư Phạm TpHCM

Trang 42

Lương Trần Hy Hiến© 2010 Khoa CNTT – ĐH Sư Phạm TpHCM

Lớp cơ sở trừu tượng

abstract class Building

{

public abstract decimal CalculateHeatingCost();

// abstract method

}

Một lớp abstract không được thể hiện và một

phương thức abstract không được thực thi mà phải được overriden trong bất kỳ lớp thừa hưởng không abstract nào

Nếu một lớp có phương thức abstract thì nó cũng

là lớp abstract

Một phương thức abstract sẽ tự động được khai báo virtual .

42

Trang 43

Lương Trần Hy Hiến© 2010 Khoa CNTT – ĐH Sư Phạm TpHCM

abstract method

43

Trang 44

Lương Trần Hy Hiến© 2010 Khoa CNTT – ĐH Sư Phạm TpHCM

Abstract Class – Example

Trang 45

Lương Trần Hy Hiến© 2010 Khoa CNTT – ĐH Sư Phạm TpHCM

Giao diện - Interface

“hợp đồng”, do đó, nếu một class hoặc một struct cài đặt 1 interface thì phải cài đặt tất cả các tính năng được khai báo

tượng hoàn toàn (tất cả các phương thức đều trừu tượng) Khi một class cài đặt 1

lớp trừu tượng nói trên.

45

Trang 46

Lương Trần Hy Hiến© 2010 Khoa CNTT – ĐH Sư Phạm TpHCM

Giao diện

46

Trang 47

Lương Trần Hy Hiến© 2010 Khoa CNTT – ĐH Sư Phạm TpHCM

Giao diện

hỗ trợ giao diện hay không (VD doc is

IStorable)

47

Trang 48

Lương Trần Hy Hiến© 2010 Khoa CNTT – ĐH Sư Phạm TpHCM

Một số giao diện chuẩn sau

48

Trang 49

Lương Trần Hy Hiến© 2010 Khoa CNTT – ĐH Sư Phạm TpHCM

Generic Classes

Trang 50

Lương Trần Hy Hiến© 2010 Khoa CNTT – ĐH Sư Phạm TpHCM

Generics?

phụ thuộc kiểu dữ liệu

– Các lớp có thể được khởi tạo với một số kiểu dữ liệu khác nhau

– Ví dụ: List< T >  List< int > / List< string > /

List< Student >

types" hay "template types"

– Tương tự kiểu templates trong C++

– Tương tự kiểu generics trong Java

50

Trang 51

Lương Trần Hy Hiến© 2010 Khoa CNTT – ĐH Sư Phạm TpHCM

public class GenericList<T>

} }

T is an unknown type, parameter of the

class

T can be used in any method in the class

T can be replaced with

int during the instantiation

51

Trang 52

Lương Trần Hy Hiến© 2010 Khoa CNTT – ĐH Sư Phạm TpHCM

52

Ngày đăng: 17/03/2015, 15:18

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w