Giảng viên Cù Việt Dũng Email dungcv@tlu edu vn ĐT 0964 644 986 NGUYÊN LÝ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG CSE 224 TRƯỜNG ĐẠI HỌC THỦY LỢI Khoa CNTT – Bộ môn CNPM mailto dungcv@tlu edu vn q Tên học phần Nguy[.]
TRƯỜNG ĐẠI HỌC THỦY LỢI Khoa CNTT – Bộ môn CNPM NGUYÊN LÝ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG CSE 224 Giảng viên: Cù Việt Dũng Email: dungcv@tlu.edu.vn ĐT: 0964.644.986 Thông tin mơn học Tên học phần: Ngun lý lập trình hướng đối tượng q Mã học phần: CSE224 q Giảng viên: Cù Việt Dũng q Số tín chỉ: 03 q Email: dungcv@tlu.edu.vn q Phân bổ thời gian: q Phone: 0964 644 986 q § Giờ giảng lý thuyết: 30 tiết § Giờ thực hành: 15 tiết § Giờ tự học sinh viên: 90 tiết CSE 224_Giới thiệu học phần Mục tiêu học phần q Cung cấp cho sinh viên khối lượng kiến thức nguyên lý kỹ lập trình hướng đối tượng sử dụng ngơn ngữ lập trình C++ để minh họa: § Ngun lý lập trình hướng đối tượng: lớp, thuộc tính, phương thức, constructor, destructor, kế thừa, overload, override, hàm ảo, đa hình § Khơng gian tên, template, xử lý ngoại lệ CSE 224_Giới thiệu học phần Các qui định Không làm việc riêng lớp học q Tham gia đầy đủ buổi học, trao đổi, đóng góp ý kiến tích cực buổi học q Thảo luận nhóm cách sơi nổi, hiệu q Hồn thành nội dung kiểm tra theo thời gian qui định q q Chú ý: Không vắng mặt hơm kiểm tra CSE 224_Giới thiệu học phần Hình thức đánh giá q Điểm thảo luận q Điểm kì q Thi cuối kì: Thực hành CSE 224_Giới thiệu học phần 50% 50% Nội dung q Mở đầu: Giới thiệu q Chương 1: Nhắc lại C++ q Chương 2: Lớp đối tượng q Chương 3: Nạp chồng toán tử q Chương 4: Nguyên lý kế thừa q Chương 5: Khuôn mẫu (Template) thư viện chuẩn (STL) q Chương 6: Hàm ảo đa hình CSE 224_Giới thiệu học phần Thảo luận CSE 224_Giới thiệu học phần TRƯỜNG ĐẠI HỌC THỦY LỢI Khoa CNTT – Bộ mơn CNPM NGUN LÝ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG CSE 224 Chương 1: Nhắc lại C++ Giảng viên: Cù Việt Dũng Email: dungcv@tlu.edu.vn ĐT: 0964.644.986 Nội dung 1.1 Tổng quan C++ q 1.2 Cấu trúc chương trình C++ q 1.3 Hàm nạp chồng hàm q 1.4 Con trỏ q 1.5 Cấu trúc q CSE224 - Nhắc lại C++ 1.1 Tổng quan C++ § § § § § § § Tác giả: Bjarne Stroustrup (Mỹ) Ý tưởng năm 1979 Được giới thiệu năm 1985 Phiên C++ 2.0 năm 1989 Phiên nhất: C++17 Môn học học khoảng 10% kiến thức C++ thư viện Cần 3-5 năm để trở thành lập trình viên C++ mức độ chuyên nghiệp CSE224 - Nhắc lại C++ …Example – Class Template int main(){ point ai(3,5); ai.display(); point ac('d','y’); ac.display(); point ad(3.5, 2.3); ad.display(); return 0; } CSE224 - Khuôn mẫu Dungcv 67 Các tham số khn mẫu lớp q Có loại: § Tham số kiểu § Tham số biểu thức q Có nhiều điểm giống khn mẫu hàm ràng buộc kiểu tham số lại khác CSE224 - Khuôn mẫu Dungcv 68 Các tham số khuôn mẫu lớp template //danh sách ba tham số kiểu class try { T x; U t[5]; V fm1 (int, U); }; CSE224 - Khuôn mẫu Dungcv 69 Các tham số khuôn mẫu lớp CSE224 - Khuôn mẫu Dungcv 70 Các tham số khuôn mẫu lớp CSE224 - Khuôn mẫu Dungcv 71 Các tham số khuôn mẫu lớp CSE224 - Khuôn mẫu Dungcv 72 Các tham số khuôn mẫu lớp q Tham số biểu thức khuôn mẫu lớp: tham số thực tế tương ứng với tham số biểu thức phải số q Giả sử định nghĩa lớp Arr để thao tác mảng chứa đối tượng có kiểu § Tham số 1: tham số kiểu § Tham số 2: tham số biểu thức để xác định số lượng phần tử CSE224 - Khuôn mẫu Dungcv 73 Tham số biểu thức template class Arr { T elements[n]; public: }; q Tham số kiểu xác định từ khóa class q Tham số biểu thức kiểu int Phải rõ giá trị khai báo lớp thể class Arr { § Arr int elements[4]; public: }; CSE224 - Khuôn mẫu Dungcv 74 Các tham số khuôn mẫu lớp q Có thể khai báo tùy ý tham số biểu thức khuôn mẫu hàm q Các tham số xuất nơi định nghĩa khuôn mẫu lớp q Khi cụ thể lớp có tham số biểu thức, tham số thực tế tương ứng truyền vào phải phù hợp với kiểu liệu khai báo CSE224 - Khn mẫu Dungcv 75 Cụ thể hóa khn mẫu lớp q khuôn mẫu lớp định nghĩa họ lớp lớp chứa đồng thời định nghĩa hàm thành phần q Tất hàm thành phần tên thực theo giải thuật q Nếu muốn hàm thành phần thích ứng tình cụ thể viết đ/n khác CSE224 - Khn mẫu Dungcv 76 Ví dụ #include #include using namespace std; template class point { T x,y; public: point(T abs=0,T ord=0){ x=abs;y=ord;} void display(); }; template void point::display() { cout