Nội dung text [Assignment] Sàn giao dịch chứng khoán
BÀI TẬP NÂNG CAO SÀN GIAO DỊCH CHỨNG KHOÁN Bài tập 1: Xây dựng Lớp Cơ Bản ● Tình huống: Sàn giao dịch cần quản lý các mã chứng khoán niêm yết, bao gồm mã cổ phiếu, tên công ty, giá cổ phiếu hiện tại, và khối lượng giao dịch. ● Yêu cầu: ○ Thiết kế lớp đại diện cho cổ phiếu với các thuộc tính và phương thức cơ bản. ○ Phải có phương thức để hiển thị thông tin chi tiết của cổ phiếu và cập nhật giá cổ phiếu. ● Gợi ý: Cân nhắc các thuộc tính cần thiết để quản lý cổ phiếu và cách tổ chức các phương thức để đảm bảo tính linh hoạt trong việc cập nhật thông tin cổ phiếu. Hướng dẫn: ● Mục tiêu: Tạo lớp cơ bản để quản lý cổ phiếu, bao gồm các thuộc tính cơ bản như mã cổ phiếu, tên công ty, giá cổ phiếu, và khối lượng giao dịch. ● Cách thực hiện: ○ Tạo lớp Stock với các thuộc tính: ■ symbol (mã cổ phiếu) ■ companyName (tên công ty) ■ price (giá cổ phiếu) ■ volume (khối lượng giao dịch) ○ Thêm các phương thức để: ■ Hiển thị thông tin chi tiết: Sử dụng phương thức displayInfo() để in ra các thuộc tính cơ bản của cổ phiếu. ■ Cập nhật giá cổ phiếu: Tạo phương thức updatePrice(double newPrice) để cập nhật giá cổ phiếu. ● Gợi ý:
○ Cân nhắc sử dụng encapsulation để bảo vệ các thuộc tính và sử dụng các phương thức getter và setter cho các thuộc tính cần truy cập từ bên ngoài. Bài tập 2: Tính Kế Thừa và Đa Hình ● Tình huống: Sàn giao dịch quản lý hai loại cổ phiếu: cổ phiếu thường và cổ phiếu ưu đãi. Cổ phiếu ưu đãi có thêm lãi suất ưu đãi hàng năm. ● Yêu cầu: ○ Thiết kế các lớp kế thừa từ lớp cổ phiếu cơ bản, với các đặc điểm riêng biệt cho từng loại cổ phiếu. ○ Phải có khả năng ghi đè phương thức tính lãi suất và hiển thị thông tin chi tiết phù hợp với từng loại cổ phiếu. ● Gợi ý: Sử dụng tính kế thừa và đa hình để tránh lặp lại mã nguồn và đảm bảo tính linh hoạt trong quản lý cổ phiếu. Hướng dẫn: ● Mục tiêu: Tạo các lớp kế thừa để phân biệt giữa cổ phiếu thường và cổ phiếu ưu đãi. ● Cách thực hiện: ○ Tạo hai lớp kế thừa từ Stock: ■ CommonStock: Đại diện cho cổ phiếu thường, không có thuộc tính mới. ■ PreferredStock: Có thêm thuộc tính annualDividendRate (tỷ lệ lãi suất hàng năm). ○ Ghi đè phương thức displayInfo() để hiển thị thông tin chi tiết cho từng loại cổ phiếu. ● Gợi ý: ○ Sử dụng tính đa hình để gọi phương thức displayInfo() từ một danh sách các đối tượng Stock, giúp hiển thị thông tin tương ứng cho cả cổ phiếu thường và ưu đãi mà không cần biết cụ thể loại cổ phiếu. Bài tập 3: Áp Dụng Interface và Tính Trừu Tượng ● Tình huống: Sàn giao dịch cung cấp nhiều loại giao dịch như mua, bán, và khớp lệnh tự động. Mỗi loại giao dịch có các bước xử lý riêng, nhưng đều có các phương thức như đăng ký lệnh và xử lý lệnh. ● Yêu cầu:
○ Thiết kế một interface chung cho các loại giao dịch, với các phương thức chung như registerOrder() và executeOrder(). ○ Mỗi loại giao dịch phải triển khai interface này với quy trình xử lý riêng. ● Gợi ý: Sử dụng tính trừu tượng và giao diện để định nghĩa hành vi chung cho các loại giao dịch, đồng thời khai thác tính đa hình để quản lý các giao dịch khác nhau mà không cần thay đổi cấu trúc cơ bản. Bài tập 4: Thêm Lớp Nhà Đầu Tư và Tài Khoản ● Tình huống: Sàn giao dịch cần quản lý các nhà đầu tư với thông tin như mã nhà đầu tư, tên, địa chỉ, và danh sách cổ phiếu sở hữu. ● Yêu cầu: ○ Thiết kế lớp quản lý nhà đầu tư với các thuộc tính và phương thức cơ bản. ○ Thêm phương thức để mua, bán, và cập nhật danh sách cổ phiếu của nhà đầu tư. ● Gợi ý: Hãy suy nghĩ về cách tổ chức lớp nhà đầu tư để dễ dàng quản lý tài sản và tích hợp với hệ thống giao dịch chứng khoán hiện có. Hướng dẫn: ● Mục tiêu: Tạo lớp để quản lý thông tin nhà đầu tư và tài sản của họ. ● Cách thực hiện: ○ Tạo lớp Investor với các thuộc tính: ■ investorID (mã nhà đầu tư) ■ name (tên nhà đầu tư) ■ portfolio (danh sách cổ phiếu đang sở hữu) ○ Thêm các phương thức để: ■ Mua cổ phiếu: Tạo phương thức buyStock(Stock stock, int quantity). ■ Bán cổ phiếu: Tạo phương thức sellStock(Stock stock, int quantity). ○ Quản lý danh sách cổ phiếu trong danh mục của nhà đầu tư và cập nhật chúng khi thực hiện mua/bán. ● Gợi ý: ○ Sử dụng danh sách để lưu trữ danh mục cổ phiếu của nhà đầu tư. Đảm bảo cập nhật danh mục sau mỗi lần giao dịch mua hoặc bán.