Phép toán nhập
#include <iostream.h>
main(){
int age;
cout << "When were you born? ";
cin >> age;
cout << "After 10 years, you will be "
<< 2008 – age + 10 << "years old\n"
return 1;
}
13 trang |
Chia sẻ: thienmai908 | Lượt xem: 1315 | Lượt tải: 0
Nội dung tài liệu Lập trình hướng đối tượng Phần 1, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
11
Lập trình hướng đối tượng
(Object – Oriented Programming)
PGS. TS. Trần Văn Lăng
KHOA CÔNG NGHỆ THÔNG TIN
TRƯỜNG ĐẠI HỌC LẠC HỒNG
Email: lang@lhu.edu.vn
2
Mục tiêu
Phương pháp viết chương trình hướng về
với các đối tượng
Sử dụng ngôn ngữ lập trình hướng đối
tượng C++
3
Nội dung
Một số khái niệm chung
Ngôn ngữ C++
Cách thức xây dựng lớp
Vấn đề tạo đối tượng
Kiểu dữ liệu lớp trong C++
Tính thừa kế
Tính đa hình
4
Giáo trình
Trần Văn Lăng, Lập
trình hướng đối
tượng sử dụng C++,
Nxb. Thống kê,
2004.
25
Tài liệu tham khảo
John Hubbard, Programming with C++,
McGraw-Hill, 1996.
Bjarne Stroustrup, The C++ Programing
Language, Addison-Wesley, 1997
6
Chương 1
Khái niệm về lập trình
hướng đối tượng
7
Lập trình hướng đối tượng là gì
Object-Oriented Programming – OOP
Lập trình cấu trúc: Procedural
Programming
Phân công việc những việc nhỏ hơn
Là các chương trình con
Thiết kế top-down
Chương trình = Dữ liệu + Thuật toán
8
Lập trình hướng đối tượng
Từ những đối tượng, sự vật, sự kiện, ... tạo
nên chương trình
Thiết kế bottom-up
Đối tượng = Dữ liệu + Hành vi
= +
39
Sự khác biệt
Theo thủ tục
Rút tiền (withdraw), gửi tiền
(deposit), chuyển tiền (transfer)
Hướng đối tượng
Khách hàng (customer), tiền
(money), tài khoản (account)
10
Đối tượng là gì ?
Một đối tượng như là một hộp đen,
mà chi tiết bên trong được dấu kín
Các đối tượng giao tiếp với nhau
thông qua việc truyền các thông
điệp (messages)
Thông điệp được nhận bởi các
hành vi của đối tượng
11
Đối tượng
Lan Cúc TrúcMai
girlclassobject
12
Như vậy,
Trong đối tượng bao gồm:
Hành vi (behavior), và
Dữ liệu (data)
413
Hành vi của đối tượng là gì?
Thao tác (operation)
Phương thức (method)
Hàm (function)
Thủ tục (procedure)
14
Dữ liệu
Thông tin (information)
Tính chất (property)
Thuộc tính (attribute)
Trường (field)
15
Những gì là đối tượng
Vật có thể sờ mó được
(Tangible things)
Vai trò (Roles)
Sự việc xảy ra, tình tiết
(Incidents)
Sự tương tác
(Interactions)
Sự mô tả (Specifications)
Như là xe hơi, máy in, ...
Công nhân, người chủ, ...
Chuyến bay, tràn số, ...
Ký kết thỏa ước, mua
hàng, ...
Màu, hình dạng
16
Một số đặc tính
All information in an object-oriented
system is stored within its objects and can
only be manipulated when the objects are
ordered to perform operations
Ivar Jacobson
517
Như vậy,
Tính đóng gói (encapsulation)
Dữ liệu và thao tác được nhóm lại cùng nhau
Account
Withdraw
Deposit
Transfer
Thực chất là sự
ghép chung những
hiểu biết về thế giới
thực Có sự đồng
nhất giữa dữ liệu và
thao tác trên dữ
liệu
18
Tính thừa kế (inheritance)
Tạo ra một kiểu dữ liệu mới
từ kiểu đã có
Nhằm sử dụng lại, và bổ
sung những gì cần thiết
Thực chất là sự phân lớp
(classification) trong việc
thiết kế hệ thống theo
hướng đối tượng
19
Theo ngôn ngữ lớp, sự thừa kế có nghĩa là một
lớp thừa kế các đặc tính của lớp khác.
Đây chính là quan hệ “là một” (“is a”)
A car is a vehicle
A teacher is a person
A dog is an animal
20
Tính đa hình (polymorphism)
Nhiều đối tượng cùng chia sẻ đặc tính
chung, nhưng có những tác động khác
nhau.
Có cùng yêu cầu, nhưng mỗi đối tượng có
đáp ứng khác nhau.
Thực chất là tính đa dạng (many form)
Để hiện thực được tính đa hình, ngôn ngữ
đối tượng có đặc tính như overload,
override.
621
Overloaded và Overridden methods ?
Overloaded methods:
Nhằm cung cấp các dạng khác nhau của hành
vi, nhưng vẫn có cùng tên gọi.
Overridden methods:
Hiện thực lại hành vi đã có của tổ tiên
Phải có cùng tên và trùng mọi yếu tố tạo nên
hành vi này.
22
Ngôn ngữ lập trình hướng đối tượng
SmallTalk (Palo
Alto Research Center
- PARC)
Eiffel
Object Pascal
C++
Java
23
Programming Languages Phylogeny
Fortran (1954)
Algol (1958)
LISP (1957)
Scheme (1975)
CPL (1963), U Cambridge
Combined Programming Language
BCPL (1967), MIT
Basic Combined Programming Language
B (1969), Bell Labs
C (1970), Bell Labs
C++ (1983), Bell Labs
Java (1995), Sun
Objective C
24
Viết chương trình
Có 2 bước cơ bản để viết chương trình
theo hướng đối tượng:
Tạo các lớp: Tạo ra, mở rộng hoặc sử dụng
lại các kiểu dữ liệu trừu tượng.
Tạo tương tác giữa các đối tượng: Tạo các
đối tượng từ các lớp và xác định mối quan hệ
giữa chúng.
725
Chương 2
Ngôn ngữ C++
26
Khái quát về ngôn ngữ C++
Kiểu dữ liệu cơ bản, phép toán
Các cấu trúc điều khiển
Hàm
Mảng và mẫu tin
Con trỏ và tham chiếu
Nhâp xuất và tập tin
27
Khái quát về ngôn ngữ C++
1970, Denis Ritchie (Bell Lab.) phát triển
ngôn ngữ C.
Dạng System Implementation Language (SIL)
Phát triển từ ngôn ngữ CPL (Combined
Programming Language), BCPL (Basic CPL) và
ngôn ngữ B.
Brian Kernighan, D. Ritchie (1978), The C
Programming Language, Prentice-Hall
28
Đầu 1980, Bjarne Stroustrup phát triển
ngôn ngữ C++
Trên sơ sở ngôn ngữ Simula 67
Tương thích hoàn toàn với C
Mở rộng C với cấu trúc OOP
Tên gọi “C with Classes”
Năm 1983, Ricj Mascitti đề nghị C++
Bjarne Stroustrup (1985), The C++
Programming Language, Prentice-Hall
829
Cấu trúc chương trình C++
#include
// Output string into display
main()
{
cout << "Hello, World.\n"
return 1;
}
30
Biến, đối tượng
Có thể khai báo ở bất kỳ vị trí nào (trước
khi sử dụng)
Khai báo biến còn mang ý nghĩa thực thi câu
lệnh, tạo đối tượng
31
Viết chương trình
Trên môi trường Windows, có thể sử dụng
Visual C++, hoặc DJGPP, v.v...
Trên Linux, có thể sử dụng GNU C++
32
Dùng Visual C++ 6.0
Chọn chức năng
File/New/Projects
Đưa vào tên của
Project
Và vị trí lưu trữ
trên đĩa
Lưu ý, chọn
Win32 Console
Application
933
Sau khi đưa vào
Project Name và
Location, hộp hội
thoại xuất hiện
Chọn Finish
34
Đưa các tập tin
nguồn vào để sử
dụng, bằng cách
Project/Add to
Project/New/Files.
Chọn C++ Source
file
Đưa vào tên file
35
Sau khi chọn, có màn hình để soạn thảo tập tin
One.cpp.
Vào menu Build để biên dịch và thực thi chương
trình.
36
Một số phép toán
Phép toán nhập
#include
main(){
int age;
cout << "When were you born? ";
cin >> age;
cout << "After 10 years, you will be "
<< 2008 – age + 10 << "years old\n"
return 1;
}
10
37
Phép toán gán
int y, x;
y = (x = 100);
Hay
y = x = 100;
38
int n, m = 10;
n = m++;
cout << n++ << endl;
int n,m = 10;
n = ++m;
cout << ++n << endl;
int n, m = 10;
n = m;
m = m + 1;
cout << n << endl;
n = n + 1;
int n,m = 10;
m = m + 1;
n = m;
n = n + 1;
cout << n << endl;
Phép toán tăng, giảm
39
Phép toán điều kiện
if ( a > 100.0 )
m = 5;
else m = a > 100.0 ? 5 : a + 10;
m = a + 10;
if ( a > b )
max = a; max = a > b ? a : b;
else
max = b;
40
Độ ưu tiên phép toán
n--- nt -- nt -16Giảm sau--
n++1Phải sang16Tăng sau++
int(ch)- nt -16Chuyển đổi kiểu()
- nt -16Gọi hàm()
a[i]- nt -- nt -16Truy cập chỉ số[]
obj->n- nt -- nt -16Truy cập đến thành phần của con
trỏ đối tượng (hoặc mẩu tin)
->
obj.n- nt -- nt -16Truy cập thành phần của đối
tượng hay mẩu tin
.
NAME::x2Trái sang17Phân định thành phần của lớp::
::x1Phải sang17Truy cập biến toàn cục::
Ví dụToán
hạng
Thứ tự trong
biểu thức
Ưu tiênMô tảPhép
toán
11
41
&x- nt -- nt -15Truy cập địa chỉ&
*ptr- nt -Phải sang15Lấy giá trị tại địa chỉ*
-n- nt -- nt -15Chuyển thành âm-
+n- nt -- nt -15Chuyển thành dương+
!q1- nt -15Phủ định!
~s- nt -- nt -15Bitwise NOT~
--n- nt -- nt -15Giảm trước--
++n- nt -- nt -15Tăng trước++
sizeof(a)- nt -- nt -15Kích thước của đối tượng
hoặc của kiểu dữ liệu
sizeof
Ví dụToán
hạng
Thứ tự trong
biểu thức
Ưu
tiên
Mô tảPhép
toán
42
m-n- nt -- nt -12Trừ-
m+n- nt -- nt -12Cộng+
m%n- nt -- nt -13Chia lấy phần dư%
m/n- nt -- nt -13Chia/
a*b- nt -- nt -13Nhân*
p->*ptr- nt -- nt -14Truy cập đến thành phần của con
trỏ đối tượng (hoặc mẩu tin)
->*
x.*ptr2Trái sang14Truy cập đến thành phần của đối
tượng hay của mẩu tin
.*
(int)ch- nt -- nt -15Chuyển đổi kiểu()
delete p- nt -- nt -15Thu hồi bộ nhớdelete
new p- nt -- nt -15Cấp phát bộ nhớnew
Ví dụToán
hạng
Thứ tự trong
biểu thức
Ưu
tiên
Mô tảPhép
toán
43
p || q- nt -- nt -4Phép toán OR||
p && q- nt -- nt -5Phép toán AND&&
m | n- nt -- nt -6Bitwise OR|
m ^ n- nt -- nt -7Bitwise XOR^
m & n- nt -- nt -8Bitwise AND&
x != y2- nt -9Không bằng!=
x == y- nt -- nt -9So sánh bằng==
x >= y- nt -- nt -10Lớn hơn hay bằng>=
x > y- nt -- nt -10Lớn hơn>
x <= y- nt -- nt -10Nhỏ hơn hay bằng<=
x < y- nt -- nt -10Nhỏ hơn<
- nt -- nt -11Bit shift right>>
- nt -- nt -11Bit shift left<<
Ví dụToán hạngThứ tự trong
biểu thức
Ưu
tiên
Mô tảPhép
toán
44
++m,--n2Trái sang0Dấu phẩy,
throw(20)1- nt -1Throw exceptionthrow
n >>= 1- nt -- nt -2Gán Bit shift right>>=
n <<= 1- nt -- nt -2Gán Bit shift left<<=
n |= mask- nt -- nt -2Gán Bitwise OR|=
n ^= mask- nt -- nt -2Gán Bitwise XOR^=
n &= mask- nt -- nt -2Gán Bitwise AND&=
n %= 2- nt -- nt -2Gán modulo%=
n /= 5- nt -- nt -2Gán chia/=
n *= 2- nt -- nt -2Gán nhân*=
n -= 10- nt -- nt -2Gán trừ dồn-=
n += 10- nt -- nt -2Gán cộng dồn+=
n = 10- nt -- nt -2Gán=
q ? x : y- nt -Phải sang3Điều kiện?:
Ví dụToán
hạng
Thứ tự trong
biểu thức
Ưu
tiên
Mô tảPhép
toán
12
45
Cấu trúc điều khiển
Tuần tự
Cấu trúc điều kiện
Cấu trúc lặp
46
Cấu trúc điều kiện, dùng câu lệnh:
if ( condition ) st1
else st2
switch ( expression ){
case value1: st1;
case value2: st2;
...
default: stn;
}
47
Lưu ý, trong C/C++ không có kiểu luận lý,
nên các biểu thức có giá trị nguyên.
Giá trị khác không, mang ý nghĩa đúng.
Ngược lại, mang ý nghĩa sai
48
Cấu trúc lặp có các dạng thể hiện:
while (condition ) st;
do st while (condition );
for ( init; condition; update) st;
Ngoài ra,
break: để thoát khỏi chu trình lặp
continue: chuyển qua lần lặp kế tiếp
13
49
Yêu cầu
Sử dụng được một trình biên dịch C/C++
nào đó để viết chương trình.
Viết được chương trình cơ bản dùng các
cấu trúc điều khiển trên các kiểu dữ liệu
cơ bản
Các file đính kèm theo tài liệu này:
- jyksagupierh'iufgoasidu[ps (1).pdf