Tải bản đầy đủ (.doc) (8 trang)

tai lieu quy bo di thi tiec 11

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 (104.22 KB, 8 trang )

Lập trình hớng đối tợng
Kỹ thuật lập trình hớng đối tợng
Thành Viên Nhóm Công Cụ :
Dơng Chí Đức ( c), Hoàng Trung Hải , Nguyễn Việt Dũng
Thạch Đăng Sơn, Nguyễn Thị Hoà
Ngời Trình Bầy
Hoàng Trung Hải
I. Giới thiệu chung
Ngày nay khi tin học ngày càng phát triển mạnh mẽ và thâm nhập vào
mọi lĩnh vực của đời sống việc xây dựng ứng dụng cho các ngành nghiệp vụ
không đơn thuần chỉ bó hẹp trong một vấn đề mà phải sử dụng những kiến
thức, thành quả của nhiều lĩnh vực khác nhau. Sẽ khó khăn nếu tự mình xây
dựng ứng dụng, khái niệm Object(đối tợng) ra đời nhằm giải quyết vấn đề đó.
Để hiểu rõ u điểm của lập trình hớng đối tợng chúng ta hãy tìm hiểu một chút
về lập trình có cấu trúc.
Lập trình có cấu trúc đợc xuất hiện vào những năm 60-70. Chơng trình có cấu
trúc đợc tổ chức theo các phép toán mà nó phải thực hiện. Về bản chất chơng
trình đợc chia thành các thủ tục riêng lẻ(còn gọi là hàm), chúng đợc thực hiện
các nhiệm vụ riêng rẽ trong một quá trìng lớn và phức tạp hơn. Các thủ tục này
đợc giữ riêng biệt nhau nhiều nhất có thể đợc, mỗi quá trình có logic và dữ liệu
riêng. Thông tin đợc truyền qua các thủ tục bằng cách dùng tham biến, mà thủ
tục có thể có dữ liệu riêng mà bên ngoài phạm vi của nó không thể thâm nhập đ -
ợc. Nói cách khác hàm nh một chờng trình chính đợc thu nhỏ có thể gắn với
nhau để xây dựng một ứng dụng.
Mục tiêu của lập trình có cấu trúc là làm cho việc phát triển phần mềm đợc dễ
dàng hơn đ/v ngời lập trình trong khi phẫn tăng cờng đợc độ tin cậy và tính dễ
bảo trì. Chơng trình có cấu trúc đợc xây dựng bằng cách chia nhỏ chơng trình
lớn thành các phần cơ bản, các thành phần này lại trở thành hàm bên trong ch -
ơng trình. Bằng cách cô lập các quá trình bên trong hàm, chơng trình có cấu trúc
làm giảm thiểu cơ may thủ tục nọ ảnh hởng tới thủ tục kia. Điều này cũng làm
cho việc cô lập vấn đề trở nên dễ dàng hơn. Việc tách bạch hoá chơng trình cũng


cho phép bạn viết chơng trình dễ dàng hơn và duy trì sự kiểm soát trên từng hàm.
Biến toàn cục bị thay thế bởi biến nội bộ và các tham biến vốn có phạm vi nhỏ
hơn và dễ kiếm soát hơn. Cách tổ chức tốt hơn này bạn có khả năng hiểu logic
chơng trình làm cho việc phát triển bảo trì của nó đợc hiệu quả hơn.
Một khái niệm đầy hiệu lực đợc đa vào với lập trình có cấu trúc là trừu tợng
Ngời trình bầy: Hoàng Trung Hải Nhóm công cụ1
Lập trình hớng đối tợng
Trừu tợng có thể đợc định nghĩa nh là khả năng xét một điều gì đó mà không
quan tâm đến các chi tiết bên trong của nó. Trong một chơng trình có cấu trúc, ta
chỉ cần biết rằng thủ tục đã cho thực hiện một nhiệm vị xác định. Việc nhiệm vụ
này thực hiện nh thế nào không quan trọng, chừng nào mà thủ tục còn tin cậy đ-
ợc thì còn có thể dùng nó mà không cần phải biết làm sao nó hoàn thành đúng
đắn chức năng của mình. Điều này đợc xem nh nền tảng của lập trình có cấu
trúc.
Khi độ phức tạp của chơng trình tăng lên, sự phụ thuộc của nó vào các kiểu dữ
liệu cơ bản mà nó sử lý cũng tăng theo. Vấn đề trở nên rõ ràng rằng cấu trúc dữ
liệu trong chơng trình quan trọng không kém các phép toán thực hiện trên
chúng. Điều này trở nên hiển nhiên hơn khi chơng trình càng tăng về kích thớc.
Các kiểu dữ liệu xử lý trong nhiều thủ tục bên trong một chơng trình có cấu
trúc, và khi có sự thay đổi trong các kiểu dữ liệu này thì cũng phải thực hiện cả
những thay đổi ở mọi nơi có các tác động lên kiểu dữ liệu đó. Đây là một công
việc tốn thời gian và hiệu quả đối với các chơng trình có hàng nghìn dòng lệnh
và hàng trăm hàm.
Một nhợc điểm nữa của lập trình có cấu trúc lộ ra khi cần phải dùng nhiều ngời
để lập trình cho một ứng dụng. Trong một chơng trình có cấu trúc, từng ngời đợc
giao xây dựng một tập các hàm và kiểu dữ liệu dùng chung cho lẫn nhau cho
nên những thay đổi về cấu trúc dữ liệu của ngời này sẽ ảnh hơng tới công việc
của ngời khác, những sai sót trong liên lạc giữa các thành viên trong nhóm có
thể dẫn tới việc mất thời gian để viết lại.
Ngợc lại, lập trình hớng đối tợng làm cho chơng trình gọn hơn, dễ dàng kết hợp

với các chơng trình khác. OOP là phơng pháp đóng gói từng phần của chơng
trình thành các đối tợng để có thể tái sử dụng cũng nh duy trì bảo dỡng dễ dàng
hơn. Lập trình viên có thể tập trung sâu hơn vào công việc cần phải giải quyết,
tiết kiệm thời gian công sức xây dựng chơng trình mà vẫn sử dụng đợc các chức
năng đã có.
II.Lập trình hớng đối tợng
1. Đối tợng:
- Đối tợng là sự kết hợp của chơng trình với dữ liệucó thể sử dụng nh một đơn
vị độc lập.
- Đối tợng là phần dữ liệu đợc khai báo thuộc lớp. Khái niệm về lớp sẽ đợc giới
thiệu ở phần sau
Ngời trình bầy: Hoàng Trung Hải Nhóm công cụ2
Lập trình hớng đối tợng
3 thành phần đặc trng của đối tợng :
- Thuộc tính: là các thông tin về bản thân đối tợng, có thể lây ra từ chúng hoặc
thay đổi chúng.
Ví dụ: đối tợng xe thì có thuộc tính số xe, màu sơn, số máy, . . .
- Phơng pháp: Có thể là công việc mà đối tợng đó phải thực hiện.
Ví dụ: Xe thì phơng pháp là đi, ngoặt, . . .
- Sự kiện : là hoạt động xẩy ra mà đối tợng nhận biết đợc
Vd: ở Windows khi ta nhấp chuột vào một form nào đó thì sự kiện nhâp
chuột xảy ra.
2. Lập trình hớng đối tợng
- Lập trình hớng đối tợng gắn câu trúc dữ liệu với cac phép toán.
- Lập trình hớng đối tợng là phơng pháp mới đợc tiếp cận việc lập trình Nó đợc
xây dựng trên nền tảng của các khái niệm lập trình có cấu trúc và sự trừu t -
ợng hoá dữ liệu. Sự thay đổi cơ bản là OOP đợc thiết kế thiết kế xoay quanh
dữ liệu mà nó thao tác chứ không theo bản thân các thao tác
- OOP cho phép ta dùng các quá trình trí tuệ này với các khái niệm trừu tợng đ-
ợc dùng trong chơng trình máy tính.

VD: không thể viết số phức lên bản ghi nhân sự hoặc không đợc cộng hai
bản ghi với nhau.
- OOP cho phép ta chia bài toán thành các bài toán nhỏ quan hệ với nhau. Mỗi
bài toán là một đối tợng chứa dũ liệu và lệnh có quan hệ với có quan hệ với
đối tợng đó.
- Phơng pháp trong lập trình hớng đối tợng mô phỏng sự phân lớp trong tự
nhiên
III Kỹ thuật lập trình OOP :
Trong mục này chúng sẽ tìm hiểu các khái niệm nh sự đóng gói, lớp, thực thể,
tình kế thừa của đối tợng, tính đa hình, phơng thức ảo. Đây là những khái niệm
căn bản và là nền tảng trong lập trình hơng đối tợng.
Sự đóng gói :
Ngời trình bầy: Hoàng Trung Hải Nhóm công cụ3
Lập trình hớng đối tợng
Máy tính là một ngành khoa học nghiên cứu về việc lu trữ và xử lý thông
tin, thực chất đó là việc xử lí dữ liệu. Vì vậy sẽ hoàn toàn tự nhiên nếu một ch-
ơng trình đợc thiết kế xoay quanh dữ liệu hơn là theo bản thân các chức năng
của chơng trình. Dữ liệu và thao tác trên dữ liệu đợc lên kết với nhau, cái này đòi
hỏi các kia chính vì thế OOP làm cho các quan hệ hỗ trợ đợc thể hiện rõ ràng
nhất.
Trong quá trình một chơng trình OOP thực hiện, chúng ta có gửi cùng một thông
điệp đến các đối tợng khác nhau. Để làm đợc điều đó cấu trúc chơng trình đã đ-
ợc tổ chức sao cho có sự tơng ứng, sự đồng nhất giữa dữ liệu và các thao tác tác
động đến dữ liệu. Khi đó chúng ta quan tâm đến vấn đề " phải làm công việc cụ
thể gì " mà chỉ điều khiển bằng mệnh lệnh "làm việc" có nghĩa là cùng với một
mệnh lệnh một thông điệp chơng trình vẫn nhận biết để thực hiện. Sự đóng gói
chính là khả năng cất giữ riêng biệt dữ liệu và phơng thức tác động lên dữ liệu
đó, " tất cả thông tin của một hệ thống định hớng đối tợng đợc lu giữ bên trong
các đối tợng và nó chỉ có thể hành động khi các đối tợng đó đợc ra lệnh thực
hiện các thao tác.

Nh vậy sự đóng gói không đơn thuần chỉ sự gom chung dữ liệu và chơng trình
vào bên trong một khối, chúng còn đợc hiểu thêm theo nghĩa đó là sự đồng nhất
dữ liệu và các thao tác tác động lên giữ liệu đó.
**vd: với vật liệu xi măng, sắt thép. . . đợc đồng nhất với thao tác làm móng,
xây tờng khi đó ngời điều hành chỉ với một mệnh lệnh "hãy làm đi" ngời thợ sẽ
biết công việc của mình. Tất cả những gì thấy đợc của đối tợng đã đợc đóng gói
đó là các phơng thức giao tiếp của đối tợng.
Lớp và thực thể :
Khi đợc đề cập đến hệ thống đợc tổ chức xung quanh các cấu trúc dữ liệu, rõ
ràng chúng ta quan tâm đến các lớp các cấu trúc dữ liệu hơn là bản thân từng dữ
liệu, từng đối tợng. Phấn quan tâm trong một hệ thống không phải là một mô tả
dữ liệu riêng, một cú pháp đơn lẻ, mà là tất cả các bộ mô tả tập hợp cấu trúc dữ
liệu đợc đặt trng bởi các tính chất chung.
Lớp ( Class ) thực chất là một kiểu dữ liệu đợc định nghĩa trong chơng trình. Tuy
nhiên khái niệm về lớp còn xa hơn, nó chứa bên trong sự cài đặt về đặc tính cũng
nh những thao tác có thể có trên dữ liệu. Một cách tổng quát, lớp đặc trng cho
một mẫu của một vài đối tợng và mô tả cấu trúc bên trong của những đối tợng
này. Những đối tợng của cùng một lớp có cùng định nghĩa về các thao tác và
cùng cấu trúc dữ liệu của chúng.
VD: chúng ta tạo một lớp POINT hai thành phần là toạ độ và điểm
trong mặt phẳng và thao tác nh gán giá trị cho toạ độ, hiển thị toạ
đọ của điểm.
Ngời trình bầy: Hoàng Trung Hải Nhóm công cụ4
Lập trình hớng đối tợng
class point
{ int x // toạ độ của điểm
int y
voidsetXY (int a, int b)
{ x:=a; // thủ tục gán giá trị cho toạ độ
y:=b;

}
voidDisplay (void)
{
printf("hoành độ: %d\n", x); // in hoành độ và tung độ
printf ("tung độ : %d\n", y);
}
}
Thực thể (instance) là một vật thể có thực bên trong bộ nhớ, thực chất đó là đối
tợng, nói cách khác thực thể là một biến (variable) đợc khai báo thuộc kiểu lớp.
Một thực thể là một đối tợng đợc tạo ra từ một lớp. Lớp môt tả cấu trúc (hành vi
và thông tin ) của thực thể, trong khi đó tình trạnh hiện hành (curent state) của
thực thể đợc xác định bởi những thao tác tác động lên thực thể.
Vd:
class point
{ int x // toạ độ của điểm
int y
voidsetXY (int a, int b)
{ x:=a; // thủ tục gán giá trị cho toạ độ
y:=b;
}
voidDisplay (void)
{
printf("hoành độ: %d\n", x); // in hoành độ và tung độ
printf ("tung độ : %d\n", y);
}
}
Voidmain(void)
{
printf (" gan cho p hai toa do (0, 1) va (4, 5) \n");
point p; // tạo ra đối tợng P

p. setXY(0, 1); // cho thực thể p giá trị là (0, 1)
p. display () ;
p. setXY(4, 5); // cho thực thể p giá trị là (4, 5)
p. display;
}
trong vd này lớp point đợc định nghĩa nôm na nh một kiểu dữ liệu mới.
Tính kế thừa (Inheritance)
Trớc khi đề cập đến khái niệm kế thừa chúng ta tìm hiểu qua một ít về sự phân
lớp các đối tợng. Đây chính là sự xắp xếp các đối tợng, tổ chức sao cho thế giới
thực ( real world) đang khảo sát nằm trong một khôn khổ nhất định. Khi đó, nếu
gặp đợc một đối tợng mới chúng ta dễ dàng đa nó vào lớp thích hợp. Sự phân lớp
Ngời trình bầy: Hoàng Trung Hải Nhóm công cụ5

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×