[Tutorial] – Bài tập biểu thức (4)

  • Nội dung phần 4:

Ở bài tập biểu thức 2, lớp Expression đã được trang bị khả năng trả về chuỗi biểu thức biểu diễn nó (xem hình 1).

Hình 1 – Phương thức toString trả về chuỗi biểu thức biểu diễn đối tượng Expression

Thông thường, chuỗi biểu diễn biểu thức ở dạng trung tố. Tuy nhiên trong toán học, có nhiều cách biểu diễn chuỗi biểu thức khác nhau (xem bảng 1).

Bảng 3.1 – Các cách biểu diễn chuỗi biểu thức.
Cách biểu diễn Mô tả Ví dụ
Trung tố (infix) Toán tử nằm giữa các toán hạng.
Là cách biểu diễn thông dụng.
Toán tử cần có độ ưu tiên và phải dùng dấu
ngoặc để thay đổi độ ưu tiên này.
2 * ( ( 3 + 4 ) / 5 )
Tiền tố (prefix) Toán tử đứng trước, các toán hạng đứng sau.
Là cách biểu diễn của ngôn ngữ Lisp.
Toán tử không cần độ ưu tiên và không cần
dùng dấu ngoặc
* 2 / + 3 4 5
Hậu tố (postfix) Toán tử đứng sau, các toán hạng đứng trước.
Là cách biểu diễn Ba Lan Ngược (Reversed
Polish Notation).
Toán tử không cần độ ưu tiên và không cần
dùng dấu ngoặc
2 3 4 + 5 / *

Nhiệm vụ của bạn là hãy đề xuất một phương án cải tiến phương thức toString nhằm thỏa mãn các tiêu chí:
i) Hỗ trợ nhiều cách biểu diễn chuỗi biểu thức khác nhau.
ii) Trong tương lai, khi cần bổ sung một cách biểu diễn chuỗi biểu thức mới (nằm ngoài bảng 1), bạn không phải chỉnh sửa lại những gì đã cài đặt

  • Sơ đồ lớp:

so do bieu thuc 4

 

==> Sourcecode (link bitbucket – project tổng hợp)

 

Advertisements