khái quát hóa khái quát hóa một vấn đề như thế nào?
Trang 1Bài 4: Quan hệ khái quát - cụ thể hóa
4.1 Mở đầu
Bài giảng giới thiệu một trong các quan hệ cơ bản giữa các lớp - Quan hệ khái quát hóa - cụ thể hóa Khái quát hóa -
cụ thể hóa là công cụ rất mạnh trong phương pháp hướng đối tượng, nhờ nó mà các nhà nghiên cứu có thể tạo nên mô hình khái niệm, qua đó miền vấn đề được mô tả một cách rõ ràng, một ưu điểm cơ bản nữa đó là có thể sửa đổi nó một cách dễ dàng, không như trong trường hợp hướng quan hệ (relation approach) Bài giảng sẽ đề cập đến các vấn đề quan trọng nhất liên quan đến mối quan hệ này
4.2 Khái quát - cụ thể hóa
Từ viễn cảnh khái niệm, khái quát - cụ thể hóa (gọi tắt khái quát hoặc cụ thể ) là mối quan hệ giữa một lớp, gọi là lớp
trên và một số lớp khác, gọi là lớp dưới, lớp trên dùng để mô hình các thực thể khái quát hơn là các thực thể được mô hình hóa ở lớp dưới Từ viễn cảnh thiết kế, gắn liền với mối quan hệ khái quát – chi tiết hóa là cơ chế thừa kế
(heritability), nhờ đó mà các thành phần cố định được chuyển từ lớp trên xuống lớp dưới Điều đó có nghĩa là lớp dưới
sở hữu mọi tính chất của lớp trên, ngoài ra nó còn có các tính chất riêng Thừa kếlà mối quan hệ bắc cầu
Mối quan hệ khái quát hóa tạo nên cấu trúc hình cây gữa các lớp (hoặc cấu trúc khác không chứa đường vòng) được
gọi là cấp bậc khái quát (cụ thể, thừa kế) Hình 1 cho thấy hai cách biểu diễn cấp bậc tương đương, ở đây lớp Thú vật
là lớp trên của lớp Thú vật nuôi trong nhà, lớp này lại là lớp trên của lớp Bò, Lợn, Đà điểu, Gà
Breed animal Animal
Animal
Breed animal
Breed animal Animal
Breed animal Animal
Animal
Breed animal
Animal
Breed animal
Hình 1 Hai cách biểu diễn tương đương cấp bậc của các lớp
Trang 2Như chúng ta đã nói ở trên, cấp bậc khái quát không thể chứa đường vòng (Hình 2) Nhưng nó có thể là (krata ), nó mô hình sự thừa kếnhiều lần (sẽ đề cập đến ở chương 4.2.6)
K3
K3
Hình 2 Cấp bậc không đúng vì nó chứa đường vòng
K3 K2
K1
K4
Hình 3 Cấp bậc dạng lưới
Một trong các lỗi hay gặp đó là thiết kế cấp bậc cho lớp duy nhất dựa vào sự giống nhau giữa các thuộc tính Khi thiết
kế cấp bậc cần phải chú ý rằng các lớp trong cấp bậc phải có nghĩa gần giống nhau và chúng phải có chung tính chất: đối tượng ở lớp dưới phải là trường hợp cụ thể của lớp trên (một loại), nhưng mối quan hệ ngược lại không đúng Ví dụ
trong hình 4, lớp Index không được sử dụng đúng khi cho nó là lớp con của lớp Người Đành rằng lớp Index có chứa các thuộc tính tên, họ và năm sinh, tuy vậy nó không phải là trường hợp cụ thể của lớp Người
index No.
semester
name surname birth date
Person
index No.
semester
name surname birth date
Person
Hình 4 Ví dụ định nghĩa không đúng lớp dưới
Sự xuất hiện lớp và mối quan hệ khái quát – cụ thể hóa
Trong các tài liệu nghiên cứu, chúng ta phân biệt hai loại xuất hiện lớp:
• Xuất hiện trực tiếp
• Xuất hiện gián tiếp
Trang 3Một đối tượng là xuất hiện trực tiếp của lớp, mà nó là thành hien, và là xuất hiên gián tiếp của tất cả các lớp trên nó Ví
dụ, lớp Sinh viên và lớp trên của nó Người:
• Đối tượng của lớp Người là xuất hiện trực tiếp của lớp này và nó không phải là xuất hiện gián tiếp của bất cứ
lớp nào vì trên lớp Người không có lớp nào khác
• Đối tượng của lớp Sinh viên là xuất hiện trực tiếp của lớp Sinh viên và là xuất hiện gián tiếp của lớp Người
Sự tồn tại lớp và mối quan hệ khái quát – cụ thể hóa
Trong các tư liệu nghiên cứu, chúng ta có thể gặp 3 loại định nghĩa sụ tồn tại:
• Sự tồn tại lớp K đó là tập tất cả các xuất hiện của K (trực tiếp hoặc gián tiếp) và các lớp con của nó, mà các xuất hiên chỉ chứa các thuộc tính của K
• Cũng như phần trên, sự tồn tại lớp K đó là tập tất cả các xuất hiện của K và lớp con của nó, nhưng ở đây chúng
ta cho phép tất cả các thuộc tính
• Sự tồn tại lớp K đó là tập tất cả các xuất hiện trực tiếp của K
Trong bài giảng này chúng ta sẽ sử dụng định nghĩa đầu tiên Theo định nghĩa này sự tồn tại của lớp Người và các lớp con Nhân viên được biểu diễn trong Hình 5
name = ”Barbara”
surname = ”Wyka”
name = ”Zenon”
surname = ”Nowak”
name surname age ()
Student
index No.
grades grades avg ()
name = ”Wanda”
surname = ”Niemiec”
index No = 43789 grades = ”4, 5, 5, 3”
name = ”Zenon”
surname = ”Nowak”
index No = 44564 grades = ”3.5, 4, 4”
name = ”Barbara”
surname = ”Wyka”
index No = 44333 grades = ”5, 4.5, 5, 3.5”
extent of the Person class
extent of the Student class Person
name = ”Wanda”
surname = ”Niemiec”
: Osoba :Person
name = ”Teofil”
surname = ”Jeleń”
name = ”Barbara”
surname = ”Wyka”
name = ”Zenon”
surname = ”Nowak”
name surname age ()
Student
index No.
grades grades avg ()
name = ”Wanda”
surname = ”Niemiec”
index No = 43789 grades = ”4, 5, 5, 3”
name = ”Zenon”
surname = ”Nowak”
index No = 44564 grades = ”3.5, 4, 4”
name = ”Barbara”
surname = ”Wyka”
index No = 44333 grades = ”5, 4.5, 5, 3.5”
extent of the Person class
extent of the Student class Person
name = ”Wanda”
surname = ”Niemiec”
: Osoba :Person
name = ”Teofil”
surname = ”Jeleń”
Hình 5 Ví dụ sự tồn tại lớp Người và các lớp con Sinh viên
Lớp trừu tượng và lớp cụ thể
Lớp trừu tượng đó là lớp không có xuất hiện trực tiếp Lớp trừu tượng có tác dụng duy nhất để làm lớp trên của các lớp khác, nó tạo nên phần định nghĩa chung của nhóm các lớp có tính chất gần giống nhau UML cho phép định nghĩa các thực thể trừu tượng (lớp hoặc phương pháp trừu tượng) nhờ giá trị của nhãn hiệu (label) {abstract = TRUE} (hoặc rút gọn {abstract}); hãy xem bài giảng nói về cơ chế mở rộng) hoặc bằng cách viết tên của thực thể bằng chữ in nghiêng (cách này không hữu hiệu trong trường hợp sơ đồ được vẽ bằng tay)
Trang 4Khác với lớp trừu tượng, lớp cụ thể có thể có xuất hiện trực tiếp Tuy vậy có thể tồn các thời điểm mà lớp cụ thể có thể
không có xuất hiện nào cả Ví dụ lớp trừu tượng và lớp cụ thể được biểu diễn trong trong Hình 6 Chúng ta hãy để ý bản in mẫu (stereotype) <<intanceOf>> ký hiệu mối quan hệ giữa lớp và sự xuất hiện của nó
Int sequence
implementations
Char sequence
Sequence
first next
Legal person
{abstract}
Natural person Firm
:Natural person :Firm :Firm
«instanceOf» «instanceOf» «instanceOf»
Int sequence
implementations
Char sequence
Sequence
first next
Int sequence
implementations
Char sequence
Sequence
first next
Legal person
{abstract}
Natural person Firm
:Natural person :Firm :Firm
«instanceOf» «instanceOf» «instanceOf»
Legal person
{abstract}
Natural person Firm
:Natural person :Firm :Firm
«instanceOf» «instanceOf» «instanceOf»
Hình 6 Lớp trừu tượng và lớp cụ thể
Lớp trừu tượng phải là lớp trên của các lớp khác, nên nó không thể là lá (mắt cuối cùng) trong bậc thang (hiearchy) thừa kế Yêu cầu đó tất nhiên không liên quan đến lớp cụ thể, nó có thể nằm ở bất cứ chỗ nào trong bậc thang đó Chúng ta hãy nghiên cứu sơ đồ trong hình vẽ 3:
• Chỉ có lớp K1 i K3 có thể là lớp trừu tượng;
• Tất cả các lớp đều có thể là lớp cụ thể
K1
Hình 7 Sơ đồ diễn giải vấn đề lớp trừu tượng và lớp cụ thể
Trang 5Phương pháp trừu tượng
Chúng ta đã nói ở phần bài giảng liên quan đến đối tượng và lớp, phương pháp trừu tượng có phần định nghĩa
(signature) nhưng không có phần thi hành Lớp chứa ít nhất một phương pháp trừu tượng gọi là lớp trừu tượng, bởi vì không thể tạo ra được đối tượng mà không có phần thực hiện một thao tác nào đó Phần thực hiện phương pháp trừu
tượng nằm ở một nhóm dưới nào đó của lớp trừu tượng Ví dụ chúng ta hãy xem Hình 8: phần định nghĩa thao tác hãy
tính lương nằm trong lớp trừu tượng Pracownik, mỗi một lớp con của lớp này có phần thi hành riêng phù hợp với
yêu cầu của từng lớp
Employee{abstract}
earned in current year birth date
calculate salary (){abstract}
calculate age ()
Wage employee
regular wage holiday wage calculate salary ()
Full-time employee
week’s wage calculate salary ()
Contractor
month’s wage calculate salary ()
Employee{abstract}
earned in current year birth date
calculate salary (){abstract}
calculate age ()
Employee{abstract}
earned in current year birth date
calculate salary (){abstract}
calculate age ()
Wage employee
regular wage holiday wage calculate salary ()
Wage employee
regular wage holiday wage calculate salary ()
Full-time employee
week’s wage calculate salary ()
Full-time employee
week’s wage calculate salary ()
Contractor
month’s wage calculate salary ()
Contractor
month’s wage calculate salary ()
Hình 8 Ví dụ phương pháp trừu tượng
Lớp trừu tượng có thể chứa phương pháp trừu, nhưng không bắt buộc Nhưng lớp cụ thể phải chứa đầy đủ phần thực hiện các thao tác, mà chưa được thực hiện ở các lớp trên nó
Cụ thể hóa trên một phương diện và đa phương diện
Các nhóm dưới của một nhóm đã cho được phân biệt nhờ một tiêu chuẩn (một tính chất) gọi là phượng diện cụ thể hóa (hoặc yếu tố phân biệt); thường thì tiêu chuẩn đó là loại Yếu tố phân biệt là phần tử không bắt buộc, có nghĩa là nó có
thể nhưng không bắt buộc phải được chỉ rõ trên sơ đồ; nếu nó xuất hiện, thì nó sẽ được đặt ở cạnh dấu cụ thể hóa Ví dụ
trong Hình 9 biểu diễn sơ đồ, nhận dạng các loại vật dụng: các loại máy bơm khác nhau và các loại thùng chứa khác nhau (để đơn giản hóa sơ đồ, các lớp con Bơm và Thùng chứa không ghi trong sơ đồ)
Tank
volume pressure equipment type
pump type
typ zbiornika
Equipment
name manufacturer price
suction pressure expression pressure flow
Pump
surface pipe diameter
Radiator
specjalization aspect (discriminator)
Tank
volume pressure equipment type
pump type
typ zbiornika
Equipment
name manufacturer price
suction pressure expression pressure flow
Pump
suction pressure expression pressure flow
Pump
surface pipe diameter
Radiator
surface pipe diameter
Radiator
specjalization aspect (discriminator)
specjalization aspect (discriminator)
Hình 9 Ví dụ cụ thể hóa một phương diện
Phương pháp khác để mô hình mối quan hệ cụ thể hóa (nêu trong Hình 9) được trình bày trên Hình 10 Chúng ta để ý đến giới hạn và các thuộc tính đặc biệt của mỗi loại vật dụng ở dây là các thuộc tính không bắt buộc Ngoài ra, để có
Trang 6thể xác định loại vật dụng một cách dễ dàng chúng ta đưa thêm thuộc tính loại vật dụng Đối với sơ đồ ở hình 9 thuộc
tính này không quan trọng, bởi vì loại vật dụng được xác định bởi sự có mặt của đối tượng ở trong lớp tượng ứng
name manufacturer price suction pressure expression pressure flow
surface pipe diameter volume pressure equipment type
Equipment
attributes specific for particular type of equipment:
• pump: suction pressure, expression presure, flow
• radiator: surface, pipe diameter
• tank: volume, pressure
name manufacturer price suction pressure expression pressure flow
surface pipe diameter volume pressure equipment type
Equipment
name manufacturer price suction pressure expression pressure flow
surface pipe diameter volume pressure equipment type
Equipment
attributes specific for particular type of equipment:
• pump: suction pressure, expression presure, flow
• radiator: surface, pipe diameter
• tank: volume, pressure
attributes specific for particular type of equipment:
• pump: suction pressure, expression presure, flow
• radiator: surface, pipe diameter
• tank: volume, pressure
Hình 10 Mô hình mối quan hệ cụ thể hóa bởi lớp với các thuộc tính không bắt buộc và các thuộc tính phụ
Mỗi một phương diện cụ thể hóa đó là một cách phân chia các lớp con, số cách phân chia các lớp con là không giới hạn; nói cách không có sự giới hạn đối với số phương diện, mà trên cơ sở đó chúng ta có thể định nghĩa các lớp con
Trong ví dụ biểu diễn trên Hình 9 đối với các lớp Vật dụng, Bơm, Thùng chứa các lớp con được định nghĩa dựa trên cơ
sở của một phương diện duy nhất (đó là loại vật dụng, loại bơm và loại thùng chứa), có nghĩa là đối với các lớp này chỉ
có một cách phân chia thành các lớp con Trường hợp này được gọi là cụ thể hóa trên một phương diện để phân biệt với cụ thể hóa đa phương diện, có nghĩa là tồn tại ít nhất 2 cách chia lớp con Ví dụ cụ thể hóa đa phương diện được biểu diễn trên Hình 11, chúng ta có thể nhìn lớp Các loại xe được phân loại theo hai phương diện sau đây:
• động cơ dùng để khởi động chúng – động cơ chạy bằng sức gió hay động cơ xăng;
• địa hình, mà xe đó có thể đi được - trên đất liền hay trên biển;
Vehicle
{overlapping}
Wind vehicle
Engine vehicle
Land vehicle
Sea vehicle
propulsion
terrain terrain
{overlapping}
Vehicle
{overlapping}
Wind vehicle
Engine vehicle
Land vehicle
Sea vehicle
propulsion
terrain terrain
{overlapping}
Hình 11 Ví dụ của mối quan hệ cụ thể đa phương diện
Không phụ thuộc cụ phép thể hóa là một phương diện hay đa phương diện, UML phân biệt các cách chia lớp sau đây (trong ngoặc là ký hiệu bằng tiếng anh, sử dụng ở trong bài giảng này):
• Phân chia không có phần giao (disjoint), khi mà các lớp con không có phần chung; ngược lại với phân chia không giao là phân chia có chứa phần chung (overlapping); cách chia thứ nhất giả định là được sử dụng, vì
vậy nó không được đánh dấu trên sơ đồ;
• Phân chia đầy đủ (complete), khi mà tất cả các lớp con được phân loại; ngược lại với phân chia đầy đủ là phân chia không đầy đủ (incomplete); cách phân chia đầy đủ được giả sử là đuợc sử dụng
Mỗi cách phân chia đều được đánh dấu trên sơ đồ bằng các ký hiệu riêng
Chúng ta để ý rằng trêb Hình 11, không cách phân chia nào thuộc loại không có phần giao, có nghĩa là tồn tại các loại xe, vừa có động cơ xăng vừa có thể chạy bằng sức gió, cũng tồn tại các loại xe, mà có thể chạy đồng thời trên mặt đất cũng như trên biển
Thường đối với mối quan hệ cụ thể đơn phương diện, yếu tố phân biệt được bỏ qua, bởi vì chúng ta giả sử, rằng tên của lớp con cung cấp đầy đủ thông tin, sự phân chia được thực theo tiêu chuẩn nào Trong trường hợp cụ thể hóa đa phương diện, yếu tố phân biệt bắt buộc phải trình bày
Hình elíp
Không nên nhầm lẫn từ khóa incomplete, dùng để chỉ sự phân chia không đầy đủ với các thành phần khác có tên là
elíp (hay là: bỏ qua), biểu diễn ở dạng („ ”) Sự khác nhau căn bản giữa hai khái niệm này là incomplete chỉ sự phân
Trang 7chia không đầy đủ, tức là trong miền vấn đề đang xét, một tồn tại một số lớp mà định nghĩa của nó chưa xác định được
Còn elíp có nghĩa rằng một số lớp mặc dù có định nghĩa đầy đủ, nhưng nó không quan trọng tại thời điểm đang xét, vì
vậy nó bị bỏ qua, hay là nó không được biểu diễn trên sơ đồ Ví dụ sử dụng elíp được cho thấy trên Hình 15
Cụ thể hóa nhiều lần
Cụ thể hóa nhiều lần dùng trong tình huống, khi mà một lớp là kết quả cụ thể hóa của vài lớp khác nhau, có nghĩa là nó được thừa kếtrực tiếp của nhiều hơn một lớp trên nó Hãy nghiên cứu Hình 12:
• Lớp con của lớp Người là các lớp Nhân viên và Sinh viên;
• Để mô hình tập những người vừa đi học vừa đi làm, chúng ta phải tạo ra một lớp mới với tên gọi Sinh viên đi
làm Lớp này đồng thời là lớp con của lớp Nhân viên vừa là lớp con của lớp Sinh viên
Working student
surname
Person
Employee
salary
Student
index No.
Working student
surname
Person
Employee
salary
Student
index No.
Hình 12 Ví dụ cụ thể hóa nhiều lần
Mặc dù là cụ thể hóa nhiều lần trong một số trường hợp rất cần thiết, ý tưởng này bị nhiều chuyên gia chỉ trích Nhược điểm lớn nhất được họ chỉ ra đó là lớp con – kết quả cụ thể hóa nhiều lần ở một nơi nối nhiều các thực thể không liên quan đến nhau Một trong các hậu quả là nó gây nên mâu thuẫn tên gọi, ví dụ trong trường hợp, khi mà các lớp trên có các thành phần cố định giống hệt tên gọi Sau khi thừa hường các thành phần đó trở thành thành phần của một lớp, trong khi một lớp không thể chứa vài thành phần có cùng tên gọi Mâu thuẫn tên gọi cổ điển được trình bày trên Hình
13: Lớp Amfibia thừa kếcủa các lớp trên hai thuộc tính và hai phương pháp cótên giống hệt nhau Từ đó xuất hiện sự
mâu thuẫn về tên gọi, đưa đên các câu hỏi sau đây:
• Lớp Amfibia phải thừa kếthuộc tính vận tốc lớn nhất nào?
• Ý nghĩa của phương pháp vận tốc sử dụng() có phụ thuộc vào mạch thừa kếkhông?
Vehicle
max speed recomended speed ()
max speed recomended speed()
Amphibia
Sea vehicle Land vehicle
{ recomended speed equals 50% of max speed }
Vehicle
max speed recomended speed ()
max speed recomended speed()
Amphibia
Sea vehicle Land vehicle
{ recomended speed equals 50% of max speed }
{ recomended speed equals 50% of max speed }
Hình 13 Ví dụ mâu thuẫn tên gọi
Vấn đề này dựoc giải quyết bằng nhiều cách khác nhau tùy thuộc vào môi trường thực hiện Ví dụ trong ngôn ngữ Eiffel mâu thuẫn tên được coi là lỗi, có nghĩa là ngừoi lập sơ đồ phải chú ý để tránh mâu thuẫn
Thừa kế động
Từ trước đến nay chúng ta giả sử rằng đối tượng là sự xuất hiện của một lớp trong suốt quá trình tồn tại của nó Chúng
ta có thể dễ dàng nhận thấy, là điều giả sử có nhược điểm rất quan trọng, bởi vì điều đó không cho phép mô hình hóa tiình huống khi mà thực thể thay đổi thể loại của mình trong quá trình sống của nó Ví dụ: một người có thể làm việc
Trang 8như một nhà điều hành, một kỹ sư, nhân viên bán hàng hoặc nếu cần thiết họ có thể đổi nghề nghiệp Dạng thông tin
kiểu này có thể biểu diễn dễ dàng nhờ cơ chế thừa kếđộng, cho phép đối tượng trong quá trình sống có thể thay đổi lớp,
mà nó làm thành viên, không cần thay đổi tên nhận dạng Cơ chế thừa kếđộng đòi hỏi, lớp dưới tiếp nhận các thành phần cố định của lớp trên trong quá trình chương trình hoạt động
Bậc thang thừa kếđộng cho ví dụ đang xét được biểu diễn trên Hình 14 Chúng ta để ý rằng yếu tố phân loại Nghề
nghiệp được gắn thêm stereotype „dynamic” với ý nghĩa là ở đó sẽ dùng quyền thừa kế động Stereotype này được đưa vào bởi nhà phương pháp học nổi tiếng M Fowler, tuy vậy stereotype này không được định nghĩa sẵn trong ngôn ngữ UML Muốn sử dụng nó trong sơ đồ cần phải đưa định nghĩa của nó ở trong văn bản thiết kế
Person
Manager
Engineer
Shop assistant
Woman
«dynamic»
occupation
Person
Manager
Engineer
Shop assistant
Woman
«dynamic»
occupation
Hình 14 Ví dụ thừa kế động
Khái niệm thừa kếđộng, mặc dù đó là một phương tiện hữu ích trong mô hình khái niêm, đến nay nó vần chưa được thực hiện một cách đầy đủ trong bất cứ ngôn ngữ lập trình nào
Mở rộng và giới hạn trong lớp con
Như chúng ta đã biết, lớp con ngoài những tính chất của riêng mình nó còn có tính chất của tất cả các lớp trên nó Lớp con mặc dù không thể bỏ qua hoặc thay đổi thuộc tính của lớp trên, tuy vậy nó có thể thay đổi một số tính chất, ví dụ:
• Lớp con có thể thay đổi nội dung phương pháp nhân được từ lớp trên, nhưng không được thay đổi tên và các
argumen của phương pháp (method specification) – cơ chế này gọi là che giấu phương pháp (hãy xem
chương 4.2.9) cơ chế này cho phép thay đổi hẳn nội dung của phương pháp hoặc có thể chỉ mở rộng nội dung Trong trường hợp „mở rộng” một số môi trường thực hiện cung cấp phương tiện để cho phép giấu nội dung phương pháp ở lớp trên trong ruột của lớp dưới
• Lớp dưới có thể thêm tùy ý các thuộc tính và phương pháp mới, có nghĩa là mở rộng tập tính chất của nó
• Lớp dưới có thể giới hạn giá trị của thuộc tính, ví dụ Hình tròn là lớp con của Hình Elíp, trong trường hợp hai
đường kính của nó bằng nhau Cần phải nhớ rằng, giới hạn có thể dẫn đến một số phương pháp không còn hoạt động đúng; ví dụ, trong phương pháp Elíp cho phép thay đổi giá trị một đường kính, nhưng phương pháp này
không còn đúng trong lớp Đường tròn, bởi vì trong trường hợp này hai đường kính phải thay đổi đồng thời
Che giấu phương pháp
Che giấu phương pháp là cơ chế, cho phép phương pháp ở lớp cụ thể hơn che phương pháp ở lớp khái quát hơn Cơ chế này được sử dụng trong tình huống, khi phương pháp thực hiện thao tác ở lớp dưới đòi hỏi phải sử dụng thuật toán khác với thuật toán dùng cho lớp trên Cơ chế này cho phép mở rộng bậc thang thừa kế mà không cần phải thay đổi cấu
trúc của các lớp đã tồn tại, vì vậy đó là cơ chế rất quan trọng phụ giúp cơ chế sử dụng lại Cơ chế che giấu liên quan mật thiết với cơ chế đa dạng (polymorphism) của phương pháp và nó yêu cầu phải có mối liên kết động
Vấn đề che giấu phương pháp được biểu diễn trên Hình 15, ở đây có hai phương pháp thực hiện thao tác tính thể tích của hình khối:
• Phương pháp Hãy tính thể tích() trong lớp trừu tượng Hình khối tính thể tích các hình theo công thức (1) Phương pháp này không phải là phương pháp trừu tượng, nó được các lớp con Khối chữ nhật và Hình trụ thừa
kế, các lớp này không phương pháp tính thể tích riêng
• Thể tích hình nón tính cách khác so với thể tích các hình trên (theo công thức (2)), phương pháp Hãy tính thể
tích () của lớp Hình nón che phương pháp tính thể tích của lớp trên Hình khối
Trang 9Cuboid Cylinder
Solid figure
{abstract}
base’s area hight calculate volume ()
Cone
calculate volume ()
.
equation (1) volume = bases’s area * hight }
equation (2) volume = 1/3 of base’s area * hight
Solid figure
{abstract}
base’s area hight calculate volume ()
Cone
calculate volume ()
Cone
calculate volume ()
.
equation (1) volume = bases’s area * hight }
equation (1) volume = bases’s area * hight }
equation (2) volume = 1/3 of base’s area * hight
equation (2) volume = 1/3 of base’s area * hight
Hình 15 Ví dụ cơ chế che phương pháp
Sơ đồ lớp ở trên có thể xây dựng bằng cách khác: phương pháp trừu tượng ở lớp Hình khối và hai phương pháp tính thể tích ở các lớp con Khối hộp và Hình trụ; phương pháp tính thể tích hình trụ ở lớp Hình trụ không thay đổi Tuy vậy
nhìn từ khía cạnh khả năng sử dụng lại, thì rõ ràng lời giải thứ hai kém hơn lời giải thứ nhất
Định nghĩa đúp phương pháp
Định nghĩa đúp là cơ chế, mà trong đó ý nghĩa của các ký hiệu (ví dụ phép toán hay hàm) phụ thuộc vào tình huống
sử dụng, ví dụ phụ thuộc vào số lượng hoặc loại agumen :
• Phương pháp hãy dịch chuyển (x,y) và hãy dịch chuyển (x,y,z) khác nhau số lượng igumen;
• Phương pháp hãy dịch chuyển (int, int) và hãy dịch chuyển (float, float) khác nhau về loại igumen;
• Phương pháp hãy dịch chuyển (int, float, int) và hãy dịch chuyển (float, int) khác nhau cả về số lượng và loại
igumen
Trong thực tế phép tính hay dùng định nghĩa đúp nhất đó là phép so sánh „=” (tất nhiên nếu môi trường thực hiện cho phép), dùng để so sánh các số nguyên, số thực, dãy ký tự, tên gọi, cấu trúc,…Tương tự phép tính „+”
có thể dùng để cộng các số hoặc có thể dùng để nối các dãy ký tự
Định nghĩa đúp khác với phương pháp che ở chỗ là nó không yêu cầu mối liên kết động, bởi vì ý nghĩa của phép toán có thể rút ra trong lúc phân tích chương trình
4.3 Tóm lại
Bên cạnh khái niệm đối tượng và lớp, khái quát – cụ thể hóa đó là khái niệm không thể thiếu trong phương pháp hướng đối tượng Mối quan hệ này cho phép định nghĩa các thực thể trong miền vấn đề ở các mức độ khái quát khác
nhau Vấn đề này rất phức tạp Thuật ngữ khái quát – cụ thể hóa còn chứa đựng bên trong nhiều khái niêm liên quan,
ví dụ phương pháp trừu tượng, cụ thể hóa trên một phương diện hay đa phương diện hoặc cơ chế che phương pháp Hơn nữa, đến nay các chuyên gia trong lĩnh vực này vẫn tiếp tục nghiên cứu để tìm ra những ý tưởng mới liên quan đến
cơ chế khái quát – cụ thể hóa, để có thể sử dụng cơ chế này một cách đơn giản hơn; ví dụ cơ chế thừa kếđộng
4.4 Câu hỏi và các vấn đề tập giải quyết
1 Hãy mô tả ngắn gọn mối quan hệ khái quát – cụ thể hóa
Trang 102 Phương pháp trừu tượng là gì, nó dùng để làm gì?
3 Phương pháp trừu tượng có thể là „lá” (đứng ở vị trí cuối cùng) trong bậc thang thừa kếkhông?
4 Cụ thể hóa trên một phương diện khác trên đa phương diện như thế nào? Câu trả lời hay đưa kèm ví dụ
5 Trong sơ đồ lớp cho cửa hàng mượn đĩa DVD (Bài giảng 2, chương 2.12) hãy cho thêm mối quan hệ khái quát -
cụ thể hóa và các phương pháp trừu tượng