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)
Chương 1
Tổng quan về Lập trình hướng đối tượng
chương trình trong tương lai. Hợp ngữ (
Assembly language
) được tạo ra cho phép
viết các chương trình dài hơn.
•
Cuối thập niên 1950 và đầu thập niên 1960, các ngôn ngữ cấp cao đã ra đời như
FORTRAN (
FORmula TRANslator
) dùng cho các tính toán về toán học và
COBOL (
COmmon Business Oriented Language
) dùng trong lónh vực thương
mại. Ngôn ngữ BASIC (
Beginners All-purpose Symbolic Instructional Code
)
được phát triển lần đầu tiên trên các máy vi tính (micro-computer) nhằm giúp
các sinh viên dễ học và tiếp cận với các chương trình máy tính.
Các
ngôn ngữ lập trình có cấu trúc
như ALGOL và PASCAL ra đời giúp loại bỏ
các nhược điểm như rối loạn mã khó quản lý khi số lệnh trong chương trình dài
hàng ngàn dòng.
•
Đầu thập niên 1970 ngôn ngữ C (do Denis Ritchie) được ra đời tại AT&T Bell
Labs, USA. Ngôn ngữ C tổng hợp các sức mạnh của các ngôn ngữ lập trình cấu
trúc khác, dể hiểu, dể học và trở nên phổ biến với mọi người. Tháng 12/1989,
ngôn ngữ C được ANSI (American National Standards Insitute) chuẩn hoá và
Một chương trình lớn được chia thành nhiều chương trình con cho nhiều nhóm lập
trình khác nhau cùng làm việc, với số dòng lệnh đến vài chục ngàn dòng, giúp dễ
dàng bảo trì và phát triển phần mềm. Global Data Global Data
Function-1 Function-2 Function-3
Local Data Local Data Local Data
Hình 1.2
Quan hệ giữa dữ liệu và hàm trong lập trình hướng-thủ tục
•
Đầu thập niên 1980, ngôn ngữ C++ (
dựa trên ngôn ngữ C, Bjarne Stroustrup
giới thiệu
) và ngôn ngữ Smalltalk (
Xerox PARK
) được phát triển nhằm hổ trợ
cho phương pháp lập trình hướng đối tượng (
Object Oriented Programming
),
phương pháp này đã được đề xuất từ cuối thập niên 1960 với ngôn ngữ Simula.
C++ được chuẩn hoá vào tháng 11/1997 và một chuẩn ANSI/ISO đã công bố.
Chương 1
chương trình ứng dụng trên đó là những minh chứng cho phương pháp này.
Object A Object B
Data Data Functions Functions Object C Functions Data
Hình 1.3
Tổ chức của dữ liệu và các phương thức trong lập trình hướng-đối tượng
Các đặc tính quan trọng trong 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
6
•
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
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 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
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
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 <iostream.h>
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: ";
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 <iostream.h>
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
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 <iostream.h>
// 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;
}
#include <iostream.h>
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 << "/";
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.