1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Bài giảng lập trình hướng đối tượng dùng c + +chương 7 kỹ thuật thiết kế theo hướng đối tượng

54 549 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

Định dạng
Số trang 54
Dung lượng 455,12 KB

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

Nội dung

Các giai đoạn phát triển hệ thống [2/7] Phân tích yêu cầu Bằng việc tìm hiểu các use case để nắm bắt các yêu cầu của khách hàng, của vấn đề cần giải quyết Dựa vào use case  xác định cá

Trang 1

Chương 7 Thiết kế theo

hướng đối tượng

(Object Oriented Design – OOD)

TRẦN MINH THÁI

Email: minhthai@itc.edu.vn

Website: www.minhthai.edu.vn

Cập nhật: 10 tháng 05 năm 2015

Trang 2

Nội dung

1 Các giai đoạn phát triển hệ thống

2 Các bước thiết kế chương trình theo hướng OOP

3 Kỹ thuật thiết kế lớp

4 Ví dụ

Trang 3

Các giai đoạn phát triển hệ thống [1/7]

1 Phân tích yêu cầu (Requirement analysis)

Trang 4

Các giai đoạn phát triển hệ thống [2/7]

Phân tích yêu cầu

Bằng việc tìm hiểu các use case để nắm bắt các yêu cầu của

khách hàng, của vấn đề cần giải quyết

Dựa vào use case  xác định các nhân tố bên ngoài có tham gia vào hệ thống cũng được mô hình hóa bằng các tác nhân (actor) Mỗi use case được mô tả bằng văn bản, đặc tả yêu cầu của

khách hàng

Trang 5

Các giai đoạn phát triển hệ thống [3/7]

Phân tích

Từ các đặc tả yêu cầu trên, hệ thống sẽ bước đầu được

mô hình hóa bởi các khái niệm lớp, đối tượng và các

cơ chế để diễn tả hoạt động của hệ thống

Trong giai đoạn phân tích, ta chỉ mô tả các lớp trong lĩnh vực của vấn đề cần giải quyết chứ không đi sâu vào các chi tiết kỹ thuật

Trang 6

Một số các lớp được thêm vào để cung cấp cơ sở

hạ tầng kỹ thuật như lớp giao diện, lớp cơ sở dữ liệu, lớp chức năng, …

Trang 8

Các giai đoạn phát triển hệ thống [6/7]

Kiểm tra: có bốn hình thức kiểm tra hệ thống

Kiểm tra từng đơn thể (unit testing): dùng kiểm tra các lớp hoặc các nhóm đơn

Kiểm tra tính tích hợp (integration testing): kết hợp với các thành phần và các lớp để kiểm tra xem chúng hoạt động với nhau có đúng không

Trang 9

Các giai đoạn phát triển hệ thống [7/7]

Kiểm tra hệ thống (system testing): kiểm tra xem

hệ thống có đáp ứng được chức năng mà người dùng yêu cầu không

Kiểm tra tính chấp nhận được (acceptance testing): được thực hiện bởi khách hàng, việc kiểm tra cũng thực hiện giống như kiểm tra hệ thống

Trang 10

Các bước để thiết kế chương trình [1/6]

Để thiết kế một chương trình theo hướng đối tượng, ta phải trải qua bốn bước sau:

Xác định các dạng đối tượng (lớp) của bài toán (định danh các đối tượng)

Tìm kiếm các đặc tính chung (dữ liệu chung) trong các dạng đối tượng này, những gì chúng cùng nhau chia sẻ

Xác định được lớp cơ sở dựa trên cơ sở các đặc tính chung của các dạng đối tượng

Trang 11

Các bước để thiết kế chương trình [2/6]

Từ lớp cơ sở, sử dụng quan hệ tổng quát hóa để đặc tả trong việc đưa ra các lớp dẫn xuất chứa các thành viên, những đặc tính không chung còn lại của dạng đối tượng

Từ đó xây dựng được một cây kế thừa và các mối quan hệ giữa các lớp

Trang 12

Các bước để thiết kế chương trình [3/6]

Đối với hệ thống phức tạp hơn, cần phải phân tích để

giải quyết được vấn đề đặt ra theo nguyên tắc:

Phân tích một cách cẩn thận về các đối tượng của

bài toán theo trật tự từ dưới lên (bottom up)

Tìm ra những gì tồn tại chung giữa các đối tượng,

nhóm các đặc tính này lại để được các lớp cơ sở

Trang 13

Các bước để thiết kế chương trình [4/6]

Trang 14

Các bước để thiết kế chương trình [5/6]

Tiếp tục theo hướng từ dưới lên, ta thiết kế được các đối tượng phù hợp

Trang 15

Các bước để thiết kế chương trình [6/6]

Bằng cách này, tiếp tục tìm các đặc tính chung cho đến tột cùng của các đối tượng

Sau đó cài đặt theo hướng đối tượng từ trên xuống bằng cách cài đặt lớp cơ sở chung nhất

Tiếp tục cài đặt các lớp dẫn xuất trên cơ sở các đặc tính chung của từng nhóm đối tượng

Cho đến khi tất cả các dạng đối tượng của hệ thống được cài đặt xong để được cây kế thừa

Trang 17

Ví dụ 1 [2/7]

Hệ thống có hai đối tượng: biên chế và hợp đồng

Hai loại đối tượng này có đặc tính chung đó là viên chức làm việc cho cơ quan

Tạo lớp cơ sở để quản lý một viên chức (lớp CNguoi) bao gồm mã số, họ tên và lương

Trang 18

Ví dụ 1 [3/7]

Xây dựng các lớp còn lại kế thừa từ lớp cơ sở trên

Lớp dành cho cán bộ, công chức (lớp CBienChe) gồm các thuộc tính: hệ số lương, tiền phụ cấp chức vụ

Lớp dành cho người làm hợp đồng (lớp CHopDong) gồm các thuộc tính: tiền công lao động, số ngày làm việc trong tháng, hệ số vượt giờ

Trang 19

Ví dụ 1 [4/7]

Trang 20

char MaSo[MAX_MASO+1];

double Luong;

public:

CNguoi();

virtual void TinhLuong()=0;

void Xuat() const;

virtual void Nhap();

};

CNguoi::CNguoi() {

strcpy(HoTen,"");

strcpy(MaSo,"");

Luong=0;

} void CNguoi::Xuat() const {

cout<<"Ma so:"<<MaSo;

cout<<",Ho ten:"<<HoTen;

cout<<",Luong:"<<Luong<<endl; }

void CNguoi::Nhap() {

Trang 21

virtual void Nhap();

};

CBienChe::CBienChe() {

HeSoLuong=HeSoPhuCap=0; }

void CBienChe::Nhap() {

Luong=MUC_CO_BAN*(1.0+HeSoLuong+HeSoPhuCap);

}

Trang 22

virtual void Nhap();

};

CHopDong::CHopDong() {

TienCong=NgayCong=HeSoVuotGio=0; }

void CHopDong::Nhap() {

Luong=TienCong*NgayCong*(1+HeSoVuotGio);

}

Trang 23

Ví dụ 2 [1/4]

Giả sử cuối năm học cần trao giải thưởng cho các sinh viên xuất sắc và các giảng viên có nhiều công trình khoa học được công bố trên tạp chí

Trang 25

return DiemTB>9.0;

} void CSinhVien::Xuat() const {

cout<<"Ho va ten cua sinh vien:"<<HoTen<<endl;

} class CGiangVien : public CNguoi {

protected:

int SoBaiBao;

public:

CGiangVien(char *ht,int sbb);

virtual bool DuocKhenThuong() const;

virtual void Xuat() const;

};

Trang 26

return SoBaiBao>5;

} void CGiangVien::Xuat() const {

cout<<"Ho va ten cua giang vien:"<<HoTen<<endl; }

Trang 27

Kỹ thuật thiết kế 1 lớp đối tượng

Thiết kế thuộc tính

Thiết kế phương thức

Trang 28

Stt Thuộc tính Kiểu/ lớp Ràng buộc Diễn giải

Stt Mô tả ràng buộc Thuộc tính

liên quan Ghi chú

Nếu có ràng buộc liên thuộc tính

Trang 29

Ràng buộc [1/6]

Ràng buộc trên lớp là các quy định, quy tắc áp đặt trên các giá trị thuộc tính của đối tượng sao cho đối tượng này thể hiện đúng với thực tế

Ràng buộc tĩnh: ràng buộc trên giá trị thuộc tính

 Ràng buộc trên thuộc tính (Ràng buộc MGT)

 Ràng buộc liên thuộc tính

Ràng buộc động: ràng buộc trên biến đổi giá trị thuộc

Trang 31

31

VD: Xét lớp điểm ký tự (CDiemKT) trên cửa sổ Console

Stt Thuộctính Kiểu/ lớp Ràng buộc Diễn giải

1 x Số nguyên 0 ≤ x < Kích thước ngang Cột

2 y Số nguyên 0 ≤ y < Kích thước dọc Dòng

3 ch Ký tự Ký tự hiển thị

Ràng buộc [3/6]

Trang 32

32

Stt Thuộc tính Kiểu/ lớp Ràng buộc Diễn giải

2 cngang Số nguyên 1<ngang< K/thước ngang Chiều ngang

3 cdung Số nguyên 1<dung< K/thước dọc Chiều đứng

Tọa độ góc Chiều ngang

Trang 33

Goc, m

2 Tổng của tung độ góc và

n nhỏ hơn kích thước dọc

Goc, n

Ràng buộc [5/6]

Trang 34

đa là 28

Ng, Th, Nm

Ràng buộc [6/6]

Trang 35

Bài tập: thiết kế thuộc tính các lớp

35

Lớp thời gian CTime

Lớp ngày tháng năm CDate

Trang 36

Thiết kế các hành động của lớp [1/2]

thuộc tính của đối tượng

thông tin của đối tượng

của đối tượng

Trang 37

5 Cung cấp thông tin

1 Kiểm tra ràng buộc

Trang 38

Mẫu cài đặt ràng buộc [1/

Giá trị trả về

 true: Thoả ràng buộc

 false: Không thoả ràng buộc

Tham số

Ràng buộc miền giá trị: Chỉ có 1 tham số ứng với

tham số cần kiểm tra

Ràng buộc liên thuộc tính: Có tham số là các thuộc

tính liên quan

38

Mẫu: bool KiemTra ( tham số )

Trang 39

Tên phương thức

Bắt đầu bằng chữ KiemTra

Ràng buộc miền giá trị: Ghép thêm tên thuộc tính

Ràng buộc liên thuộc tính: Ghép thêm số thứ tự

ràng buộc

39

Mẫu cài đặt ràng buộc [2/

Trang 40

public bool KiemTraDung(int d);

public bool KiemTra1(int ng, CDiem X);

public bool KiemTra2(int d, CDiem Y);

};

40

VD cài đặt ràng buộc cho lớp CHCN

Trang 41

Cài đặt phương thức khởi tạo và cập nhật

Các phương thức thuộc nhóm khởi tạo và cập nhật

có liên quan đến ràng buộc phải được bổ sung thêm kiểm tra ràng buộc

Việc kiểm tra tham số thoả hoặc không thoả ràng buộc bằng cách gọi phương thức kiểm tra ràng buộc tương ứng

41

Trang 42

if (Tham số thoả ràng buộc)

{

gán giá trị tương ứng cho thuộc tính của lớp kq=true;

}return kq;

}

42

Trang 44

bool CHCN::CapNhatX(int xx) {

Trang 45

45

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

bool KiemTraX(int xx);

bool KiemTraY(int yy);

2 Nhóm khởi tạo

Trang 46

46

3 Nhóm cập nhật

//Trực tiếpbool CapNhatX(int xx);

bool CapNhatY(int yy);

void CapNhatCh(char c);

//Gián tiếp bool DichPhai(uint k);

Trang 48

bool KhoiTao(CDiemKT M,int cng, int cd);

bool KhoiTao(int x, int y, int cng, int cd);

void KhoiTao(CDiemKT X, CDiemKT Y);

void PhatSinh();

VD2 Thiết kế các hành động của lớp CHCN

Trang 53

Bài tập: thiết kế phương thức các lớp

53

Lớp thời gian CTime

Lớp ngày tháng năm CDate

Trang 54

Q&A

Ngày đăng: 04/09/2015, 15:29

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN