HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG KHOA CÔNG NGHỆ ĐA PHƯƠNG TIỆN BÁO CÁO CUỐI KỲ MÔN LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG C++ Đề tài Phát triển phần mềm tính lương cho nhân viên A GIỚI THIỆU PROJECT I GIỚI.
Trang 1HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
KHOA CÔNG NGHỆ ĐA PHƯƠNG TIỆN
BÁO CÁO CUỐI KỲ MÔN LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG C++
Đề tài: Phát triển phần mềm tính lương cho nhân viên
Trang 2A. GIỚI THIỆU PROJECT
I. GIỚI THIỆU TỔNG QUAN
1. Mục đích
• Một project được tạo ra với mục đích tính lương cho nhân viên
• Phần mềm này có thể tính lương được cho nhân viên dựa vào chức vụ của nhân viên
2. Ngôn ngữ sử dụng: Java.
3. Kiến thức sử dụng: Lập trình hướng đối tượng.
1. Thiết lập những chỉ số liên quan đến lương:
• Người tính lương có thể thiết lập sẵn những chỉ số cơ bản lên quan đến lương như: lương cơ bản, lương làm thêm,…
2. Tính lương cho nhân viên:
• Đây là chức năng chính của phần mềm
• Người tính lương chỉ cần nhập thông tin nhân viên: Tên, chức vụ, số ngày làm việc, số giờ làm việc là có thể tính được lương của nhân viên đó
Trang 3B. XÁC ĐỊNH TÍNH HƯỚNG ĐỐI TƯỢNG
CÓ TRONG PROJECT
• Lập trình hướng đối tượng là một phương pháp lập trình dựa trên khái niệm về lớp và đối tượng OOP tập trung vào các đối tượng thao tác hơn
là logic để thao tác chúng
• OOP là nền tảng của các design pattern hiện nay
• Mục tiêu của OOP là tối ưu việc quản lý source code, giúp tăng khả năng tái sử dụng và quan trọng hơn hết là giúp tóm gọn các thủ tục đã biết trước tính chất thông qua việc sử dụng các đối tượng
1. Đối tượng (Object) và Lớp (Class) trong OOP là gì?
• Đối tượng (Object): Đối tượng trong OOP bao gồm 2 thành phần chính:
o Thuộc tính (Attribute): là những thông tin, đặc điểm của đối tượng
o Phương thức (Method): là những hành vi mà đối tượng có thể thực hiện
o Để dễ hình dung, ta có một ví dụ thực tế về đối tượng là
smartphone Đối tượng này sẽ có:
Thuộc tính: màu sắc, bộ nhớ, hệ điều hành…
Phương thức: gọi điện, chụp ảnh, nhắn tin, ghi âm…
• Lớp (Class)
o Lớp là sự trừu tượng hóa của đối tượng Những đối tượng có những đặc tính tương tự nhau sẽ được tập hợp thành một lớp Lớp cũng sẽ bao gồm 2 thông tin là thuộc tính và phương thức
o Một đối tượng sẽ được xem là một thực thể của lớp
o Tiếp nối ví dụ ở phần đối tượng (object) phía trên, ta có lớp (class) smartphone gồm 2 thành phần:
Thuộc tính: màu sắc, bộ nhớ, hệ điều hành…
Phương thức: gọi điện, chụp ảnh, nhắn tin, ghi âm…
Các đối tượng của lớp này có thể là: iPhone, Samsung, Oppo, Huawei…
• Ưu điểm của lập trình hướng đối tượng OOP
o OOP mô hình hóa những thứ phức tạp dưới dạng cấu trúc đơn giản
o Code OOP có thể sử dụng lại, giúp tiết kiệm tài nguyên
o Giúp sửa lỗi dễ dàng hơn So với việc tìm lỗi ở nhiều vị trí trong code thì tìm lỗi trong các lớp (được cấu trúc từ trước) đơn giản và ít mất thời gian hơn
o Có tính bảo mật cao, bảo vệ thông tin thông qua đóng gói
o Dễ mở rộng dự án
2. 4 đặc tính cơ bản của OOP:
Trang 4• Tính đóng gói (Encapsulation).
• Tính kế thừa (Inheritance)
• Tính đa hình (Polymorphism)
• Tính trừu tượng (Abstraction)
3. Những ngôn ngữ OOP phổ biến nhất:
• Java
o Java là ngôn ngữ lập trình hướng đối tượng (OOP), đa mục đích và độc lập nền tảng Thay vì biên dịch mã nguồn thành mã máy trên nền tảng cụ thể, code Java được biên dịch thành bytecode – một định dạng trung gian Bytecode sau đó sẽ được chạy bởi môi trường thực thi (runtime environment)
• C++
o Là một ngôn ngữ lập trình hướng đối tượng được phát triển bởi Bjarne Stroustrup nhưng C++ mang cả 2 phong cách: lập trình hướng cấu trúc giống C và có thêm phong cách hướng đối tượng Nếu đã quen với lập trình hướng cấu trúc trước đó thì việc học C++ không phải là điều quá khó khăn
o PHP là ngôn ngữ lập trình đa mục đích, được rất nhiều Developer sử dụng Đây là ngôn ngữ kịch bản mã nguồn mở, chạy ở phía server và được dùng để tạo ra các ứng dụng web
• JavaScript
o JavaScript là ngôn ngữ lập trình được sử dụng trong việc xây dựng các website có tính tương tác cao, với mức độ phổ biến được xếp hạng bậc nhất Học JavaScript khá dễ dàng và đặc biệt phù hợp cho những developer mới bắt đầu học lập trình
• Python
o Python là ngôn ngữ lập trình hướng đối tượng bậc cao, dùng để phát triển website và nhiều ứng dụng khác nhau Python được tạo ra bởi Guido van Rossum và được phát triển trong một dự án mã mở (open source)
1. Khái niệm và ý nghĩa
• Khái niệm:
Tính đóng gói được hiểu đơn giản là các dữ liệu và các phương thức có liên quan đến nhau được “đóng gói” lại thành các class để tiện cho việc quản lý và sử dụng
• Ý nghĩa
Trang 5Đóng gói để tiện lợi cho việc quản lý và sử dụng Mỗi gói (class) sẽ được xây dựng để thực hiện một nhóm chức năng đặc trưng của gói (class) đó
Đóng gói cũng để che giấu một số thông tin, chi tiết cài đặt nội bộ để bên ngoài không thể nhìn thấy Đây chính là đảm bảo sự toàn vẹn, bảo mật của đối tượng
2. Demo project
Theo như hình ảnh chúng ta có thể thấy project bao gồm 5 class và được “đóng gói” vào 3 package khác nhau theo từng mục đích sử dụng riêng
• Package main
Package này chỉ bao gồm 1 class duy nhất, đó là MainClass Đây là lớp chứa đựng các hàm tình toán và chạy chương trình
• Package model
Package này bao gồm 3 class, đó là NhanVien, NhanVienFullTime và NhanVienPartTime Package này được tạo ra để đóng gói những class với mục đích là tạo và lưu đối tượng
• Package util
Package này bao gồm class Configs để lưu trữ những cài đặt cho chương trình
Trang 6II. Lớp đối tượng
1. Khái niệm
• Đối tượng: Một đối tượng sẽ bao gồm 2 thông tin là Thuộc tính và Phương thức
• Thuộc tính: là những thông tin, đặc điểm của đối tượng
• Phương thức: là những thao tác, hành động mà đối tượng đó có thể thực hiện
• Lớp: Một lớp là một kiểu dữ liệu bao gồm các thuộc tính và phương thức được định nghĩa từ trước Đây là sự trừu tượng háo đối tượng Hay nghĩ đơn giản, các đối tượng có các đặc tính tương tự nhau được gom lại thành một lớp đối tượng
2. Demo project
Theo như hình ảnh, ta có thể thấy rõ, project này bao gồm 5 lớp đối tượng (class) khác nhau đã được đóng gói riêng
• MainClass: class này bao gồm các hàm tính toán, và như ta có thể thấy, class này không bao gồm các thuộc tính, mà chỉ có các hàm
Trang 7• NhanVien: đây là class tên NhanVien gồm các thuộc tính ten, luong; các phương thức tinhLuong và xuatThongTin
Trang 8• NhanVienFullTime: lớp đối tượng này bao gồm các thuộc tính ten, overdate; các phương thức loaiChucVu và tinhLuong.
• NhanVienPartTime: tương tự class trên, l ớp đối tượng này bao gồm các thuộc
tính ten, overdate; các phương thức loaiChucVu và tinhLuong.
• Configs: tương tự MainClass, đây là nơi lưu trữ các cài đặt chương trình
Trang 9III. Tính kế thừa
1. Khái niệm
• Tính kế thừa cho phép xây dựng một lớp mới dựa trên các định nghĩa của lớp đã có
• Lớp cha được tạo ra, các lớp con sẽ được thừa hưởng những phương thức
từ lớp cha và cũng thể nhận được dữ liệu mà lớp cha chia sẻ Lớp con sẽ không cần định nghĩa lại, mà có thể mở rộng các thành phần kế thừa và bổ sung thêm các thành phần mới
2. Demo project
Tính kế thừa được thể hiện trong project với mối quan hệ của các class NhanVien (đóng vai trò là lớp cha) và 2 class NhanVienFullTime và NhanVienPartTime (đóng vai trò là các lớp con)
• Lớp cha (NhanVien): bao gồm thuộc tính ten và luong
• Lớp con (NhanVienFullTime và NhanVienPartTime): kế thừa lại từ lớp cha thuộc tính ten, bên cạnh đó, mỗi lớp con còn phát triển thêm một số phương thức khác
Trang 10IV. Tính đa hình
1. Khái niệm
Trang 11• Tính đa hình là một hành động có thể được thực hiện bằng nhiều cách khác nhau
• Hiểu đơn giản thì đa hình là khái niệm mà hai hoặc nhiều lớp có những phương thức giống nhau nhưng có thể thực thi bằng những cách khác nhau
• Dấu hiện: @override
2. Demo project
Ta có thể thấy được tính đa hình tại 2 class NhanVienFullTime và
NhanVienPartTime, cụ thể hơn là tại 2 phương thức loaiChucvu và tinhLuong Cùng là một phương thức, nhưng cách thức hoạt động của
chúng lại khác nhau ở mỗi class Đây chính là tính đa hình