Trang Chủ

Lập trình OOP với Java

OOP viết tắt của từ Object-Oriented Programming. Có nghĩa là lập trình hướng đối tượng.

Ở OOP có 4 tính chất:

  1. Tính trừu tượng
  2. Tính kế thừa
  3. Tính đa hình
  4. Tính đóng gói

Để hiểu hơn về OOP, chúng ta cùng làm bài toán sau:

Một trường đại học quản lý thông tin cán bộ (gồm giảng viên và nhân viên hành chính) trong trường. Với giảng viên cần quản lý các thông tin: Họ tên, khoa, trình độ (cử nhân, thạc sĩ, tiến sĩ), phụ cấp, số tiết dạy trong tháng ,hệ số lương. Với nhân viên hành chính cần quản lý: Họ tên, phòng ban, số ngày công, hệ số lương, phụ cấp, chức vụ (trưởng phòng, phó phòng, nhân viên). Phụ cấp cán bộ được tính theo bảng: cử nhân 300. thạc sĩ 500. tiến sĩ 1000. trưởng phòng 2000. phó phòng 1000. nhân viên 500. Lương giảng viên được tính như sau: Hệ số lương x 730 + phụ cấp + số tiết dạy x 45. Lương nhân viên được tính như sau: Hệ số lương x 730 + phụ cấp + số ngày công x 30;

Viết chương trình quản lý thông tin cán bộ trong trường bao gồm các chức năng :

  1. Nhập dữ liệu cho các cán bộ trong trường.
  2. Tìm kiếm nhân viên theo tên và phòng ban và in ra màn hình thông tin chi tiết về nhân viên này.
  3. Xuất ra danh sách toàn bộ giảng viên trong trường và sắp xếp tên theo alphabet, nếu trùng tên thì sắp xếp theo lương nhận được từ cao xuống thấp. (Chú ý, danh sách cán bộ giảng viên, nhân viên được in cả cột thông tin lương) Yêu cầu: Áp dụng các kiến thức về lập trình hướng đối tượng để xây dựng chương trình. Sử dụng thành thạo tính chất trừu tượng, đóng gói, đa hình, kế thừa và áp dụng được abstract class và interface trong bài làm. Hàm main chỉ thực hiện gọi đến các chức năng mà không cần viết nghiệp vụ nào khác.

Đây là code của mình xử lý bài toán trên: https://github.com/nguyenvanthieub/OOP

Ở đây, mình đã tạo interface ICanBo với abstract method tinhLuong()

Để cho 2 class con GiangVien và NhanVien kết thừa (implements ICanBo) (thể hiện tính kế thừa).

Bởi vì thấy cả GiangVien và NhanVien đều có chung các thuộc tính: hoTen, heSoLuong, phuCap, luong. Mình đã tạo abstract class CanBo, để cho class GiangVien và NhanVien kế thừa để tránh bị lặp code để cả class GiangVien, NhanVien đều phải viết (thể hiện tính trừu tượng)

Từ đó, 2 class con GiangVien và NhanVien tự xử lý lại (override) method tinhLuong() cho phù hợp với bài toán. (thể hiện tính đa hình) Ví dụ dưới là class NhanVien

Để đảm bảo tính đóng gói, mình đã để các thuộc tính là private, các class khác muốn truy cấp tới thuộc tính của NhanVien thì phải thông qua getter, setter mình đã tạo.

ITZone via Viblo.asia

Chia sẻ bài viết ngay