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

Bài giảng lập trình hướng đối tượng chương 5 nguyễn minh thành

27 149 1

Đ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 27
Dung lượng 367,87 KB

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

Nội dung

• Thuộc tính hay dữ liệu mà phương thức truy cập sẽ tương ứng với đối tượng được tạo từ class đó... • Có 5 nhóm hành động phương thức▫ Nhóm khởi tạo: Cung cấp giá trị đầu cho đối tượng ▫

Trang 1

Thiết Lập Các Phương Thức

Môn Lập Trình Hướng Đối Tượng – Chương 5

Nguyễn Minh Thành

[Mail] : Thanhnm@itc.edu.vn

Trang 2

Sự đóng gói là cơ chế ràng buộc dữ liệu và thao

tác trên dữ liệu để thành một thể thống nhất,

tránh được các tác động bất ngờ từ bên ngoài

Thể thống nhất này gọi là đối tượng

Trang 3

class <Tên lớp>

{

<từ khóa truy xuất> thuộc tính;

<từ khóa truy xuất> phương thức();

}

• Chỉ có các phương thức nằm trong class mới đượcquyền truy cập thuộc tính (hay dữ liệu)

• Thuộc tính (hay dữ liệu) mà phương thức truy cập

sẽ tương ứng với đối tượng được tạo từ class đó

Trang 4

• Có 5 nhóm hành động (phương thức)

▫ Nhóm khởi tạo: Cung cấp giá trị đầu cho đối tượng

▫ Nhóm cập nhật: Thay đổi giá trị thuộc tính của đối tượng

▫ Nhóm kiểm tra ràng buộc: Kiểm tra khởi tạo, cập nhật

▫ Nhóm cung cấp thông tin: Cung cấp thuộc tính nội bộ của đối tượng cho thế giới bên ngoài

▫ Nhóm xử lý tính toán: Xử lý tính toán có tác dụng tương tự thế giới cung cấp thông tin do bên ngoài gởi vào

Trang 5

• Ví dụ 1: Thiết kế các hành động của lớp CDIEM

▫ 1 Nhóm khởi tạo

public void Nhap();

public void KhoiTao (int xx, int yy, char cc);

public void PhatSinh();

▫ 2 Nhóm cập nhật

//Trực tiếp

public void GanX (int xx);

public void GanY (int xx);

//property set: Tìm hiểu sau

Trang 6

• Ví dụ 1: Thiết kế các hành động của lớp CDIEM

▫ 2 Nhóm cập nhật

//Gián tiếppublic void DichPhai(uint k);

public void DichTrai(uint k);

public void DichLen(uint k);

public void DichXuong(uint k);

public void DichXien1(uint k);

public void DichXien2(uint k);

▫ 3 Nhóm kiểm tra ràng buộc

public bool KiemTraX(int xx);

public bool KiemTraY(int yy);

Trang 7

• Ví dụ 1: Thiết kế các hành động của lớp CDIEM

▫ 4 Nhóm cung cấp thông tin

public void Xuat();

public int LayX();

public int LayY();

public char LayKiTu();

//property get: Tìm hiểu sau

▫ 5 Nhóm xử lý tính toán

public float KhoangCach(CDIEM M);

public int KhoangCachX(CDIEM M);

public int KhoangCachY(CDIEM M);

Trang 8

• Ví dụ 2: Thiết kế các hành động của lớp CHCN

▫ 1 Nhóm khởi tạo

public void Nhap();

public void KhoiTao (CDIEM M, int mm, int nn);

public void KhoiTao(int x, int y, int m, int n);public void KhoiTao(CDIEM X, CDIEM Y);

public void PhatSinh();

▫ 2 Nhóm cập nhật

//Trực tiếp

//property set: Tìm hiểu sau

Trang 9

▫ 2 Nhóm cập nhật

//Gián tiếppublic void DichPhai(uint k);

public void DichTrai(uint k);

public void DichLen(uint k);

public void DichXuong(uint k);

public void TangNgang(uint k);

public void GiamNgang(uint k);

public void TangDung(uint k);

public void GiamDung(uint k);

public void Xoaythuan();

public void Xoaynghich();

//Xoay 1 góc 90o với tâm xoay là điểm gốc (Xoay thuận theo chiều kim đồng hồ)

Trang 10

• Ví dụ 2: Thiết kế các hành động của lớp CHCN

▫ 3 Nhóm kiểm tra ràng buộc

public bool KiemTraM(int mm);

public bool KiemTraN(int nn);

▫ 4 Nhóm cung cấp thông tin

public void Xuat();

public void Xoa();

//property get: Tìm hiểu sau

public int ChuVi();

public long DienTich();

public double DuongCheo();

Trang 11

• Ví dụ 2: Thiết kế các hành động của lớp CHCN

▫ 5 Nhóm xử lý tính toán

public int XetViTri(CDIEM M);

//-1: Bên trong, 0: Trên cạnh, 1: Bên ngoài

public int KhoangCachX(CDIEM M);

public int KhoangCachY(CDIEM M);

Trang 12

• Thiết kế các lớp sau:

▫ Lớp phân số (CPHANSO)

▫ Lớp các đoạn thẳng trong mặt phẳng (CDOAN)

▫ Lớp các tam giác (CTAMGIAC)

▫ Lớp các đường tròn (CDTRON)

• Cài đặt hoàn chỉnh những lớp trên

• Cài đặt chương trình quản lý học sinh của một lớp học gồm tối

đa 50 học sinh

• Cài đặt chương trình quản lý học sinh của một trường học gồm tối đa 20 lớp học

Trang 13

• Là hàm khởi tạo đặc biệt, hàm dựng có một số tính chất sau :

▫ Được gọi đến một cách tự động khi một đối tượng của lớp

được tạo ra (new) Dùng để khởi động các giá trị đầu cho

các thành phần dữ liệu của đối tượng thuộc lớp

▫ Tên phương thức giống với tên lớp và có mức độ truy cập là public

▫ Không có giá trị trả về

▫ Trước khi phương thức tạo lập chạy, đối tượng chưa thực sự tồn tại trong bộ nhớ, sau khi tạo lập hoàn thành, bộ nhớ lưu trữ một thể hiện hợp lệ của lớp

▫ Khi ta không định nghĩa một phương thức tạo lập nào cho

lớp, trình biên dịch sẽ tự động tạo một phương thức tạo lập mặc định cho lớp đó và khởi tạo các biến bằng các giá trị mặc định

Trang 14

• Khai báo : Tên hàm dựng chính là tên của lớp

public tên_lớp([tham_số_khởi_tạo])

Ví dụ :

class SinhVien

{

string hoten; int namsinh; string gioitinh;

public SinhVien(){}; //Khởi tạo rỗng

//Khởi tạo có giá trị sẵn public SinhVien(string ht, int ns, string gt) {

hoten = ht;

namsinh = ns;

gioitinh = gt;

}

}

Trang 15

• Để dễ dàng cho việc truy xuất dữ liệu trong lớp, C# đưa ra khái niệm thuộc tính.

public <kiểu_dữ_liệu> tên_thuộc_tính {

get { return dữ_liệu ; } set { dữ_liệu = value ; } }

Ví dụ :

class SinhVien

{

string hoten; int namsinh; string gioitinh;

public string HoTen {

get {return hoten;}

set {hoten = value;}

} }

Trang 16

• Giả sử khi ta thiết kế lớp phân số (CPHANSO) có phương thức cộng (Cong), trừ (Tru), nhân (Nhan) và chia (Chia) 2 phân số Khi đó, ta muốn cộng 2 phân số a và b lưu vào phân số tổng c, ta phải viết là:

Trang 17

• Công thức

public static TênLớp operator ký hiệu(TênLớp trái, TênLớp phải)

• Trong đó :

▫ Ký hiệu: Gồm các ký hiệu phép toán số học, logic và so sánh

▫ Trái: Tên tham số sẽ nằm bên trái phép toán

▫ Phải: Tên tham số sẽ nằm bên phải phép toán

• Ví dụ: Giả sử có lớp phân số (CPHANSO)

public static CPHANSO operator + (CPHANSO ps1, CPHANSO

ps2)

{

//Cài đặt }

Giả sử có 2 phân số a, b và phân số tổng c Yêu cầu thực hiện như sau:

c = a + b;

Trang 19

Dùng operator

class CPHANSO {

private int tuso, mauso;

public CPHANSO(int t, int m) {

} public static CPHANSO operator +(CPHANSO ps1, CPHANSO ps2) {

int tu = ps1.tuso*ps2.mauso + ps2.tuso*ps1.mauso;

int mau = ps1.mauso*ps2.mauso;

CPHANSO c = new CPHANSO(tu, mau);

return c;

} public void Xuat() {

Console.WriteLine("{0}/{1}", tuso, mauso);

}

}

Trang 20

• Các phương thức có thể có tên trùng nhau ngay cả các

phương thức này ở cùng trong 1 lớp nhưng trong số các

tham số phải có ít nhất 1 tham số khác (khác về kiểu hoặc

Trang 21

static void Main(string[] args)

{ ViDu vd = new ViDu(); vd.GanGiaTri(21, 9);

vd.Xuat();

} }

Trang 22

• Trường hợp tên tham số trùng với tên thuộc tính của đối tượng ta

dùng từ khóa this Từ khoá this được dùng để tham chiếu đến chính bản thân của đối tượng đó

Console.WriteLine("a={0}, b={1}", a, b);

}

}

Trang 23

• Một số phương thức đã được định nghĩa

mặc định cho các lớp Tuy nhiên, ta có thể

viết lại nó Điều này được gọi là nạp chồng phương thức.

phương thức mặc định của các lớp Thường

là trả về tên của lớp Ta có thể viết lại để

xuất ra nội dung của lớp đó.

Trang 24

private int tuso, mauso;

public CPHANSO(int t, int m) {

Trang 25

static void Main(string[] args)

{

CPHANSO a = new CPHANSO(3, 5);

Console.Write("Xuat bang phuong thuc xuat doi tuong: ");

Trang 27

Hết chương 5

Môn Lập Trình Hướng Đối Tượng

Ngày đăng: 04/12/2015, 14:37

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm