Lớp và đối tượngthực thể vật lý khái niệm hay là phần mềm thực thể vật lý, khái niệm hay là phần mềm… một vật mà có ranh giới rõ ràng và có nghĩa rõ rệt một vật mà có ranh giới rõ ràng,
Trang 39 Biểu đồ
1. Biểu đồ Use case (Use Case Diagram)
2. Biểu đồ lớp (Class Diagram)
3. Biểu đồ đối tượng (Object Diagram)
ể
4. Biểu đồ trạng thái (State Diagram)
5. Biểu đồ trình tự (Sequence Diagram) ự ( q g )
6. Biểu đồ cộng tác (Collaboration Diagram)
7. Biểu đồ hoạt động (Activity Diagram)
7. Biểu đồ hoạt động (Activity Diagram)
8. Biểu đồ thành phần (Component Diagram)
9 Biểu đồ triển khai (Deployment Diagram)
9. Biểu đồ triển khai (Deployment Diagram)
Trang 4Biểu đồ lớp và đối tượng
Trang 5Class và Object
Account
aNo
Name of Class
Class
balance dayLimit = 200 soFar
Data Declaration
variable
SamAcc::
balance(?)
balance( ) withdraw( )
-Methods Definition
SamAcc::
aNo=101 balance=500 soFar=100
aNo = 105 balance = 600 soFar=200
Object Data Values soFar 200 Data Values
Trang 6Lớp và đối tượng
thực thể vật lý khái niệm hay là phần mềm
thực thể vật lý, khái niệm hay là phần mềm…
một vật mà có ranh giới rõ ràng và có nghĩa rõ rệt
một vật mà có ranh giới rõ ràng, và có nghĩa rõ rệt cho một ứng dụng
có chung thuộc tính, ứng xử, mối quan hệ và ngữ nghĩa (semantic).g ( )
Mỗi đối tượng trong một hệ thống đều có ba đặc
tính: trạng thái, ứng xử và danh định
Trang 7thường được được gắn với thời điểm
Trạng thái của một đối tượng được xác định ạ g ộ ợ g ợ ị qua một tập các thuộc tính, và mối quan hệ với các đối tượng khác ợ g
Trang 8Hành vi (Behaviour) và Danh định (Identity)
Hành vi xác định một hoạt động của một đối
tượng (thay đổi trạng thái theo thời gian)
nhằm đáp ứng các yêu cầu từ các đối tượng
khác, nó tiêu biểu cho những gì mà đối
tượng này có thể làm
ể
Danh định dùng để phân biệt giữa các đối
tượng ngay cả khi nó có cùng trạng thái và
giá trị các thuộc tính
Trang 9Biểu tượng lớp – đối tượng
hệ thống bằng các khái niệm lớp và mối quan hệ
giữa chúng với nhau
tên gạch dưới
Trang 10Tên lớp và thuộc tính
Tên lớp (class name): Hầu như tên lớp trùng
ới tê đối tượ thế iới thự à ó biể
với tên đối tượng thế giới thực mà nó biểu
diễn
Thuộc tính (attribute):
tượng
liệu đơn giản được đa phần các ngôn ngữ lập trình hỗ trợ như Integer, Boolean, Floats, Char…
Trang 11…Thuộc tính
Nếu thuộc tính có tính khả kiến là công cộng (public +), thì nó có thể được nhìn thấy và sử dụng ngoài lớp đó
Nếu thuộc tính có tính khả kiến là riêng (private -), bạn
sẽ không thể truy cập nó từ bên ngoài lớp đó
Nếu thuộc tính có tính khả kiến là bảo vệ (protected #) thì cũng giống như thuộc tính có tính khả kiến là riêng nhưng là công cộng đối với các lớp con
Trang 12Dấu tương tự như thuộc tính
Dấu tương tự như thuộc tính
Trang 16Những ràng buộc của kết hợp
với đường liên hệ
với đường liên hệ
động từ tên có thể bỏ qua đặc biệt khi tên vai trò
động từ, tên có thể bỏ qua đặc biệt khi tên vai trò của nó được dùng, tránh dùng tên không cộng
thêm thông tin
t ê t ô g t
trò của lớp trong kết hợp, tên vai trò phải là duy p g ợp, p y
nhất ứng với một lớp, tên vai trò phải là một danh
từ đặt cuối đường kết hợp
Trang 17Kết hợp đệ qui
Tên vai trò là bắt buộc
Trang 21Kết tập (aggregation)
Một đối tượ đượ t từ hữ đối tượ khá ó tí h
Một đối tượng được tạo từ những đối tượng khác có tính vật lý
Một đối tượng là tập hợp của những đối tượng khác có Một đối tượng là tập hợp của những đối tượng khác có
Trang 22Composition (kết cấu)
đối tượng bộ phận không vượt quá thời gian sống
đối tượng bộ phận không vượt quá thời gian sống của đối tượng toàn bộ
Trang 23Aggregation và composition
Trang 25 Chuyên biệt hóa(/tổng quát hóa): là quá trình
tinh chế một lớp thành những lớp chuyên biệt hơn
tinh chế một lớp thành những lớp chuyên biệt hơn Chuyên biệt hóa bổ sung thêm chi tiết và đặc tả
cho lớp kết quả Lớp mang tính khái quát được gọi
là lớp cha (superclass), kết quả chuyên biệt hóa
là việc tạo ra các lớp con (Subclass).
Trang 26Thừa kế (Inheritance) và tổng quát hóa
Trang 27Thừa kế đơn
Ancestor
Account balance name number
Superclass number
Withdraw() CreateStatement()
Superclass (parent)
Generalization Generalization Relationship
Checking
Withdraw()
Savings
GetInterest() Withdraw()
Subclasses
Withdraw()
Descendents
Trang 28Đa thừa kế
multiple inheritance
Airplane Helicopter Bird Wolf Horse
Use multiple inheritance only when needed, and
always with caution !
always with caution !
Trang 29Ví dụ
G dV hi l GroundVehicle weight
licenseNumber
owner Person0 * 1
Subclass size
getTax( )
Trang 32Thừa kế và tổng quát hóa
Trang 33Chú thích
Trang 35Biểu đồ lớp (class diagram)
Độc lập với ngôn ngữ
Những ký hiệu cho phép đặc tả lớp, dữ liệu hay thuộc tính của chúng (private) và
phương thức (method), sự thừa kế…
Những sơ đồ đưa ra những hình ảnh về quan g g q
hệ cấu trúc và những ứng xử về chức năng của các lớpp
Trang 36Biểu đồ lớp được dùng khắp nơi trong chu trình phát triển
Biểu đồ lớp được dùng khắp nơi trong chu trình phát triển,
từ bài toán đến mô hình cài đặt
Tư liệu về cách tương tác với các thư viện lớp có sẵn ệ g ệ p
Trang 39Các lớp dự tuyển (*)
Trang 40Phương pháp tiếp cận
Top-down: các lớp cha được xác định bởi các
nhà phân tích rồi xem xét cấu trúc tổng quát
để đưa ra các lớp con, hướng tiếp cận này
dựa chủ yếu vào kinh nghiệm của những nhà phân tích
Bottom-up: tìm kiếm các trách nhiệm được
chia sẻ, phát triển cấu trúc tổng quát từ thao tác và các thuộc tính chung
Trang 41Phát triển phân cấp lớp
Trang 42Phát triển phân cấp lớp
Trang 43Subclasses are fully Consistent with super
monthly
paid
y paid paidy classes and add more
information
Real-world entities on leaves
Trang 45VD
Trang 46Supermarket
Trang 47Company
Trang 48Biểu đồ đối tượng
Trang 49Biểu đồ đối tượng
Captures Instances and Links
Trang 50Bài tập
Books and journals The library contains books
and journals It may have several copies of a given
and journals It may have several copies of a given book
other books may be borrowed by any library
member for three weeks Members of the library
can normally borrow up to six items at a time but
can normally borrow up to six items at a time, but members of staff may borrow up to 12 items at one time Only members of staff may borrow journals
Borrowing The system must keep track of when
books and journals are borrowed and returned,
enforcing the rules described above
enforcing the rules described above
Trang 52UML/NN 52
Trang 53Biểu đồ lớp quản lý thuê xe
Trang 55Lớp tài khoản
Trang 56Phát mã từ 1 class
operation
Trang 57Quan hệ hai chiều 1-1
Trang 58Lớp Passenger
public class Passenger
{
private string FirstName;
private string LastName;
private string Address;
private string City;
private string State;
i t l Zi
private long Zip;
private string Phone;
public FrequentFlyerAccount theFrequentFlyerAccount;
Trang 59Lớp FrequentFlyerAccount
public class FrequentFlyerAccount
{
private int AccountID;
private int NumberOfMiles;
private string DateEstablished;
public Passenger thePassenger;
Nếu muốn dùng tên khác cho thuộc tính này, ta phải đặt tên
public Passenger thePassenger;
Trang 60Quan hệ hai chiều 1-n
Trang 61Lớp Flight
public class Flight
{
private int FlightNumber;
public Ticket theTicket[];
Trang 62Lớp Ticket
public class Ticket
{{
private int SeatNumber;
private long PurchasePrice;
Trang 63Dùng lớp container
public class Flight
{{
private int FlightNumber;
public TicketList theTicket; // lớp container public Flight()
{
}}
…
Trang 64Quan hệ hai chiều m-n
public class Flight
{ private int FlightNumber;
public Passenger thePassenger[];
public Flight()
{ }
public class Passenger
{ private string FirstName;
{ p ate st g st a e;
private string LastName;
private string Address;
private string City;
private string State;
private long Zip;
private string Phone;
bli li h h li h []
public Flight theFlight[];
public Passenger() {} ….
Trang 65ra
Trang 66Lớp Passenger
public class Passenger
{
private string FirstName;
private string LastName;
private string Address;
private string City;
private string State;
i t l Zi
private long Zip;
private string Phone;
public FrequentFlyerAccount theFrequentFlyerAccount;
Trang 67Quan hệ phản thân - Reflexive Association
Trang 68Quan hệ kết hợp - Aggregation
Có 2 loại quan hệ aggregation:
chiếu đến 1 class khác
Mã được phát ra cho 2 loại này là như nhau.
Trang 69Quan hệ kết tập - Aggregation
Ví dụ: quan hệ aggregation giữa lịch bay (flight
schedule) và các chuyến bay (flight) Mỗi lịch
schedule) và các chuyến bay (flight) Mỗi lịch
bay chứa 1 hay nhiều chuyến bay và mỗi chuyến bay có thể thuộc về 1 hay nhiều lịch bay
bay có thể thuộc về 1 hay nhiều lịch bay
Trang 70Quan hệ kết tập
thuộc tính của class kia (flight) Do multiplicity là
thuộc tính của class kia (flight) Do multiplicity là 1:n nên thuộc tính được phát sẽ là 1 mảng
theFlight[]
public class Schedule
{
private date BeginDate;
private date EndDate;
public Flight theFlight[];
public Schedule()
{
}
}
Trang 71Quan hệ phụ thuộc - Dependency Relationship
Không có thuộc tính nào được tạo cho cả 2 lớ
lớp
Trang 72Quan hệ tổng quát hoá
public class Child extends Parent
public class Child extends Parent
{ public Child() {{
} }
Trang 73Giao diện (Interface)
stereotype là Interface Nó chỉ chứa operation
stereotype là Interface Nó chỉ chứa operation
signatures nhưng không chứa phần thực thi
diện đó
Trang 74Ví dụ về Interfaces