LAÄP TRÌNH
HÖÔÙNG ÑOÁI TÖÔÏNG
07/06/13
Lập Trình Hướng Đối Tượng Slide 2
Tóm tắt nội dung môn học
Phần 1: Giới thiệu
Phần 2: Các khái niệm cơ bản
Phần 3: Lớp và đối tượng
Phần 4: Kỹ thuật thừa kế và tính đa hình
Phần 5: Thiết kế chương trình hướng đối tượng
Phần 6: Khuôn mẫu (template)
Phần 7: Luồng nhập xuất
Phần 8: Cacù mẫu thiết kế hướng đối tượng
07/06/13
Lập Trình Hướng Đối Tượng Slide 3
Tài liệu tham khảo
Stroustrup, Bjarne. The C++ Programming Language, 3rd Ed.
Dietel & Dietel. C++ How to Program, 3rd Ed. 2003
Eckel, Bruce. Thinking in C++, 2nd Ed. Vol 1. Vol.2.
Nguyễn Thanh Thủy …, Lập trình hướng đối tượng với C++. NXB
Khoa học kỹ thuật.
Gamma: Design Patterns. Addison-Wesley, 1998.
LAP TRèNH
HệễNG ẹOI
TệễẽNG
Chửụng 1: Giụựi thieọu
07/06/13
Lập Trình Hướng Đối Tượng Slide 5
C++ và C
Sự mở rộng thứ nhất của C++ so với C
Hàm xuất/nhập chuẩn
Tham chiếu
Chồng hàm, Tham số có giá trò ngầm đònh
Toán tử cấp phát và giải phóng vùng nhớ động
Sự mở rông thứ hai của C++ so với C là hỗ trợ
lập trình hướng đối tượng
07/06/13
Lập Trình Hướng Đối Tượng Slide 6
Haøm cin/cout/cerr
#include <iostream.h>
void main() {
int n;
double d;
char s[100];
cout << “Input an int, a double and a string.”;
cin >> n >> d >> s;
cout << “n = “ << n << “\n”;
cout << “d = “ << d << “\n”;
cout << “s = “ << s << “\n”;
}
07/06/13
Lập Trình Hướng Đối Tượng Slide 7
Tham chiếu
Tham chiếu là đòa chỉ vùng nhớ được cấp phát cho một
biến.
Ký hiệu & đặt trước biến hoặc hàm để xác đònh tham
chiếu của chúng
Ví dụ 1:
int x = 10, *px = &x, &y = x;
*px = 20; // *px = x = y = 20
y = 30; // y = x = *px = 30
Ví dụ 2:
int arrget(int *a, int i) { return a[i]; }
arrget(a, 1) = 1; // a[1] = 1;
cin >> arrget(a,1); // cin >> a[1];
Ví dụ 3:
void swap1(int x, int y) { int t = x; x = y; y = t; }
void swap2(int *x, int *y) { int *t = x; x = y; y = t; }
void swap3(int &x, int &y) { int t = x; x = y; y = t; }
07/06/13
Lập Trình Hướng Đối Tượng Slide 8
Choàng haøm
(Functions overloading )
int abs(int i);
long labs(long l);
double fabs(double d);
int abs(int i);
long abs(long l);
double abs(double d);
int abs(int i) { return abs(i);}
long abs(long l) { return labs(l);}
double abs(double d) { return fabs(d);}
void test_abs() {
int i = abs(10);// abs(int )
long l = abs(-10l); // abs(long )
double = abs(0.1l); // abs(double )
}
07/06/13
Lập Trình Hướng Đối Tượng Slide 9
Tham số ngầm đònh trong lời gọi hàm
void inc(int &a, int b = 1) {
a = a + b;
}
int x = 5, y = 10;
inc(x, 10); // x = x + 10
inc(y); // y = y + 1
Chú ý:
Các tham số có giá trò ngầm đònh phải đặt cuối danh
sách tham số, để tránh nhầm lẫn các giá trò.
Các giá trò ngầm đònh của tham số chỉ được khai
báo trong khuôn mẫu hàm
07/06/13
Lập Trình Hướng Đối Tượng Slide 10
Toán tử quản lý bộ nhớ động
Toán tử cấp phát bộ nhớ động new
int *x;
x = new int; // x = (int*)malloc(sizeof(int));
char *y;
y = new char[100]; // y =
(char*)malloc(100);
Toán tử giải phóng vùng nhớ động delete
delete x; // free(x);
delete y; // free(y);