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

Bài giảng môn học Kỹ thuật lập trình C: Chương 4 - Đại học Kinh tế Luật

58 148 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,27 MB

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

Nội dung

Bài giảng Kỹ thuật lập trình C - 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, các mức truy xuất, các thành phần của lớp,... Mời các bạn cùng tham khảo.

Trang 1

Ấrị Đại Học Quốc Gia TP.HCM \>=7 Đại Học Kinh Tế Luật

Trang 2

Ấrị¡ Đại Học Quốc Gia TP.HCM = Dai Học Kinh Tế Luật

^ e

Nội dung

*%*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

“* Parameter list method

** Alias và cơ chế gom rác tự động

Trang 3

Ấrị Đại Học Quốc Gia TP.HCM `7 Đại Học Kinh Tế Luật

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

“ TƯ duy giải thuật rõ ràng

¬ 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ĩ rmô¿gileucácasuuuiupkaae ác mối Ề-vĩ-mô-øifa-eá =

Trang 4

Ấrị¡ Đại Học Quốc Gia TP.HCM = Dai Học Kinh Tế Luật

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

"¬ Đặc điểm cơ bản

“_ 'Tập trung vào dữ liệu thay cho các ham

“ 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

“ Chương trình được thiết kể theo hướng tiếp cận từ dưới lên

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

"_ Một số ưu điểm nổi bật

“_ Không có nguy co 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

“ Phù hợp với các dự án phần mềm lớn, phức tạp

Trang 6

Ấrị¡ Đại Học Quốc Gia TP.HCM = Dai Học Kinh Tế Luật

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

“Khai nệ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ể

Trang 7

Ấrị Đại Học Quốc Gia TP.HCM = Dai Học Kinh Tế Luật

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

Trang 8

@.- Đạ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

Trang 9

Ấrị Đại Học Quốc Gia TP.HCM ZZ Đại Học Kinh Tế Luật

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

Trang 10

7` Đạ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ộit lớp (class) là sự phân loại cỦa các đối tượng

hay là kiểu (type) của đỐi tượng

Trang 11

Ấrị¡ Đại Học Quốc Gia TP.HCM = Dai Học Kinh Tế Luật

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

* Nhu vay Lớp là mỘt khái niệm trừu tượng, dùng

để chỉ một tập hợp các đối tượng có mặt trong hệ

Trang 12

Ấrị¡ Đại Học Quốc Gia TP.HCM = Dai Học Kinh Tế Luật

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

:- 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ó thuGc tinh

-_ Hoặc có cả thuộc tính và phương thỨc, trường hợp này 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

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

tương Ứng

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

* Khong gian tén (namespace)

Một nhóm các lỚp (classes) va giao dién (interfaces) được

tổ chức thành mỘt đơn vị quản lý theo hình thức không

ø1an tên g¢Qi la namespace

Lợi ích cỦa 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 cho việc theo dõi bảo trì dự án được tốt nhất

Trang 14

Ấrị Đại Học Quốc Gia TP.HCM ZZ Đại Học Kinh Tế Luật

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

* "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

~ Vi du:

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

Ấrị Đạ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

* "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

đối tượng trong lập trình

Trang 16

Ấrị¡ Đại Học Quốc Gia TP.HCM = Dai Học Kinh Tế Luật

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

-_ Tính đóng gói:

Mỗi lỚp đượ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

-_ Tính đóng gói cho phép dấu thông tin của đối tượng bằng cách kết hợp thông tin và các phương thức liên quan đến thông tin trong đối tượng

Trang 17

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

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

Trang 19

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

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

Trang 20

Ấrị¡ Đại Học Quốc Gia TP.HCM = Dai Học Kinh Tế Luật

= ~ rT

Đinh nghĩa Lớp

© Quy tac dat tén L6p trong C#

-_ 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é bat dau bang 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à

phương thức của đối tượng???

Trang 21

Ấrị¡ Đại Học Quốc Gia TP.HCM \>=Z Đại Học Kinh Tế Luật

Trang 22

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

Trang 23

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

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

Đị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: public class PhanSo

Trang 24

Ấrị Đại Học Quốc Gia TP.HCM = Dai Học Kinh Tế Luật

2 se Z“e

Khởi tạo đối tượng

*“* TenLop tenBien = new TenLop();

“* Ví dụ:

= PhanSo psA = new PhanSo();

*" XeHo1 xeHoiB = new XeHoi1();

6a 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

vùng nh được cấp phát trong thanh RAM

RAM

Trang 25

@.- Đại Học Quốc Gia TP.HCM = Đại Học Kinh Tế Luật

Trang 26

ŒSamekmreaa 0Ø @XAANGONOAOOAAAN

biến Lớp

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

** Sử dụng cách khai báo biến thông thường

** Thêm mỨc truy xuất

“Ví dụ

" Dublic Int tuSo;

" private int mauSo

" protected int soBanhXe;

** Truy xuat bién 16p:

* tenDoiTuong.bienLop

Trang 27

Ấrị¡ Đại Học Quốc Gia TP.HCM = Dai Học Kinh Tế Luật

TT

@pPhuong thtfc (Method)

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

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

**' Thêm mức truy xuất khi khai báo

**'Truy xuất phương thức

Trang 28

(5¬ 5) Đại Học Kinh Tế Luật mdð% ẽ ẽ — —

static

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

tượng cụ thể

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

** ĐƯỢc truy cập trực tiếp tỪ tên lớp

* Phương thức static chÍ truy cập được nhỮng thành viên

static của lớp

* Truy cập:

* TenLop.TenBien

" TenLop.TenPhuongThuc()

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

static thay đổi giá trị thì toàn bỘ các đỐi tượng đều

thấy sự thay đổi này.

Trang 29

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

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

@Ham khởi tạo (Consftructor)

** Khởi tạo giá trị ban đầu cho đối tượng khi khai báo

** Cùng tên với tên lớp

** Không khai báo kiểu trả về

Trang 30

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

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

©Constructor mac dinh

** Là constructor không có tham sỐ và không thực hiện

lệnh gì 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)

* Nếu không khai báo constructor thi trinh bién dich sé

tU thém constructor mac dinh

Trang 31

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

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

** Đối tượng được khởi tạo theo constructor tương

ứng khi khai báo

°* 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

khai báo lại

Trang 32

@.- Đại Học Quốc Gia TP.HCM = Đại Học Kinh Tế Luật

©Constructor

class PhanSo

{

//khai bao bién Lớp

private int tuSo;

private int mauSo;

Trang 33

EP atigckins reinge”

©Constructor

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

L:

" PhanSo a = new PhanSo();

" PhanSo b = new PhanSo(Q, 1);

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

2:

" PhanSo c = new PhanSo(1, 2)

Trang 34

\$Z @.- Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật a 6 tn

@Tham chiéu this

** 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 dé chi bién lớp

class PhanSo

{

private int tuSo;

private int mauSo;

public PhanSo(int tuSo, int mauSo)

{

this.tuSo = tuSo;:

this.mauSo = mauSo:

I I

Trang 35

(5¬ =< Đại Học Kinh Tế Luật 111% 7 - —~

@Truyén d6i tuong vao phương thức

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

** Nếu có câu lệnh tác động đến giá trị các biễn lớp

của đôi tượng trong phương thức > đổi tượng bị

thay đổi sau khi hoàn tất phương thức

Trang 36

Ấrị¡ Đại Học Quốc Gia TP.HCM = Dai Học Kinh Tế Luật

2 nA ^ ow 4

@Bao vé truy cập biến lớp

Thay đổi tên bién > thay d6i code 6 nhiing cho

dùng biến?

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

** Kiểm tra hợp lệ khi gán giá trị biến?

** Biến chi dOc (read only)?

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

lớp?

Trang 37

(55x = Dai Học Kinh Tế Luật 111% —

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

* S® Không 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;

public int LayTuSo()

{ }

public void GanTuSo(int gt)

{

}

return tuSo;

tuSo = gt;

Trang 38

= Dai Học Kinh Tế Luật

Thuộc tính

Ẳ ` we? 2 A o A A o Ww J

** Dung de bao vé viéc truy cap bi€n lOp

**Cho phép chinh sUa code không lam anh hưởng

nhiều đến chương trình

Trang 39

Ấrị Đại Học Quốc Gia TP.HCM = Dai Học Kinh Tế Luật

Thuộc tính

Class PhanSo

{

private int tuSo;

private int mauSo;

public int TuSo

get { return mauSo; }

set { mauSo = value; }

}

Trang 40

Ấrị Đại Học Quốc Gia TP.HCM \==/ Dai Hoc Kinh Té Luật

€®®Kiểm tra hợp lệ

class PhanSo

{

private int tuSo;

private int mauSo;

public int TuSo { } public int MauSo

}

Trang 41

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

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

Ế”Thuộc tính chỉ đọc

** Không cho ngƯời dùng sửa giá trị biển

** Chỉ có get, không có set

class PhanSo

{

private int tuSo;

private int mauSo;

private double gialr1;

public double GiaTri

{ }

public double LayGiaTri()

{

get { return giaTri; }

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

return giaTri;

Trang 42

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

= Đạ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 gialri;

public int TuSo{ }

public int MauSof{ }

public double GiaTri

{

get { return (doubte)tuSo / (double)mauSo; }

} }

Trang 43

Ấrị¡ Đại Học Quốc Gia TP.HCM = Dai Học Kinh Tế Luật

Toán tủ

Toán tử

** Các phép tính +, -, *, /

** Phép so sánh >, <, >=, <=

“Cac kiéu x4y dung san (int, string, double ) st

dụng được toán tu

s* S Các kiểu do người dùng tạo cũng cần toán tỬ

“ Ví dụ:

° Phân số

° SỐ La Mã

Trang 44

@.- Đại Học Quốc Gia TP.HCM = Đại Học Kinh Tế Luật

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 C;

}

Trang 45

Ấrị Đại Học Quốc Gia TP.HCM ZZ Đại Học Kinh Tế Luật

PhanSo c = new PhanSo();

c.TuSo = trai.MauSo * phai.TuSo

+ trai.TuSo * phai.MauSo;

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

return c;

Trang 46

= Dai Học Kinh Tế Luật

Trang 47

0 »MH+&ắă @.- Đại Học Quốc Gia TP.HCM

Trang 48

1 >.ĂẮẽ = Dai Học Kinh Tế Luật 7Ð ˆ —

Service Method va Support Method

* 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

phức chỉ sử dụng trong lớp (private, goi 14 Support

Method)

** C4c support method sé b6 tro cho Service method

Trang 49

Ấrị¡ Đại Học Quốc Gia TP.HCM = Dai 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 &&

(CanhB + CanhC) > CanhA &&

(CanhA + CanhC) > CanhB)

Trang 50

@.- Đại Học Quốc Gia TP.HCM = Đại Học Kinh Tế Luật

@Overloading Method

** Overloading Method:

⁄ Là đặ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

Y 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 vào signature

⁄ Lợi ích cUa 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

Overloading Method

Trang 51

Ấrị¡ Đại Học Quốc Gia TP.HCM = Dai Học Kinh Tế Luật

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 của

**'Ta có thé truyền bao nhiêu đối số kiểu int vao cho

phương thức Sum cũng đƯỢc

Trang 53

@.- Đại Học Quốc Gia TP.HCM = Đại Học Kinh Tế Luật

Alias và cơ chế gom 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

“* 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

đối tượng phân số được quản lý bởi 2 biễn đối tượng

psA va psB

Trang 54

Ấrị Đại Học Quốc Gia TP.HCM = Dai Học Kinh Tế Luật

”Alias và cơ chê gom rác tự động

** 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ý)

Ngày đăng: 11/01/2020, 19:24

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN