GIỚI THIỆU MÔN HỌC
LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
-
Thời lượng 30 tiết lý thuyết (2 chỉ), 30 tiết thực hành (1 chỉ)
-
Thi cuối kỳ lý thuyết: Trắc nghiệm (100%)
-
thực hành: làm bài tập lớn + báo cáo+ điểm danh (100%)
-
Tài liệu tham khảo:
1. Lập trình hướng đối tượng với C++, Lê Đăng Hưng, Tạ Tuấn Anh…
2. C how to program, Deitel, International edition, Prentice Hall, 2004
GIỚI THIỆU MÔN HỌC
LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
-
Nội dung môn học
1. Lập trình hướng đối tượng – các khái niệm cơ bản
2. Các mở rộng của C++ so với C
3. Đối tượng và lớp
4. Định nghĩa toán tử trên lớp
5. Kỹ thuật thừa kế
6. Khuôn hình
CHƯƠNG 1:
CÁC KHÁI NIỆM CƠ BẢN
1. LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VÀ LẬP TRÌNH CẤU TRÚC
Lập trình cấu trúc:
Chương trình = Cấu trúc dữ liệu + giải thuật
Lập trình hướng đối tượng (Object oriented programming)
Đặt trọng tâm vào đối tượng
CHƯƠNG 1:
CÁC KHÁI NIỆM CƠ BẢN
Trong lập trình ta có thể coi lớp như một kiểu dữ liệu, các đối tượng là biến có kiểu của lớp
Đóng gói
-
Đóng gói về chức năng: sử dụng các hàm hay thủ tục mà không cần biết đến nội dung bên trong nó,
người dùng chỉ cần biết chức năng và các tham số cần truyền vào để gọi hàm
-
Đóng gói dữ liệu: với mỗi đối tượng người dùng không thể truy cập trực tiếp vào các thành phần dữ
liệu của nó mà phải thông qua các phương thức
CHƯƠNG 1:
CÁC KHÁI NIỆM CƠ BẢN
1.LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VÀ LẬP TRÌNH CẤU TRÚC
Thừa kế (inheritance)
Kế thừa trong lập trình hướng đối tượng cho phép định nghĩa một lớp mới trên cơ sở lớp đã tồn tại và
bổ sung thêm các phương thức hay thành phần dữ liệu mới
Đa hình (polymorphime)
Các đối tượng khác nhau ứng xử với cùng một hành vi là khác nhau
Ví dụ:
- việc đi của xe đạp và xe hơi
- Tính diện tích của tam giác và đa giác
CHƯƠNG 1:
CÁC KHÁI NIỆM CƠ BẢN
1.LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VÀ LẬP TRÌNH CẤU TRÚC
Các ưu điểm của LTHĐT
-
Tính thừa kế
-
Xây dựng phần mềm theo quy trình không còn dựa chủ yếu vào kinh nghiệm -> rút ngắn thời gian, tăng
năng suất
-
Tính đóng gói tăng tính an toàn
Quản lý được độ phức tạp của chương trình
CHƯƠNG 2:
NHỮNG MỞ RỘNG CỦA C++
1. CÁC ĐIỂM KHÔNG TƯƠNG THÍCH GIỮA C++ VÀ ANSI C
1.2 Khai báo hàm nguyên mẫu
-
Tronc C chỉ cần khai báo tên hàm và giá trị trả về, không cần danh sách kiểu
của các tham số
-
C++ khai báo hàm nguyên mẫu
Với C++ một lời gọi hàm chỉ được chấp nhận khi trình biên dịch biết được kiểu
của các tham số, kiểu của giá trị trả về
CHƯƠNG 2:
NHỮNG MỞ RỘNG CỦA C++
1. CÁC ĐIỂM KHÔNG TƯƠNG THÍCH GIỮA C++ VÀ ANSI C
1.2 Khai báo hàm nguyên mẫu
Chuyển kiểu tự động theo nguyên tắc sau:
char -> int ->longint -> float ->double
Ví dụ:
double ham(int , double) /* khai báo hàm ham*/
….
main()
{
int n;
char c;
double x, x1, x2,x3;
x1=ham(n,x); /* không có chuyển đổi kiểu*/
x2=ham(c,x); /* có chuyển đổi kiểu từ char->int*/
x3=ham(x,n); /* có chuyển đổi kiểu từ double ->int và từ int thành double */
….
NHỮNG MỞ RỘNG CỦA C++
2. CÁC KHẢ NĂNG RA VÀO MỚI CỦA C++
2.1 Ghi dữ liệu ra thiết bị chuẩn cout
Sử dụng cout và << đưa ra các giá trị khác nhau
Ví dụ 2 :
#include <iostream.h>
void main()
{
int n=25;
cout << “value :“;
cout << n;
}
Ví dụ 3 :
#include <iostream.h>
void main()
{
int n=25;
cout << “value :“<<n ;
}
CHƯƠNG 2:
NHỮNG MỞ RỘNG CỦA C++
2. CÁC KHẢ NĂNG RA VÀO MỚI CỦA C++
2.1 Các khả năng viết ra trên cout
Có thể sử dụng toán tử << cùng với cout để đưa ra màn hình giá trị của một biểu
thức có các kiểu sau :
Kiểu cơ sở (char, int, float, double)
Xâu ký tự (char *)
CHƯƠNG 2:
NHỮNG MỞ RỘNG CỦA C++
2. CÁC KHẢ NĂNG RA VÀO MỚI CỦA C++
2.2 Đọc dữ liệu từ thiết bị chuẩn cin
Ví dụ 1:
int n;
cin>>n;
Ví dụ 2:
int n ;
float p ;
char c ;
cin>>c>>n>>p ;
Dùng toán từ >> để nhập dữ liệu cho các kiểu char, int, float, double và char*
CHƯƠNG 2:
NHỮNG MỞ RỘNG CỦA C++
2. CÁC KHẢ NĂNG RA VÀO MỚI CỦA C++
2.2 Đọc dữ liệu từ thiết bị chuẩn cin
Giống với hàm scanf(), cin tuân theo một số qui ước dùng trong việc phân tích các
ký tự
Các giá trị số được phân cách bởi : SPACE, TAB, CR, LF. Khi gặp một ký tự
không hợp lệ như dấu “.” đối với số nguyên, chữ cái đối với số, sẽ kết
thúc việc đọc cin, ký tự không hợp lệ này sẽ được xem xét trong lần đọc sau
Đối với gía trị xâu ký tự, dấu phân cách cũng là SPACE, TAB, CR còn đối
với gía trị ký tự, dấu phân cách là dấu CR. Trong hai trường hợp này không
có khái niệm “ký tự không hợp lệ”. Mã sinh ra do nhấn phím Enter của lần
nhập trước vẫn được xét trong lần nhập chuỗi hay ký tự tiếp theo và do đó
sẽ có nguy cơ không nhập được đúng giá trị mong muốn khi đưa ra lệnh
nhập xâu lý tự hoặc ký tự ngay sau các lệnh nhập cá giá trị khác. Giải pháp
{
int a ;
a=32 ;
cout <<a<< ” \n“ ;
…
int *p=&a ;
cout<< p <<” \n“
…
// chua co j
for (int j=0 ;j<10 ;j++)
….
}
CHƯƠNG 2:
NHỮNG MỞ RỘNG CỦA C++
3. NHỮNG TIỆN ÍCH CHO NGƯỜI LẬP TRÌNH
3.1 Toán tử phạm vi ::
Ví dụ 1:
int a=5 ;
main()
{
int a=10 ;
cout<<a ;
}
Ví dụ
Ví dụ
2:
2:
#include<iostream.h>
#include<iostream.h>
thực hiện nhanh hơn so với các hàm thông thường
CHƯƠNG 2:
NHỮNG MỞ RỘNG CỦA C++
4. HÀM INLINE
Ví dụ :
Ví dụ :
#include<iostream.h>
#include<iostream.h>
#include<conio.h>
#include<conio.h>
inline long tong(int a[]); // khai báo
inline long tong(int a[]); // khai báo
hàm inline
hàm inline
void main()
void main()
{
{int i;
int i;int a[3];
int a[3];for (i=0;i<3;i++)
for (i=0;i<3;i++)
for (i=0;i<3;i++)
for (i=0;i<3;i++)s+=a[i];
s+=a[i];return s;
return s;
}
}
CHƯƠNG 2:
NHỮNG MỞ RỘNG CỦA C++
5. THAM CHIẾU
Ngôn ngữ C++ giới thiệu một khái niệm mới là tham chiếu ”reference”. Một tham
chiếu có thể là một biến, tham số hình thức của hàm hay dùng làm giá trị trả về của
một hàm.
5.1 Tham chiếu tới một biến
Ví dụ:
int n ;
int &p=n ; //p là một biến tham chiếu, p tham chiếu tới vùng nhớ nơi n lưu trữ
Nếu viết:
n=7;
cout<<p;
Kết quả in ra là:
CHƯƠNG 2:
NHỮNG MỞ RỘNG CỦA C++
5. THAM CHIẾU
5.1 Tham chiếu tới một biến
CHƯƠNG 2:
NHỮNG MỞ RỘNG CỦA C++
5. THAM CHIẾU
5.1 Tham chiếu tới một biến
Ví dụ :
Ví dụ :
#include<iostream.h>
#include<iostream.h>
void main()
void main()
{
{int x=3,&y; // sẽ báo lỗi vì y chưa
int x=3,&y; // sẽ báo lỗi vì y chưa
được khởi tạo
được khởi tạo
…
…}
}
Ví dụ :
Ví dụ :
int &p=3; // không hợp lệ
int &p=3; // không hợp lệ
const int &p=3; // hợp lệ
const int &p=3; // hợp lệ