Tải bản đầy đủ (.pdf) (79 trang)

Review OOPTrang H ng Sơn thson@hoasen.edu.vn 0908.54.64.22Hoa Sen University-1-.N i dungT ng pot

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.77 MB, 79 trang )

- 1 -
Review OOP
Review OOP
Trang H
Trang H


ng Sơn
ng Sơn


0908.54.64.22
0908.54.64.22
Hoa Sen University
- 18/09/2010 - - Hoa Sen University - - 2 -
N
N


i dung
i dung
 Tổng quan về OOP
 Lớp và ñối tượng
 Các tính chất cơ bản
 Interface với ngôn ngữ C# || Java
- 18/09/2010 - - Hoa Sen University - - 3 -
1. T
1. T


ng quan


ng quan
 OOP (Object-Oriented Programming) là kỹ thuật
lập trình hỗ trợ công nghệ ñối tượng  lấy ñối
tượng làm nền tảng.
 OOP ñược xây dựng trên nền tảng của khái niệm
lập trình cấu trúc và sự trừu tượng hóa dữ liệu.
- 18/09/2010 - - Hoa Sen University - - 4 -
1. T
1. T


ng quan
ng quan
 Ưu ñiểm:
• Giảm thời gian phát triển ứng dụng.
• Tăng năng suất và ñơn giản hoá ñộ phức tạp khi bảo trì
cũng như mở rộng ứng dụng.
• Dễ dàng bảo trì, nâng cấp và mở rộng ứng dụng.
 Khuyết ñiểm:
• Các ñối tượng thiếu tính linh ñộng khi có yêu cầu phát
triển mới.
• Không hỗ trợ ñóng gói những hành vi ñan nhau liên
quan ñến nhiều lớp (các bài toán thực tế hay gặp phải)
 mã chương trình có thể nằm lẫn lộn, rải rác và khó
quản lý  AOP (Aspect-Oriented Programming).
- 18/09/2010 - - Hoa Sen University - - 5 -
2. L
2. L



p v
p v
à
à
ñ
ñ


i tư
i tư


ng
ng
 Lớp là một kiểu dữ liệu (do người dùng ñịnh nghĩa) dùng
ñể tạo ra các ñối tượng.
 Lớp là một khuôn mẫu, ñịnh nghĩa các ñặc ñiểm tính chất,
hành vi, trạng thái chung của một số ñối tượng.
 Lớp là khái niệm mang tính trừu tượng hoá.
 ðối tượng là một thực thể cụ thể của một lớp.
 Lớp là “ảo” - ñối tượng là “thực”.
 Ví dụ:
• Bản thiết kế nhà và các ngôi nhà cụ thể ở quận 1,3,5, …
• Loài chó và các con chó Lulu, Misa, Rita,
- 18/09/2010 - - Hoa Sen University - - 6 -
2. L
2. L


p v

p v
à
à
ñ
ñ


i tư
i tư


ng
ng
 Lớp Car:
• Tính chất:
- Màu sắc
- Hãng sản xuất
- Giá cả
• Hành vi:
- Khởi ñộng
- Tăng / giảm tốc
- Bật / tắt ñèn
 ðối tượng Car1:
• Tính chất:
- Màu sắc: xanh dương
- Hãng sản xuất: Toyota
- Giá cả: 20.000$
• Hành vi:
- Khởi ñộng
- Tăng / giảm tốc

- Bật / tắt ñèn
 ðối tượng Car2:
• Tính chất:
- Màu sắc: màu ñỏ
- Hãng sản xuất: Ford
- Giá cả: 30.000$
• Hành vi:
- Khởi ñộng
- Tăng / giảm tốc
- Bật / tắt ñèn
- 18/09/2010 - - Hoa Sen University - - 7 -
ð
ð


i tư
i tư


ng
ng
 ðối tượng = dữ liệu + hành vi của dữ liệu.
 Các thuật ngữ khác:
• Dữ liệu (data) = Trường (fields) = Tính chất
(properties) = Thuộc tính (attributes) = Biến
(variables) = Thông tin (informations) = ðặc
ñiểm (characteristics) = …
• Hành vi (behaviors) = Phương thức
(methods) = Thao tác (operations) = Hàm
(functions) = …

- 18/09/2010 - - Hoa Sen University - - 8 -
ð
ð


i tư
i tư


ng
ng
 ðối tượng = thuộc tính + phương thức.
 Thuộc tính:
• Bao gồm các biến, hằng số, hay tham số nội tại.
• Giá trị của các thuộc tính này thể hiện trạng thái của một ñối tượng.
 Phương thức:
• Dùng ñể mô tả và thực hiện các hành vi của ñối tượng.
• Mỗi phương thức thường ñược ñịnh nghĩa là một hàm, và nội dung
của nó chứa các thao tác ñể thực hiện hành vi nào ñó.
- 18/09/2010 - - Hoa Sen University - - 9 -
3. C
3. C
á
á
c t
c t
í
í
nh ch
nh ch



t cơ b
t cơ b


n
n
- 18/09/2010 - - Hoa Sen University - - 10 -
T
T
í
í
nh ñ
nh ñ
ó
ó
ng g
ng g
ó
ó
i
i
 Là cơ chế ràng buộc dữ liệu và các
hành vi trên dữ liệu thành một khối
thống nhất  ñối tượng.
 Không cho phép người sử dụng các ñối
tượng thay ñổi trực tiếp trạng thái nội
tại của một ñối tượng, chỉ có các
phương thức nội tại của ñối tượng mới

cho phép thay ñổi trạng thái của nó
(accessor methods)  ñảm bảo sự
toàn vẹn dữ liệu của ñối tượng.
 “ðóng” ñối với dữ liệu và “mở” ñối với
hành vi.
- 18/09/2010 - - Hoa Sen University - - 11 -
T
T
í
í
nh k
nh k
ế
ế
th
th


a
a
 Cho phép một ñối tượng ñược thừa hưởng các ñặc tính mà
ñối tượng khác ñã có, thông qua việc kế thừa  dễ dàng
chia sẻ hay mở rộng các ñặc tính có sẵn mà không phải tiến
hành ñịnh nghĩa lại.
 Kế thừa tạo ra mô hình phân cấp giữa các lớp.
 Có 2 loại: ña thừa kế (C++) và ñơn thừa kế (C# || Java).
- 18/09/2010 - - Hoa Sen University - - 12 -
T
T
í

í
nh tr
nh tr


u tư
u tư


ng
ng
 “Tổng quát hóa” thể hiện tính
trừu tượng.
 Từ những ñối tượng giống nhau
 tổng quát hóa thành một lớp.
 Từ những lớp có một số ñặc ñiểm
giống nhau  tổng quát hoá
thành lớp cơ sở.
- 18/09/2010 - - Hoa Sen University - - 13 -
T
T
í
í
nh ña h
nh ña h
ì
ì
nh
nh
 Cùng là một hành vi nhưng

có thể thực hiện nhiều cách
hoạt ñộng khác nhau tùy
vào các ngữ cảnh khác nhau.
 Thể hiện dưới 3 hình thức:
• Nạp chồng (overloading)
• Ghi chồng (overriding)
• Kết nối trễ (late binding)
- 18/09/2010 - - Hoa Sen University - - 14 -
Overloading
Overloading
 Xảy ra trên một lớp.
 Có nhiều phương thức cùng tên nhưng
khác tham số truyền vào  khi ñược gọi,
dựa vào tham số truyền vào, phương thức
tương ứng sẽ ñược thực thi.
 Khác tham số truyền vào:
• Kiểu dữ liệu tham số
• Số lượng tham số
- 18/09/2010 - - Hoa Sen University - - 15 -
Overriding
Overriding
 Xảy ra trên hai lớp có quan hệ Cha-Con.
 Lớp Con ñược phép có một phương thức
giống như phương thức của lớp Cha,
nhưng ñược cài ñặt khác  lúc thực thi,
nếu lớp Con không có phương thức riêng,
phương thức của lớp Cha sẽ ñược gọi,
ngược lại nếu có, phương thức của lớp
Con ñược gọi.
- 18/09/2010 - - Hoa Sen University - - 16 -

Late binding
Late binding
 Là khả năng cho phép người lập trình gọi trước một phương
thức của ñối tượng, nhưng chưa xác ñịnh ñối tượng muốn
gọi là ñối tượng nào  ñến khi thực hiện, chương trình mới
xác ñịnh cụ thể ñối tượng và gọi phương thức tương ứng
của ñối tượng ñó.
 Giúp chương trình ñược uyển chuyển hơn, chỉ yêu cầu ñối
tượng cung cấp ñúng prototype của phương thức cần thiết
là ñủ.
- 18/09/2010 - - Hoa Sen University - - 17 -
4. Interface
4. Interface
 ðược ñưa ra như là một sự thay thế cho các lớp
trừu tượng.
 Interface thực chất là một lớp thuần trừu tượng
(pure abstract)  chỉ chứa các phương thức trừu
tượng.
- 18/09/2010 - - Hoa Sen University - - 18 -
4. Interface
4. Interface
 Với interface, ta có thể có hầu hết các lợi ích mà ña thừa
kế mang lại  1 lớp có thể cài ñặt nhiều giao diện  bổ
sung cho tính chất ñơn thừa kế trong C# || Java.
 Khi 1 lớp cài ñặt 1 interface, lớp này phải cài ñặt tất cả các
phương thức mà interface ñịnh nghĩa.
- 18/09/2010 - - Hoa Sen University - - 19 -
Q&A
Q&A
Created by Trang Hồng Sơn



- 1 -

Inception


1. Mô tả dự án:

- Progress: Trả lời các câu hỏi?
+ Tầm nhìn (vision) và khả năng kinh doanh của dự án như thế nào ?
+ Tính khả thi ?
+ Mua hay xây dựng ?
+ Ước lượng chi phí ?
+ …
 Làm hay ko làm ?
- Output: Vision, Statement of Work, Proposal

2. Khảo sát hiện trạng:

- ðây là giai ñoạn ñầu tiên trong quá trình phát triển phần mềm, nó cho biết hiện trạng bài toán
như thế nào.
- Progress: Khảo sát hiện trạng về mô hình tổ chức, hiện trạng về các nghiệp vụ, hiện trạng về
quá trình tin học của khách hàng mà phần mềm chúng ta nhắm tới; trong ñó hiện trạng về nghiệp vụ
là quan trọng nhất mục tiêu của giai ñoạn này là phải hiểu rõ ñược qui trình nghiệp vụ của khách
hàng như là có bao nhiêu quá trình nghiệp vụ, những nghiệp vụ ñó họ làm như thế nào? …
- Ouput: Business Processes Specification

3. Xác ñịnh yêu cầu:


- Yêu cầu (requirement) diễn tả chức năng hệ thống phải làm hoặc ñặc ñiểm hệ thống phải có.
Yêu cầu luôn luôn thay ñổi.
- Có 2 loại: (Functional, Usability, Reliability, Performance, Supportability)
+ Chức năng (functional): là yêu cầu có liên quan trực tiếp ñến hoạt ñộng mà hệ thống phải
làm hoặc thông tin mà hệ thống lưu trữ.
+ Phi chức năng (nonfunctional): là các yêu cầu về tính chất hoặc thuộc tính mà hệ thống phải
có như khả năng hoạt ñộng, khả năng sử dụng,
- Các kỹ thuật thu thập yêu cầu:
+ Phỏng vấn (interview): 4 bước
. Chọn người ñược phỏng vấn.
. Thiết kế câu hỏi phỏng vấn.
. Thực hiện phỏng vấn.
. Thực hiện công việc sau phỏng vấn.
+ ðiều tra (questionnaire): 4 bước
. Lựa chọn nhóm ñối tượng ñiều tra.
. Thiết kế câu hỏi ñiều tra.
. Thực hiện ñiều tra.
. Tổng kết, thống kê, phân tích kết quả ñiều tra.
+ Quan sát (observation):
. Quan sát chi tiết các bước nghiệp vụ của khách hàng.
. Cẩn thận trước những thao tác không thường xuyên.
+ Phân tích tài liệu (document analysis):
. Phân loại các tài liệu ñược cung cấp (tài liệu báo cáo, tài liệu mô tả hệ thống, tài liệu qui
trình nghiệp vụ, …)
Created by Trang Hồng Sơn


- 2 -

. ðọc kỹ các tài liệu ñược cung cấp  rút trích thông tin quan trọng.

- Output: Software Requirements Specification



Created by Trang Hồng Sơn


- 1 -

OOAD


1. Tổng quan:


1.1. ðịnh nghĩa:

- Analysis:
+ Nhằm trả lời cho câu hỏi “what”.
 Xác ñịnh các ñặc trưng mà hệ thống cần phải xây dựng là gì, chỉ ra các khái niệm liên
quan và ñưa ra hướng giải quyết bài toán.
- Design:
+ Nhằm trả lời cho câu hỏi “how”.
 Xác ñịnh hệ thống sẽ ñược xây dựng như thế nào dựa trên kết quả của việc phân tích,
ñưa ra các phần tử hỗ trợ giúp tạo nên một hệ thống hoạt ñộng thực sự.

1.2. Các phương pháp phân tích thiết kế:

- SOAD:
+ Phân rã (breaks down) bài toán thành các bài toán nhỏ hơn, rồi tiếp tục phân rã các bài

toán con cho ñến khi nhận ñược các bài toán có thể cài ñặt ñược.
+ Ưu ñiểm:
. Tư duy phân tích thiết kế rõ ràng.
. Chương trình sáng sủa dễ hiểu.
+ Khuyết ñiểm:
. Không hỗ trợ việc sử dụng lại.
. Không phù hợp cho phát triển các phần mềm lớn.
- OOAD:
+ Ánh xạ các thành phần trong bài toán vào các ñối tượng ngoài ñời thực.
+ Hệ thống ñược chia thành các thành phần nhỏ gọi là các ñối tượng, mỗi ñối tượng bao
gồm ñầy ñủ cả dữ liệu và hành ñộng liên quan ñến ñối tượng ñó.
+ Các ñối tượng trong một hệ thống tương ñối ñộc lập với nhau và phần mềm sẽ ñược xây
dựng bằng cách kết hợp các ñối tượng ñó lại với nhau thông qua các mối quan hệ và tương tác giữa
chúng.
+ Ưu ñiểm:
. Hỗ trợ sử dụng lại mã nguồn.
. Phù hợp với các hệ thống lớn.



Created by Trang Hồng Sơn


- 2 -

- Case study:
+ Bài toán:
. GV tổ chức buổi seminar cho SV tham dự.
. Buổi seminar kết thúc thì SV phải trở về lớp học của mình.
. SV ko biết ñược vị trí của lớp học của mình ở ñâu.

. GV phải chỉ cho SV biết cách trở về lớp học của từng SV.
+ Cách giải quyết 1 (SOAD):
. GV lấy danh sách SV tham dự buổi seminar.
. ðối với mỗi SV, GV làm các bước sau:
- Hỏi SV ở lớp nào.
- Tìm vị trí của lớp ñó.
- Tìm ñường ñi ñến lớp ñó.
- Chỉ cách cho SV ñến lớp ñó.
 Trách nhiệm ở GV.
+ Cách giải quyết 2 (OOAD):
. Dán sơ ñồ lớp học ở cuối phòng và thông báo với SV ñể SV xem sơ ñồ lớp học.
. SV tự tìm cách ñể trở về lớp học của mình.
 Trách nhiệm ở GV và SV.
+ Yêu cầu mở rộng thêm: ñối tượng SV tham dự bao gồm SV ñang học và cựu SV.
. Cách giải quyết 1:
- ðối với mỗi SV, GV phải kiểm tra là SV ñang học hay là cựu SV.
- Nếu SV ñang học thì làm theo bước trên.
- Nếu là cựu SV thì hướng dẫn SV ra khỏi trường.
. Cách giải quyết 2:
- Thêm sơ ñồ ra khỏi trường.
 Cách giải quyết 2 sẽ hiệu quả hơn.

1.3. Các qui trình phát triển phần mềm (Software Development Process):

- Waterfall (thác nước):
+ Các pha liên tiếp từ phân tích yêu cầu, thiết kế hệ thống, phát triển hệ thống ñến thử
nghiệm và triển khai hệ thống.
+ Pha sau chỉ ñược bắt ñầu khi pha trước ñã hoàn thành.




- Iterative and Evolutionary (lặp và tăng dần):
+ ði qua các bước phân tích, thiết kế, phát triển, kiểm tra và triển khai phần mềm theo
từng bước nhỏ nhiều lần.
Created by Trang Hồng Sơn


- 3 -

+ Mỗi chu kỳ lặp là một vòng ñời thác nước nhỏ, vòng lặp sau ñược hình thành trên cơ sở
tiến hóa của vòng lặp trước ñó  Như vậy, các pha truyền thống ñược lặp ñi lặp lại và tăng dần.



- Phương pháp Agile:
+
+

2. Các bước OOAD:





2.1. Use Case:

- Các trường hợp sử dụng (các kịch bản) liên quan ñến việc sử dụng hệ thống theo một
cách thức nào ñó.
- Ví dụ: Trò chơi ñổ 2 xí ngầu  có kịch bản như sau: người chơi lắc 2 xí ngầu, nếu tổng ñiểm
> 7 thì thắng, ngược lại thì thua.



2.2. Domain Model:

- Các ñối tượng quan trọng bao gồm các thông tin và các mối quan hệ giữa chúng.
- Ví dụ:




2.3. Interaction Diagrams:

- Các sơ ñồ biểu thị luồng thông ñiệp trao ñổi giữa các ñối tượng.
- Ví dụ:
Created by Trang Hồng Sơn


- 4 -





2.4. Class Diagrams:

- Sơ ñồ biểu thị tất cả các thông tin và hành vi của ñối tượng và mối quan hệ giữa chúng.
- Ví dụ:







×