2/08/2021

Chia sẻ một số project OOP của một số lớp kỳ trước | Share


Bài viết này mình chia sẻ tới mọi người một số bài tập lớn OOP của các kì trước, lưu ý rằng chỉ để tham khảo, nếu như bạn nào bị điểm thấp vì sao chép bài các năm trước thì sẽ tự chịu trác nhiệm trước hành động của mình.

Đề bài tập lớn của mỗi kỳ, mỗi lớp sẽ là khác nhau. Thường sẽ có 2 cách ra đề bài tập lớn mà mình thấy được : một là các bạn sẽ làm 1 app hoặc game tự chọn, dĩ nhiên là bài tập lớn dạng này hiếm nhóm nào có thể làm lại 1 game/ app hoàn chỉnh từ đầu tới cuối mà gần như là copy một app/ game nào đó trên mạng và sửa đổi, nâng cấp lên. Còn một cách ra đề nữa là kiểu mà thầy giáo đưa ra một đề riêng ( mà mình nghĩ chắc chắn chưa từng có trên mạng), đề kiểu này thường sẽ dễ hơn làm game/ app nhưng các bạn gần như phải tự làm từ đầu tới cuối. Mình thấy kiểu nào cũng được, cuối cùng cũng là rèn luyện kỹ năng.

Khi làm bài tập lớn OOP, một điều không thể thiếu là biểu đồ lớp ( một số thầy/ cô có thể yêu cầu thêm use-case), các bạn có thể sử dụng công cụ Astah có phiên bản miễn phí dành cho sinh viê, umlet,... để vẽ biểu đồ.

Biểu đồ lớp

Bây giờ mình chia sẻ tới mọi người một số project của các kì trước để mọi người tham khảo nha, đề bài có thể khác, các bạn có thể tham khảo cách làm báo cáo, cách xây dựng project từ project được chia sẻ dưới đây.

ĐỀ BÀI 1 : 

Ý tưởng BTL: Sinh bài viết tự động về tin chứng khoán, dựa trên số liệu input thông tin về cổ phiếu đưa vào (định dạng file input là CSV, trong đó chứa thông tin gì thì tùy từng nhóm, phụ thuộc vào tin mà mỗi nhóm sẽ sinh ra như thế nào) 

Giải pháp: đơn giản nhất là dùng luật, tương tự như công cụ giới thiệu trong bài viết: https://emerj.com/ai-case-studies/

Tốt hơn là áp dụng xử lý thống kê, học máy trong xử lý ngôn ngữ tự nhiên. Thầy có thể giới thiệu thêm trên lớp nếu lớp có hứng thú. 

Gợi ý một số dạng câu đưa vào trong bài viết: mã cổ phiếu nào tăng nhanh nhất, đem lại lợi nhuận nhiều nhất, cổ phiếu của nhóm ngành ngân hàng/thủy sản/nói chung như thế nào, các mã cổ phiếu lớn/VN30 index như thế nào, ... SV cần phải tư duy sáng tạo, không máy móc theo ví dụ của thầy. Ở đây chỉ là một vài gợi ý cho các em hiểu vấn đề. 

Hướng dẫn cách làm/Nội dung cần làm:

1. Tìm hiểu sơ qua các khái niệm trong chứng khoán, để biết ý nghĩa các thông tin, nên đưa thông tin nào vào trong bài viết. VD: https://dangtrongkhang.com/.../tim-hieu-ve-chung-khoan

2. Chọn 1 báo online (mỗi nhóm chọn 1 báo nào đó), có mục tin về chứng khoán, viết công cụ scrape các bản tin này (bao gồm link-địa chỉ URL bài tin, title-tiêu đề bài viết, author-tác giả bài viết, time-ngày tháng năm, description-tóm tắt bài viết-còn gọi là sapo, content-nội dung bài viết, là một mảng các paragraph). Có thể tập trung hơn vào một mẫu bản tin chứng khoán nào đó, như với vnexpress là các bản tin "Chứng khoán ngày" (ví dụ: https://vnexpress.net/.../chung-khoan-ngay-13-2-da-tang...), nhưng không bỏ qua các bản tin khác

3. Từ các bài viết thu thập về, lấy ra tất cả các câu. Viết thuật toán tìm các câu tương tự nhau (VD chứa các từ tương tự nhau, độ dài gần như nhau sau khi loại bỏ các stop word, ...). Để giảm độ phức tạp, có thể tập trung tìm các mẫu câu nhất định (VD câu về chỉ số VN-index, câu về cổ phiếu BlueChip, câu về mã chứng khoán ...). Kêt hợp xử lý tay và tự động (phải xem dữ liệu bằng tay trước rồi mới design được thuật toán)

4. Qua việc tìm các câu tương tự nhau, tiếp tục xử lý thêm (bằng tay hoặc tự động) để xác định các mẫu câu hay dùng khi viết tin chứng khoán

5. Xác định cấu trúc dữ liệu đầu vào, xây dựng thuật toán sinh các câu theo mẫu xác định ở phần 4. Kết quả tốt là có sự đa dạng, dù trong cùng một mẫu câu, nhưng không bị cứng nhắc, cùng input, nhưng mỗi lần sinh ra kết quả khác nhau.

6. Ngôn ngữ lập trình: Do có nhiều thư viện xử lý ngôn ngữ tự nhiên trong python, nên SV có thể dùng python. Có 2 lựa chọn, nếu dùng toàn bộ python thì SV phải tự tìm hiểu cách lập trình hướng đối tượng với python, và phải có kết quả sinh các câu tốt. Lựa chọn 2 là dùng Java-ngôn ngữ lập trình sẽ dạy trên lớp. Khi cần thư viện nào đó trong python, có thể gọi từ Java. Yêu cầu code sáng sủa, dễ hiểu, dễ sửa đổi, cấu trúc tốt theo kiến thức được dạy trên lớp.

  • Một project nhỏ của mình về đề bài này, đây là bài làm về bài tập lớn của mình nhưng mình đã xử lại và thu nhỏ project đi rất nhiều, các bạn có thể xem và tham khảo nha : https://github.com/trannguyenhan/stock-news.git (cho mình 1 sao trong repo nha =)) )

Lưu ý : các link được chia sẻ dưới đây không phải là link của mình nên đường dẫn có thể die bất cứ lúc nào.

  • Tổng hợp project OOP kì 20192 - 115611 : PROJECT OOP
  • Tổng hơp project OOP kì 20192 - 115628 : PROJECT OOP

ĐỀ BÀI 2 : Đề tài BTL OOP 20181 

  • Tổng hợp project OOP kì 20181 các lớp : PROJECT OOP

Lưu ý nho nhỏ nữa là mọi thứ mình chia sẻ chỉ dùng để tham khảo, nếu đề tài có giống thì không nên copy.

0 Bình luận:

Đăng nhận xét