Professional Documents
Culture Documents
1. Lý thuyết
2. Bài tập vận dụng
1. Lý Thuyết
1. Constructor
PhanSo: : PhanSo()
{
tu = 0;
mau = 1;
}
1. Constructor
Phương thức thiết lập sao chép ( Copy Constructors ) : là
phương thức nhận tham số đầu vào là 1 đối tượng cùng thuộc lớp .
Thông tin ban đầu của đối tượng sẽ giống hoàn toàn thông tin đối
tượng tham số đầu vào .
PhanSo: : PhanSo( const PhanSo& a )
{
tu = a.tu;
mau = a.mau;
}
1. Constructor
Phương thức thiết lập nhận tham số đầu vào ( Paremeterired
Constructors): Là thiết lập thông tin ban đầu cho các đối tượng
thông qua các tham số đầu vào. Constructor nhận tham số đầu vào
có thể sử dụng để ép kiểu.
PhanSo :: PhanSo(int a, int b) PhanSo :: PhanSo(int a)
{ {
tu = a; tu = a;
mau = b; mau = 1;
}
}
1. Constructor
Ứng dụng
class PhanSo
void main() {
{
PhanSo a, b(3, 4), c(2, 5);
private: a = b + c;
int tu, mau; a = b + 3;
a = 5 + c;
public:
}
PhanSo (int tu=0, int mau=1);
PhanSo operator +(PhanSo);
};
Câu trả lời
• Private : chỉ có thể truy cập được bởi chính class chứa nó.
• Protected : chỉ có thể truy cập được bởi chính class chứa
nó và các lớp kế thừa nó.
• Public : có thể truy cập từ bất kì đâu.
Override là một tính năng cho phép một lớp con cung cấp
một triển khai cụ thể của phương thức đã được cung cấp bởi một
trong các lớp cha của nó.
4. Khái niệm về overload và override.
cout << a + b;
cin >> c;
if (a > b) cout << “a lon hon
b”;
4. Khái niệm về overload và override.
PhanSo PhanSo : : operator+ (const PhanSo& a)
{
…
}
istream& operator>> (istream& is, PhanSo& a)
{
…// Thay thế từ cin bằng is, return is;
}
4. Khái niệm về overload và override.
bool PhanSo : : operator> (const PhanSo & a)
{
…
//return true hoặc false
}
ostream& operator<< (ostream& os, PhanSo a)
{
…// Thay thế từ cout bằng os, return os;
}
5. Hàm thuẩn ảo.
Chó
Động Vật
Mèo
6. Các đặc điểm quan trọng của OOP
Kế Thừa
Tam Giác Cân Tam Giác
6. Các đặc điểm quan trọng của OOP
Lợi ích của kế thừa:
• Kế thừa cho phép xây dựng lớp mới từ lớp đã có
• Cho phép tổ chức các lớp chia sẻ mã chương trình chung, nhờ
vậy có thể dễ dàng sửa chữa, nâng cấp hệ thống.
Class Cũ Class Mẹ
Kế
Thừa
Kiểu kế thừa
Phạm vi
truy xuất Public Protected Private
Kiểu kế thừa
Phạm vi
truy xuất Public Protected Private
Đi (Người)
Đề bài : Xây dựng lớp thời gian ( giờ ,phút ,giây ) với
các toán tử >>, << để nhập xuất và toán tử ++ để
tăng thời gian thêm 1 giây (3 đ)
Câu 2 ( Đề 2018 - 2019)
class Thoigian
{
private:
int gio, phut, giay;
public:
friend istream& operator>>(istream& is, Thoigian&);
friend ostream& operator<<(ostream& os, Thoigian);
Thoigian& operator++();
Thoigian operator++(int);
};
Câu 2 ( Đề 2018 - 2019)
istream& operator>>(istream& is, Thoigian& x)
{
is >> x.gio >> x.phut >> x.giay;
return is;
}
ostream& operator<<(ostream& os, Thoigian x)
{
os << x.gio << " " << x.phut << " " << x.giay;
return os;
}
Câu 2 ( Đề 2018 - 2019)
Thoigian& Thoigian::operator++() {
giay += 1;
if (giay == 60){ Đây là định nghĩa cho
giay = 0; phut += 1; phép toán ++a
if (phut == 60)
{
phut = 0; gio += 1;
if (gio == 24) gio = 0;
}
}
return *this; }
Câu 2 ( Đề 2018 - 2019)
Thoigian Thoigian::operator++(int) {
Thoigian p = *this;
giay += 1; Đây là định nghĩa cho
if (giay == 60) phép toán a++
{
....
}
return p;
}
Câu 2 ( Đề 2017 - 2018)
Câu 2 ( Đề 2017 - 2018)
Hãy định nghĩa lớp cNgay thích hợp để chương trình không bị
lỗi biên dịch và chạy
đúng. Lưu ý rằng không được chỉnh sửa hàm main và sinh viên
cần viết cả các lệnh #include thích hợp
Câu 2 ( Đề 2017 - 2018)
class cNgay {
private:
int dd, mm, yy;
public:
cNgay(int, int, int);
friend istream& operator>>(istream&, cNgay&);
friend ostream& operator<<(ostream&, cNgay);
bool operator<(const cNgay&);
};
Câu 2 ( Đề 2017 - 2018)
cNgay::cNgay(int a = 1, int b = 1, int c = 1)
{
dd = a; mm = b; yy = c;
}
istream& operator>>(istream& is, cNgay& x)
{
is >> x.dd >> x.mm >> x.yy;
return is;
}
Câu 2 ( Đề 2017 - 2018)
Xây dựng lớp Đa thức bậc n với các toán tử >> ,<< ,+
(3đ)
Câu 2 ( Đề 2017 - 2018) - HK2
class Dathuc {
private:
float* heso;
int bac;
public:
friend istream& operator>>(istream&, Dathuc&);
friend ostream& operator<<(ostream&, Dathuc);
Dathuc operator+(const Dathuc&);
};
Câu 2 ( Đề 2017 - 2018) - HK2
istream& operator>>(istream& is, Dathuc& x) {
return is;
}
Câu 2 ( Đề 2017 - 2018) - HK2
Dathuc Dathuc:: operator+(const Dathuc& x){
- Tạo Dathuc temp để lưu kết quả trả về của hàm.
- Gán bậc và hệ số của đa thức lớn hơn cho bậc và hệ số
của Dathuc temp (temp.bac và temp.heso).
- Gán biến Min bằng số bậc của đa thức nhỏ hơn.
- Tiến hành cộng hệ số của 2 đa thức có cùng số bậc ( thực
hiện vòng lặp chạy từ 0 đến Min )
- Cuối cùng return temp;
}
Câu 2 ( Đề 2017 - 2018) - HK2
- Vì trả về một biến nên có thể thực hiện lệnh : ++a = b; a++=b;
- Thực thi nhanh hơn.
- Một số đối tượng không thể sao chép như istream, ostream,…
- (1) trả về lvalue, (2) trả về rvalue (tham khảo).
Định nghĩa phép toán <<,>>
friend istream& operator >>(istream& is, PS &a);
friend ostream& operator <<(istream& os, PS a);
Vì không thể sao chép nên các đối tượng này cần trả về tham
chiếu để “cin”, “cout” liên tục.
VD: cin >> a >> b >> c;
is a b c PS a(1,2), b(3,4),c(5,6);
is
is
is
Định nghĩa phép toán <<,>>
PS operator++(int);//(1)
friend ostream& operator <<(istream& os, PS& a);//(2)
Trong một số trường hợp ở (2), tham chiếu đến đối tượng a sẽ
bị lỗi.
PS a(1,2);
VD: cout << a++;
- Bản chất của tham chiếu là sử dụng con trỏ.
- Do (1) trả về “giá trị”, không phải “biến”, mà “giá trị” thì không
có ô nhớ, do đó không thể tham chiếu được =>(2) lỗi.
Câu 3 đề thi các năm:
HK1_2018_2019:
• Trung tâm thể hình MTK của thị xã Dĩ An đã được khai trương và bắt đầu
đón nhận khách hàng.
• Mỗi khách hàng tham gia CLB của trung tâm có thể tùy chọn một trong 3
gói dịch vụ khác nhau là Premium (nâng cao), Basic (cơ bản), Non-member
(không thanh viên). Đây là phương thức mà trung tâm tiền hành để từng loại
đối tượng khách hàng
• Các dịch vụ khác: Yoga, Aerobic, Boxing, múa bụng, body combat.. dịch vụ
xông hơi và hỗ trợ từ huấn luyện viên cả nhân (PT) cũng sẽ được cung cấp.
• Mỗi khách hàng khi đăng kí sẽ phải điền thông tin họ tên và số CMND và
lựa chọn gói dịch vụ cũng như thời gian muốn sử dụng dịch vụ đó (theo
tháng).
HK1_2018_2019
Lưu ý: Miễn phí: Khách hàng không chi trả thêm tiền khi đăng
kí tính năng này
Không có: Khách hàng sẽ không được cung cấp tính năng này
HK1_2018_2019
4. Trung tâm cần thông tin của những khách hàng đã chi tiêu nhiều nhất để
tiếnhành tư vấn gói dịch vụ thích hợp cho họ. Hãy viết phương thức thực
hiện chức năng này (1 đ)
HK1_2018_2019
HK2_2018_2019
Mô hình đặc điểm tính cách Big Five do trong 5 nét tính cách của con người:
- Sẵn sàng trải nghiệm (O). Tự chủ tận tâm (C).
- Hướng ngoại (E). Hòa đồng (A).
- Bất ổn cảm xúc (N)
Bài kiểm tra tâm lý theo Big Five Model có kết quả tương tự như sau: 093-C74-E31-A96-
N5. Các chữ cái đại diện cho mỗi nét tính cách, và những con số đại diện cho tỷ lệ %
những người ghi được điểm thấp hơn bạn so với từng nét tính cách.
Nhà tuyển dụng có thể phát hiện và tuyển chọn những nhân sự phù hợp với các vị trí
công việc, giúp nhà tuyển dụng lường trước được những nguy cơ có thể xảy đến đối
với một nhân sự của mình.
Trong đó có các trường hợp (tính cách) có nguy cơ cao mà nhà tuyển dụng tổ chức/
doanh nghiệp cần lưu ý.
Trên 70: chỉ số cao.
Dưới 30: chỉ số thấp.
Ngoài ra không xác định.
HK2_2018_2019
• 1. Nhập vào thông tin kết quả đánh giá tâm lý của một người. (1đ)
• 2. Nhập vào kết quả đánh giá tâm lý của n người trong danh sách. (0.5d)
• 3. Hãy cho biết những người có nguy cơ cao mà nhà tuyển dụng tổ chức/
doanh nghiệp cần lưu ý
• 4. Chọn một người trong danh sách và cho biết các thông tin về tính cách
của người đó
• Vi dụ: Một người có đánh giá tâm lý Big Five như sau: O70-C30-E60-A96-
N10
70 Sắn sàng trải nghiệm (0) Người có điểm cao ở yếu tố này thường là người thích
những ý tưởng mới, …
30 Tự chủ tận tâm (C) Người có điểm thấp ở yếu tố này thường dễ bỏ cuộc, khả năng chiu
áp lực, …
60 Hòa đồng dễ chịu (A) Người có điểm cao ở yếu tố này thường thân thiện, cời mở,…
96 …
10 …
HK2_2018_2019
HK1_2017_2018
• 1. Nhập danh sách các nhóm máu của một lớp người
• 2. Cho một bộ 3 nhóm máu của ba người: ba, mẹ, con. Kiểm
tra và đưa kết quả xem có phù hợp quy luật duy truyền
không?
• 3. Chọn một người X trong danh sách, liệt kê tất cả những
người có thể cho máu người này
HK2_2017_2018
Ban học tập đoàn khoa CNPM
Chuỗi Training cuối học kì II năm học 2019 - 2020
HẾT
Cảm ơn các bạn đã theo dõi
Chúc các bạn có kết quả thi thật
tốt !