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

Bài giảng Kỹ thuật lập trình: Chương 4 – ĐH Kinh tế Luật

58 34 0
Tài liệu được quét OCR, nội dung có thể không chính xác

Đ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 58
Dung lượng 1,18 MB

Nội dung

Bài giảng Kỹ thuật lập trình Chương 4: Lớp và đối tượng cung cấp cho người học các kiến thức: Lập trình truyền thống và lập trình hướng đối tượng, các khái niệm liên quan tới Lớp và đối tượng,... Mời các bạn cùng tham khảo nội dung chi tiết.

Trang 1

4à Đại Học Quốc Gia TP.HCM

Trang 2

Đại Học Quốc Gia TP.HCM

\==/ Đại Học Kinh Tế Luật

Œ Nội dung

s* Lập trình truyền thống và lập trình hướng đối tượng

“* Các khái niệm liên quan tới Lớp và Đối tượng s* Các mức truy xuất s* Các thành phân của lớp s* Thuộc tính, phương thức s*Operator s*Service Method và Support Method s* Overloading method

s* Parameter list method

Trang 3

4à Đại Học Quốc Gia TP.HCM |

\>=<⁄Z Đại Học Kinh Tế Luật : Œˆ Lập trình truyền thống CÌ Phương pháp tiếp cận của lập trình truyền thống * Lập trình tuyến tính * Lập trình cấu trúc LÌ Ưu điểm

* Chương trình rõ ràng, dễ hiểu, dễ theo dõi

* Tư duy giải thuật rõ ràng LÌ Khuyết điểm

* Khơng hỗ trợ việc sử dụng lại mã nguồn

Khi thay đổi cấu trúc dữ liệu, phải thay đối giải thuật

Phải giải quyết các mối quan hệ vĩ mô giữa các module phần

Trang 4

Đại Học Quốc Gia TP.HCM

\==/ Đại Học Kinh Tế Luật

Œˆ Lập trình hướng đối tượng

LÌ Đặc điểm cơ bản

* Tập trung vào dữ liệu thay cho các hàm

* Chương trình được chia thành các đối tượng độc lập

* Cấu trúc dữ liệu được thiết kế sao cho đặc tả được các đối tượng * Dữ liệu được che giấu, bao bọc

* Các đối tượng trao đổi với nhau thông qua các hàm

Trang 5

Đại Học Quốc Gia TP.HCM

\==/ Đại Học Kinh Tế Luật

Œˆ Lập trình hướng đối tượng

CÌ Một số ưu điểm nổi bật

* Không có nguy cơ dữ liệu bị thay đối tự do trong chương trình

* Khi thay đổi cấu trúc dữ liệu của một đối tượng, không cần

thay đổi mã nguồn của các đối tượng khác

Có thể sử dụng lại mã nguôn, tiết kiệm tài nguyên

Trang 6

4à Đại Học Quốc Gia TP.HCM

\==/ Đại Học Kinh Tế Luật |

Khái niệm Lớp và Đối tượng

Khái niệm đổi tượng (object) trong lập trình hướng đối tượng giống như một đối tượng cụ thể trong thể giới thực Mỗi đối tượng có các thuộc tính và các hành vi riêng “ Thuộc tính (attribute) mô tả đặc điểm của đối tượng

“ Hành vi là phương thức hoạt động của đổi

Trang 7

(EY Sattigc inh TE Lust toate ig

` rÿ Đại Học Kinh Tế Luật |

Trang 8

4à Đại Học Quốc Gia TP.HCM

` Đại Học Kinh Tế Luật |

Trang 9

4à Đại Học Quốc Gia TP.HCM

‘<=, Đại Học Kinh Tế Luật

Trang 10

Đại Học Quốc Gia TP.HCM

\==/ Đại Học Kinh Tế Luật |

Khái niệm Lớp và Đối tượng

Các đối tượng có các đặc điểm (thuộc tính và phương thức) giống nhau được gom nhóm thành

một lớp để phân biệt với các đối tượng khác và dê

quản lý

=>Một lớp (class) là sự phân loại của các đối tượng

Trang 11

Đại Học Quốc Gia TP.HCM

\==/ Đại Học Kinh Tế Luật |

Khái niệm Lớp và Đối tượng

s* Như vậy Lớp là một khái niệm trừu tượng, dùng

Trang 12

Đại Học Quốc Gia TP.HCM

\==/ Đại Học Kinh Tế Luật |

Khái niệm Lớp và Đối tượng

s Một Lớp có thể có một trong các khả năng sau:

= Hoặc chỉ có thuộc tính, không có phương thức

= Hoặc chỉ có phương thức, không có thuộc tính

“= Hoặc có cả thuộc tính và phương thức, trường hợp nay là phổ biến nhất

> Lớp không có thuộc tính và phương thức nào là

các lop trừu tượng Các lớp này không có đổi

Trang 13

Đại Học Quốc Gia TP.HCM

\==/ Đại Học Kinh Tế Luật |

Khái niệm Lớp và Đối tượng

s* Không gian tên (namespace)

= Mot nhóm các lớp (classes) và giao diện (interfaces)

được tổ chức thành một đơn vị quản lý theo hình thức

không gian tên gọi là namespace

= Loi ich cua namespace là tổ chức sắp xếp lại hệ thống

thông tin các lớp trong dự án một cách khoa học, giúp

Trang 14

Đại Học Quốc Gia TP.HCM

‘<=, Đại Học Kinh Tế Luật |

Khái niệm Lớp và Đối tượng s* Tính trừu tượng: = Lớp (Class) là một khái niệm trừu tượng, đối tượng là một thể hiện cụ thể của lớp > Ví dụ:

=_ Bản thiết kế của chiếc xe hơi là lớp

= Chiếc xe hơi được tạo ra từ bản thiết kế là đối tượng

Trang 15

4à Đại Học Quốc Gia TP.HCM

\>=Z Đại Học Kinh Tế Luật

Khái niệm Lớp và Đối tượng

s* Tính trừu tượng:

= Từ những đối tượng giống nhau: trừu tượng hóa thành

một lớp:

= Chỉ đưa ra các thuộc tính và phương thức cần thiết của

Trang 16

Đại Học Quốc Gia TP.HCM

\==/ Đại Học Kinh Tế Luật |

Khái niệm Lớp và Đối tượng

s* Tính đóng gói:

= Moi lop được xây dựng để thực hiện một nhóm chức

năng đặc trưng của riêng lớp đó

= 'Tất cả mọi thao tác truy xuất vào thành phân dữ liệu từ đối tượng này qua đối tượng khác phải được thực hiện

bởi các phương thức (method) của chính đối tượng

chứa dữ liệu

= Tinh dong gói cho phép dấu thông tin của đối tượng

Trang 17

Đại Học Quốc Gia TP.HCM 1 \==, Đại Học Kinh Tế Luật it

Trang 18

-#-) % Dai Hoc Quốc Gia TP.HCM hoa He Théng Thong ÔN

\>7_ Đại Học Kinh Tế Luật ij

Trang 19

ÁEL) “ bại học Kinh Tết \5) Đại Học Kinh Tế Luật tae TR TNR Khái niệm Lớp và Đối tượng

% Tính kế thừa:

s* Ví dụ:

Trang 20

Đại Học Quốc Gia TP.HCM |

\==,/ Dai Hoc Kinh Té Luat

© Dinh nghia Lép

“* Quy tac đặt tên Lớp trong C#

s Tên lớp nên là một danh từ

= Tên lớp có thể gồm nhiều từ, ký tự đầu tiên của mỗi từ nên viết hoa

= Tên lớp nên đặt đơn giản, dễ nhớ, và có ý nghĩa

= Tên lớp không được trùng với từ khóa của Java

= Tên lớp không thể bắt đầu bằng số

Trong một dự án thực tế làm sao xác định được các Lớp, các đối tượng, thuộc tính và

Trang 21

4 Đại Học Quốc Gia TP.HCM

Trang 22

4à Đại Học Quốc Gia TP.HCM ị

Trang 23

Đại Học Quốc Gia TP.HCM ị

` Đại Học Kinh Tế Luật a

€Œ) Định nghĩa Lớp kiểu POCO

s» Không cần khai báo thuộc tính, sử dụng trực tiếp

Properties: pubes class PhanSo

Trang 24

4à Đại Học Quốc Gia TP.HCM

` Đại Học Kinh Tế Luật

© Khoi tạo đối tượng

s% TenLop tenBien = new TenLop(); s Ví dụ:

= PhanSo psA = new PhanSo();

=" XeHoi xeHoiB = new XeHoi();

Từ khóa new dùng để cấp phát bộ nhớ cho đối tượng psA và xeHoiB là 2 biến đối tượng trỏ tới 2

Trang 25

4à Đại Học Quốc Gia TP.HCM ị

Trang 26

4à Đại Học Quốc Gia TP.HCM ị

` Đại Học Kinh Tế Luật |

© Bién Lop

s* Lưu trữ tình trạng của đối tượng

ss Sử dụng cách khai báo biến thông thường ss Thêm mức truy xuất

s* Ví dụ

" public int tuSo;

" private int mauSo

" protected int soBanhXe;

Truy xuất biến lớp:

Trang 27

4 Đại Học Quốc Gia TP.HCM

` Đại Học Kinh Tế Luật

© Phuong thirc (Method)

s* Các hàm bên trong lớp

s% Mô tả hoạt động của đối tượng

Trang 28

Đại Học Quốc Gia TP.HCM

` Đại Học Kinh Tế Luật

® static

s Dùng cho các thành phần lớp không phụ thuộc vào đối tượng cụ thể

s» Có thể truy cập trong bản thân lớp

s* Được truy cập trực tiếp từ tên lớp

s Phương thức static chỉ truy cập được những thành viên static của lớp

s Truy cập:

= TenLop.TenBien

" TenLop.TenPhuongThuc()

s% Có thể hiểu static là ô nhớ chia sẻ chung, khi biến

static thay doi giá trị thì toàn bộ các đối tượng đều

Trang 29

4à Đại Học Quốc Gia TP.HCM ị

` Đại Học Kinh Tế Luật |

Hàm khởi tạo (Constructor)

s* Khởi tạo giá trị ban đầu cho đối tượng khi khai báo s* Cùng tên với tên lớp

Trang 30

Đại Học Quốc Gia TP.HCM

\==/ Đại Học Kinh Tế Luật

© Constructor mac dinh

“*La constructor không có tham số và không thực

hiện lệnh øì cả (hoặc thực hiện một số lệnh khởi

tạo mặc định theo chủ ý của Lập trình viên)

s» Nếu không khai báo constructor thì trình biên dịch

Trang 31

Đại Học Quốc Gia TP.HCM

` Đại Học Kinh Tế Luật ® Constructor s% Một lớp có thể có nhiều constructor s* Các constructor khác nhau về tham số “ Số tham số “" Kiểu tham số

s% Đối tượng được khởi tạo theo constructor tương ứng khi khai báo

s* Chú ý: Khi khai báo constructor khác, constructor

mặc định sẽ không có Nếu muốn sử dụng thì phải

Trang 32

Đại Học Quốc Gia TP.HCM

` Đại Học Kinh Tế Luật |

® Constructor

class PhanSo

t

//khai bao bién lớp

Trang 33

Đại Học Quốc Gia TP.HCM

` Đại Học Kinh Tế Luật

® Constructor

s* Khởi tạo đối tượng phân số có tử số = 0, mẫu số = 1:

= PhanSo a = new PhanSo();

= PhanSo b = new PhanSo(0, 1);

s* Khởi tạo đối tượng phân số có tử số = 1, mẫu số = 2:

Trang 34

` rÿ Đại Học Kinh Tế Luật |

Tham chiếu this

s» Tham khảo đến đối tượng hiện hành

Trong trường hợp đặt tên tham số trùng với tên biến lớp, sử dụng this để chỉ biến lớp

class PhanSo

private int tuSo; private int mauSo;

Trang 35

Đại Học Quốc Gia TP.HCM

` Đại Học Kinh Tế Luật |

© Truyén déi tượng vào phương thức

s Đối tượng là kiểu tham chiếu

Trang 36

Đại Học Quốc Gia TP.HCM

` Đại Học Kinh Tế Luật |

Œ Bảo vệ truy cập biến lớp

“Thay đổi tên biến > thay đổi code ở những chỗ

dùng biến?

s* Hạn chế người dùng thay đối giá trị biến?

s» Kiểm tra hợp lệ khi gan gia tri biến? s» Biến chi doc (read only)?

s Truy cập giá trị là kết quả của việc xử lý các biến

Trang 37

4à Đại Học Quốc Gia TP.HCM ị

` Đại Học Kinh Tế Luật |

Œ Bảo vệ truy cập biến lớp s» > Khong cho phép truy cập biến lớp s» => dùng hàm để truy cập class PhanSo {

private int tuSo; public int mauSo;

Trang 38

4à Đại Học Quốc Gia TP.HCM

‘==, Đại Học Kinh Tế Luật Thuộc tính

s Dùng để bảo vệ việc truy cập biến lớp

Cho phép chỉnh sửa code không làm ảnh hưởng

Trang 39

4à Đại Học Quốc Gia TP.HCM

‘==, Đại Học Kinh Tế Luật

Thuộc tính

class PhanSo

{

private int tuSo; private int mauSo;

public int TuSo

{

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

I

public int MauSo

{

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

I

Trang 40

Đại Học Quốc Gia TP.HCM

‘==, Đại Học Kinh Tế Luật

Kiểm tra hợp lệ

class PhanSo

{

private int tuSo; private int mauSo;

Trang 41

` 7 Đại Học Kinh Tế Luật Thuộc tính chỉ đọc s» Không cho người dùng sửa giá trị biến s* Chỉ có get, khong co set class PhanSo t

private int tuSo; private int mauSo;

private double giaTri; public double GiaTri

{ }

public double LayGiaTri()

{

get { return giaTri; }

giaTri = (double)tuSo / (double)mauSo;

return giaTri;

Trang 42

4 Đại Học Quốc Gia TP.HCM i ‘==, Đại Học Kinh Tế Luật

Thuộc tính là kết quả xử lý

class PhanSo

{

private int tuSo; private int mauSo;

private double giaTri; public int TuSo{ }

public int MauSof }

public double GiaTri

{

Trang 43

Đại Học Quốc Gia TP.HCM

Trang 44

Đại Học Quốc Gia TP.HCM ĩ

‘==, Đại Học Kinh Tế Luật Thực hiện bằng Hàm s» Xây dựng hàm để thực hiện tính toán class PhanSo {

private int tuSo; private int mauSo;

public PhanSo Cong(PhanSo b)

{

PhanSo c = new PhanSo();

c.TuSo = this.MauSo * b.TuSo + this.TuSo * b.MauSo; c.MauSo = this.MauSo * b.MauSo;

return Cc;

Trang 45

4à Đại Học Quốc Gia TP.HCM

‘<=, Đại Học Kinh Tế Luật

Sử dụng toán tử

public static PhanSo operator +(PhanSo trai, PhanSo phai)

{

PhanSo c = new PhanSo();

c.TuSo = trai.MauSo * phai.TuSo + trai.TuSo * phai.MauSo;

c.MauSo = trai.MauSo * phai.MauSo;

Trang 46

4à Đại Học Quốc Gia TP.HCM

Trang 47

Đại Học Quốc Gia TP.HCM

Trang 48

4à Đại Học Quốc Gia TP.HCM

\==/ Đại Học Kinh Tế Luật |

Service Method va Support Method

s% Một lớp có nhiêu phương thức, có những phương

thức cung cấp ra ngoài cho các đối tượng khác sử

dung (public, goi la Service method), co phuong phic chi sw dung trong lop (private, goi la Support Method)

Trang 49

Đại Học Quốc Gia TP.HCM |

\==/ Đại Học Kinh Tế Luật

Service Method va Support Method

public class TamGiac

{

public int CanhA { get; set; } public int CanhB { get; set; } public int CanhC { get; set; } private bool laHopLe() {

if (CanhA > 0 && CanhB > 0 && CanhC > 0 && (CanhA + CanhB) > CanhC &&

Trang 50

Đại Học Quốc Gia TP.HCM ị

\==/ Đại Học Kinh Tế Luật a

© Overloading Method

«* Overloading Method:

v La đặc điểm trong cùng 1 lớp có nhiêu phương

thức cùng tên nhưng khác nhau về Signature

⁄ Signature bao gôm: Số lượng các đối số hoặc kiểu

dữ liệu các đối số hoặc thứ tự các đối số

⁄ Kiểu dữ liệu trả về không được tính vao signature ⁄ Lợi ích của Overloading là khả năng tái sử dụng lại

phương thức và giúp việc gọi hàm “uyển chuyển”

Các Constructor là trường hợp đặc biệt của

Trang 51

Đại Học Quốc Gia TP.HCM

Trang 52

Đại Học Quốc Gia TP.HCM

\==/ Đại Học Kinh Tế Luật

® Parameter List Method

“* C# cung cấp một loại phương thức đặc biệt đó là

Parameter List, cũng là một trường hợp đặc biệt

cua Overloading Method

public int Sum(params int [Jarr) { int s = @; foreach(int x in arr) { Sum(1, 2, 4) Sum() ` += X; Sum(1, 5, -8,2) return s; }

“* Ta có thể truyền bao nhiêu đối số kiểu int vào cho

Trang 53

4à Đại Học Quốc Gia TP.HCM ị

‘==, Đại Học Kinh Tế Luật

Œ Alias và cơ chế øom rác tự động

% Alias là đặc điểm mà trên một ô nhớ có nhiều biến

đối tượng cùng trỏ tới

s Vị dụ:

PhanSo psA=new PhanSo(1,5); PhanSo psB=new PhanSo(3,7);

Lúc này trên thanh RAM sẽ có 2 ô nhớ cấp phát cho 2

Trang 54

4à Đại Học Quốc Gia TP.HCM

‘==, Đại Học Kinh Tế Luật

Œ Alias và cơ chế øom rác tự động

s* Giả sử ta thực hiện lệnh:

psA=psB;

>> Ngôn ngữ nói “Phân số A bằng Phân số B”, nhưng hệ thống máy tính sẽ làm việc theo cơ chế “Phân số A

trỏ tới vùng nhớ mà phân số B đang quản lý” Hay

nói cách khác “Vùng nhớ B” bây giờ có 2 biến đổi

tượng cùng trỏ tới(cùng quản lý) psA

Trang 55

4à Đại Học Quốc Gia TP.HCM l

` Đại Học Kinh Tế Luật

Œ Alias và cơ chế øom rác tự động

Như vậy đã xuất hiện Alias ở “vùng nhớ B” Lúc

này sẽ xảy ra 2 hiện tượng như sau:

Tại “vùng nhớ B”, nếu psA thay đổi thông tin sẽ làm cho

psB thay đổi thông tin (vì cả 2 đối tượng này cùng quản lý một vùng nhớ)

s “Vùng nhớ A” không còn đối tượng nào tham chiếu tới,

lúc này hệ thống sẽ tự động thu hồi bộ nhớ (hủy vùng nhớ A đã cấp trước đó), cơ chế này gọi là cơ chế gom rác

tự động

Trang 56

Đại Học Quốc Gia TP.HCM

\==/ Đại Học Kinh Tế Luật

Œ Alias và cơ chế øom rác tự động

s% Đôi khi trong quá trình thực hiện phan mém ta có

nhu câu sao chép đối tượng ra (tạo thêm một đổi

tượng giống y xì đối tượng cũ nhưng nằm ở ô nhớ

khác, để ta có thể tự do thay đối thông tin trên đối tượng sao chép mà không làm ảnh hưởng tới đối

tượng gdc) C# hỗ trợ chúng ta ham

MemberwiseClone để sao chép đối tượng

public PhanSo copy()

{

Ngày đăng: 16/07/2020, 11:04

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

TÀI LIỆU LIÊN QUAN