Lập trình cấu trúcTư tưởng của phương pháp lập trình cấu trúc là tổ chức chương trình thành các chương trình con và theo quan điểm của phương pháp lập này thì chương trình là sự kết hợ
Trang 1LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Trang 2Tó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
Trang 3Tà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.
Trang 4LẬP TRÌNH HƯỚNG ĐỐI
TƯỢNG
Chương 1: Giới thiệu
Trang 5C++ 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
Trang 7Tham 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
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; }
Trang 8int 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 )
Trang 9Tham số ngầm định trong lời gọi hàm
void inc(int &a, int b = 1) {
Trang 10Toá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);
Trang 11 Nên khai báo hằng đối với:
Các đối tượng mà ta không định sửa đổi
const double PI = 3.14;
const Date openDate(18,8,2003);
Các tham số của hàm mà ta không định cho hàm đó sửa đổi
void printHeight(const LargeObj &LO)
{ cout << LO.height; }
Các hàm thành viên không thay đổi đối tượng chủ
int Date::getDay() const { return day; }
Trang 12Lập trình cấu trúc
Tư tưởng của phương pháp lập trình cấu trúc là
tổ chức chương trình thành các chương trình con
và theo quan điểm của phương pháp lập này thì
chương trình là sự kết hợp giữa cấu trúc dữ liệu
và giải thuật Điều này gây ra khĩ khăn:
Người lập trình phải cĩ kiến thức rất vững về cấu
trúc dữ liệu
Trang 13Lập trình cấu trúc
Chương trình = Cấu trúc dữ liệu + giải thuật
Giải thuật của chương trình phụ thuộc rất chặt
chẽ vào cấu trúc dữ liệu, do vậy chỉ cần một thay
đổi nhỏ ở cấu trúc dữ liệu cũng cĩ thể làm thay đổi giải thuật và phải viết lại chương trình
=>Như vậy, phương pháp này khơng thích hợp
cho dự án phần mềm lớn
Trang 14L p trình hướng đối tượng ậ
Lập trình hướng đối tượng đặt trọng tâm vào đối tượng,
yếu tố quan trọng trong quá trình phát triển chương trình
và khơng cho phép dữ liệu biến động tự do trong hệ thống
- Dữ liệu được gắn chặt với các hàm thành các vùng riêng
mà chỉ cĩ các hàm đĩ tác động lên và cấm các hàm bên ngồi truy nhập tới một cách tùy tiện
- Lập trình hướng đối tượng cho phép chúng ta phân tích
bài tốn thành các thực thể được gọi là các đối tượng và sau đĩ xây dựng các dữ liệu cùng các hàm xung quanh các đối tượng đĩ
- Các đối tượng cĩ thể tác động, trao đổi thơng tin với nhau thơng qua cơ chế thơng báo
Trang 15Các đặc điểm quan trọng của OO
Các lớp đối tượng - Classes
Trang 16Một số ngôn ngữ lập trình hướng đối tượng
Trang 17Trừu tượng hóa
Là cách nhìn đơn giản hóa về một đối tượng mà
trong đó chỉ bao gồm những đặc điểm được quan tâm và bỏ qua những chi tiết không cầm thiết
Trang 18Tính đóng gói
Tách rời các khía cạnh giao diện với bên ngoài
của đối tượng với chi tiết cài đặt bên trong
Tính đóng gói ngăn chặn khả năng một chương
trình trở nên quá phụ thuộc lẫn nhau dẫn tới hậu quả một sự thay đổi nhỏ có thể ảnh hưởng lớn đến toàn bộ hệ thống
Trong tiếp cận O.O khả năng kết hợp dữ liệu và
hành vi trong một thực thể duy nhất giúp cho tính đóng gói rõ ràng hơn và hiệu quả hơn
Trang 19Kết hợp dữ liệu và hành vi
Trong cách tiếp cận thủ tục cổ điển, hệ thống
được xây dựng trên hai sơ đồ phân cấp chằng chịt: sơ đồ phân cấp dữ liệu và sơ đồ phân cấp thủ tục, trong đó sự liên hệ giữa một loại dữ liệu và các thủ tục xử lý dữ liệu rất mờ nhạt, dẫn đến khó khăn trong việc sửa chữa, nâng cấp
trong tương lai
Cách tiếp cận O.O loại bỏ những nhược điểm kể
trên bằng cách kết hợp dữ liệu và phần thủ tục xử lý dữ liệu vào trong một thực thể duy nhất, hệ thống trở thành một sơ đồ phân cấp duy nhất các lớp đối tượng
Trang 20Đối tượng và lớp
Ta định nghĩa một đối tượng là một "cái gì đó"
có ý nghĩa cho vấn đề ta quan tâm Đối tượng phục vụ hai mục đích: Giúp hiểu rõ thế giới thực và cung cấp cơ sở cho việc cài đặt trong máy
Mỗi đối tượng có một nét nhận dạng để phân
biệt nó với các đối tượng khác Nét nhận dạng mang ý nghĩa các đối tượng được phân biệt với nhau do sự tồn tại vốn có của chúng chứ không phải các tính chất mà chúng có
Trang 21Đối tượng và lớp
Các đối tượng có các đặc tính tương tự nhau
được gom chung lại thành lớp đối tượng Ví dụ
Người là một lớp đối tượng Một lớp đối tượng
được đặc trưng bằng các thuộc tính, và các hoạt động (hành vi).
Một thuộc tính (attribute) là một giá trị dữ
liệu cho mỗi đối tượng trong lớp Tên, Tuổi, Cân nặng là các thuộc tính của Người.
Một thao tác (operation) là một hàm hay một
phép biến đổi có thể áp dụng vào hay áp dụng bởi các đối tượng trong lớp
Trang 22Đối tượng và lớp
Cùng một thao tác có thể được áp dụng cho
nhiều lớp đối tượng khác nhau, một thao tác như vậy được gọi là có tính đa dạng (polymorphism)
Mỗi thao tác trên mỗi lớp đối tượng cụ thể
tương ứng với một cài đặt cụ thể khác nhau
Một cài đặt như vậy được gọi là một phương thức (method).
Một đối tượng cụ thể thuộc một lớp được gọi
là một thể hiện (instance) của lớp đó Joe
Smith, 25 tuổi, nặng 58kg, là một thể hiện của lớp người
Trang 23Sơ đồ đối tượng
Ta dùng sơ đồ đối tượng để mô tả các lớp đối
tượng Sơ đồ đối tượng bao gồm sơ đồ lớp và
sơ đồ thể hiện.
Sơ đồ lớp mô tả các lớp đối tượng trong hệ
thống, một lớp đối tượng được diễn tả bằng một hình chữ nhật có 3 phần: phần đầu chỉ tên lớp, phần thứ hai mô tả các thuộc tính và phần thứ ba mô tả các thao tác của các đối tượng trong lớp đó
Trang 24Sơ đồ lớp và sơ đồ thể hiện
Sinh viên Họ tên
Năm sinh Mã số
Điểm TB
Đi học
Đi thi Phân loại
(Sinh viên) Nguyễn Văn A 1984
0610234T 9.2
Trang 25Một số thuật ngữ hướng đối tượng
OOM (Object Oriented Methodology): Phương pháp luận hướng đối tượng
OOA (Object Oriented Analysis): Phân tích hướng
đối tượng
OOD: Object Oriented Design (Thiết kế hướng đối
tượng)
OOP: Object Oriented Programming (lập trình
hướng đối tượng)
Inheritance: Kế thừa
Polymorphism: Đa hình
Encapsulation: Tính đóng gói