Danh mục

Bài giảng Lập trình nâng cao: Lớp - Trần Quốc Long

Số trang: 52      Loại file: pptx      Dung lượng: 189.58 KB      Lượt xem: 12      Lượt tải: 0    
Thư viện của tui

Xem trước 6 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Bài giảng "Lập trình nâng cao: Lớp" cung cấp cho người học các kiến thức: Đóng gói mô-đun Guesser, đánh giá SimpleAI (assessment), máy chơi với máy, đóng gói mô-đun Assessment, hàm khởi tạo, danh sách khởi tạo,... Mời các bạn cùng tham khảo.
Nội dung trích xuất từ tài liệu:
Bài giảng Lập trình nâng cao: Lớp - Trần Quốc LongAssessment10&11 - Lớp = Dữ liệu + Hàmhttps://github.com/tqlong/advprogramNội dung Lớp (Class) = Dữ liệu + Hàm Đóng gói mô-đun Guesser Đánh giá SimpleAI (assessment) Máy chơi với máy Đóng gói mô-đun Assessment Kỹ thuật class Hàm khởi tạo, danh sách khởi tạo Hàm public, hàm private, hàm const Sắp xếp với sortĐặt vấn đề: đánh giá SimpleAIMột số câu hỏi cho SimpleAI Các tập từ vựng khác nhau có cho kết quả khác nhau ? Nên chọn tập từ vựng nào ? Các thay đổi trong thuật toán đoán kí tự có thực sự giúp việc đoán từ chính xác hơn ?Cần có đánh giá định lượng (số hoá) Giúp trả lời rõ các câu hỏi trên Lựa chọn chương trình đoán từ chính xác hơn.Đặt vấn đề: đánh giá SimpleAICần suy nghĩ về Cách đánh giá SimpleAI Cách tính điểm Cách tổ chức chương trình Đánh giá tự động trên tập từ vựng bất kỳ Cho phép máy tự động chơi nhiều lần và ghi lại kết quả chơi (từ cần đoán, số lần đoán, số chữ cái đoán đúng …)Chung và riêngSimpleAI hiện có các mô-đun Giao diện, Util, Draw Guesser Chương trình chính chỉ cần biết khai báo của getNextGuess() → public Bản thân cài đặt của getNextGuess() và các hàm khác (độ thông minh của thuật toán), chương trình chính không cần biết → privateCó thể tách guesser và dữ liệu liên quan thành mô-đun riêngPhân tích chức năng của guesserCác chức năng Bắt đầu ván chơi newGame() với độ dài từ cho trước Đoán ký tự tiếp theo getNextGuess() Nhận trả lời của chủ trò receiveHostAnswer()Phía ngoài (chủ trò, hệ thống) chỉ cần biết các chức năng này của guesser còn bên trong guesser đoán thế nào không cần biết guesser quản lý dữ liệu thế nào không cần biếtPhân tích chức năng của guesser HOST GUESSER newGame(4) ---- getNextGuess() = ‘a’ receiveHostAnswer(‘a’, “- hand -a-- a--”) getNextGuess() = ‘n’ receiveHostAnswer(‘n’, “-- n-”) -an- secretWord incorrectGuess previousGuesses stopClass C++ hỗ trợ cơ chế đóng gói hàm và dữ liệu Ví dụ: trong tệp MyClass.hclass MyClass {private: Các đối tượng thuộc lớp MyClass sẽ int value; có dữ liệu kiểu nguyên value bool checkNewValue(int newValue); hàm dành riêng cho các đối tượngpublic: của lớp, bên ngoài không dùng được MyClass(); void setValue(int newValue); các hàm “của công”, bên ngoài có thể int getValue(); gọi được};Cài đặt hàm trong MyClass.cppThêm phạm vi MyClass:: vào trước tên hàm#include MyClass.h void MyClass::setValue(int newValue)MyClass::MyClass() {{ if (checkNewValue(newValue)) value = 0; value = newValue;} }bool MyClass::checkNewValue(int int MyClass::getValue()newValue) {{ return value; return newValue >= 0; }}Sử dụng lớpMyClass obj; // gọi hàm khởi tạo MyClass::MyClass()cout Sử dụng lớpMyClass another_obj; // gọi hàm khởi tạoMyClass::MyClass()cout Cấu trúc lại SimpleAI (refactor)Mục đích: đóng gói hàm và dữ liệu của guesser bằng Class Dữ liệu của guesser secretWord incorrectGuess previousGuesses stop wordListChức năng của guesser Khởi tạo: đọc từ vựng Bắt đầu ván chơi: newGame(wordLength) Đoán chữ cái: getNextGuess() Dựa vào previousGuesses, secretWord Các dữ liệu này là dữ liệu nội tại của guesser Gửi trả lời của chủ trò (host) receiveHostAnswer(guess, mask) Nhận trả lời và cập nhật các dữ liệu trong guesser Ngoài ra, còn các chức năng “của riêng”Xây dựng lớp GuesserTrong tệp guesser.h, khai báo lớp Guesser, trước tiên đưa vào các dữ liệu cần thiết class Guesser { private: std: ...

Tài liệu được xem nhiều: