1
Chương 1
C++ VÀ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
1.1. Gii thiu chung
1.1.1. Lp trình cu trúc
- Tư tưởng chính ca lp trình cu trúc là t chức chương trình thành các chương
trình con. Trong PASCAL có 2 kiểu chương trình con là thủ tc và hàm. Trong C
ch có mt loại chương trình con là hàm.
Hàm là một đơn vị chương trình độc lập dùng để thc hin mt phn việc nào đó
như: Nhập s liu, in kết qu hay thc hin mt s tính toán. Hàm cần có đi và
các biến, mng cc b dùng riêng cho hàm.
Việc trao đổi d liu gia các hàm thc hiện thông qua các đối và các biến toàn
b.
Các ngôn ng như C, PASCAL, FOXPRO là các ngôn ng cho phép trin khai
phương pháp lập trình cu trúc.
Một chương trình cấu trúc gm các cu trúc d liệu (như biến, mng, bn ghi) và
các hàm, th tc.
Nhim v chính ca vic t chc thiết kế chương trình cấu trúc là t chc
chương trình thành các hàm, th tục: Chương trình sẽ bao gm các hàm, th tc
nào.
Ví d xét yêu cu sau: Viết chương trình nhập to đ (x,y) ca mt dẫy điểm,
sau đó tìm một cặp điểm cách xa nhau nht.
Trên tư tưởng ca lp trình cu trúc có th t chức chương trình như sau:
+ S dng 2 mng thc toàn b x và y để cha to độ dy điểm
+ Xây dng 2 hàm:
Hàm nhapsl dùng để nhp to đ n điểm, hàm này có một đối là biến nguyên n
và được khai báo như sau:
void nhapsl(int n);
Hàm do_dai dùng để tính độ dài đoạn thng đi qua 2 điểm có ch s là i và j , nó
được khai báo như sau:
float do_dai(int i, int j);
Chương trình C cho bài toán trên được viết như sau:
#include <stdio.h>
2
#include <conio.h>
#include <math.h>
float x[100],y[100];
float do_dai(int i, int j)
{
return sqrt(pow(x[i]-x[j],2)+pow(y[i]-y[j],2));
}
void nhapsl(int n)
{
int i;
for (i=1;i<=n;++i)
{
printf("\nNhap toa do x, y cua diem thu %d : ",i);
scanf("%f%f",&x[i],&y[i]);
}
}
void main()
{
int n,i,j,imax,jmax;
float d,dmax;
printf("\nSo diem N= ");
scanf("%d",&n);
nhapsl(n);
dmax=do_dai(1,2); imax=1;jmax=2;
for (i=1;i<=n-1;++i)
for (j=i+1;j<=n;++j)
{
d=do_dai(i,j);
3
if (d>dmax)
{
dmax=d;
imax=i;
jmax=j;
}
}
printf("\nDoan thang lon nhat co do dai bang: %0.2f",dmax);
printf("\n Di qua 2 diem co chi so la %d va %d",imax,jmax);
getch();
}
1.1.2. Lập trình hướng đối tượng
Lập trình hướng đối tượng (Object Oriented Programming - LTHĐT)
phương pháp lập trình lấy đối tượng làm nền tảng để xây dựng thuật giải, xây dựng
chương trình. Đối tượng được xây dựng trên sở gắn cấu trúc dữ liệu với các
phương thức (các hàm/thủ tục) sẽ thể hiện được đúng cách mà chúng ta suy nghĩ,
bao quát về thế giới thực. LTHĐT cho phép ta kết hợp những tri thức bao quát về
các quá trình với những khái niệm trừu tượng được sử dụng trong máy tinh.
Điểm căn bản của phương pháp LTHĐT thiết kế chương trình xoay quanh
dữ liệu của hệ thống. Nghĩa các thao tác xử của hệ thống được gắn liền với
dữ liệu như vậy khi sự thay đổi của cấu trúc dliệu thì chỉ ảnh hưởng đến
một số ít các phương thức xử lý liên quan.
LTHĐT không cho phép dữ liệu chuyển động tự do trong hệ thống. Dữ liệu
được gắn chặt với từng phương thức thành các vùng riêng các phương thức đó
tác động lên được bảo vệ để cấm việc truy nhập tùy tiện tbên ngoài.
LTHĐT cho phép phân tích bài toán thành tập các thực thể được gọi các đối
tượng sau đó xây dựng các dữ liệu cùng với các phương thức xung quanh các
đối tượng đó.
Tóm lại LTHĐT có những đặc tính chủ yếu như sau:
1. Tập trung vào dữ liệu thay cho các phương thức.
2. Chương trình được chia thành các lớp đối tượng.
4
3. Các cấu trúc dữ liệu được thiết kế sao cho đặc tả được các đối tượng.
4. Các phương thức xác định trên các vùng dữ liệu của đối tượng được gắn với
nhau trên cấu trúc dữ liệu đó.
5. Dữ liệu được bao bọc, che dấu và không cho phép các thành phần bên ngoài
truy nhập tự do.
6. Các đối tượng trao đổi với nhau thông qua các phương thức.
7. Dữ liệu và các phương thức mới có thể dễ dàng bổ sung vào đối tượng nào
đó khi cần thiết.
8. Chương trình được thiết kế theo kiểu dưới-lên (bottom-up)
1.1.3. Các ưu điểm ca lập trình hướng đối tượng
Cách tiếp cận hướng đối tượng giải quyết được nhiều vấn đtồn tại trong
quá trình phát triển phần mềm và tạo ra được những sản phẩm phần mềm có chất
lượng cao. Những ưu điểm chính của LTHĐT là:
1. Thông qua nguyên kế thừa, thể loại bđược những đoạn chương
trình lặp lại trong quá trình tả các lớp mở rộng khả năng sử dụng các
lớp đã được xây dựng.
2. Chương trình được xây dựng từ những đơn thể (đối tượng) trao đổi
với nhau nên việc thiết kế lập trình sẽ được thực hiện theo quy trình nhất
định chkhông phải dựa vào kinh nghiệm và kỹ thuật như trước. Điều này
đảm bảo rút ngắn được thời gian xây dựng hệ thống tăng năng suất lao động.
3. Nguyên che giấu thông tin giúp người lập trình tạo ra được những
chương trình an toàn không bị thay bởi những đoạn chương trình khác.
4. thể xây dựng được ánh xạ các đối tượng của bài toán vào đối
tượng của chương trình.
5. Cách tiếp cận thiết kế đặt trọng tâm vào đối tượng, giúp chúng ta y
dựng được mô hình chi tiết và gần với dạng cài đặt hơn.
6. Những hệ thống hướng đối tượng dễ mở rộng, nâng cấp thành những
hệ lớn hơn.
7. Kỹ thuật truyền thông báo trong việc trao đổi thông tin giữa các đối
tượng giúp cho việc tả giao diện với các hệ thống bên ngoài trở nên đơn
giản hơn.
8. Có thể quản lý được độ phức tạp của những sản phẩm phần mềm.
Không phải trong hệ thống hướng đối tượng nào cũng có tất cả các tính chất
nêu trên. Khả năng các tính chất đó còn phụ thuộc vào lĩnh vực ứng dụng của
5
dự án tin học và vào phương pháp thực hiện của người phát triển phần mềm
1.1.4. Mt s ng dng ca lập trình hướng đối tượng
LTHĐT đang được ứng dụng để phát triển phần mềm trong nhiều lĩnh vực khác
nhau. Trong số đó, ứng dụng quan trọng nổi tiếng nhất hiện nay hệ điều
hành Windows của hãng Microsoft đã được phát triển dựa trên kỹ thuật LTHĐT.
Một số những lĩnh vực ứng dụng chính của kỹ thuật LTHĐT bao gồm:
+ Những hệ thống làm việc theo thời gian thực.
+ Trong lĩnh vực mô hình hóa hoặc mô phỏng các quá trình
+ Các cơ sở dữ liệu hướng đối tượng.
+ Những hệ siêu văn bản, multimedia
+ Lĩnh vực trí tuệ nhân tạo và các hệ chuyên gia.
+ Lập trình song song và mạng nơ-ron.
+ Những hệ tự động hóa văn phòng và trợ giúp quyết định.