Upload
nguyen-tran
View
806
Download
4
Embed Size (px)
Citation preview
Giới thiệu về hướng đối tượngKhoa CNTT - ĐHKHTN 1
Công cụ và môi trường phát triển phần mềm
Giới thiệu về hướng đối tượng
Giới thiệu về hướng đối tượngKhoa CNTT - ĐHKHTN 2
Mục tiêu
w Tìm hiểu các nguyên tắc cơ bản của hướng đối tượng (objectorientation – OO)
w Tìm hiểu các khái niệm cơ bản và các thuật ngữ của hướng đối tượng kết hợp với hệ thống ký hiệu của UML
w Đánh giá chính xác sức mạnh của OOw Tìm hiểu một số cơ chế mô hình hoá cơ bản của UML
Giới thiệu về hướng đối tượngKhoa CNTT - ĐHKHTN 3
Giới thiệu về Hướng đối tượng: Các chủ đề
w Các nguyên tắc cơ bản của OOw Các khái niệm cơ bản của OOw Sức mạnh của OOw Các cơ chế mô hình hoá cơ bản của UML
Giới thiệu về hướng đối tượngKhoa CNTT - ĐHKHTN 4
Hướng đối tượng
Tính
đón
g gó
iEn
caps
ulat
ion
Trừ
u tượ
ng h
óaA
bstr
actio
n
Tính
phâ
n cấ
pH
iera
rchy
Tính
đơ
n thể
Mod
ular
ity
Các nguyên tắc cơ bản của OO
Giới thiệu về hướng đối tượngKhoa CNTT - ĐHKHTN 5
Người bán hàng
Khách hàngSản phẩm
Quản lý được độ phức tạp
Thế nào là trừu tượng hóa?
Giới thiệu về hướng đối tượngKhoa CNTT - ĐHKHTN 6
Tăng tính mềm dẻo
Đóng gói (Encapsulation) là gì?
w Che dấu cài đặt bên trong với clients§ Clients phụ thuộc vào interface
Giới thiệu về hướng đối tượngKhoa CNTT - ĐHKHTN 7
Hệ thống xử lý đơn đặt hàng
Tính tiền
Nhậnđơn đặt hàng
Thực hiện đơn đặt hàng
Quản lý được độ phức tạp
Tính đơn thể là gì?
w Phân chia nhỏ một vấn đề phức tạp thành nhiều phần nhỏ, đơn giản hơn quản lý được
Giới thiệu về hướng đối tượngKhoa CNTT - ĐHKHTN 8
Tài sản
Bất động sản
Tài khoảnTiết kiệm
Tài khoản
Tài khoảnThanh toán
Cổ phiếu
Chứng khoán
Trái phiếu
Các phần tử trên cùng một mức phải có cùng mức độ trừu tượng
Sự phân cấp (Hierarchy) là gì?
w Mức độ trừu tượng hoáTăng mức độ trừu
tượng
Giảm mức độ trừu tượng
Giới thiệu về hướng đối tượngKhoa CNTT - ĐHKHTN 9
Giới thiệu về Hướng đối tượng: Các chủ đề
w Các nguyên tắc cơ bản của OOw Các khái niệm cơ bản của OOw Sức mạnh của OOw Các cơ chế mô hình hoá cơ bản của UML
Giới thiệu về hướng đối tượngKhoa CNTT - ĐHKHTN 10
Các khái niệm cơ bản của Hướng đối tượng
w Objectw Classw Attributew Operationw Interface (Polymorphism)w Componentw Packagew Subsystemw Relationships
Giới thiệu về hướng đối tượngKhoa CNTT - ĐHKHTN 11
Các khái niệm cơ bản của Hướng đối tượng
w Objectw Classw Attributew Operationw Interface (Polymorphism)w Componentw Packagew Subsystemw Relationships
Giới thiệu về hướng đối tượngKhoa CNTT - ĐHKHTN 12
w Một cách không hình thức, một đối tượng biểu diễn một thực thể, dạng vật lý, khái niệm, hoặc phần mềm§ Thực thể vật lý
§ Thực thể khái niệm
§ Thực thể phần mềm
Truck
Chemical Process
Object là gì?
Linked List
Giới thiệu về hướng đối tượngKhoa CNTT - ĐHKHTN 13
Một định nghĩa hiệu quả hơn
w Một đối tượng là một khái niệm, sự trừu tượng, hoặc một vật với giới hạn rõ ràng và có ý nghĩa với một ứng dụng cụthể
w Một đối tượng có:§ Trạng thái§ Hành vi§ Định danh (Identity)
Giới thiệu về hướng đối tượngKhoa CNTT - ĐHKHTN 14
: Professor
Professor Clark
a + b = 10
ProfessorClark : Professor
ProfessorClarkChỉ có tên Class
Chỉ có tên đối tượng
Tên class và tên đối tượng
Biểu diễn đối tượng
w Một đối tượng được biểu diễn bởi một hình chữ nhật với tên được gạch dưới
Giới thiệu về hướng đối tượngKhoa CNTT - ĐHKHTN 15
Các khái niệm cơ bản của Hướng đối tượng
w Objectw Classw Attributew Operationw Interface (Polymorphism)w Componentw Packagew Subsystemw Relationships
Giới thiệu về hướng đối tượngKhoa CNTT - ĐHKHTN 16
Nguyên tắc OO: Trừu tượng hóa
Class là gì?
w Class là mô tả của một nhóm đối tượng có chung các thuộctính (attributes), hành vi (operations), các mối quan hệ và ngữnghĩa§ Một đối tượng là một thể hiện của class
w Một class là sự trừu tượng mà trong đó:§ Nhấn mạnh các tính chất quan trọng§ Bỏ qua các tính chất khác
Giới thiệu về hướng đối tượngKhoa CNTT - ĐHKHTN 17
a + b = 10
ClassCourse
PropertiesTênĐịa điểmThời gianSố tín chỉGiờ bắt đầuGiờ kết thúc
BehaviorThêm một sinh viênHuỷ một sinh viênLấy danh sách giáo sưXác định hết chỗ chưa
Ví dụ về Class
Giới thiệu về hướng đối tượngKhoa CNTT - ĐHKHTN 18
Professor
Professor Clark
a + b = 10
Biểu diễn Class
w Một class biểu diễn bằng một hình chữ nhật gồm ba phần
Giới thiệu về hướng đối tượngKhoa CNTT - ĐHKHTN 19
ProfessornameempID
create( )save( )delete( )change( )
Tên class
Attributes
Operations
Các phần trong một Class
w Một class bao gồm ba phần§ Phần đầu chứa tên class§ Phần thứ hai cho thấy cấu trúc của lớp (attributes)§ Phần thứ ba cho thấy các hành vi của lớp (operations)
Giới thiệu về hướng đối tượngKhoa CNTT - ĐHKHTN 20
Các lớp đối tượng
w Bạn nhìn thấy có bao nhiêu class?
Giới thiệu về hướng đối tượngKhoa CNTT - ĐHKHTN 21
w Một class là một định nghĩa trừu tượng của một đối tượng§ Nó định nghĩa cấu trúc và hành vi của mỗi đối tượng trong
lớp§ Nó được dùng như khuôn mẫu để tạo đối tượng
w Các đối tượng được nhóm thành các class
Objects Class
Professor Smith
Professor Jones
Professor Mellon
Professor
Quan hệ giữa class và đối tượng
Giới thiệu về hướng đối tượngKhoa CNTT - ĐHKHTN 22
Các khái niệm cơ bản của Hướng đối tượng
w Objectw Classw Attributew Operationw Interface (Polymorphism)w Componentw Packagew Subsystemw Relationships
Giới thiệu về hướng đối tượngKhoa CNTT - ĐHKHTN 23
:CourseOfferingnumber = 101startTime = 900endTime = 1100
:CourseOfferingnumber = 104startTime = 1300endTime = 1500
CourseOfferingnumberstartTime endTime
Class
Attribute
Object
Attribute Value
Thuộc tính (Attribute) là gì?
Giới thiệu về hướng đối tượngKhoa CNTT - ĐHKHTN 24
Các khái niệm cơ bản của Hướng đối tượng
w Objectw Classw Attributew Operationw Interface (Polymorphism)w Componentw Packagew Subsystemw Relationships
Giới thiệu về hướng đối tượngKhoa CNTT - ĐHKHTN 25
CourseOffering
addStudent deleteStudentgetStartTimegetEndTime
Class
Operation
Hành vi (Operation) là gì?
Giới thiệu về hướng đối tượngKhoa CNTT - ĐHKHTN 26
Các khái niệm cơ bản của Hướng đối tượng
w Objectw Classw Attributew Operationw Interface (Polymorphism)w Componentw Packagew Subsystemw Relationships
Giới thiệu về hướng đối tượngKhoa CNTT - ĐHKHTN 27
Nhà SX ANhà SX B
Nhà SX C
Nguyên tắc OO:Đóng gói
Polymorphism là gì?
w Khả năng che dấu nhiều cài đặt khác nhau bên dưới một giao diện duy nhất
Giới thiệu về hướng đối tượngKhoa CNTT - ĐHKHTN 28
Tube
Pyramid
Cube
Shape
DrawMoveScaleRotate
<<interface>>
Quan hệ Realization
Interface là gì?
w Interface hình thức hoá polymorphismw Interface hỗ trợ kiến trúc “plug-and-play”
Giới thiệu về hướng đối tượngKhoa CNTT - ĐHKHTN 29
Tube
Pyramid
Cube
ShapeDrawMoveScaleRotate
<<interface>>
Tube
Pyramid
CubeShape
Biểu diễn rút gọn
Biểu diễn chính tắcClass/Stereotype)
Biểu diễn Interface
Giới thiệu về hướng đối tượngKhoa CNTT - ĐHKHTN 30
Các khái niệm cơ bản của Hướng đối tượng
w Objectw Classw Attributew Operationw Interface (Polymorphism)w Componentw Packagew Subsystemw Relationships
Giới thiệu về hướng đối tượngKhoa CNTT - ĐHKHTN 31
w Một phần không tầm thường của hệ thống, gần như độc lập vàcó thể thay thế được, giữ một chức năng rõ ràng trong hệ thống
w Một component có thể lৠMột source code component§ Một run time components hoặc§ Một executable component
Nguyên tắc OO:Đóng gói
Component là gì?
Source FileName
<<EXE>>ExecutableName
<<DLL>>ComponentNameComponent
Interface
Giới thiệu về hướng đối tượngKhoa CNTT - ĐHKHTN 32
Các khái niệm cơ bản của Hướng đối tượng
w Objectw Classw Attributew Operationw Interface (Polymorphism)w Componentw Packagew Subsystemw Relationships
Giới thiệu về hướng đối tượngKhoa CNTT - ĐHKHTN 33
w Một package là một cơ chế để tổ chức các phần tử vào thành các nhóm
w Một phần tử trong mô hình có thể chứa các phần tử khác
w Dùng để§ Tổ chức mô hình đang phát triển§ Một đơn vị trong quản trị cấu hình
Package NameNguyên tắc OO:
Tính đơn thể
Package là gì?
Giới thiệu về hướng đối tượngKhoa CNTT - ĐHKHTN 34
Các khái niệm cơ bản của Hướng đối tượng
w Objectw Classw Attributew Operationw Interface (Polymorphism)w Componentw Packagew Subsystemw Relationships
Giới thiệu về hướng đối tượngKhoa CNTT - ĐHKHTN 35
Nguyên tắc OO: Đóng gói và Tính đơn thể
<<subsystem>>Subsystem Name
InterfaceInterface
RealizationSubsystem
Subsystem là gì?
w Tổ hợp của một package (có thể chứa các phần tử khác trong mô hình) và một class (có hành vi)
w Hiện thực hoá một hoặc nhiều interface định nghĩa cho hành vicủa nó
Giới thiệu về hướng đối tượngKhoa CNTT - ĐHKHTN 36
w Component là thể hiện ở mức vật lý của một khái niệm trừu tượng trong thiết kế
w Subsystem có thể dùng để biểu diễn các component trong thiết kế
ComponentName
Design Model Implementation Model
<<subsystem>>Component Name
Component Interface
ComponentInterface
Nguyên tắc OO: Đóng gói và Tính đơn thể
Subsystem và Component
Giới thiệu về hướng đối tượngKhoa CNTT - ĐHKHTN 37
Các khái niệm cơ bản của Hướng đối tượng
w Objectw Classw Attributew Operationw Interface (Polymorphism)w Componentw Packagew Subsystemw Relationships
Giới thiệu về hướng đối tượngKhoa CNTT - ĐHKHTN 38
Các mối quan hệ
w Association (Kết hợp)§ Aggregation (Thu nạp)§ Composition (Cấu thành)
w Dependency (Phụ thuộc)w Generalization (Tổng quát hóa)w Realization (Hiện thực hoá)
Giới thiệu về hướng đối tượngKhoa CNTT - ĐHKHTN 39
Professor UniversityDaïy cho
Class
Association
Teân Association
Professor UniversityEmployerEmployee
Tên Role
Mối quan hệ: Association
w Mô hình hoá một liên kết ngữ nghĩa giữa các class
Giới thiệu về hướng đối tượngKhoa CNTT - ĐHKHTN 40
Student Schedule
Whole
Aggregation
Part
Mối quan hệ: Aggregation
w Một dạng đặc biệt của association mô hình hoá mối quan hệtoàn thể-bộ phận giữa một thực thể và các bộ phận của nó
Giới thiệu về hướng đối tượngKhoa CNTT - ĐHKHTN 41
Student Schedule
Whole
Aggregation
Part
Mối quan hệ: Composition
w Một dạng aggregation có tính sở hữu cao và cùng chu kỳ sống§ Các bộ phận không thể sống lâu hơn thực thể
Giới thiệu về hướng đối tượngKhoa CNTT - ĐHKHTN 42
Association: Bản số và Chiều
w Bản số xác định số đối tượng tham gia vào một mối quan hệ§ Số các thể hiện của một class quan hệ với MỘT thể hiện
của một class khác§ Được chỉ ra ở mỗi đầu của quan hệ association
w Association và aggregation mặc định là hai chiều, nhưng người ta thường giới hạn theo một chiều§ Mũi tên được thêm vào để chỉ chiều của mối quan hệ
Giới thiệu về hướng đối tượngKhoa CNTT - ĐHKHTN 43
Association: Bản số
2..4
0..1
1..*
0..*
1
*
w Không xác địnhw Chỉ mộtw Không hoặc nhiều
w Một hoặc nhiềuw Không hoặc mộtw Khoảng được chỉ địnhw Các khoảng không liên tục 2, 4..6
Giới thiệu về hướng đối tượngKhoa CNTT - ĐHKHTN 44
Student Schedule1 0..*
Multiplicity
Navigation
Ví dụ: Bản số và Chiều
Giới thiệu về hướng đối tượngKhoa CNTT - ĐHKHTN 45
Client Supplier
Package
ClientPackage SupplierPackage
Client Supplier
Class
Dependencyrelationship
Dependencyrelationship
Component
Mối quan hệ: Dependency
w Quan hệ giữa hai phần tử trong mô hình mà thay đổi ở phần tửnày có thể gây ra thay đổi ở phần tử kia
w Quan hệ “sử dụng”, không cấu trúc
Giới thiệu về hướng đối tượngKhoa CNTT - ĐHKHTN 46
Mối quan hệ: Generalization
w Quan hệ giữa các class trong đó một lớp chia sẻ cấu trúc và/hoặc hành vi của một hoặc nhiều class khác
w Xác định một sự phân cấp các mức độ trừu tượng trong đó mộtsubclass kế thừa từ một hoặc nhiều superclass§ Đơn kế thừa§ Đa kế thừa
w Generalization là quan hệ “là một dạng của”
Giới thiệu về hướng đối tượngKhoa CNTT - ĐHKHTN 47
Accountbalancenamenumber
Withdraw()CreateStatement()
Checking
Withdraw()
Savings
GetInterest()Withdraw()
Superclass (cha)
Subclasses
GeneralizationRelationship
Tổ tiên
Hậu duệ
Ví dụ: Đơn kế thừa
w Một class kế thừa từ một class khác
Giới thiệu về hướng đối tượngKhoa CNTT - ĐHKHTN 48
Airplane Helicopter Wolf Horse
FlyingThing Animal
Bird
Đa kê thừa
Chỉ sử dụng đa kế thừa khi thật cần, và luôn phải cẩn thận !
Ví dụ: Đa kế thừa
w Một class kế thừa từ nhiều class khác
Giới thiệu về hướng đối tượngKhoa CNTT - ĐHKHTN 49
Sự kế thừa làm nổi bật các điểm tương đồng giữa các class
Cái gì được kế thừa?
w Một subclass kế thừa các thuộc tính, hành vi và các mối quan hệ từ cha nó
w Một subclass có thể:§ Bổ sung thuộc tính, hành vi và các mối quan hệ§ Định nghĩa lại các hành vi (nên cẩn thận!)
w Các thuộc tính, hành vi và các mối quan hệ chung được đặt ởmức cao nhất có thể trong cấu trúc phân cấp
Giới thiệu về hướng đối tượngKhoa CNTT - ĐHKHTN 50
Truck
tonnage
GroundVehicle
weightlicenseNumber
Car
owner
register( )
getTax( )
Person
0..*
Trailer
1Superclass
(cha)
Subclass
generalization
size
Ví dụ: Cái gì được kế thừa
Giới thiệu về hướng đối tượngKhoa CNTT - ĐHKHTN 51
w Một classifier đóng vai trò một hợp đồng mà một classifier khác đồng ý thực hiện
w Xuất hiện giữa:§ Các Interface và các classifier hiện thực chúng
§ Các Use case và các collaboration hiện thực chúng
Component
Interface
Use Case Use-Case Realization
Dạng tắt
Class
InterfaceSubsystem
Interface
Dạng chính tắc
Mối quan hệ: Realization
Giới thiệu về hướng đối tượngKhoa CNTT - ĐHKHTN 52
Giới thiệu về Hướng đối tượng: Các chủ đề
w Các nguyên tắc cơ bản của OOw Các khái niệm cơ bản của OOw Sức mạnh của OOw Các cơ chế mô hình hoá cơ bản của UML
Giới thiệu về hướng đối tượngKhoa CNTT - ĐHKHTN 53
Sức mạnh của Hướng đối tượng
w Một mô hình chungw Có tính dễ dùng lạiw Mô hình phản ánh chính xác thế giơi thực§ Mô tả chính xác hơn các tập dữ liệu và các xử lý§ Được phân rã dựa trên các phân chia tự nhiên§ Dễ hiểu và dễ bảo trì
w Tính ổn định§ Một thay đổi nhỏ trong yêu cầu không gây ra sự thay đổi lớn
trong hệ thống đang phát triển
Giới thiệu về hướng đối tượngKhoa CNTT - ĐHKHTN 54
Đặt hàng
Sản xuất
Vận chuyển bằng
Một ví dụ đơn giản: Sales Order System
Giới thiệu về hướng đối tượngKhoa CNTT - ĐHKHTN 55
Class Diagram của ví dụ “bán hàng”
Salesperson Product
Sale
Corporate
Customer
Individual Truck
Vehicle
Train
seller buyer item sold shipping mechanism
Giới thiệu về hướng đối tượngKhoa CNTT - ĐHKHTN 56
Hiệu ứng của sự thay đổi yêu cầuGiả sử bạn cần phươngtiện vận chuyển mới ...
Salesperson Product
Sale
Corporate
Customer
Individual Truck
Vehicle
Train
seller buyer item sold shipping mechanism
Việc thay đổi liên quan đến việc thêm 1 subclas mới
Airplane
Giới thiệu về hướng đối tượngKhoa CNTT - ĐHKHTN 57
Giới thiệu về Hướng Đối Tượng: Các chủ đề
w Các nguyên tắc cơ bản của OOw Các khái niệm cơ bản của OOw Sức mạnh của OOw Các cơ chế mô hình hoá cơ bản của UML
Giới thiệu về hướng đối tượngKhoa CNTT - ĐHKHTN 58
w Phân lớp và mở rộng các phần tử trong hệ thống ký hiệu UMLw Định nghĩa một phần tử của mô hình mới dựa trên một phần tử
khácw Có thể áp dụng cho mọi phần tử mô hìnhw Được biểu diễn với tên đặt trong dấu << >> hoặc bằng các icon
khác
<<boundary>>MyBoundaryClass
MyBoundaryClass
Các khuôn mẫu (Stereotype)
Giới thiệu về hướng đối tượngKhoa CNTT - ĐHKHTN 59
<<boundary>>
<<boundary>>
<<trace>>
Processor #1<<Processor>>
DesignClass
Processor #1
Ví dụ: Stereotype
Giới thiệu về hướng đối tượngKhoa CNTT - ĐHKHTN 60
There can be up to oneMaintainScheduleForm peruser session.MaintainScheduleForm
Các ghi chú (note)
w Có thể đặt ghi chú cho mọi phần tử UMLw Ghi chú dùng để thêm thông tin cho các lược đồw Nó là hình chữ nhật bị bẻ gócw Ghi chú có thể móc nối với một phần tử bằng một đường đứt
nét
Giới thiệu về hướng đối tượngKhoa CNTT - ĐHKHTN 61
PersistentClass{persistence} anObject : ClassA
{location=server}
Các giá trị đính (Tagged Values)
w Là sự mở rộng của các thuộc tính hoặc của các phần tử UMLw Là một số thuộc tính được định nghĩa sẵn bởi UML§ Persistence§ Location (chẳng hạn client, server)
w Là các thuộc tính có thể được tạo bởi các nhà mô hình hoáUML phục vụ cho mục đích bất kỳ
Giới thiệu về hướng đối tượngKhoa CNTT - ĐHKHTN 62
Professor DepartmentMember
Department Head{subset}
1..*
1
1
1
Các ràng buộc (Constraints)
w Hỗ trợ việc thêm các luật mới hoặc hiệu chỉnh các luật đang tồn tại
Giới thiệu về hướng đối tượngKhoa CNTT - ĐHKHTN 63
w Bốn nguyên tắc cơ bản của OO là gì ? Mô tả ngắn gọn về mối nguyên tắc.
w Đối tượng là gì ? Class là gì ? Những điểm khác nhau giữa chúng ?
w Thuộc tính (Attribute) là gì ?w Hành vi (Operation) là gì ?w Interface là gì ? Polymorphism là gì ?
w Component là gì ?
Câu hỏi ôn tập
Giới thiệu về hướng đối tượngKhoa CNTT - ĐHKHTN 64
Câu hỏi ôn tập (tt)
w Package là gì?w Subsystem là gì ? Nó có quan hệ như thế nào với Component?
Nó có quan hệ như thế nào với package? Nó có quan hệ như thế nào với class?
w Tên của 4 quan hệ UML cơ bản ? Mô tả từng quan hệ.w Mô tả sức mạnh của OO.w Cho biết tên và mô tác một số cơ chế tổng quát trong UML.w Stereotype là gì? Cho biết tên của một số stereotype dùng
chung.