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

Lập trình hướng đối tượng_Chương 6 doc

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 (324.85 KB, 13 trang )

10/24/2011 3:35 PM
10/24/2011 3:35 PM
L
L


p tr
p tr
ì
ì
nh hư
nh hư


ng đ
ng đ


i tư
i tư


ng
ng
Hà Văn Sang
Khoa HTTT,
Academy Of Finance, Hanoi
Hà Văn Sang
Bộ môn: Tin học TC – KT
Khoa: Hệ Thống Thông Tin Kinh tế - Học Viện Tài Chính
Tel: 0982.165.568


Email:
Website: />Lập trình hướng đối tượng
10/24/2011 3:35 PM
10/24/2011 3:35 PM
L
L


p tr
p tr
ì
ì
nh hư
nh hư


ng đ
ng đ


i tư
i tư


ng
ng
Hà Văn Sang
Khoa HTTT,
Academy Of Finance, Hanoi
CHƯƠNG VI

Object Oriented Programing– Information Systems Department
3
1. Khuôn h
1. Khuôn h
ì
ì
nh h
nh h
à
à
m
m
Định nghĩa
Ví dụ 1: xây dựng hàm tìm max của hai số thực
-Xây dựng hàm tính max của ba số thực
-Xây dựng hàm tính max của n số thực
Giải quyết:
•Nạp chồng hàm max
Vấn đề được giải quyết, nhưng phải viết n hàm
Object Oriented Programing– Information Systems Department
4
1. Khuôn h
1. Khuôn h
ì
ì
nh h
nh h
à
à
m

m
Ví dụ 2: xây dựng hàm tìm max của hai số bất kỳ
Giải quyết:
int max(int a, int b){
if(a>b) return a;
elsse return b;}
float max(float a, float b){
if(a>b) return a;
elsse return b;}
Object Oriented Programing– Information Systems Department
5
1. Khuôn h
1. Khuôn h
ì
ì
nh h
nh h
à
à
m
m
Khái niệm
Là mẫu của hàm có tham số là kiểu của đối số
Với mỗi giá trị hợp lệ của đối số sẽ phát sinh một
hàm cụ thể gọi là hàm thể hiện
Khai báo:
template <class T1, class T2 > <kiểu giá trị trả về> <tên khuôn hình
hàm>([ds tham số])
{
//thân khuôn hình hàm

}
Object Oriented Programing– Information Systems Department
6
1. Khuôn h
1. Khuôn h
ì
ì
nh h
nh h
à
à
m
m
Ví dụ1 :
template <class T> T max(T a, T b){
if(a>b) return a ;
else return b;}
Ví dụ 2: xây dựng khuôn hình tính tổng 3 số bất kỳ
template <class T1, class T2, class T3> T1 tong(T1 x, T2 y, T3 z)
{
return x+y+z ;
}
Object Oriented Programing– Information Systems Department
7
1. Khuôn h
1. Khuôn h
ì
ì
nh h
nh h

à
à
m
m
Gọi hàm từ khuôn hình hàm
<tên hàm>(đối số)
Tên hàm trùng tên khuôn hình hàm
Ví dụ:
int a,b ;
float x,y ;
max(a,b) ;
Object Oriented Programing– Information Systems Department
8
1. Khuôn h
1. Khuôn h
ì
ì
nh h
nh h
à
à
m
m
Với khuôn hình hàm max:
int a,b;
max(a,b)
Khi đó chương trình dịch sẽ xác định:
-Kiểu của a,b là int nên kiểu của T cũng sẽ là int
-Phát sinh một hàm cụ thể từ khuôn hình hàm max
-Hàm max lúc này sẽ như sau:

int max(int a, int b)
{
if(a>b) return a ;
else return b;
}
Object Oriented Programing– Information Systems Department
9
2. Khuôn h
2. Khuôn h
ì
ì
nh l
nh l


p
p
Ví dụ: xây dựng lớp MT1 với:
Nhận xét:
•Số phần tử
•Mảng các phần tử kiểu: int, char, float, long
•Các phương thức: nhập, in, cộng, trừ
-Với mỗi kiểu dữ liệu của mảng sẽ có 1 lớp
-Các lớp này có chung các thao tác
-Chỉ kiểu dữ liệu của mảng là khác
 C++ cho phép xây dựng một mẫu của lớp, mẫu này có tham số để
ứng với mỗi giá trị của tham số sẽ phát sinh một lớp
Object Oriented Programing– Information Systems Department
10
2. Khuôn h

2. Khuôn h
ì
ì
nh l
nh l


p
p
Khái niệm
Khai báo:
•Là một mẫu của lớp có các tham số là các kiểu dữ liệu (tham số
kiểu)
•Với mỗi giá trị của tham số kiểu sẽ phát sinh ra một thể hiện là một
lớp cụ thể (lớp khuôn hình)
template <class T1, class T2 > class <tên khuôn hình lớp>
{
<khai báo các thành phần>
};
Object Oriented Programing– Information Systems Department
11
2. Khuôn h
2. Khuôn h
ì
ì
nh l
nh l


p

p
Ví dụ:
template <class T>
class MT1{
int spt;
T d[10];
public:
void nhap();
void in();
…}
Object Oriented Programing– Information Systems Department
12
2. Khuôn h
2. Khuôn h
ì
ì
nh l
nh l


p
p
Định nghĩa phương thức
-Định nghĩa bên trong khai báo của khuôn hình như hàm
thông thừơng
- Định nghĩa bên ngoài khai báo
Ví dụ:
template <class T> void MT<T>::nhap()
{


}
Object Oriented Programing– Information Systems Department
13
2. Khuôn h
2. Khuôn h
ì
ì
nh l
nh l


p
p
Sử dụng khuôn hình lớp
- Mỗi giá trị của tham số kiểu, chương trình dịch sẽ phát
sinh ra một lớp cụ thể
Cú pháp: <tên khuôn hình><kiểu>
Khai báo đối tựơng: <tên khuôn hình><kiểu> <tên biến>
Ví dụ:
MT<int> a;
MT<float> b;
MT<long> c;

×