Bài giảng Lập trình hướng đối tượng - Chương 1: Tổng quan về lập trình hướng đối tượng

Vài nét về sự phát triển của các ngôn ngữ lập trình

Các khái niệm cơ bản của lập trình hướng đối tượng

• Lớp và Đối tượng (Class & Object)

• Thông báo (Message)

• Tính đóng gói (Encapsulation)

• Tính kế thừa (Inheritance)

• Tính đa hình (Polymorphism)

Tổng quan về ngôn ngữ lập trình hướng đối tượng C++

• Xuất/Nhập (Console I/O)

• Chú thích (Comment)

• Khái niệm về quá tải hàm (Function Overloading)

• Các từ khoá (Keywords)

 

pdf15 trang | Chuyên mục: C/C++ | Chia sẻ: tuando | Lượt xem: 405 | Lượt tải: 0download
Tóm tắt nội dung Bài giảng Lập trình hướng đối tượng - Chương 1: Tổng quan về lập trình hướng đối tượng, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
ùc đối tượng là các thực thể (entities) cơ sở khi chạy chương trình (run-time) trong 
một hệ thống hướng đối tượng. 
Chúng có thể biểu diễn một con người, một vị trí, một tài khoản ngân hàng, một 
bảng dữ liệu hoặc bất kỳ một đề mục (item) nào mà chương trình cần dùng để thực 
hiện các tác vụ (tasks). 
 Object : SINHVIEN SINHVIEN 
 DATA 
 Tên Nhập() 
 Ngày sinh 
 Điểm 
 .... TrungBình() 
 FUNCTIONS 
 Nhập() 
 TrungBình() HiểnThị() 
 HiểnThị() 
 (a) (b) 
 Hình 1.4 Hai cách biểu diễn một đối tượng 
Bên trong một chương trình có thể viết các dòng lệnh (instructions) để tạo ra các đối 
tượng. Để máy tính có thể tạo ra đối tượng, chúng ta cần phải cung cấp một định 
nghiã, gọi là lớp. 
Lớp là một dạng khuôn (mould , template) qua đó chương trình máy tính dùng để tạo 
ra các đối tượng. 
Một đối tượng được gọi là một thể hiện (instance) của một lớp. Một đối tượng là một 
thể hiện chính xác của một lớp. 
Khi định nghiã một lớp, còn được xem là tạo ra một kiểu dữ liệu mới từ người dùng. 
Chương 1 Tổng quan về Lập trình hướng đối tượng 
7 
Khi khai báo một đối tượng, có nghiã là tạo ra một biến có kiểu dữ liệu là một lớp. 
Các thành viên (members) của một lớp bao gồm dữ liệu (data) và các hàm hay 
phương thức (function, method) 
Nguyên 
SINHVIEN 
 Hanh 
 Class Instances Objects 
Hình 1.5 Lớp SINHVIEN và 2 đối tượng Nguyên & Hanh 
2/ Thông báo (Message) 
Để yêu cầu một đối tượng thực thi một tác vụ, cần gởi một thông báo đến nó. 
Chẳng hạn, chúng ta gởi một thông báo new đến lớp SINHVIEN để tạo ra một thể 
hiện (một đối tượng SINHVIEN), sau đó gởi một thông báo Nhập() đến đối tượng 
của lớp SINHVIEN để nhập các dữ liệu về sinh viên. 
3/ Tính đóng gói (Encapsulation) 
Việc tổ chức dữ liệu (data) và các hàm (function) hay phương thức (method) trong 
một đơn vị duy nhất (gọi là lớp) được xem là tính chất đóng gói. 
Đóng gói dữ liệu (Data Encapsulation) là một trong những đặc tính nổi bật của một 
lớp. Dữ liệu không thể truy xuất được ở bên ngoài lớp và chỉ những phương thức bên 
trong lớp đó mới có thể truy xuất được chúng. 
Trong một đối tượng, dữ liệu và hàm hoặc cả hai có thể là riêng của đối tượng đó 
hoặc chung. 
SINHVIEN 
SINHVIEN 
Chương 1 Tổng quan về Lập trình hướng đối tượng 
8 
Dữ liệu và hàm riêng là thuộc về đối tượng đó và chỉ được truy cập bởi các thành 
phần bên trong của đối tượng. 
Với dữ liệu và hàm chung, các bộ phận khác của chương trình có thể truy cập đến 
chúng. 
Những chức năng này cung cấp một giao tiếp giữa dữ liệu của đối tượng và chương 
trình. Sự cách ly này của dữ liệu từ việc truy xuất trực tiếp bởi chương trình được gọi 
là sự che dấu dữ liệu (data hiding) 
4/ Tính kế thừa (Inheritance) 
Tính kế thừa là quá trình một đối tượng có thể có được các tính chất của một đối 
tượng khác. Nghiã là, một đối tượng có thể kế thừa các tính chất tổng quát để bổ 
sung thêm các đặc điểm của nó. 
Tính kế thừa hổ trợ khái niệm phân loại theo thứ bậc (hierarchical classification) , 
đóng vai trò quan trọng trong lập trình hướng đối tượng. 
Hình 1.6 Hệ thống thứ bậc kế thừa (đơn giản) trong Học viện 
Lớp cơ sở (base class) : “Học Viện Công nghệ Bưu Chính –Viễn Thông” 
Lớp dẫn xuất (derived class) : “Khối Sinh viên” , 
 “Khối Giáo viên” , 
 “Khối Nhân viên” 
5/ Tính đa hình (Polymorphism) 
Học Viện Công nghệ Bưu Chính –Viễn Thông 
Khối Sinh viên Khối Giáo viên Khối Nhân viên 
Chương 1 Tổng quan về Lập trình hướng đối tượng 
9 
Tính đa hình là tính chất cho phép một tên (đối tượng, hàm, toán tử) được dùng cho 
hai hay nhiều mục đích khác nhau có quan hệ về phương diện kỹ thuật. 
Tính đa hình cho phép thực hiện quá tải hàm (function overloading) hay quá tải toán 
tử (operator overloading) 
Tính đa hình thể hiện ý tưởng "một giao diện cho nhiều phương thức". 
III/ Tổng quan về ngôn ngữ lập trình hướng đối tượng C++ 
Do C++ được xây dựng từ ngôn ngữ C với lớp, nên mọi phần tử của C đều được chứa 
trong C++ . 
Các hàm căn bản của C++ đều chứa trong thư viện iostream.h 
1/ Xuất/Nhập trong C++ (Console I/O) 
Từ khoá cout, cin là các stream được định nghiã trước trong iostream.h, tự động liên 
kết với console khi chương trình C++ bắt đầu chạy. 
cout tương đương với stdout, và cin tương đương với stdin trong ngôn ngữ C. 
Cú pháp 
 cout << expression ; // xuất nội dung của biểu thức ra màn hình 
 cin >> variable ; // nhập một giá trị từ bàn phím vào biến variable 
với << toán tử xuất 
 >> toán tử nhập 
 expression biểu thức C++ bất kỳ 
variable biến 
Ví dụ 1.1 
Chương 1 Tổng quan về Lập trình hướng đối tượng 
10 
#include 
int main() 
{ 
 int i = 10, j = 20; double d = 99.101; 
 cout << "Here are some values: "; 
 cout << i; 
 cout << ' '; 
 cout << j; 
 cout << ' '; 
 cout << d; 
 return 0; 
} 
Ví dụ 1.2 Xuất nhiều hơn một giá trị trong một biểu thức nhập/xuất đơn 
#include 
int main() 
{ 
 int i, j; double d; 
 i = 10; 
 j = 20; 
 d = 99.101; 
 cout << "Here are some values: "; 
 cout << i << ' ' << j << ' ' << d; 
 return 0; 
} 
Ví dụ 1.3 Khi nhập, các mục riêng lẻ phải cách nhau khoảng trắng. 
Với chuổi, toán tử nhập sẽ ngừng khi gặp ký tự khoảng trắng đầu tiên. 
#include 
Chương 1 Tổng quan về Lập trình hướng đối tượng 
11 
int main() 
{ 
 int i; float f; char s[80]; 
 cout << "Enter an integer, float, and string: "; 
 cin >> i >> f >> s; 
 cout << "Here's your data: "; 
 cout << i << ' ' << f << ' ' << s; 
 return 0; 
} 
Ví dụ 1.4 Với toán tử nhập >> , mọi dữ liệu nhập được đưa vào bộ đệm (buffer) 
cho đến khi nhấn phím ENTER. 
#include 
int main() 
{ 
 char ch; 
 cout << "Enter keys, x to stop.\n"; 
 do { 
 cout << " : "; 
 cin >> ch; 
 } while (ch != 'x'); 
 return 0; 
} 
2/ Chú thích (comment) trong C++ 
• Chú thích một dòng lệnh // ... 
Ví dụ 1.5 Xác định một số nguyên là số chẵn hay lẻ 
Chương 1 Tổng quan về Lập trình hướng đối tượng 
12 
#include 
int main() 
{ 
 int num; // this is a C++, single-line comment 
 // read the number 
 cout << "Enter number to be tested: "; 
 cin >> num; 
 // see if even or odd 
 if((num%2)==0) cout << "Number is even\n"; 
 else cout << "Number is odd\n"; 
 return 0; 
} 
• Chú thích nhiều dòng lệnh /* ... */ 
Ví dụ 1.6 
/* This is a multiline comment 
 inside of which // is nested a single-line comment. 
 Here is the end of the multiline comment. 
*/ 
3/ Khái niệm về quá tải hàm (Function Overloading) 
Hai hoặc nhiều hàm dùng chung một tên. Có 3 loại : 
• Cùng số đối số 
• Khác số đối số 
• Khác số đối số và khác kiểu dữ liệu 
Mục đích : 
• giúp giảm bớt tính phức tạp của chương trình bằng cách cho phép các phép toán 
có liên hệ được tham chiếu cùng một tên. 
Chương 1 Tổng quan về Lập trình hướng đối tượng 
13 
• đạt được tính đa dạng thời gian biên dịch. 
Ví dụ 1.7 Cùng số đối số. 
Trình biên dịch sẽ chọn phiên bản thích hợp của hàm để gọi. 
#include 
// Overload abs() three ways 
int abs(int n) ; 
long abs(long n) ; 
double abs(double n) ; 
int main() 
{ 
 cout << "Absolute value of -10: " << abs(-10) << "\n\n"; 
 cout << "Absolute value of -10L: " << abs(-10L) << "\n\n"; 
 cout << "Absolute value of -10.01: " << abs(-10.01) << "\n\n"; 
 return 0; 
} 
// abs() for ints 
int abs(int n) 
{ 
 cout << "In integer abs()\n"; 
 return n<0 ? -n : n; 
} 
// abs() for longs 
long abs(long n) 
{ 
 cout << "In long abs()\n"; 
 return n<0 ? -n : n; 
} 
// abs() for doubles 
double abs(double n) 
Chương 1 Tổng quan về Lập trình hướng đối tượng 
14 
{ 
 cout << "In double abs()\n"; 
 return n<0 ? -n : n; 
} 
Ví dụ 1.8 Khác số đối số và khác kiểu dữ liệu 
#include 
void date(char *date); // date as a string 
void date(int month, int day, int year); // date as numbers 
int main() 
{ 
 date("8/23/99"); 
 date(8, 23, 99); 
 return 0; 
} 
// Date as string. 
void date(char *date) 
{ 
 cout << "Date: " << date << "\n"; 
} 
// Date as integers. 
void date(int month, int day, int year) 
{ 
 cout << "Date: " << month << "/"; 
 cout << day << "/" << year << "\n"; 
} 
Ví dụ 1.9 Hai hàm chỉ khác nhau ở kiểu dữ liệu trả về làm cho trình biên dịch 
không thể lựa chọn kiểu đúng để gọi. 
Chương 1 Tổng quan về Lập trình hướng đối tượng 
15 
// This is incorrect and will not compile. 
int f1(int a); 
double f1(int a); 
int main() 
{ 
 f1(10); // which function does the compiler call??? 
 return 0; 
} 
. 
. 
. 
4/ Các từ khoá (keywords) trong C++ 
Ngoài các từ khoádùng trong ngôn ngữ C, ANSI C++ sử dụng các từ khoá thường 
dùng như sau : 
asm delete new protected throw ... 
bool false operator public true ... 
catch friend overload template try ... 
class inline private this virtual ... 
Ý nghiã của chúng sẽ được lần lượt giải thích và minh hoạ trong các chương sau của 
bài giảng. 

File đính kèm:

  • pdfbai_giang_lap_trinh_huong_doi_tuong_tap_1_tong_quan_ve_lap_t.pdf