BÁO CÁO BÀI TẬP LỚN NỘI DUNG DỊCH TÀI LIỆU The C++ Programming Language Fourth Edition

65 8 0
BÁO CÁO BÀI TẬP LỚN NỘI DUNG DỊCH TÀI LIỆU The C++ Programming Language Fourth Edition

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI PHÂN HIỆU TẠI TP HỒ CHÍ MINH BỘ MƠN CƠNG NGHỆ THƠNG TIN BÁO CÁO BÀI TẬP LỚN NỘI DUNG: DỊCH TÀI LIỆU The C++ Programming Language Fourth Edition Giảng viên hướng dẫn: TRẦN THỊ DUNG Sinh viên thực hiện: NGUYỄN ĐÌNH TRINH ĐẠT Lớp : Khố : CƠNG NGHỆ THƠNG TIN K62 K62 Tp Hồ Chí Minh, năm 2022 TRƯỜNG ĐẠI HỌC GIAO THƠNG VẬN TẢI PHÂN HIỆU TẠI TP HỒ CHÍ MINH BỘ MÔN CÔNG NGHỆ THÔNG TIN BÁO CÁO BÀI TẬP LỚN NỘI DUNG: DỊCH TÀI LIỆU The C++ Programming Language Fourth Edition Giảng viên hướng dẫn: TRẦN THỊ DUNG Sinh viên thực hiện: NGUYỄN ĐÌNH TRINH ĐẠT Lớp : CƠNG NGHỆ THƠNG TIN K62 Khố : K62 Tp Hồ Chí Minh, năm 2022 NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… Tp Hồ Chí Minh, ngày ….… tháng 09 năm 2022 Giáo viên hướng dẫn Trần Thị Dung Chương 16: CLASSES Those types are not “abstract”; they are as real as int and float – Doug McIlroy  Giới thiệu  Kiến thức Class + Menber Funtions (Hàm thành phần); Default Copying (Bản mặc định); Access Control (Kiểm soát truy cập); class and struct (Lớp cấu trúc); Constructors( Khởi tạo); explicit Constructors( khởi tạo tường minh); In-Class Initializers (Bộ khởi tạo Class); In-Class Function Definitions(Định nghĩa hàm Class); Mutability(Tính đột biến); Self-Refer-ence(Tự tham khảo); Member Access(Truy cập thành phần); static Members(Thành phần tĩnh ); Member Types(Các loại thành phần) + Concrete Classes (Lớp khởi tạo đối tượng) - Menber Funtions (Hàm thành phần); Helper Functions (Người trợ giúp); Overloaded Operators (Nạp chồng toán tử); The Significance of Concrete (Tầm quan trọng lớp cụ thể hay lớp không trừu tượng)  Lời khuyên 16.1 Tổng quan C++ classes công cụ cho việc tạo kiểu sử dụng thuận tiện kiểu tích hợp sẵn Ngồi ra, Lớp dẫn xuất (Derived classes) (§3.2.4, Chương 20) temblates (§3.4, Chương 23) cho phép lập trình viên thể (phân cấp tham số) mối quan hệ class tận dụng mối quan hệ Mỗi kiểu đại diện cụ thể cho khái niệm (ý tưởng, khái niệm, …) Ví dụ, kiểu float tích hợp C++ với phép tốn +, -, *, … nó, cung cấp gần cụ thể khái niệm toán học số thực Một Class kiểu người dùng định nghĩa Chúng ta thiết kế kiểu để tạo định nghĩa mà chưa tích hợp sẵn Ví dụ: cung cấp loại Trunk_line chương trình xử lý điện thoại, loại Explosion cho trò chơi điện tử loại danh sách cho chương trình xử lý văn Một chương trình tạo với kiểu tương thích với khái niệm chương trình dễ hiểu hơn, dễ lập luận hơn, dễ sửa đổi so với chương trình ngược lại Việc xác định xác kiểu giúp cho chương trình trở nên ngắn gọn Ngồi ra, làm cho nhiều loại phân tích code thực Đặc biệt, cho phép trình biên dịch phát việc sử dụng đối tượng bất hợp pháp mà khơng tìm thấy thơng qua kiểm tra tồn diện Ý tưởng việc xác định kiểu tách chi tiết ngẫu nhiên việc triển khai (ví dụ: bố cục liệu sử dụng để lưu trữ đối tượng kiểu) khỏi thuộc tính cần thiết nhằm sử dụng cách xác (ví dụ: danh sách đầy đủ hàm truy cập liệu) Sự tách biệt thể tốt cách phân luồng tất mục đích sử dụng cấu trúc liệu quy trình ‘’ vệ sinh nội bộ`` thơng qua giao diện cụ thể Chương tập trung vào kiểu tương đối đơn giản '' cụ thể '' người dùng xác định mà mặt logic khơng khác nhiều so với kiểu tích hợp sẵn: §16.2: Khái niệm lớp, Cơ sở để xác định lớp thành phần §16.3: Lớp cụ thể: thảo luận việc trình bày lớp cụ thể đẹp hiệu Các chương sau sâu vào chi tiết trình bày lớp trừu tượng cấu trúc phân cấp lớp: Chương 17: Xây dựng, Hủy bỏ, Sao chép Di chuyển trình bày nhiều cách khác để kiểm soát việc khởi tạo đối tượng lớp, cách chép di chuyển đối tượng cách cung cấp '' hành động dọn dẹp '' thực đối tượng bị phá hủy (ví dụ: vượt khỏi phạm vi) Chương 18: Nạp chồng tốn tử, giải thích cách xác định toán tử đơn phân nhị phân (VD: +, ∗, ! ) cho loại người dùng xác định cách sử dụng chúng Chương 19: Toán tử đặc biệt, cách xác định sử dụng toán tử (VD: [], (), ->, new), “Đặc biệt” chỗ chúng sử dụng cách khác với toán tử số học logic Đặc biệt, chương cách định nghĩa String Class Chương 20: Lớp dẫn xuất (Derived classes) giới thiệu tính của ngơn ngữ hỗ trợ lập trình hướng đối tượng Các lớp sở lớp dẫn xuất, hàm ảo, kiểm soát truy cập bảo đảm Chương 21: Lớp kế thừa (Class Hierarchies) sử dụng lớp sở lớp dẫn xuất để xây dựng code xung quanh khái niệm lớp kế thừa Phần lớn chương nói kỹ thuật lập trình, đề cập đến kỹ thuật đa kế thừa (Các lớp có nhiều lớp sở) Chương 22: Run-time type information (RTTI) mô tả kỹ thuật để điều hướng cách rõ ràng cấu trúc lớp kế thừa Cụ thể, loại thay đổi kiểu dynamic_cast static_cast nêu rõ, xác định kiểu đối tượng cho lớp sở (typeid) 16.2 Lớp sở Nội dung bản:  Một lớp kiểu người dùng định nghĩa  Một lớp bao gồm tập hợp thành phần Như liệu hay hàm thành phần  Các hàm thành phần định nghĩa khởi tạo (creation), chép, di chuyển, hủy bỏ  Các thành phần truy cập dấu chấm “.” cho đối tượng dấu mũi tên “->” cho trỏ  Các toán tử, chẳng hạn +, !, [], định nghĩa cho lớp  Một lớp không gian để chứa thành phần  Các thành phần Pulic cung cấp “class’s interface” hay thường gọi nguyên mẫu hàm thành phần Private triển khai chi tiết  Struct lớp (class) mà thành phần bên mặc định cơng khai Public Ví dụ: class X { private: // thông báo thàn phần sau private int m; public: // thông báo thàn phần sau public X(int i =0) :m{i} { } // khởi tạo int mf(int i) // hàm thành phần { int old = m; m = i; // gán giá trị return old; // trả giá trị cũ } }; X var {7}; // biến kiểu X khởi tạo thành int user(X var, X∗ ptr) { int x = var.mf(7); // truy cập sử dụng dấu chấm “.” int y = ptr−>mf(9); // truy cập sử dụng dấu mũi tên “->” int z = var.m; // lỗi: truy cập thành viên private } Các phần sau nghiên cứu sâu phần sở lý luận liên quan 16.2.1 Hàn thành phần Triển khai struct date để xác định cách thể thông tin Data (ngày, tháng, năm) hàm để thực việc này: struct Date { int d, m, y; }; void init_date(Date& d, int, int, int); // khởi tạo d void add_year(Date& d, int n); // nhập năm cho d void add_month(Date& d, int n); // nhập tháng cho d void add_day(Date& d, int n); // nhập ngày cho d Ở dễ dàng nhìn thấy khơng thể kết nối thành phần cách rõ ràng Để cho rõ ràng cần khai báo nguyên mẫu hàm trước sau: struct Date { int d, m, y; void init(int dd, int mm, int yy); // khởi tạo void add_year(int n); // nhập năm void add_month(int n); // nhập tháng void add_day(int n); // nhập ngày }; Các hàm khai báo lớp (struct coi lớp) gọi hàm thành phần dược gọi cho cho biến cụ thể kiểu thích hợp cách sử dụng cú pháp để truy cập thành phần struct Ví dụ: Date my_bir thday; void f() { Date today; today.init(16,10,1996); my_bir thday.init(30,12,1950); Date tomorrow = today; tomorrow.add_day(1); // } Bởi struct khác có hàm thành phần trùng tên nhau, nên ta phải định tên struct định nghĩa hàm thành phần void Date::init(int dd, int mm, int yy) { d = dd; m = mm; y = yy; } Trong hàm thành phần, tên thành phần sử dụng mà khơng cần phải tham chiếu rõ ràng đến đối tượng Trong trường hợp đó, tên truy cập đến thành phần đối tượng thứ mà gọi lại Ví dụ: Date::init() gọi cho today, m=mm gán cho today.m Mặt khác, Date::init() gọi cho my_birthday, m=mm gán cho my.birthday.m Một hàm thành phần lớp “hiểu” đối tượng mà mà gọi Để biết thêm chi tiết thành phần static phần sau 16.2.2 Hàm mặc định chép Mặc định đối tượng chép Đặc biệt, đối tượng lớp khởi tạo đối tượng thuộc lớp Ví dụ: Date d1 = my_birthday; Date d2 {my_birthday}; Mặc định, đối tượng lớp thành phần đối tượng lớp chép theo phép gán Ví dụ: void f(Date& d) { d = my_birthday; } 16.2.3 Kiếm soát truy cập Ở phần trước khơng rõ hàm hàm trực tiếp vào việc thể Date hàm để truy cập trực tiếp vào đối tượng lớp Date Để khắc phục hạn chế ta sử dụng thay struct class: class Date { int d, m, y; public: void init(int dd, int mm, int yy); void add_year(int n); void add_month(int n); void add_day(int n); }; “public” tách nội dung class thành phần riêng biệt Trước public thành phần private sử dụng hàm thành phần Còn lại thành phần public có nguyên mẫu hàm Struct đơn giản lớp gồm thành phần public; chức bên định nghĩa sử dụng xác phía Ví dụ: void Date::add_year(int n) { 10 ... CHÍ MINH BỘ MƠN CƠNG NGHỆ THƠNG TIN BÁO CÁO BÀI TẬP LỚN NỘI DUNG: DỊCH TÀI LIỆU The C++ Programming Language Fourth Edition Giảng viên hướng dẫn: TRẦN THỊ DUNG Sinh viên thực hiện: NGUYỄN ĐÌNH... sách đầy đủ hàm truy cập liệu) Sự tách biệt thể tốt cách phân luồng tất mục đích sử dụng cấu trúc liệu quy trình ‘’ vệ sinh nội bộ`` thơng qua giao diện cụ thể Chương tập trung vào kiểu tương... định kiểu đối tượng cho lớp sở (typeid) 16.2 Lớp sở Nội dung bản:  Một lớp kiểu người dùng định nghĩa  Một lớp bao gồm tập hợp thành phần Như liệu hay hàm thành phần  Các hàm thành phần định

Ngày đăng: 14/11/2022, 19:11

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan