36
Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường Đại học Sư phạm TP.HCM

Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ...hienlth.weebly.com/uploads/1/6/9/3/16936172/ooad_c01.pdf · Trường Đại học Sư phạm TP.HCM ... tính

Embed Size (px)

Citation preview

Page 1: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ...hienlth.weebly.com/uploads/1/6/9/3/16936172/ooad_c01.pdf · Trường Đại học Sư phạm TP.HCM ... tính

Ths. Lương Trần Hy Hiến

Khoa Công Nghệ Thông Tin

Trường Đại học Sư phạm TP.HCM

Page 2: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ...hienlth.weebly.com/uploads/1/6/9/3/16936172/ooad_c01.pdf · Trường Đại học Sư phạm TP.HCM ... tính

Giảng viên: Ths. Lương Trần Hy Hiến (HIENLTH)

Khoa CNTT, ĐH Sư phạm TpHCM (FIT – HCMUP)

Các môn dạy:▪ NM Công nghệ Phần mềm, Phát triển ứng dụng Web

▪ Công nghệ NET, Bảo mật và An ninh mạng

Hướng nghiên cứu:▪ Software Engneering, Semantic Web, Information Security…

Email: [email protected]

Web môn học:http://fit.hcmup.edu.vn/~hienlth/OOAD

2

Page 3: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ...hienlth.weebly.com/uploads/1/6/9/3/16936172/ooad_c01.pdf · Trường Đại học Sư phạm TP.HCM ... tính

1. Tổng quan về PTTK HĐT

2. Triển khai phần mềm

3. Quy trình phát triển phần mềm UP

4. Xác định yêu cầu (requirements determination)

5. Mô hình hóa chức năng

6. Mô hình hóa cấu trúc

7. Mô hình hóa hành vi

8. Thiết kế lớp đối tượng

9. Thiết kế tầng quản lý dữ liệu

10. Thiết kế kiến trúc vật lý

3

Page 4: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ...hienlth.weebly.com/uploads/1/6/9/3/16936172/ooad_c01.pdf · Trường Đại học Sư phạm TP.HCM ... tính

Grady Booch (2007), Object-Oriented Analysis

and Design with Applications, 3rd Edition,

Addison Wesley.

Dennis, Wixom, Tegarden (2009), System

Analysis & Design with UML version 2.0, An

Object-Oriented Approach 3rd Edition, Addison

Wesley.

Đặng văn Đức (2002), Phân tích thiết kế

hướng đối tượng bằng UML, NXB Giáo dục.

4

Page 5: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ...hienlth.weebly.com/uploads/1/6/9/3/16936172/ooad_c01.pdf · Trường Đại học Sư phạm TP.HCM ... tính

http://www.agilemodeling.com/essays/umlDiagrams.htm

http://www.omg.org/spec/UML/

http://www.tutorialspoint.com/uml/

5

Page 6: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ...hienlth.weebly.com/uploads/1/6/9/3/16936172/ooad_c01.pdf · Trường Đại học Sư phạm TP.HCM ... tính

Giữa kỳ: 40%

Bài tập trên lớp

Thi thực hành

Cuối kỳ: 60%

Đồ án môn học 2 giai đoạn

6

Page 7: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ...hienlth.weebly.com/uploads/1/6/9/3/16936172/ooad_c01.pdf · Trường Đại học Sư phạm TP.HCM ... tính
Page 8: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ...hienlth.weebly.com/uploads/1/6/9/3/16936172/ooad_c01.pdf · Trường Đại học Sư phạm TP.HCM ... tính

Sự trừu tượng hóa (ABTRACTION)

Đối tượng (object) & cách xây dựng lớp đối

tượng

Quan hệ giữa các lớp

8

Page 9: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ...hienlth.weebly.com/uploads/1/6/9/3/16936172/ooad_c01.pdf · Trường Đại học Sư phạm TP.HCM ... tính

Là quá trình bao gồm việc nhận ra và tập trung những

tính chất quan trọng của một tình huống hay đối tượng

và bỏ qua những chi tiết không quan trọng.

An abstraction is something more general

9In real world In abstraction

Page 10: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ...hienlth.weebly.com/uploads/1/6/9/3/16936172/ooad_c01.pdf · Trường Đại học Sư phạm TP.HCM ... tính

Sự trừu tượng hóa là khâu quan trọng và cơ bản trong

quá trình phát triển phần mềm.

Sự trừu tượng hóa giúp lượt bỏ những chi tiết không

cần thiết và tập trung những chi tiết quan trọng trong thế

giới thực để từ đó xây dựng phần mềm.

10

THẾ GIỚI

THỰC

CÔNG VIỆC

XỬ LÝ

TRÊN

MÁY TÍNH

TIN HỌC HÓA MỘT NGHIỆP VỤ

Page 11: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ...hienlth.weebly.com/uploads/1/6/9/3/16936172/ooad_c01.pdf · Trường Đại học Sư phạm TP.HCM ... tính

Everything is object

Object Oriented Modelling is building

objects

Page 12: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ...hienlth.weebly.com/uploads/1/6/9/3/16936172/ooad_c01.pdf · Trường Đại học Sư phạm TP.HCM ... tính

According to Merriam-Webster’s Collegiate Dictionary,

an object is:

Something material that may be perceived by the

senses (physical objects)

Something mental or physical toward which thought,

feeling, or action is directed (conceptual objects)

From a software perspective, a (software) object is

Any abstraction that models a single thing

A representation of a specific entity in the real world

May be tangible or intangible

12

Page 13: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ...hienlth.weebly.com/uploads/1/6/9/3/16936172/ooad_c01.pdf · Trường Đại học Sư phạm TP.HCM ... tính

13

Những quyển sách Những cây bút Những quả bong bóng

Page 14: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ...hienlth.weebly.com/uploads/1/6/9/3/16936172/ooad_c01.pdf · Trường Đại học Sư phạm TP.HCM ... tính

Đối tượng gồm 2 thành phần cơ bản: trạng thái (state)

và hành vi (behavior).

Trạng thái (state):

Giúp phân biệt giữa đối tượng này với đối tượng khác

Mô tả cấu trúc cơ bản của đối tượng.

Bao gồm những thuộc tính (attribute) và những giá trị

của những thuộc tính đó.

Hành vi (behavior):

Cho biết đối tượng có thể làm được những việc gì.

Bao gồm những phương thức (method) để chúng ta

có thể điều khiển đối tượng đó.

14

Page 15: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ...hienlth.weebly.com/uploads/1/6/9/3/16936172/ooad_c01.pdf · Trường Đại học Sư phạm TP.HCM ... tính

Everything is object

Object Oriented Modelling is building objects

Software development process:

Building objects

Interacting between objects

15

Page 16: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ...hienlth.weebly.com/uploads/1/6/9/3/16936172/ooad_c01.pdf · Trường Đại học Sư phạm TP.HCM ... tính

To build objects: First, create a blueprint, production line

Second, using blueprint, production line to make objects

In software development, blueprint, production line is called

class

A class is an abstraction describing the common features of

all objects in a group of similar objects

A class is a pattern / a blue print to create objects

16From blue print to objects

Page 17: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ...hienlth.weebly.com/uploads/1/6/9/3/16936172/ooad_c01.pdf · Trường Đại học Sư phạm TP.HCM ... tính

Khi sử dụng phương pháp hướng đối tượng,

quy trình phát triển phần mềm sẽ bao gồm các

bước:

Xây dựng các lớp đối tượng.

Khởi tạo các đối tượng cần thiết.

Tương tác với các đối tượng.

17

Page 18: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ...hienlth.weebly.com/uploads/1/6/9/3/16936172/ooad_c01.pdf · Trường Đại học Sư phạm TP.HCM ... tính

Có 3 mối quan hệ cơ bản:

Association

Dependency

Generalization

18

Page 19: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ...hienlth.weebly.com/uploads/1/6/9/3/16936172/ooad_c01.pdf · Trường Đại học Sư phạm TP.HCM ... tính

Behavioral relationship between object X and object Y:

object X is temporarily handed a reference to object Y

when X is finished communicating with Y, object X

often discards the reference to Y

Structural relationship:

A permanent relationship

In order to keep track of such relationships, an object

actually maintains lasting references to its related

objects in the form of fields

Behavioral relationships = Dependency relationships

Structural relationships = Association relationships

19

Page 20: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ...hienlth.weebly.com/uploads/1/6/9/3/16936172/ooad_c01.pdf · Trường Đại học Sư phạm TP.HCM ... tính

20

class Circle{

………………………}class Rectangle{

protected double w;protected double h;protected double top;protected double left;public bool CheckOverlap(Circle c){

…………………………… }

}

class SinhVien{

protected string name;protected string id;

}class LopHoc{

protected SinhVien[] dsSinhVien;}

Behavioral relationshipbetween Circle & Rectangle

Structural relationshipbetween SinhVien & LopHoc

Page 21: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ...hienlth.weebly.com/uploads/1/6/9/3/16936172/ooad_c01.pdf · Trường Đại học Sư phạm TP.HCM ... tính

Mối quan hệ kết hợp là mối quan hệ trong đó đối tượng

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

Dựa vào số lượng lớp tham gia mối quan hệ, có 2 loại:

bin-ary, n-ary bin-ary (mối quan hệ 2 ngôi): là mối quan hệ chỉ có 2 lớp tham gia

21

Publisher

name:String

Book

title:StringReview

rating:int[]

assignRating(rating:int):void

computeAvgRate():double

Page 22: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ...hienlth.weebly.com/uploads/1/6/9/3/16936172/ooad_c01.pdf · Trường Đại học Sư phạm TP.HCM ... tính

n-ary (mối quan hệ đa ngôi): là mối quan hệ

có nhiều hơn 2 lớp đối tượng tham gia

22

ActorFilm

Viewer

Comment

Quan hệ 3 ngôi

Page 23: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ...hienlth.weebly.com/uploads/1/6/9/3/16936172/ooad_c01.pdf · Trường Đại học Sư phạm TP.HCM ... tính

Higher-order associations are possible, but rare.

A ternary association involves three classes.

For example, a Student takes a Course from a particular Professor

However, we usually decompose higher-order associations into an

appropriate number of binary associations

23

Course

Class

Professor

Student

Page 24: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ...hienlth.weebly.com/uploads/1/6/9/3/16936172/ooad_c01.pdf · Trường Đại học Sư phạm TP.HCM ... tính

For a given association type X between classes A and B, the

term multiplicity refers to the number of objects of type A

that may be associated with a given instance of type B

There are three basic categories: oneto-one, one-to-many, and

many-to-many

24

Publisher

name:String

Book

title:StringReview

rating:int[]

assignRating(rating:int):void

computeAvgRate():double

0..n 1

0..n

1

Page 25: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ...hienlth.weebly.com/uploads/1/6/9/3/16936172/ooad_c01.pdf · Trường Đại học Sư phạm TP.HCM ... tính

25

Page 26: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ...hienlth.weebly.com/uploads/1/6/9/3/16936172/ooad_c01.pdf · Trường Đại học Sư phạm TP.HCM ... tính

Đây là trường hợp đặc biệt của quan hệ kết hợp

Là mối quan hệ mà 1 lớp đối tượng có quan hệ với

chính nó

Do vậy, người ta còn gọi là recursive association

26

NhanVien

ID:string

HoTen:string

Email:string

▼Quản lý

0..1

0..n

Page 27: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ...hienlth.weebly.com/uploads/1/6/9/3/16936172/ooad_c01.pdf · Trường Đại học Sư phạm TP.HCM ... tính

Aggregation: Is normally understood

as a "has-a" relationship

Both the entities continue to have their own independent existence

Composition: Is normally understood

as a “part of" relationship

The 'part' entity doesn't have its own independent existence

27

Team

Name:string

Player

Name:string

Birthday:Datetime

1 1..n

Building

Name:string

Room

RoomNumber:string

Capacity:int

1 1..n

Page 28: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ...hienlth.weebly.com/uploads/1/6/9/3/16936172/ooad_c01.pdf · Trường Đại học Sư phạm TP.HCM ... tính

28

Page 29: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ...hienlth.weebly.com/uploads/1/6/9/3/16936172/ooad_c01.pdf · Trường Đại học Sư phạm TP.HCM ... tính

29

When you create a class by making it inherit from another

class, you are provided with data fields and methods

automatically; you can reuse fields and methods that are

already written and tested.

Page 30: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ...hienlth.weebly.com/uploads/1/6/9/3/16936172/ooad_c01.pdf · Trường Đại học Sư phạm TP.HCM ... tính

Biểu diễn mối quan hệ “cha – con” (hay “1 dạng của”)

giữa các lớp đối tượng

Lớp mang ý nghĩa khái quát được gọi là lớp cha, lớp

cơ sở (base class)

Lớp mang ý nghĩa chi tiết, cụ thể gọi là lớp con, lớp

dẫn xuất (derived class)

Kế thừa tạo khả năng xây dựng lớp mới từ lớp đã có

Kế thừa giúp tận dụng mã nguồn đã có

Kế thừa giúp dễ dàng sửa chữa, nâng cấp, mở rộng

hệ thống

30

Page 31: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ...hienlth.weebly.com/uploads/1/6/9/3/16936172/ooad_c01.pdf · Trường Đại học Sư phạm TP.HCM ... tính

Có 2 loại kế thừa: đơn thừa kế và đa thừa kế

Đơn thừa kế: một lớp chỉ kế thừa từ 1 lớp cơ sở

Đa thừa kế: một lớp được kế thừa từ nhiều lớp cơ sở

Trong C#, không hỗ trợ đa thừa kế (có thể dùng

khái niệm interface để khắc phục vấn đề này)

31

Lớp cơ sở

Lớp dẫn xuất

Đơn thừa kế

Lớp dẫn xuất

Đa thừa kế

Lớp cơ sở 1 Lớp cơ sở 2

Page 32: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ...hienlth.weebly.com/uploads/1/6/9/3/16936172/ooad_c01.pdf · Trường Đại học Sư phạm TP.HCM ... tính

Các thành phần của lớp dẫn xuất (lớp con) sẽ

bao gồm:

Các thành phần được khai báo ở lớp dẫn xuất

Các thành phần được khai báo ở lớp cơ sở

(lớp cha)

Lớp dẫn xuất không được quyền xóa đi những

thành phần đã được khai báo ở lớp cơ sở

32

Page 33: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ...hienlth.weebly.com/uploads/1/6/9/3/16936172/ooad_c01.pdf · Trường Đại học Sư phạm TP.HCM ... tính

33

Tên lớp cơ sở

<tên field>: <kiểu dữ liệu>

<tên property> {get;set;}: <tên kiểu>

<tên method> (danh sách tham số): <tên kiểu trả về>

<tên operator> (danh sách tham số): <tên kiểu tra về>

Tên lớp dẫn xuất

<tên field>: <kiểu dữ liệu>

<tên property> {get;set;}: <tên kiểu>

<tên method> (danh sách tham số): <tên kiểu trả về>

<tên operator> (danh sách tham số): <tên kiểu tra về>

Page 34: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ...hienlth.weebly.com/uploads/1/6/9/3/16936172/ooad_c01.pdf · Trường Đại học Sư phạm TP.HCM ... tính

Có thể kế thừa lớp đối tượng:

Khi cần bổ sung thêm thành phần cho lớp cơ sở

Khi cần chuyên biệt hóa các phương thức xử lý của

lớp cơ sở

34

Page 35: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ...hienlth.weebly.com/uploads/1/6/9/3/16936172/ooad_c01.pdf · Trường Đại học Sư phạm TP.HCM ... tính

Khi kế thừa lớp đối tượng, ĐỪNG:

Thay đổi ngữ nghĩa của các thành phần của lớp cha

Loại bỏ 1 số thành phần của lớp cha

35

Page 36: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ...hienlth.weebly.com/uploads/1/6/9/3/16936172/ooad_c01.pdf · Trường Đại học Sư phạm TP.HCM ... tính

36