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

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

118 849 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề Lập trình cơ sở dữ liệu C Sharp-Phần 3 pdf
Trường học Unknown University
Chuyên ngành Databases and Programming in C#
Thể loại Sách giáo trình
Năm xuất bản Unknown
Định dạng
Số trang 118
Dung lượng 1,81 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

public string petName; public int currSpeed; // A custom default constructor.. static Constructorsis executed when one of the following occurs: ➤ An instance of the class containing t

Trang 1

Xây dưng lơp va giao diên ̣ ́ ̀ ̣

Xây dưng lơp va giao diên ̣ ́ ̀ ̣

Trang 2

N i dung ộ

N i dung ộ

Lâp trinh h ̣ ̀ ướ ng đôi t ́ ượ ng la gi? ̀ ̀

Khai báo l p ớ

Khai bao interface ́

Constructor & destructor

Trang 4

Apress-Accelerated C# 2008

Trang 5

Object-oriented Programming (OOP)

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

Trang 6

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

Trang 7

Câu truc cua object ́ ́ ̉

Câu truc cua object ́ ́ ̉

Môt object gôm co: ̣ ̀ ́

Field

Method

Trang 8

Life Cycle of an Object

➤ 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.

Trang 10

Khóa truy xu t cho class ấ

Khóa truy xu t cho class ấ

(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 {

Trang 11

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 ́ ̣

1 interface (‘‘instantiate an interface’’)

Trang 12

Biêu diên interface băng UML ̉ ̃ ̀

Biêu diên interface băng UML ̉ ̃ ̀

Trang 13

Khai bao interface ́

Khai bao interface ́

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 class ́ ừ ̉

public interface IMyInterface : IMyBaseInterface, IMyBaseInterface2

{

// Interface members.

}

Trang 14

So sanh Interface va class ́ ̀

So sanh Interface va class ́ ̀

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

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

Trang 16

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

Trang 17

Phân loai Constructor ̣

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ó ừ ư ế ề

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 ầ

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ó ế ộ ố ề

Trang 18

(t o h c sinh khi bi t h tên) ạ ọ ế ọ

Trang 20

class Car

{

// The 'state' of the Car.

public string petName;

public int currSpeed;

// A custom default constructor.

// 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)

Trang 21

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

Trang 22

public MyDerivedClass(int i) {

Trang 23

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

Trang 24

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)

Trang 25

Constructor initializer

Co thê s dung constructor initializer đê xac đinh loai ́ ̉ ử ̣ ̉ ́ ̣ ̣

constructor nao cân th c hiên ̀ ̀ ự ̣

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

Trang 26

MyBaseClass you will receive a SystemOverflowException.

Trang 27

static Constructors

 Static constructor đ ượ c dung đê kh i đâu bât ky ̀ ̉ ở ̀ ́ ̀ gia tri static ( ́ ̣ static data) nao hay th c thi 1 hanh ̀ ự ̀ đông (action) chi ra 1 lân duy nhât cua 1 l p ̣ ̉ ̀ ́ ̉ ớ

 Đ ượ c goi t đông tr ̣ ự ̣ ướ c khi 1 điên hinh cua l p ̉ ̀ ̉ ớ

đ ượ c tao hay bât ky static member nao đ ̣ ́ ̀ ̀ ượ c

tham chiêu ́

 Môi class chi co thê co 1 constructor static ̃ ̉ ́ ̉ ́

 Constructor static không ch a access modifier va ứ ̀ bât ky tham sô nao ́ ̀ ́ ̀

 Constructor static chi th c thi đung 1 lân, bât kê ̉ ự ́ ̀ ́ ̉

co bao nhiêu đôi t ́ ́ ượ ng đ ượ c tao ra ̣

Trang 28

static Constructors

is executed when one of the following occurs:

➤ An instance of the class containing the static

constructor is created.

➤ A static member of the class containing the static

constructor is accessed.

the class is instantiated or static members accessed No

matter how many instances of a class are created, its

static constructor will only be called once

All nonstatic constructors are also known as instance

constructors

Trang 29

public class Bus

The Drive method invoked

Vi du 1 ́ ̣

Trang 30

Th c hi n nhi m v “clean” khi đ i t ự ệ ệ ụ ố ượ ng b h y ị ủ

Trùng tên l p và có d u “~” phía tr ớ ấ ướ c

Không có tham s và access modifier ố

M i l p ch có 1 destructor ỗ ớ ỉ

class HocSinh {

//

~HocSinh() {

siSo ;

} }

Trang 32

Member definition

members of the class, including fields, methods, and

properties

Trang 33

Access modifier or Accessibility

Levels

Access modifier đ ượ c dung đê han chê viêc truy xuât môt ̀ ̉ ̣ ́ ̣ ́ ̣ member nao đo cua class ̀ ́ ̉

Trang 34

Field and constant

Fields đ ượ c khai bao t ́ ươ ng t nh khai bao biên nh ng ự ư ́ ́ ư phia tr ́ ướ c khai bao co thêm access modifiers ́ ́

public readonly int MyInt = 17;

public static int MyInt;

}

Trang 35

t ượ ng bank account cân phai biêt sô d cua chinh no ̀ ̉ ́ ́ ư ̉ ́ ́

nh ng không cân phai biêt sô d cua cac đôi t ư ̀ ̉ ́ ́ ư ̉ ́ ́ ươ ng bank account khac ́

 These attributes are not necessarily accessible directly.

 Co thê dung ́ ̉ ̀ properties đê truy xuât đên cac thuôc tinh ̉ ́ ́ ́ ̣ ́

cua đôi t ̉ ́ ươ ng

 Properties ch a ứ get accessors đê đoc gia tri t cac thuôc ̉ ̣ ́ ̣ ừ ́ ̣ tinh va ́ ̀ set accessors đê l u tr cac gia tri vao thuôc tinh ̉ ư ữ ́ ́ ̣ ̀ ̣ ́

Trang 37

private string courseName;

public string CourseName

{

get

{ return courseName; } // end get

set

{ courseName = value; } // end set

} // end property CourseName

Trang 38

} // end method DisplayMessage

} // end class GradeBook

Trang 41

Defining Method

namespace QuanLyHocSinh {

class HocSinh {

//

} }

{ }

Tên Đ i s ố ố

Câu l nh tr k t qu ra ngoài ệ ả ế ả

Trang 42

Static members

Cac thanh phân ( method, property hay field) cua 1 ́ ̀ ̀ ̉

class co thê la static ́ ̉ ̀

Static members đ ượ c dung chung cho cac điên hinh ̀ ́ ̉ ̀ cua 1 class ̉

Static properties va fields cho phep truy xuât d ̀ ́ ́ ữ

liêu hoan toan đôc lâp v i môi điên hinh cua ̣ ̀ ̀ ̣ ̣ ớ ̃ ̉ ̀ ̉ class

Static methods cho phep th c thi cac lênh liên ́ ự ́ ̣

quan đên loai class, không phu thuôc vao bât ky ́ ̣ ̣ ̣ ̀ ́ ̀ đôi t ́ ượ ng điên hinh nao Khi s dung static ̉ ̀ ̀ ử ̣

member, không cân kh i tao đôi t ̀ ở ̣ ́ ượ ng

Trang 43

Static member

Vi du: cac method Console.WriteLine() va ́ ̣ ́ ̀

Convert.ToString() cua l p Console la static, do đo không ̉ ớ ̀ ́ cân tao cac điên hinh cua l p nay ma vân co thê s dung ̀ ̣ ́ ̉ ̀ ̉ ớ ̀ ̀ ̃ ́ ̉ ử ̣

đ ượ c method nay ̀

Trang 44

Static and nonstatic Method

public   class  CSharp

{

public  CSharp ( )  { . . .}

public   static   void  StaticMethod( ) { . . .}

      public   void  NonStaticMethod( ) { . . .}

}

public   class  Tester() {

CSharp cs =  new  CSharp( );

Truy c p qua tên l p: CSharp ậ ớ

Truy c p qua tên l p: CSharp ậ ớ

Trang 45

// cs_static_keyword.cs

using System;

public class Employee

{

public string id;

public string name;

}

Trang 46

class MainClass : Employee

{

static void Main()

{

Console.Write("Enter the employee's name: ");

string name = Console.ReadLine();

Console.Write("Enter the employee's ID: ");

string id = Console.ReadLine();

// Create and configure the employee object:

Employee e = new Employee(name, id);

Console.Write("Enter the current number of employees: ");

string n = Console.ReadLine();

Employee.employeeCounter = Int32.Parse(n);

Employee.AddEmployee();

Trang 47

// Display the new information:

Trang 48

Defining methods

➤ virtual —The method may be overridden.

➤ abstract —The method must be overridden in

nonabstract derived classes (only permitted

Trang 49

T khoa “This” ừ ́

T khoa “This” ừ ́

Môi đôi t ̃ ́ ượ ng co thê tham chiêu đên chinh no ́ ̉ ́ ́ ́ ́ băng t khoa this ̀ ừ ́

Khi 1 method non-static cua 1 đôi t ̉ ́ ượ ng nao ̀

đo đ ́ ượ c goi, phân thân cua method nay ̣ ̀ ̉ ̀ s ử

dung ngâm đinh ̣ ̀ ̣ t khoa this đê tham chiêu ừ ́ ̉ ́

đên cac biên điên hinh va method khac cua ́ ́ ́ ̉ ̀ ̀ ́ ̉

đôi t ́ ượ ng

S dung t khoa this ử ̣ ừ ́ t ườ ng minh :

Khi cân phân biêt v i biên cuc bô ̀ ̣ ớ ́ ̣ ̣

Đê đinh nghia indexer ̉ ̣ ̃

Trang 50

T khoa “This”: s dung ngâm đinh ừ ́ ử ̣ ̀ ̣

T khoa “This”: s dung ngâm đinh ừ ́ ử ̣ ̀ ̣

Line 36 uses the this reference implicitly to call the

same method

Trang 51

T khoa “This”: s dung t ừ ́ ử ̣ ườ ng minh

T khoa “This”: s dung t ừ ́ ử ̣ ườ ng minh

Nêu method ch a 1 biên cuc bô (local ́ ứ ́ ̣ ̣ variable) cung tên v i field cua class, ̀ ớ ̉

method nay se tham chiêu đên biên ̀ ̃ ́ ́ ́

cuc bô h n la field đo ̣ ̣ ơ ̀ ́  biên cuc bô ́ ̣ ̣

se lam ân đi field trong pham vi cua ̃ ̀ ̉ ̣ ̉

method

Phai dung t khoa this t ̉ ̀ ừ ́ ườ ng minh đê ̉ tham chiêu đên field bi ân nay ́ ́ ̣ ̉ ̀

Trang 52

Vi du s dung this t ́ ̣ ử ̣ ườ ng minh

Vi du s dung this t ́ ̣ ử ̣ ườ ng minh

Trang 53

Đinh nghia ̣ ̃ indexer cho phep tao class ́ ̣

nh mang ao ("virtual arrays“) ư ̉ ̉

Cac điên hinh cua l p co thê đ ́ ̉ ̀ ̉ ớ ́ ̉ ượ c truy xuât băng toan t truy xuât mang [ ] ́ ̀ ́ ử ́ ̉

Trang 54

Indexer co thê bao gôm ca chi sô nguyên ́ ̉ ̀ ̉ ̉ ́

(integer indices) va chi sô không nguyên (non- ̀ ̉ ́ integer indices)

Indexer đ ượ c đinh nghia nh cac property ̣ ̃ ư ́

trong class

Trang 55

Đinh nghia indexer ̣ ̃

Đinh nghia indexer ̣ ̃

• Indexer an object to be indexed in the same way as an array

• Indexer modifier can be private, public, protected or internal

• The return type can be any valid C# types

• Indexers in C# must have at least one parameter Else the compiler will

generate a compilation error.

Trang 56

Vi du vê indexer ́ ̣ ̀

Vi du vê indexer ́ ̣ ̀

L p Box biêu diên 1 box v i 3 chiêu length, width va ớ ̉ ̃ ớ ̀ ̀

height L p Box co 2 mang ớ ́ ̉

Mang ch a tên cac chiêu cua box (length, width va height) ̉ ứ ́ ̀ ̉ ̀

Mang ch a kich th ̉ ứ ́ ướ c môi chiêu ̃ ̀

Box đinh nghia 2 indexer, môi indexer đêu tra vê gia tri ̣ ̃ ̃ ̀ ̉ ̀ ́ ̣

double biêu diên kich th ̉ ̃ ́ ướ c cua môi chiêu ̉ ̃ ̀

Trang 57

 Inheritance dung đê chi kha năng co thê s dung ̀ ̉ ̉ ̉ ́ ̉ ử ̣ lai (reuse) môt class đê tao ra 1 l p m i hâp thu ̣ ̣ ̉ ̣ ớ ớ ́ moi thanh phân cua l p cha va m rông thêm cac ̣ ̀ ̀ ̉ ớ ̀ ở ̣ ́ thanh phân va kha năng m i ̀ ̀ ̀ ̉ ớ

 Nh kê th a, lâp trinh viên tiêt kiêm đ ờ ́ ừ ̣ ̀ ́ ̣ ượ c th i ờ

gian phat triên phân mêm ́ ̉ ̀ ̀

 Existing class  base class

 New class  derived class

 Each derived class can become the base class for future derived classes

Trang 58

 Class hierarchy băt đâu băng l p object, moi l p ́ ̀ ̀ ớ ̣ ớ khac đêu kê th a tr c tiêp hay gian tiêp t l p ́ ̀ ́ ừ ự ́ ́ ́ ừ ớ

gôc nay ́ ̀

 Single inheritance (đ n kê th a): môt l p chi kê ơ ́ ừ ̣ ớ ̉ ́

th a tr c tiêp t 1 l p c s ừ ự ́ ừ ớ ơ ở

 Multiple inheritance (đa kê th a): môt l p co thê ́ ừ ̣ ớ ́ ̉

kê th a tr c tiêp t nhiêu h n 1 l p c s ́ ừ ự ́ ừ ̀ ơ ớ ơ ở

 C# không hô tr đa kê th a ̃ ợ ́ ừ

Trang 59

Vi du vê inheritance ́ ̣ ̀

Vi du vê inheritance ́ ̣ ̀

Trang 60

Tinh kê th a xac đinh ngay trong đinh nghia class, ́ ́ ừ ́ ̣ ̣ ̃

băng cach đăt dâu : tiêp theo la tên l p c s (base ̀ ́ ̣ ́ ́ ̀ ớ ơ ở class)

public class MyClass : MyBase

{

// Class members.

}

Chi đ ̉ ượ c phep dung 1 l p c s trong đinh nghia ́ ̀ ớ ơ ở ̣ ̃

class cua C#; va nêu kê th a t l p abstract, phai ̉ ̀ ́ ́ ừ ừ ớ ̉

th c thi tât ca cac thanh phân abstract ( ngoai tr l p ự ́ ̉ ́ ̀ ̀ ̣ ừ ớ suy dân cung la l p abstract) ̃ ̃ ̀ ớ

Trang 61

Môi quan hê gi a l p c s va l p dân ́ ̣ ữ ớ ơ ở ̀ ớ ̃

Môi quan hê gi a l p c s va l p dân ́ ̣ ữ ớ ơ ở ̀ ớ ̃

xuât ́

xuât ́

Cac method cua l p suy dân không thê truy ́ ̉ ớ ̃ ̉

xuât tr c tiêp cac ́ ự ́ ́ member private cua l p c ̉ ớ ơ

s ở

L p suy dân chi co thê thay đôi trang thai cac ớ ̃ ̉ ́ ̉ ̉ ̣ ́ ́ field private l p c s thông qua cac method ớ ơ ở ́ non- private hay property cua l p c s ̉ ớ ơ ở

Trang 63

 Môt class co thê v a kê th a t l p c s hay v a t ̣ ́ ̉ ừ ́ ừ ừ ớ ơ ở ừ ừ

cac interface ́

 Cac interface phai đ ́ ̉ ượ c đăt sau tên cac l p c s ̣ ́ ớ ơ ở

 Đê phân cach dung dâu phây ̉ ́ ̀ ́ ̉

Trang 64

Khai bao constructor cua l p suy ́ ̉ ớ

Khai bao constructor cua l p suy ́ ̉ ớ

dân ̃

dâñ

Môi constructor cua l p suy dân phai goi t ̃ ̉ ớ ̃ ̉ ̣ ườ ng minh hay ngâm đinh constructor cua l p c s đê bao đam cac biên ̀ ̣ ̉ ớ ơ ở ̉ ̉ ̉ ́ ́ điên hinh đ ̉ ̀ ượ c kê th a t l p c s ́ ừ ừ ớ ơ ở

tham sô goi t ́ ̣ ườ ng minh constructor 5 tham sô cua l p c ́ ̉ ớ ơ sở

Trang 65

Demo for inheritance

Vi du 1: khai bao l p CommissionEmployee, kê th a tr c ́ ̣ ́ ớ ́ ừ ự tiêp t l p object va khai bao cac field first name, last ́ ừ ớ ̀ ́ ́

sales amount đêu la ̀ ̀ private

th a l p CommissionEmployee Môt sô method cua l p ừ ớ ̣ ́ ̉ ớ

c s phai đ ơ ở ̉ ượ c khai bao t ́ ườ ng minh la virtual nêu chung ̀ ́ ́ cân đ ̀ ượ c override b i cac method trong l p dân xuât ở ́ ớ ̃ ́

Vi du 3: cac biên điên hinh cua l p c s ́ ̣ ́ ́ ̉ ̀ ̉ ớ ơ ở

CommissionEmployee đ ượ c khai bao la ́ ̀ protected, l p ớ

CommissionEmployee2 co thê truy xuât d liêu tr c tiêp ́ ̉ ́ ữ ̣ ự ́ CommissionEmployee classes contain identical

functionality, but we show how the class

Ngày đăng: 21/06/2014, 09:20

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN