Công ty A muốn xây dựng một hệ thống Payroll. Hàng tháng, công ty cần tính tiền chi trả cho các hóa đơn (Invoice) và tiền lương cho nhân viên (Employee). Mặc dù các loại chi trả này thuộc các danh mục khác nhau và có cách tính khác nhau, nhưng chúng đều thực hiện nhiệm vụ tính tổng số tiền (getPaymentAmount) mà công ty cần chi trả.
Trong đó, Invoice có thông tin về danh sách hàng hóa (Goods), phương thức getPaymentAmount tính và trả về tổng số tiền cần phải chi trả cho các hàng hóa trong hóa đơn đó. Một đối tượng Goods bao gồm thông tin về tên sản phẩm, số lượng và giá.
Employee bao gồm thông tin tên (name) và địa chỉ (address) của nhân viên, phương thức getPaymentAmount tính và trả về số tiền mà công ty cần trả cho nhân viên. Để tính lương cho nhân viên, công ty chia nhân viên thành ba loại: SalariedEmployee, HourlyEmployee và CommissionEmployee.
Cụ thể, SalariedEmployee mỗi tuần được trả cố định một khoản weeklySalary không quan tâm số giờ họ làm việc. HourlyEmployee được trả h * hourSalary, trong đó h và hourSalary lần lượt là số giờ làm việc trong tuần và mức lương của một giờ làm việc. CommissionEmployee được trả theo tỷ lệ hàng hóa họ bán được, theo công thức commissionRate * grossSales, trong đó commissionRate và grossSales lần lượt là tỷ lệ hoa hồng họ được nhận và tổng giá trị họ đã bán được.
Giả sử chúng ta đang viết ứng dụng quản lý nhân sự cho công ty phần mềm ABC. Mỗi nhân viên (Employee) chỉ có thể là lập trình viên (Developer), kiểm thử viên (Tester), hoặc quản lý (Manager). Người quản lý (Manager) giám sát một số nhân viên (bao gồm cả những quản lý khác).
Thông tin về nhân viên ở đây bao gồm họ tên (name) và các công việc hiện tại (listOfTask). Lớp Employee cung cấp phương thức displayInfo() để in ra tên, danh sách công việc, và tên của người quản lý của nhân viên. Lớp Manager có phương thức addEmployee(Employee e) để thêm một nhân viên vào danh sách những nhân viên do người đó quản lý.
Đại diện cho khái niệm gian hàng trong trung tâm thương mại.
Thuộc tính (khai báo protected):
Phương thức:
Lớp RegularShop:
Gian hàng thông thường. Có thông tin bổ sung là hệ số phụ thu (hesophuthu: kiểu số thực).
Lớp FoodShop:
Gian hàng bán thực phẩm. Có thông tin bổ sung là chi phí an toàn thực phẩm (chiphiantoanTP: kiểu số thực) đều bằng 2000 cho mỗi gian hàng.
Phương thức của hai lớp trên bao gồm:
Với tiền thuê được tính như sau:
RegularShop:
FoodShop:
Thuộc tính:
Phương thức:
Giả sử chúng ta đang viết chương trình mô phỏng hệ thống lưu trữ của máy tính. Hệ thống lưu trữ FS trên máy tính được tổ chức thành các đĩa (Disk). Mỗi đĩa có thể sẽ chứa các Folder, File, và Shortcut. Folder có thể chứa các File, các Shortcut và các Folder con.
Thuộc tính chính của Disk, Folder, File, và Shortcut là tên. Ngoài ra, Disk còn có thông tin về dung lượng; File có thông tin về kích thước, loại tệp (binary hoặc text); Shortcut có thông tin về phần tử nguồn (là Folder hoặc File mà shortcut trỏ đến).