Chương 4

Phương pháp hướng đối Ph há h ớ tượng trong công nghệ phần mềm
UML/NN 1

Nội dung
Phương pháp hướng đối tượng? Các khái niệm cơ bản

UML/NN

2

Tổng quát về hướng đối tượng
Phương pháp lập trình hướng đối tượng giới thiệu một quan điểm lập trình khác hẳn so với trường phái cổ điển (có cấu trúc) Bắt đầu hình thành vào những năm cuối của thập niên 60, đến 60 đế 1990 bắt đầ phổ biế t đầu hổ biến trong công nghiệp phần ô hiệ hầ mềm Ngôn ngữ hướng đối tượng
Smalltalk, Eiffel Object Pascal, C+, Java, C#,…

Hình thành phương pháp phân tích/thiết kế hướng đối tượng Hiện nay có một qui trình phát triển phần mềm hợp ệ y ộ q p p ợp nhất UP dựa trên UML
UML/NN 3

Sự khác biệt
Structured
Account aNo balance Account ER DFD with Data Store Structure Chart amount message withdraw ithd amount message

withdrawal

h OO approach
Objects

MyAccount:: aNo= 101 balance=500 balance( ) withdraw( ) --withdraw(X) ( )
:MyAccount

UML/NN

4

Đặc trưng cơ bản
Tính đóng gói (encapsulation): che dấu mọi chi tiết hiện thực bên trong đối tượng. tượng
Tính độc lập cao giữa các đối tượng (tính kết dính thấp)

Tính phân loại ( p ạ (classification): gom nhóm các ) g đối tượng có cùng cấu trúc và hành vi vào cùng một lớp Tính ộ (aggregation): 1 đối tượng có thể Tí h gộp ( ti ) tượ ó chứa nhiều đối tượng khác tạo nên mối quan hệ bao gộp một cách đệ qui giữa các đối tượng Tính thừa kế (inheritance): phân biệt tổng quát hóa và chuyên biệt hóa các đối tượng
UML/NN 5

Nguyên lý cơ bản
Object Orientation Obj t O i t ti

Encapsulat tion

Ab bstractio on

Mo odularit ty

UML/NN

Hierarchy y

6

Abstraction?

Salesperson Not saying Which salesperson p – just a salesperson in general!!! Customer

Product

Manages C M Complexity l i
UML/NN 7

Encapsulation?
Che dấu việc thực thi
Clients depend on interface

How does an object encapsulate? What does it encapsulate?

Improves R ili I Resiliency
UML/NN 8

Modularity?

Order Entry Order Processing System

Order Fulfillment

Billing Manages Complexity
UML/NN 9

Hierarchy?
Asset
Increasing abstraction

BankAccount

Security

RealEstate

Savings Checking
Decreasing g abstraction
UML/NN

Stock

Bond

Elements at the same level of the hierarchy should be at the same level of abstraction
10

Các khái niệm cơ bản
Object Class Cl Attribute Operation Interface (Polymorphism) Component Package Subsystem Relationships
UML/NN 11

Object?
Thực thể vật lý Thực thể khái niệm Thực thể phần mềm… ự p
Chemical Process

Truck

Linked List

UML/NN

12

Object
An object is a concept, abstraction, or thing with sharp boundaries and meaning for an ith h b d i d i f application An object is something that has:
State Behavior Identity y

UML/NN

13

Biểu diễn đối tượng

: Professor
a + b = 10

ProfessorClark
Class Name Only
Professor Clark

ProfessorClark : Professor

Object Name Only

Class and Object Name
UML/NN 14

Các khái niệm cơ bản
Object Class Cl Attribute Operation Interface (Polymorphism) Component Package Subsystem Relationships (trình bày ở chương sau)
UML/NN 15

Class?
A class is a description of a group of objects with common properties (attributes), ith ti ( tt ib t ) behavior (operations), relationships, and semantics ti
An object is an instance (thể hiện) of a class

A class is an abstraction in that it:
Nhấn mạnh đến những đặc tính chung g g Bỏ qua những đặc tính riêng biệt OO Principle: Abstraction
UML/NN 16

Lớp khóa học
Class Course
Properties Name Location Days offered Credit hours Start time End time Behavior Add a student Delete a student Get course roster Determine if it is full

a + b = 10

UML/NN

17

Biểu diễn lớp

a + b = 10

Professor
Professor Clark

Class Name Attributes (ct) Operations (hv)

Professor name empID create( ) save( ) delete( ) change( )
18

UML/NN

Lớp các đối tượng

UML/NN

19

Class và Object
Class là một định nghĩa cho một đối tượng
Lớp xác định cấu trúc và hành vi của đối tượng thuộc lớp Một mẫu (template)

Objects đuợc hó l i thà h hữ lớp Obj t đ ợ nhóm lại thành những lớ
Objects j
Class

Professor
Professor Smith Professor Mellon

Professor Jones
UML/NN 20

Các khái niệm cơ bản
Object Class Cl Attribute Operation Interface (Polymorphism) Component Package Subsystem Relationships
UML/NN 21

Attribute?
Class Attribute Object Attribute Value

:CourseOffering
number = 101 b startTime = 900 endTime = 1100

CourseOffering
number startTime endTime

:CourseOffering
number = 104 startTime = 1300 endTime = 1500

UML/NN

22

Các khái niệm cơ bản
Object Class Cl Attribute Operation Interface (Polymorphism) Component Package Subsystem Relationships
UML/NN 23

Operation?

CourseOffering
Class
addStudent deleteStudent getStartTime getEndTime

Operation

UML/NN

24

Các khái niệm cơ bản
Object Class Cl Attribute Operation Interface (Polymorphism) Component Package Subsystem Relationships
UML/NN 25

Polymorphism (đa hình)?
The ability to hide many different implementations behind a single interface

Manufacturer A

Manufacturer B

Manufacturer C

OO Principle: Encapsulation
UML/NN 26

Interface?
Interfaces formalize polymorphism Interfaces support “plug and play” architectures plug-and-play
Tube <<interface>>

Shape
Pyramid Draw D Move Scale Rotate

Cube

Realization relationship

(stay tuned for realization relationships)

Interface
Elided/Iconic Representation p (“lollipop”)
Tube

Pyramid

Shape

Cube

Canonical (Class/Stereotype) Representation

Tube <<interface>>

Shape p

Draw Move Scale Rotate
UML/NN

Pyramid

Cube
28

(stay tuned for realization relationships)

Các khái niệm cơ bản
Object Class Cl Attribute Operation Interface (Polymorphism) Component Package Subsystem Relationships
UML/NN 29

Component?
A non-trivial, nearly independent, and replaceable part of a system that fulfills a clear function in the context of a well-defined architecture Một thành phần có thể là
source code Thành phần DLL (run time) Thành phần thực thi
Source File Name <<EXE>> Executable Name

OO Principle: Encapsulation

Component Interface

<<DLL>> Component Name

UML/NN

30

Các khái niệm cơ bản
Object Class Cl Attribute Operation Interface (Polymorphism) Component Package Subsystem Relationships
UML/NN 31

Package?
A package is a general purpose mechanism for organizing elements into groups Một thành phần mô hình có thể chứa những thành phần mô hình khác Dùng
Tổ chức mô hình cho việc phát triển Một đơn vị quản lý cấu hình (configuration management)

OO Principle: Modularity
UML/NN 32

Các khái niệm cơ bản
Object Class Cl Attribute Operation Interface (Polymorphism) Component Package Subsystem Relationships
UML/NN 33

Subsystem (hệ thống con)?
A combination of a package (can contain other model elements) and a class (has behavior) Realizes one or more interfaces which define its behavior
Realization Subsystem

Interface

<<subsystem>> Subsystem Name Interface

OO Principles: Encapsulation and Modularity p p y
(stay tuned for realization relationship)
UML/NN 34

Subsystem và Component
Components are the physical realization of an abstraction in the design g Subsystems can be used to represent the component in the design
Design Model Implementation Model

<<subsystem>> Component Name Component Interface Co po e t Component Interface

Component Name

OO P i i l Encapsulation and Modularity Principles: E l ti d M d l it
UML/NN 35

Các khái niệm cơ bản
Object Class Cl Attribute Operation Interface (Polymorphism) Component Package Subsystem Relationships
UML/NN 36

Thông điệp (message)
Thông điệp là một phép gọi tác vụ của một đối tượng cụ thể. tượ thể Thông điệp bao gồm 3 phần
Đối tượng đích Dấu hiệu nhận dạng của tác vụ muốn gọi ệ ậ ạ g ụ gọ Danh sách thông số gọi

Ví dụ:

aCircle.SetRadius(3); aCircle.Draw(pWnd);

UML/NN

37

Abstract Class và Abstract Method
public abstract class Account { protected int accNo; protected int balance; public Account(int an, int b){ Savings accNo = an; balance = b; } withdraw( ) public int balance(){ return balance; } public abstract void withdraw(int amount); Account accNo balance balance( ) withdraw( )

Cheque ODLimit ODLi it withdraw( )

}

UML/NN

38

Overriding, Inheritance, Reusing
public class Savings extends Account { public Savings(int an, int b) { super (an, b); } Account accNo balance balance( ) withdraw( ) Savings Cheque ODLimit ODLi it withdraw( )

}

public void withdraw(int amount) withdraw( ) { if (balance > amount) balance -= amount; b l t }

UML/NN

39

Overriding, Class Variable
public class Current extends Account { private static int ODlimit=100; p public Current(int an, int b) ( , ) { super (an, b); } public void withdraw(int amount) { if (balance+ODlimit > amount) balance -= amount; = } } Account accNo balance balance( ) withdraw( ) Savings Cheque ODLimit ODLi it withdraw( )

withdraw( )

UML/NN

40

Run-time và inherited polymorphism
import java.io.*; public class withdrawCtrl { public Account getAccount() throws IOException { int d =2; Account A; if (d 1) (d==1) Savings A= new Savings(100, 1000); else A= new Current(120,2000); ( , ); return A; withdraw( ) }

Account accNo balance balance( ) withdraw( )

Cheque ODLimit ODLi it withdraw( )

UML/NN

}

public void withdrawCtr() throws IOException { Account A; A=getAccount(); int amount =100; System.out.println (A.balance()); A.withdraw(amount); }
41

Sign up to vote on this title
UsefulNot useful