Tổng hợp bài giảng môn Lập trình Hướng đối tượng_Nguyễn Thị Thu Trang | Trường Đại học Bách Khoa Hà Nội

Tổng hợp bài giảng môn Lập trình Hướng đối tượng_Nguyễn Thị Thu Trang| Bài giảng môn Lập trình Hướng đối tượng| Trường Đại học Bách Khoa Hà Nội.Tài liệu gồm 401 trang giúp bạn tham khảo, ôn tập và đạt kết quả cao trong kỳ thi sắp tới. Mời bạn đọc đón xem.

Nguy n Th Thu Trang
trangntt-fit@mail.hut.edu.vn
BỘ MÔN CÔNG NGHỆ PHẦN MỀM
ViỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
Bài 03. Đóng gói và xây dựng lớp,
tạo và sử dụng đối tượng.
LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
M c tiêu bài h c
Nêu được bản chất, vai trò của trừu tượng hóa
Giải thích về đóng gói và che giấu thông tin
Xây dựng lớp
Định nghĩa lớp, thực hiện ẩn
Tạo các phương thức, các trường/thuộc tính
Tạo và sử dụng đối tượng
Phương thức khởi tạo
Khai báo và khởi tạo đối tượng
Sử dụng đối tượng
2
N i dung
1. Tr u tr ng a d li u ư
2. Đóng gói và xây d ng l p
3. T o và s d ng đ i t ng ư
3
1.1. Tr u t ng hóa ư
Gi m thi u và tinh l c các chi ti t nh m t p trung ế
vào m t s khái ni m/v n đ quan tâm t i m t
th i đi m.
“abstraction – a concept or idea not associated
with any specific instance”.
Ví d : Các đ nh nghĩa toán h c
2 lo i tr u t ng hóa ư
Tr u t ng hóa đi u khi n (control abstraction) ư
Tr u t ng hóa d li u (data abstraction) ư
1.1. Tr u t ng hóa (2) ư
Tr u t ng hóa đi u khi n: ư S d ng các ch ng trình ươ
con (subprogram) và các lu ng đi u khi n (control
flow)
Ví d : a8:= (1 + 2) * 5
N u không có tr u t ng hóa đi u khi n, LTV ph i ch ra ế ư
t t c các thanh ghi, các b c tính toán m c nh phân… ư
Tr u t ng hóa d li u: X lý d li u theo các cách ư
khác nhau
Ví d : Ki u d li u
S tách bi t rõ ràng gi a các thu c tính tr u t ng c a ki u ư
d li u và các chi ti t th c thi c th c a ki u d li u đó. ế
1.2. Tr u t ng hóa d li u trong OOP ư
Đ i t ng trong th c t ph c t p ư ế
C n đ n gi n hóa, b qua nh ng chi ti t không ơ ế
c n thi t ế
Ch “trích rút” l y nh ng thông tin liên quan,
thông tin quan tâm, quan tr ng v i bài toán
6
7
1.2. Tr u t ng hóa d li u (3) ư
Any model that includes the most important,
essential, or distinguishing aspects of something
while suppressing or ignoring less important,
immaterial, or diversionary details. The result of
removing distinctions so as to emphasize
commonalties (Dictionary of Object Technology,
Firesmith, Eykholt, 1995).
Cho phép qu n lý các bài toán ph c t p b ng cách t p
trung vào các đ c tr ng quan tr ng c a m t th c th ư
nh m phân bi t nó v i các lo i th c th khác.
8
1.2. Tr u t ng hóa d li u (2) ư
Tr u t ng hóa là m t cách ư
nhìn ho c cách bi u di n
m t th c th ch bao g m
các thu c tính liên quan
trong m t ng c nh nào
đó.
T p h p các th hi n c a
các th c th thành các
nhóm có chung các thu c
tính g i là L p (class).
9
unclassified
"things"
10
organisms,
mammals,
humans
11
organisms,
mammals,
dangerous
mammals
12
1.3. L p vs. Đ i t ng ư
Lớp là mô hình khái niệm,
mô tả các thực thể
Lớp như một bản mẫu,
định nghĩa các thuộc tính
và phương thức chung của
các đối tượng
Một lớp là sự trừu tượng
hóa của một tập các đối
tượng
13
Đối tượng là sự vật thật, là
thực thể thực sự
Đối tượng là một thể hiện
(instance) của một lớp, dữ
liệu của các đối tượng
khác nhau là khác nhau
Mỗi đối tượng có một lớp
xác định dữ liệu và hành vi
của nó.
Bi u di n l p trong UML
L p (class) đ c bi u di n ư
b ng 1 hình ch nh t v i 3
thành ph n:
Tên l p
C u trúc (thu c tính)
Hành vi (thao tác)
Professor
- name
- employeeID : UniqueId
- hireDate
- status
- discipline
- maxLoad
+ submitFinalGrade()
+ acceptCourseOffering()
+ setMaxLoad()
+ takeSabbatical()
+ teachClass()
Thu c tính (attribute) là gì?
Một thuộc tính là một đặc tính được đặt tên của một
lớp mô tả khoảng giá trị mà các thể hiện của đặc tính
đó có thể chứa.
Một lớp có thể không có thuộc tính nào hoặc có số lượng
thuộc tính bất kỳ.
Attributes
Student
- name
- address
- studentID
- dateOfBirth
L p và đ i t ng trong UML ư
Class
Objects
Student
- name
- address
- studentID
- dateOfBirth
sv1:Student
- name = “M. Modano”
- address = “123 Main St.”
- studentID = 9
- dateOfBirth = “03/10/1967”
sv2:Student
- name = “D. Hatcher”
- address = “456 Oak Ln.
- studentID = 2
- dateOfBirth = “12/11/1969”
N i dung
1. Tr u tr ng hóa d li u ư
2. Đóng gói xây d ng l p
3. T o và s d ng đ i t ng ư
17
2.1. Đóng gói (Encapsulation)
Một đối tượng có hai khung nhìn:
Bên trong: Chi tiết về các thuộc tính
và các phương thức của lớp tương
ứng với đối tượng
Bên ngoài: Các dịch vụ mà một đối
tượng có thể cung cấp và cách đối
tượng đó tương tác với phần còn lại
của hệ thống
18
Methods
Data
Client
2.1. Đóng gói (2)
D li u/thu c tính và hành vi/ph ng th c đ c ươ ư
đóng gói trong m t l p Encapsulation
19
BankAccount
- owner: String
- balance: double
+ debit(double): boolean
+credit(double)
2.1. Đóng gói (3)
M t đ i t ng là m t th c th đ c đóng gói, cung c p t p ư ư
các d ch v nh t đ nh
M t đ i t ng đ c đóng gói có th đ c xem nh m t ư ư ư ư
h p đen – các công vi c bên trong là n so v i client
20
Don’t know how
it works, but it
works!
Input Output
Dù thay đổi thiết kế/mã nguồn
bên trong nhưng giao diện bên
ngoài không bị thay đổi theo
| 1/401

Preview text:

BỘ MÔN CÔNG NGHỆ PHẦN MỀM
ViỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Bài 03. Đóng gói và xây dựng lớp,
tạo và sử dụng đối tượng. Nguy n ễ Th ịThu Trang trangntt-fit@mail.hut.edu.vn 2 M c ụ tiêu bài h c ọ
• Nêu được bản chất, vai trò của trừu tượng hóa
• Giải thích về đóng gói và che giấu thông tin • Xây dựng lớp
▫ Định nghĩa lớp, thực hiện ẩn
▫ Tạo các phương thức, các trường/thuộc tính
• Tạo và sử dụng đối tượng
▫ Phương thức khởi tạo
▫ Khai báo và khởi tạo đối tượng
▫ Sử dụng đối tượng 3 N i ộ dung 1. Tr u t ừ rư n ợ g hóa d ữ li u ệ 2. Đóng gói và xây d n ự g l p ớ 3. T o v ạ à s d ử n ụ g đ i t ố ư n ợ g 1.1. Tr u ừ tư n ợ g hóa • Gi m ả thi u ể và tinh l c ọ các chi ti t ế nh m ằ t p ậ trung vào m t ộ s ố khái ni m ệ /v n ấ đ ề quan tâm t i ạ m t ộ th i ờ đi m ể .
▫ “abstraction – a concept or idea not associated with any specific instance”. ▫ Ví d : C ụ ác đ n ị h nghĩa toán h c ọ • 2 lo i ạ tr u ừ tư n ợ g hóa ▫ Tr u ừ tư n ợ g hóa đi u ề khi n ể (control abstraction) ▫ Tr u ừ tư n ợ g hóa d ữ li u ệ (data abstraction) 1.1. Tr u ừ tư n ợ g hóa (2) • Tr u ừ tư n ợ g hóa đi u ề khi n ể : S ử d n ụ g các chư n ơ g trình con (subprogram) và các lu n ồ g đi u ề khi n ể (control flow) ▫ Ví d : ụ a := (1 + 2) * 5  N u ế không có tr u ừ tư n ợ g hóa đi u ề khi n, ể LTV ph i ả ch ra ỉ t t ấ c cá ả c thanh ghi, các bư c ớ tính toán m c ứ nh p ị hân… • Tr u ừ tư n ợ g hóa d ữ li u ệ : X l ử ý d ữ li u ệ theo các cách khác nhau ▫ Ví d : K ụ i u d ể l ữ i u ệ  S tá ự ch bi t rõ ệ ràng gi a ữ các thu c tí ộ nh tr u ừ tư ng ợ c a ủ ki u ể d ữ li u ệ và các chi ti t ế th c ự thi c t ụ h c ể a ủ ki u ể d li ữ u ệ đó. 6 1.2. Tr u ừ tư ng ợ hóa d ữ li u ệ trong OOP • Đ i ố tư n ợ g trong th c ự t ế ph c ứ t p ạ • C n ầ đ n ơ gi n ả hóa, b ỏ qua nh n ữ g chi ti t ế không c n ầ thi t ế
• Ch ỉ“trích rút” l y ấ nh n ữ g thông tin liên quan,
thông tin quan tâm, quan tr n ọ g v i ớ bài toán 7 8 1.2. Tr u ừ tư n ợ g hóa d ữ li u ệ (3)
• Any model that includes the most important,
essential, or distinguishing aspects of something
while suppressing or ignoring less important,
immaterial, or diversionary details. The result of
removing distinctions so as to emphasize
commonalties (Dictionary of Object Technology, Firesmith, Eykholt, 1995).  Cho phép qu n ả lý các bài toán ph c t ứ p ạ b n ằ g cách t p ậ trung vào các đ c ặ tr n ư g quan tr n ọ g c a ủ m t th ộ c th ự ể nh m ằ phân bi t ệ nó v i ớ các lo i ạ th c t ự h k ể hác. 9 1.2. Tr u ừ tư n ợ g hóa d ữ li u ệ (2) • Tr u ừ tư n ợ g hóa là m t ộ cách nhìn ho c ặ cách bi u ể di n ễ m t ộ th c ự th ể ch ỉbao g m ồ các thu c ộ tính liên quan trong m t ộ ng ữ c n ả h nào đó. • T p ậ h p ợ các th ể hi n ệ c a ủ các th c ự th ể thành các nhóm có chung các thu c ộ tính g i ọ là L p ớ (class). 10 unclassified "things" 11 • organisms, mammals, humans 12 • organisms, mammals, dangerous mammals 13 1.3. L p ớ vs. Đ i ố tư n ợ g
• Lớp là mô hình khái niệm,  Đối tượng là sự vật thật, là mô tả các thực thể thực thể thực sự
• Lớp như một bản mẫu,
 Đối tượng là một thể hiện
định nghĩa các thuộc tính
(instance) của một lớp, dữ
và phương thức chung của liệu của các đối tượng các đối tượng
khác nhau là khác nhau
 Mỗi đối tượng có một lớp
• Một lớp là sự trừu tượng
xác định dữ liệu và hành vi
hóa của một tập các đối của nó. tượng Bi u ể di n ễ l p ớ trong UML • L p ớ (class) đư c ợ bi u ể di n ễ Professor b n ằ g 1 hình ch ữ nh t ậ v i ớ 3 - name thành ph n ầ : - employeeID : UniqueId - hireDate - status - discipline ▫ Tên l p ớ - maxLoad + submitFinalGrade() ▫ C u ấ trúc (thu c ộ tính) + acceptCourseOffering() + setMaxLoad() + takeSabbatical() + teachClass() ▫ Hành vi (thao tác) Thu c ộ tính (attribute) là gì?
• Một thuộc tính là một đặc tính được đặt tên của một
lớp mô tả khoảng giá trị mà các thể hiện của đặc tính đó có thể chứa.
▫ Một lớp có thể không có thuộc tính nào hoặc có số lượng thuộc tính bất kỳ. Student - name - address Attributes - studentID - dateOfBirth L p ớ và đ i ố tư n ợ g trong UML Class sv1:Student - name = “M. Modano” - address = “123 Main St.” Student - studentID = 9 - name
- dateOfBirth = “03/10/1967” - address Objects - studentID - dateOfBirth sv2:Student - name = “D. Hatcher” - address = “456 Oak Ln.” - studentID = 2
- dateOfBirth = “12/11/1969” 17 N i ộ dung 1. Tr u t ừ rư n ợ g hóa d ữ li u ệ 2. Đóng gói và xây d n ự g l p ớ 3. T o v ạ à s d ử n ụ g đ i t ố ư n ợ g 18
2.1. Đóng gói (Encapsulation) Client Methods
• Một đối tượng có hai khung nhìn:
▫ Bên trong: Chi tiết về các thuộc tính
và các phương thức của lớp tương Data ứng với đối tượng
▫ Bên ngoài: Các dịch vụ mà một đối
tượng có thể cung cấp và cách đối
tượng đó tương tác với phần còn lại của hệ thống 19 2.1. Đóng gói (2) • D ữ li u/t ệ hu c ộ tính và hành vi/phư n ơ g th c ứ đư c ợ đóng gói trong m t ộ l p ớ  Encapsulation BankAccount - owner: String - balance: double + debit(double): boolean +credit(double) 20 2.1. Đóng gói (3) • M t ộ đ i ố tư n ợ g là m t ộ th c ự th ể đư c đó ợ ng gói, cung c p ấ t p ậ các d ch ị v n ụ h t ấ đ n ị h • M t ộ đ i ố tư n ợ g đư c đó ợ ng gói có th ể đư c xem ợ nh ư m t ộ h p ộ đen – các công vi c b ệ ên trong là n ẩ so v i ớ client
Dù thay đổi thiết kế/mã nguồn
bên trong nhưng giao diện bên
ngoài không bị thay đổi theo Don’t know how Input Output it works, but it works!