39
true class cout C++ operator catch virtual throw try friend bool cin new inline private OOP delete using false STL public 1 ThS. Đặng Bình Phương [email protected] VCBB © 13.09a this Bộ môn Công nghệ phần mềm Khoa Công nghệ thông tin Trường Đại học Khoa học Tự nhiên PP LT HƯỚNG ĐỐI TƯỢNG LỚP VÀ ĐỐI TƯỢNG

Pplthdt c02 lop_doi_tuong_v13.09a

Embed Size (px)

Citation preview

Page 1: Pplthdt c02 lop_doi_tuong_v13.09a

trueclass

cout

C++operator

catch

virtual throw

try

friend bool

cinnew

inline private OOP

deleteusing falseSTL

public

1

T h S . Đ ặ n g B ì n h P h ư ơ n gd b p h u o n g @ f i t . h c m u s . e d u . v n

VCBB© 13.09a

this

Bộ môn Công nghệ phần mềm

Khoa Công nghệ thông tin

Trường Đại học Khoa học Tự nhiên

PP LT HƯỚNG ĐỐI TƯỢNG

LỚP VÀ ĐỐI TƯỢNG

Page 2: Pplthdt c02 lop_doi_tuong_v13.09a

2

VC

BB

1 2 3 4 5 6 7

Nội dung

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

Khái niệm lập trình hướng đối tượng

Khái niệm về lớp và đối tượng

Sự che giấu dữ liệu và phương thức

Tạo lập, sử dụng và hủy đối tượng

Một vài ví dụ minh họa

Ký hiệu UML

Sự tương đồng và khác nhau giữa C++, Java và C#

#include <iostream>using namespace std;

void main(){

cout << “Hello World”;cout << endl;

Page 3: Pplthdt c02 lop_doi_tuong_v13.09a

3

VC

BB

Khái niệm về lập trình hướng đối tượng1 2 3 4 5 6 7

LTr hướng thủ tục và hướng đối tượng

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

Procedural Programming

vs.

Object-Oriented Programming

Page 4: Pplthdt c02 lop_doi_tuong_v13.09a

4

VC

BB

Khái niệm về lập trình hướng đối tượng1 2 3 4 5 6 7

3 đặc điểm chính

Sự đóng kín (encapsulation)

Mã và dữ liệu liên kết với nhau tạo thành một

đối tượng như một “hộp đen” độc lập.

Tính đa dạng (polymorphism)

Ý tưởng “một giao diện, nhiều phương pháp”

nhằm giảm tính phức tạp.

Tính kế thừa (inheritance)

Đối tượng kế thừa các tính chất tổng quát và

bổ sung thêm các tính chất riêng của nó.

Cho phép phân loại đối tượng theo thứ bậc.Lớp và đối tượng

Page 5: Pplthdt c02 lop_doi_tuong_v13.09a

5

VC

BB

Khái niệm về lập trình hướng đối tượng1 2 3 4 5 6 7

Thảo luận

Một số ví dụ về sự đóng kín, tính đa dạng và

tính kế thừa trong thực tế?

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

Page 6: Pplthdt c02 lop_doi_tuong_v13.09a

6

VC

BB

Khái niệm về lớp và đối tượng1 2 3 4 5 6 7

Phân biệt lớp đối tượng và đối tượng

Lớp (class) hay còn gọi là lớp đối tượng được

dùng để mô hình hóa một nhóm các thực thể

(entity) hay đối tượng (object) cùng loại trong

thế giới thực.

Một đối tượng thuộc về một lớp là một thể hiện

(instance) hay một phần tử điển hình của lớp đó.

Các đối tượng thuộc về một lớp sẽ có cùng một

cách ứng xử (behaviour) được thiết lập nhờ vào

những phương thức (method) của lớp đó.

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

Page 7: Pplthdt c02 lop_doi_tuong_v13.09a

7

VC

BB

Khái niệm về lớp và đối tượng1 2 3 4 5 6 7

Các thành phần chính của lớp

Tên lớp (class name): tên duy nhất để phân biệt

với các lớp khác trong cùng một phạm vi.

Thành phần dữ liệu (data member) hay các

thuộc tính (attribute): lưu dữ liệu cho mỗi đối

tượng của lớp đang mô tả hoặc tham chiếu đến

các đối tượng của lớp khác.

Hệ thống các phương thức của lớp (method hay

functional member): các hàm được viết riêng

cho các đối tượng của lớp nhằm tác động lên

chính các đối tượng thuộc lớp này.

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

Page 8: Pplthdt c02 lop_doi_tuong_v13.09a

8

VC

BB

Khái niệm về lớp và đối tượng1 2 3 4 5 6 7

Ví dụ các thành phần của lớp đối tượng

Lớp CPoint2D (điểm trong không gian 2 chiều)

bao gồm các thành phần:

Các thuộc tính:

• Hoành độ và tung độ.

Các phương thức:

• Khởi tạo (init) hoành độ và tung độ của điểm.

• Di chuyển (move) điểm theo một độ dời cho trước.

• Nhân tỉ lệ (scale) hoành độ, tung độ của điểm với

các hệ số tỉ lệ cho trước.

• Tính khoảng cách (get distance) từ điểm tới một

điểm khác.Lớp và đối tượng

Page 9: Pplthdt c02 lop_doi_tuong_v13.09a

9

VC

BB

Khái niệm về lớp và đối tượng1 2 3 4 5 6 7

Khai báo và định nghĩa lớp

Cú pháp khai báo lớp

Cú pháp định nghĩa một phương thức của lớp

(sử dụng toán tử phân giải phạm vi ::)

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

1234567

class class-name

{

private:

// Các thuộc tính và phương thức riêng của lớp

public:

// Các thuộc tính và phương thức chung của lớp

};

12

type-name class-name::method-name(param-list)

{ /* Các câu lệnh… */ }

Page 10: Pplthdt c02 lop_doi_tuong_v13.09a

10

VC

BB

Khái niệm về lớp và đối tượng1 2 3 4 5 6 7

Khai báo và định nghĩa lớp

Lưu ý, các thuộc tính và phương thức có thể

khai báo thành nhiều nhóm xem kẽ nhau và mặc

định là private (do đó nếu nằm trên cùng của

khai báo thì không cần ghi từ khóa private).

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

123456789

class class-name {

// Các thuộc tính và phương thức riêng của lớp

public:

// Các thuộc tính và phương thức chung của lớp

private:

// Các thuộc tính và phương thức riêng khác của lớp

public:

// Các thuộc tính và phương thức chung khác của lớp

};

Page 11: Pplthdt c02 lop_doi_tuong_v13.09a

11

VC

BB

Khái niệm về lớp và đối tượng1 2 3 4 5 6 7

Khai báo và định nghĩa lớp

Có thể thực hiện bằng một trong hai cách sau:

Khai báo lớp và cài đặt lớp trong cùng một

tập tin mã nguồn .cpp (C++ source code).

Khai báo lớp trong tập tin tiêu đề .h (header)

nhằm mô tả giao tiếp lập trình (programming

interface) và cài đặt lớp trong tập tin mã

nguồn .cpp (nên sử dụng cách này).

Ví dụ:

Khai báo và định nghĩa lớp CPoint2D.

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

Page 12: Pplthdt c02 lop_doi_tuong_v13.09a

12

VC

BB

Khái niệm về lớp và đối tượng1 2 3 4 5 6 7

Gộp chung khai báo và cài đặt lớp

Tập tin Point2D.cpp (phiên bản 1)

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

12345678910111213

class CPoint2D

{

double m_dX, m_dY; // Mặc định là private

public:

void init(double dX, double dY)

{ m_dX = dX; m_dY = dY; }

void move(double dX, double dY)

{ m_dX += dX; m_dY += dY; }

void scale(double dX, double dY)

{ m_dX *= dX; m_dY *= dY; }

};

Page 13: Pplthdt c02 lop_doi_tuong_v13.09a

13

VC

BB

Khái niệm về lớp và đối tượng1 2 3 4 5 6 7

Tách rời khai báo và cài đặt lớp

Tập tin Point2D.h

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

12345678910111213

#ifndef _POINT2D_H // Có thể đặt #pragma once ở đầu

#define _POINT2D_H // thay thế #ifndef #define #endif

class CPoint2D

{

double m_dX, m_dY; // Mặc định là private

public:

void init(double dX, double dY);

void move(double dX, double dY);

void scale(double dX, double dY);

};

#endif

Page 14: Pplthdt c02 lop_doi_tuong_v13.09a

14

VC

BB

Khái niệm về lớp và đối tượng1 2 3 4 5 6 7

Tách rời khai báo và cài đặt lớp

Tập tin Point2D.cpp (phiên bản 2)

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

1234567891011121314

#include “Point2D.h”

void CPoint2D::init(double dX, double dY)

{

m_dX = dX; m_dY = dY;

}

void CPoint2D::move(double dX, double dY)

{

m_dX += dX; m_dY += dY;

}

void CPoint2D::scale(double dX, double dY)

{

m_dX *= dX; m_dY *= dY;

}

Page 15: Pplthdt c02 lop_doi_tuong_v13.09a

15

VC

BB

Khái niệm về lớp và đối tượng1 2 3 4 5 6 7

Con trỏ this

Khái niệm

Được truyền tự động cho các phương thức

thành viên của lớp khi được gọi và trỏ tới đối

tượng thực hiện lời gọi phương thức đó.

Ví dụ

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

1234567

class CPoint2D

{

double dX, dY;

public:

void init(double dX, double dY)

{ this->dX = dX; this->dY = dY; }

}

Page 16: Pplthdt c02 lop_doi_tuong_v13.09a

16

VC

BB

Sự che giấu dữ liệu và phương thức1 2 3 4 5 6 7

Từ khóa private và public

Các thành phần dữ liệu và phương thức được

khai báo dưới từ khóa:

private (hoặc bỏ qua): được bảo

vệ, che giấu bên trong lớp và không

thể được truy xuất từ bên ngoài (chỉ

có thể truy xuất bên trong các đối

tượng cùng thuộc một lớp).

public: có thể được sử dụng từ

bên ngoài để tác động lên đối tượng

của lớp.

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

Page 17: Pplthdt c02 lop_doi_tuong_v13.09a

17

VC

BB

Sự che giấu dữ liệu và phương thức1 2 3 4 5 6 7

Từ khóa private và public

Ví dụ

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

1234567891011121314

class CVisibilityTest {

int m_nPriAttr;

void priMethod() { cout << “Private method” << endl; }

public:

int m_nPubAttr;

void pubMethod() { cout << “Private method” << endl; }

};

void main() {

CVisibilityTest visiTest; // Không () sau visiTest

visiTest.m_nPriAttr = 2912; // Lỗi!

visiTest.m_nPubAttr = 1706; // OK nhưng không nên!

visiTest.priMethod(); // Lỗi!

visiTest.pubMethod(); // OK

}

Page 18: Pplthdt c02 lop_doi_tuong_v13.09a

18

VC

BB

Sự che giấu dữ liệu và phương thức1 2 3 4 5 6 7

Từ khóa private và public

Ví dụ

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

1234567891011121314

class CVisibilityPrivateTest {

int m_nPriAttr;

public:

void setPriAttr(int nValue)

{ m_nPriAttr = nValue; }

void doSomething(CVisibilityPrivateTest x)

{ cout << x.m_nPriAttr << endl; } // OK

};

void main() {

CVisibilityPrivateTest visiPriTestX, visiPriTestY;

visiPriTestX.m_nPriAttr = 2912; // Lỗi!

visiPriTestX.setPriAttr(2912); // OK

visiPriTestY.doSomething(visiPriTestX); // OK!

}

Page 19: Pplthdt c02 lop_doi_tuong_v13.09a

19

VC

BB

Tạo lập, sử dụng và hủy đối tượng1 2 3 4 5 6 7

Toán tử new và delete

Khái niệm

Toán tử new dùng để tạo lập một hay nhiều

(mảng) đối tượng mới một cách tường minh.

Toán tử delete dùng để hủy một hay nhiều

(mảng) đối tượng đã được tạo ra trước đó

(bằng new) khi không còn muốn dùng nữa.

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

12345

ptr-var-name = new type(init-value); // Tạo 1 đối tượng

delete ptr-var-name; // Hủy 1 đối tượng

ptr-var-name = new type[size]; // Tạo mảng đối tượng

delete []ptr-var-name; // Hủy mảng đối tượng

Page 20: Pplthdt c02 lop_doi_tuong_v13.09a

20

VC

BB

Tạo lập, sử dụng và hủy đối tượng1 2 3 4 5 6 7

Toán tử new và delete

Ví dụ

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

1234567891011121314

void main()

{

CPoint2D* pPt2D = NULL; // Gán NULL khi chưa tạo lập

pPt2D = new CPoint2D(); // Tạo lập đối tượng

if (pPt2D != NULL) // Kiểm tra trước khi sử dụng

{ /* … */ } // Sử dụng đối tượng ở đây

if (pPt2D != NULL) // Kiểm tra trước khi hủy

{

delete pPt2D; // Hủy đối tượng

pPt2D = NULL; // Gán NULL sau khi hủy

}

}

Page 21: Pplthdt c02 lop_doi_tuong_v13.09a

21

VC

BB

Tạo lập, sử dụng và hủy đối tượng1 2 3 4 5 6 7

Toán tử new và delete

Ưu điểm của toán tử new và delete so với hàm

malloc() và free() (trong malloc.h hoặc

stdlib.h)

Không cần phải sử dụng toán tử sizeof để

xác định kích thước 1 phần tử khi cấp phát.

Toán tử new thực hiện chuyển đổi kiểu tự

động nên không cần ép kiểu con trỏ trả về.

Không cần phải khai báo thư viện (#include)

do nó là toán tử chứ không phải là hàm.

Có thể được nạp chồng (overloading).

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

Page 22: Pplthdt c02 lop_doi_tuong_v13.09a

22

VC

BB

Một vài ví dụ minh họa1 2 3 4 5 6 7

Cài đặt lớp hình tròn

Lớp CCircle bao gồm:

Các thuộc tính:

• Tâm: m_pt2DCenter kiểu CPoint2D.

• Bán kính: m_dRadius kiểu double.

Các phương thức:

• init(dX, dY, dRadius): khởi tạo hình tròn với

tọa độ tâm (dX, dY) và bán kính cho trước.

• move(dX, dY): di chuyển hình tròn đang xét theo

một độ dời (dX, dY).

• getPerimeter(): tính chu vi hình tròn đang xét.

• getArea(): tính diện tích hình tròn đang xét.Lớp và đối tượng

Page 23: Pplthdt c02 lop_doi_tuong_v13.09a

23

VC

BB

Một vài ví dụ minh họa1 2 3 4 5 6 7

Cài đặt lớp hình chữ nhật

Lớp CRectangle bao gồm:

Các thuộc tính:

• Tọa độ trái trên: m_pt2DTopLeft kiểu CPoint2D.

• Chiều dài, rộng: m_dLength, m_dWidth kiểu double.

Các phương thức:

• init(pt2DTopLeft, dLength, dWidth): khởi

tạo các cạnh hình chữ nhật với độ dài cho trước.

• move(dX, dY): di chuyển hình tròn đang xét theo

một độ dời (dX, dY).

• getPerimeter(): tính chu hình chữ nhật đang xét.

• getArea(): tính diện tích hình chữ nhật đang xét.Lớp và đối tượng

Page 24: Pplthdt c02 lop_doi_tuong_v13.09a

24

VC

BB

Một vài ví dụ minh họa1 2 3 4 5 6 7

Cài đặt lớp hình tam giác

Lớp CTriangle bao gồm:

Các thuộc tính:

• Tọa độ 3 đỉnh: m_aPt2D là mảng gồm 3 đối tượng

thuộc lớp CPoint2D.

Các phương thức:

• isValid(): kiểm tra tam giác có hợp lệ không (chỉ

sử dụng bên trong lớp)

• init(aPt2D): khởi tạo tam giác theo 3 điểm cho

trước trong mảng aPt2D.

• getPerimeter(): tính chu vi tam giác.

• getArea(): tính diện tích tam giác.

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

Page 25: Pplthdt c02 lop_doi_tuong_v13.09a

25

VC

BB

Một vài ví dụ minh họa1 2 3 4 5 6 7

Cài đặt lớp xúc sắc (6 mặt)

Lớp CDice bao gồm:

Các thuộc tính:

• Thông tin các mặt: m_aszInfo là mảng gồm 6

chuỗi ký tự thể hiện thông tin mỗi mặt.

Các phương thức:

• init(aszInfo): khởi tạo thông tin cho các mặt

của xúc sắc.

• roll(): gieo xúc xắc và trả về thông tin mặt ngửa

(mặt nhận được).

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

Page 26: Pplthdt c02 lop_doi_tuong_v13.09a

26

VC

BB

Ký hiệu UML1 2 3 4 5 6 7

Ký hiệu lớp đối tượng và đối tượng

Ngôn ngữ UML (Unified Modeling Language) là

một hệ thống ký hiệu được dùng cho việc mô tả

hay mô hình hóa các đối tượng trong những

chương trình được viết bằng các ngôn ngữ lập

trình hướng đối tượng.

Lưu ý, tên lớp/thuộc tính/phương thức ở đây

không nhất thiết phải trùng tên khi cài đặt.

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

Ký hiệu lớp Ký hiệu đối tượng

class-name

attributes

methods

:class-name

attributes

methods

Page 27: Pplthdt c02 lop_doi_tuong_v13.09a

27

VC

BB

Ký hiệu UML1 2 3 4 5 6 7

Ký hiệu thuộc tính và phương thức

Dùng dấu - đặt trước thuộc tính hay phương

thức private.

Dùng dấu + đặt trước thuộc tính hay phương

thức public.

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

CPoint2D

- m_dX: double

- m_dY: double

+ init(dX: double, dY: double)

+ move(dX: double, dY: double)

+ scale(dX: double, dY: double)

+ getDistance(point2D: CPoint2D): double

Page 28: Pplthdt c02 lop_doi_tuong_v13.09a

28

VC

BB

Sự tương đồng và khác nhau giữa C++, Java và C#1 2 3 4 5 6 7

Đọc thêm [OOP] trang 41-49

Tổ chức các tập tin và khai báo lớp.

Truy xuất các thuộc tính và phương thức.

Khởi tạo hằng số và giá trị các thuộc tính.

Chương trình chính.

Việc tạo lập và hủy đối tượng.

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

Page 29: Pplthdt c02 lop_doi_tuong_v13.09a

29

VC

BB

1 2 3 4 5 6 7

Một số thuật ngữ

attribute: thuộc tính hay trường dữ liệu (data member).

behaviour: ứng xử (của đối tượng).

class declaration: khai báo lớp.

class implementation: cài đặt lớp.

class name: tên lớp.

class: lớp.

data member: trường dữ liệu.

encapsulation: khái niệm về sự bao bọc.

environment variables: biến hay tham số môi trường.

inheritance: tính kế thừa.

instance/object: thể hiện/đối tượng của lớp.

method: phương thức.

polymorphism: tính đa dạng.

programming interface: giao tiếp lập trình.

Unified Modeling Language: ngôn ngữ mô hình hóa thống nhất.

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

Page 30: Pplthdt c02 lop_doi_tuong_v13.09a

30

VC

BB

1 2 3 4 5 6 7

Tài liệu tham khảo

[OOP] Chương 1 – Lớp và đối tượng

(trang 16-50)

[Primer] Chapter 10 – Objects and Classes

Procedural and Object-Oriented Programming

(trang 446-447)

Abstraction and Classes (trang 446-463)

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

Page 31: Pplthdt c02 lop_doi_tuong_v13.09a

31

VC

BB

1 2 3 4 5 6 7

Bài tập 2.1

Bổ sung các phương thức lấy (get) và gán (set)

giá trị cho các thuộc tính thành viên của các lớp

đã cài đặt:

Lớp CPoint2D.

Lớp CCircle.

Lớp CRectangle.

Lớp CTriangle.

Lớp CDice.

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

Page 32: Pplthdt c02 lop_doi_tuong_v13.09a

32

VC

BB

1 2 3 4 5 6 7

Bài tập 2.2

Bổ sung vào lớp CCircle đã cài đặt một số

phương thức để kiểm tra hình tròn đang xét có

mối quan hệ gì với hình tròn cir cho trước:

isInside(cir): nằm trong hình tròn cir?

isOverlap(cir): trùng nhau?

isBoundary(cir): chứa hình tròn cir?

isIntersection(cir): giao nhau?

isContact(cir): tiếp xúc nhau?

isOutside(cir): nằm bên ngoài?

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

Page 33: Pplthdt c02 lop_doi_tuong_v13.09a

33

VC

BB

1 2 3 4 5 6 7

Bài tập 2.3 & 2.4

Xây dựng lớp phát sinh số ngẫu nhiên (CRand)

cho phép thực hiện:

Khởi tạo hạt giống (từ thời gian).

Phát sinh số nguyên trong khoảng [0, 𝑛) (𝑛 là

số nguyên dương cho trước).

Phát sinh số nguyên trong đoạn [𝑎, 𝑏] (𝑎, 𝑏 là

số nguyên cho trước)

Phát sinh số thực trong đoạn [0, 1].

Sửa lại lớp CDice sử dụng lớp CRand đã cài đặt

trong việc phát sinh ngẫu nhiên.

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

Page 34: Pplthdt c02 lop_doi_tuong_v13.09a

34

VC

BB

1 2 3 4 5 6 7

Bài tập 2.5

Xây dựng lớp bầu cua (CDiceGame) cho phép

gieo một lúc 3 xúc xắc và trả về số tiền nhận

được ứng với số tiền và mặt đã cho trước, biết:

Thông tin các mặt: cá (fish), tôm (prawn), cua

(crab), gà (rooster), bầu (squash), nai (stag).

Số tiền nhận được bằng số tiền đặt trước

nhân với với số mặt trùng của xúc xắc với

mặt đặt trước.

Ví dụ: đặt 3$ cho cua

thắng 3$ x 2 = 6$

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

Page 35: Pplthdt c02 lop_doi_tuong_v13.09a

35

VC

BB

1 2 3 4 5 6 7

Bài tập 2.6

Xây dựng lớp phân số (CFraction) cho phép

thực hiện:

Nhập (input), xuất (output), khởi tạo (init).

Lấy/Gán (get/set) giá trị tử số (numerator),

mẫu số (denominator).

Nghịch đảo (inverse), rút gọn (reduce).

Cộng (add), trừ (subtract), nhân (multiply),

chia (divide) và so sánh (equal to, not equal

to, greater/less than, greater/less than or

equal to) với phân số hoặc với số nguyên.

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

Page 36: Pplthdt c02 lop_doi_tuong_v13.09a

36

VC

BB

1 2 3 4 5 6 7

Bài tập 2.7

Xây dựng lớp đơn thức (CMonomial) cho phép

thực hiện:

Nhập, xuất, khởi tạo.

Lấy/Gán giá trị hệ số (coefficient), số mũ

(exponent).

Tính giá trị (value), đạo hàm (derivative),

nguyên hàm (primitive).

Cộng, trừ, nhân, chia và so sánh với đơn thức

khác cùng bậc.

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

Page 37: Pplthdt c02 lop_doi_tuong_v13.09a

37

VC

BB

1 2 3 4 5 6 7

Bài tập 2.8

Xây dựng lớp sinh viên (CStudent) gồm họ tên,

điểm văn, điểm toán và cho phép thực hiện:

Nhập, xuất, khởi tạo.

Lấy/Gán giá trị họ tên (full name), điểm văn

(literature), điểm toán (math).

Tính điểm trung bình (average score).

Xếp loại theo tiêu chí tiêu chí sau:

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

Yếu

(poor)

Trung bình

(fair)

Khá

(good)

Giỏi

(excellent)

Xuất sắc

(out standing)

< 5.0 ≥ 5.0 ≥ 6.5 ≥ 8.0 ≥ 9.0

Page 38: Pplthdt c02 lop_doi_tuong_v13.09a

38

VC

BB

1 2 3 4 5 6 7

Bài tập 2.9

Xây dựng lớp mảng tĩnh (CStaticArray) tối đa

100 phần tử và cho phép thực hiện:

Nhập, xuất, khởi tạo (cho tất cả phần tử bằng

giá trị nào đó).

Lấy kích thước (size).

Lấy/Gán giá trị phần tử tại vị trí nào đó.

Tìm phần tử (find) nào đó.

Tìm phần tử có giá trị lớn nhất, nhỏ nhất.

Sắp xếp (sort) tăng dần (ascending), giảm

dần (descending).Lớp và đối tượng

Page 39: Pplthdt c02 lop_doi_tuong_v13.09a

39

VC

BB

1 2 3 4 5 6 7

Bài tập 2.10

Xây dựng lớp ngày (CDate) cho phép thực hiện:

Nhập, xuất, khởi tạo.

Kiểm tra hợp lệ, năm nhuận (leap year).

Lấy/Gán giá trị của ngày, tháng, năm.

Lấy số ngày trong tháng.

Tìm thứ tự ngày trong năm và cách 1/1/1.

Tìm ngày hôm trước, ngày hôm sau.

Tính khoảng cách với một ngày khác.

So sánh thứ tự trước sau với một ngày khác.

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