Lập trình hướng đối tượng sẽ có các đặc tính cơ bản như: 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: Lợi ích: + Tổ chức
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC GIA ĐỊNH KHOA: CÔNG NGHỆ THÔNG TIN
TIỂU LUẬN
PHÒNG NHÂN S C A CÔNG TY XYZ TRONG KHU CÔNG NGHIỰ Ủ ỆP TÂN BÌNH CÓ HƠN 2000 NHÂN SỰ HIỆN TẠI, CÔNG VIỆC ĐANG QUẢN LÝ BẰNG CÁC FILE EXCEL NÊN MẤT NHIỀU THỜI GIAN VÀ HI U QU Ệ Ả THẤP
Ngành: CÔNG NGHỆ THÔNG TIN
Chuyên ngành (nếu có): AN TOÀN THÔNG TIN
Giảng viên hướng dẫn: NGUYỄN THÀNH SƠN
Sinh viên thực hiện: ĐẶNG MINH ĐỨC
MSSV: 22150288
Lớp: 221541
TP Hồ Chí Minh,03 tháng 04 năm 2024
Trang 2BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC GIA ĐỊNH KHOA: CÔNG NGHỆ THÔNG TIN
TIỂU LUẬN
PHÒNG NHÂN S C A CÔNG TY ABC TRONG KHU CÔNG NGHI P TÂN Ự Ủ Ệ BÌNH CÓ HƠN 2000 NHÂN SỰ HIỆN TẠI, CÔNG VIỆC ĐANG QUẢN LÝ BẰNG CÁC FILE EXCEL NÊN MẤT NHIỀU THỜI GIAN VÀ HI U QU Ệ Ả THẤP
Ngành: CÔNG NGHỆ THÔNG TIN
Chuyên ngành (nếu có): AN TOÀN THÔNG TIN
Giảng viên hướng dẫn: NGUYỄN THÀNH SƠN
Sinh viên thực hiện: ĐẶNG MINH ĐỨC
MSSV: 22150288
Lớp: 221541
TP Hồ Chí Minh,03 tháng 04 năm 2024
Trang 3PHÒNG NHÂN S C A CÔNG TY ABC TRONG KHU CÔNG NGHIỰ Ủ ỆP TÂN BÌNH
CÓ HƠN 2000 NHÂN SỰ HI ỆN TẠI, CÔNG VIỆC ĐANG QUẢN LÝ BẰNG CÁC
FILE EXCEL NÊN MẤT NHIỀU THỜI GIAN VÀ HIỆU QUẢ THẤP
Nhóm sinh viên thực hiện
STT Họ và tên sinh viên MSSV
Công sức đóng góp (tổng 100%)
01 Nguyễn Hải Đăng 22150460 50%
02 Đặng Minh Đức 22150288 50%
Trang 4Khoa/Viện: Khoa CNTT
NHẬN XÉT VÀ CHẤM ĐIỂM CỦA GIẢNG VIÊN
TIỂU LUẬN MÔN: LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
1 Họ và tên sinh viên: Đặng Minh Đức
2 Tên đề tài: Phòng nhân s c a công ty ABC trong khu Công nghi ự ủ ệp Tân Bình có hơn 2000 nhân s Hi n t i, công viự ệ ạ ệc đang quản lý b ng các file excel nên m t nhi u th i gian và hiằ ấ ề ờ ệu quả thấp 3 Nhận xét: a) Những kết quả đạt được:
b) Những hạn chế:
4 Điểm đánh giá (theo thang điểm 10, làm tròn đến 0.5): Điểm số: ……….…… Điểm chữ: ………
TP HCM, ngày 3tháng 04 năm 2024
Giảng viên chấm
(Ký và ghi rõ họ tên)
Nguyễn Thành Sơn
Trang 5LỜI CAM ĐOAN
Đề tài “Quản lý nhân s trong Phòng Nhân s cự ự ủa Công ty ABC t i Khu Công nghi p Tân ạ ệBình, với hơn 2000 nhân viên” là kết quả của một quá trình h c t p và nghiên c u nghiêm túc ọ ậ ứcủa em, được thực hiện dưới sự hướng d n c a thẫ ủ ầy Nguyễn Thành Sơn Trường Đại h c Gia ọĐịnh
Em xin cam đoan rằng tất cả các nội dung trong bài luận văn này hoàn toàn là của em và đúng sự thật, không có s ự sao chép hay gian lận nào Các con s và d ố ữ liệu được trình bày là kếquả c a công sủ ức và nỗ lực cá nhân trong su t quãng th i gian hố ờ ọc tập tại trường N u có bế ất kỳvấn đề nào phát sinh về bài ti u lu n này, em xin hoàn toàn ch u trách nhiể ậ ị ệm
Trang 6LỜI CẢM ƠN
Em xin cảm ơn Thầy Nguyễn Thành Sơn giảng viên môn Lập trình hướng đối tượng Em viết thư này để bày tỏ lòng biết ơn chân thành đến thầy vì những hướng dẫn và kiến thức mà thầy đã dành cho em trong suốt học kỳ vừa qua
Em ấn tượng với sự tận tâm và nhiệt huyết của thầy trong việc giảng dạy Thầy luôn giải thích các bài giảng một cách rõ ràng, dễ hiểu, và luôn sẵn sàng giải đáp mọi thắc mắc của sinh viên Em cũng đánh giá cao việc thầy thường xuyên tổ chức các bài tập thực hành và thảo luận nhóm, giúp em hiểu rõ hơn về các kiến thức đã học và áp dụng vào thực tế
Em xin gửi lời cảm ơn chân thành đến thầy Nguyễn Thành Sơn vì tất cả những gì thầy đã dành cho em Em biết ơn vì thầy đã truyền cho em niềm đam mê với môn Lập trình hướng đối tượng
và giúp em có được những kiến thức và kỹ năng cần thiết để theo đuổi lĩnh vực này
Kính chúc thầy sức khỏe, hạnh phúc và thành công trong sự nghiệp
Trang 7MỤC LỤC
Chương 1 CỞ SỞ LÝ THUYẾT 1
1.1 Sơ lược về lập trình hướng đối tượng 1
1.1.1 Lập trình hướng đối tượng là gì? 1
1.1.2 Các thành phần chính trong OOP? 2
1.1.3 Các nh chất cơ bản trong OOP 2
1.2 Các nội dung quan trọng cần nhớ của môn học: 3
1.2.1 Các thành phần và thuộc nh trong lập trình hướng đối tượng 3
1.2.2 Mối quan hệ giữa các lớp với nhau 4
1.3 Hiểu được nguyên tắc thiết kế SOLID để áp dụng vào làm đề án 5
Chương 2 THỰC HIỆN ĐỀ TÀI 6
2.1 Khảo sát hiện trạng 6
2.2 Sơ đồ use case 6
2.3 Hiện thực chương trình 7
Chương 3 TỔNG KẾT 17
3.1 Kết quả đạt được 17
3.2 Đánh giá ưu, khuyết điểm của dự án 17
3.3 Hướng phát triển mở rộng đề tài 17
Danh mục tài liệu tham khảo 18
KIỂM TRA ĐẠO VĂN 19
Trang 81
1.1 Sơ lượ c v l ề ập trình hướng đối tượng
Lập trình hướng đối tượng (OOP) xuất hiện vào những năm 1960 Phổ biến từ thập niên 1980 với sự ra đời của các ngôn ngữ lập trình như C++, Java, Python, C# với mục tiêu là giải quyết những hạn chế của lập trình truyền thống Lập trình hướng đối tượng sẽ có các đặc tính cơ bản như: 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):
Lợi ích:
+ Tổ chức code khoa học: Cấu trúc rõ ràng, dễ hiểu, dễ bảo trì
+ Tái sử dụng code: Tiết kiệm thời gian và công sức
+ Khả năng mở rộng: Dễ dàng bổ sung hoặc thay đổi chức năng
+ Tính linh hoạt: Dễ dàng thích ứng với thay đổi yêu cầu
Ứng dụng:
+ Quản lý: Hệ thống quản lý nhân sự, bán hàng, kho hàng
+ Kinh doanh: Hệ thống kế toán, tài chính, quản lý khách hàng
+ Khoa học: Hệ thống mô phỏng, phân tích dữ liệu, điều khiển tự động
+ Giải trí: Game, ứng dụng multimedia, ứng dụng di động
1.1.1 Lập trình hướng đối tượng là gì?
Lập trình hướng đối tượng là một phương pháp lập trình mà trong đó mọi thứ được coi là các đối tượng Mỗi đối tượng có thể chứa dữ liệu (biểu diễn bởi các thuộc tính hoặc trạng thái) và các phương thức (các hành động mà đối tượng đó có thể thực hiện) Các đối tượng có thể tương tác với nhau thông qua việc gửi các thông điệp, thường là bằng cách gọi các phương thức của đối tượng
Trang 92
1.1.2 Các thành ph n chính trong OOP? ầ
* Class (lớp): là các template hay cấu trúc để phục vụ cho việc xây dựng nên các Object(đối tượng) Trong đó sẽ bao gồm một tập hợp các Attribute và Method để định nghĩa cho các đặc tính và hành vi của các Object
Ví dụ như Class Person sẽ bao gồm các Attributes như tên, tuổi, nghề nghiệp, năm sinh, v v Và các methods ví dụ như ăn, uống, ngủ, làm việc ,v v
* Object (đối tượng) trong OOP: là một hiện thực hay ví dụ cụ thể của một class Khi Object được khởi tạo sẽ mang đầy đủ thông tin cụ thể mà Class đã định nghĩa
Ví dụ như ta đã có Class Person bao gồm các methods và attributes rồi thì Object nó sẽ cụ thể như: tên: Peter, tuổi: 24, nghề nghiệp: teacher, v v
1.1.3 Các tính chất cơ bản trong OOP
Tính đóng gói (Encapsulation) là một trong những nguyên tắc cơ bản của lập trình hướng đối tượng Nó cho phép ẩn các chi tiết cụ thể của một đối tượng và chỉ tiết lộ qua các phương thức công cộng Điều này giúp bảo vệ dữ liệu của đối tượng và ngăn chặn việc truy cập trực tiếp từ bên ngoài
Tính kế thừa (Inheritance) cho phép một lớp con kế thừa các thuộc tính và phương thức từ một lớp cha Điều này giúp tái sử dụng mã nguồn và tạo ra một cấu trúc phân cấp trong mã lập trình, giảm thiểu sự lặp lại và tăng tính tái sử dụng
Tính đa hình (Polymorphism) cho phép một phương thức có thể thực hiện các hành động khác nhau dựa trên loại đối tượng gọi nó Điều này giúp tạo ra mã linh hoạt
và mở rộng, khi mà cùng một phương thức có thể thực hiện các hành động khác nhau tùy thuộc vào loại đối tượng mà nó gọi
Trang 103
Cuối cùng, tính trừu tượng (Abstraction) cho phép ẩn đi các chi tiết không cần thiết và tập trung vào các tính năng quan trọng của một đối tượng Điều này giúp giảm
sự phức tạp và tạo ra một cách tiếp cận dễ hiểu hơn cho mã lập trình
1.2 Các n i dung quan tr ng c n nh ộ ọ ầ ớ của môn học:
1.2.1 Các thành ph n và thu ầ ộc tính trong lập trình hướng đối tượng
● Các thành phần trong lập trình hướng đối tượng
* Class (lớp)
- Lớp là một mô hình, mẫu thiết kế cho các đối tượng
- Định nghĩa cho thuôc tính và phương thức của một đối tượng
* Đối tượng (Object)
- Thể hiện cụ thể của một lớp
- Có trạng thái được định nghĩa các thuộc tính và hành vi bởi các phương thức của lớp
* Phương thức (method)
- Là các hành động mà đối tượng có thể thực hiện
- Định nghĩa cách thức đối tượng phản ứng với các yêu cầu từ bên ngoài
* Thuộc tính (attribute)
- Là các đặc điểm của 1 đối tượng
- Thể hiện trạng thái của đối tượng
● Các thuộc tính chính trong OOP là đóng gói, kế thừa và đa hình Đóng gói đề cập đến việc gói dữ liệu và các phương thức hoạt động trên dữ liệu đó trong một đơn vị Đơn vị này được gọi là một lớp và nó cung cấp một cách để ẩn các chi tiết triển khai của
dữ liệu và phương thức với thế giới bên ngoài Kế thừa là quá trình tạo các lớp mới từ các lớp hiện có để sử dụng lại mã và mở rộng chức năng Điều này cho phép các nhà phát triển tạo các lớp mới kế thừa các thuộc tính và hành vi của các lớp hiện có, giảm
Trang 114
trùng lặp mã và tăng khả năng sử dụng lại mã Đa hình là khả năng sử dụng một giao diện duy nhất để thể hiện nhiều loại đối tượng
1.2.2 Mối quan h ệ giữ a các l p v ớ ới nhau
Mối quan hệ giữa các lớp là một khái niệm quan trọng trong lập trình hướng đối tượng (OOP) Các lớp có thể liên kết với nhau theo nhiều cách khác nhau để tạo thành một
hệ thống thống nhất và hiệu quả Dưới đây là một số mối quan hệ phổ biến
* Kế thừa (Inheritance)
Kế thừa là mối quan hệ "cha con" giữa các lớp Lớp con (subclass) kế thừa thuộc tính và phương thức từ lớp cha (superclass) Lớp cha đóng vai trò như một khuôn mẫu chung, cung cấp các chức năng cơ bản cho các lớp con Lớp con có thể bổ sung thêm các thuộc tính và phương thức mới để đáp ứng nhu cầu cụ thể của mình
-Ví dụ: Lớp Animal là lớp cha mô tả các thuộc tính chung của con vật như tên, tuổi, trọng lượng
Lớp Dog và Cat là lớp con kế thừa từ lớp Animal Lớp Dog có thể bổ sung thêm phương thức bark() (sủa) và lớp Cat có thể bổ sung thêm phương thức meow() (meo meo)
* Phụ thuộc (Dependency)
Phụ thuộc là mối quan hệ "sử dụng" giữa các lớp Một lớp sử dụng (tạo ra hoặc sử dụng) một lớp khác Mối quan hệ này thể hiện sự phụ thuộc của một lớp vào một lớp khác để thực hiện chức năng của mình
Ví dụ: Class Car sử dụng lớp Engine để khởi động và di chuyển.và Class Customer
sử dụng class Order để đặt hàng
* Tổng hợp (Composition)
Tổng hợp là mối quan hệ "tạo thành" giữa các lớp Một lớp được tạo thành từ các đối tượng của các lớp khác Mối quan hệ này thể hiện việc một lớp sử dụng các đối tượng của các lớp khác để tạo thành một đối tượng mới
Trang 125
Ví dụ: Class Car được tạo thành từ các đối tượng Engine, Wheel, Door Class University được tạo thành từ các đối tượng Student, Teacher, Course
* Giao tiếp (Association)
Giao tiếp là mối quan hệ "liên kết" giữa các lớp Các lớp có thể tương tác và trao đổi dữ liệu với nhau Mối quan hệ này thể hiện sự liên kết giữa các lớp để thực hiện các chức năng chung
Ví dụ: Class Student liên kết với class Course để đăng ký học phần.Class Teacher liên kết với lớp Course để giảng dạy môn học
1.3 Hiểu được nguyên t c thi t k ắ ế ế SOLID để áp d ụng vào làm đề án
SOLID là tập hợp 5 nguyên tắc thiết kế phần mềm giúp xây dựng chương trình hướng đối tượng linh hoạt, dễ bảo trì và mở rộng Các nguyên tắc bao gồm:
S - Single Responsibility Principle: Mỗi lớp chỉ nên có một trách nhiệm duy nhất
O - Open-Closed Principle: Lớp học nên mở rộng cho chức năng mới, nhưng đóng đối với sửa đổi
L - Liskov Substitution Principle: Các lớp con phải có thể thay thế được lớp cha trong mọi ngữ cảnh
I - Interface Segregation Principle: Nên tạo ra các giao diện nhỏ, cụ thể thay vì giao diện lớn, chung chung
D - Dependency Inversion Principle: Các lớp cấp cao không nên phụ thuộc vào các lớp cấp thấp Thay vào đó, chúng nên phụ thuộc vào các giao diện
Áp dụng nguyên tắc SOLID vào lập trình giúp xây dựng chương trình có cấu trúc tốt, dễ hiểu, dễ bảo trì và mở rộng
Trang 13+ Mất thời gian và công sức, đồng thời dễ gây ra những sai sót trong quản lý thông tin nhân sự khi muốn chỉnh sửa
+ Công việc quản lý bằng thủ công vẫn còn bị hạn chế về khả năng phân tích dữ liệu vả tạo ra các báo cáo không hiệu quả
+ Với một công ty có quy mô lớn như 2000 nhân sự và có thể hơn thì phương pháp lý truyền thống không còn phù hợp để đáp ứng nhu cầu ngày càng tăng về quản lý nhân sự
→ Dựa trên hiện trạng nêu trên, rõ ràng ta có thể thấy được sự cần thiết của việc triển khai một giải pháp có thể giải quyết vấn đề này đó là một phần mềm giải quyết nhân sự Phần mềm này
sẽ giúp giải quyết các vấn đề hiện tại và tạo ra một hệ thống quản lý nhân sự một cách khoa học
và hiệu quả, đáng tin cậy cho công ty
2.2 Sơ đồ use case
Sơ đồ use case quản lý nhân sự cơ bản như sau:
Trang 1710
Ở đây ta sẽ thêm thử Kỹ Sư:
Trang 1912
Sau khi thêm xong, ta liệt kê được tất cả nhân sự trong công ty
Ngoài ra, ta có thể liệt kê từng thuộc tính như Kỹ Sư, Công Nhân, Nhân Viên, Chuyên Gia Nước Ngoài và Thực Tập Sinh
Trang 2013
* Tiếp theo là đến với chức năng “Tìm Kiếm Nhân Sự”:
Trang 2114
Chương trình sẽ có 3 chức năng tìm kiếm: theo họ tên, số điện thoại và theo mã nhân
viên (đối với nhân viên)
Trang 2215
Tiếp theo đến với chức năng “Xóa Nhân Sự Theo Số Điện Thoại” :
// Ở đây em vẫn chưa fix được lỗi in ra dòng lệnh xóa không thành công nhưng chương trình vẫn xóa đưỡ dữ liệu bình thường
Tiếp theo đến với chức năng “Sửa thông tin nhân sự”:
Trang 2417
Chương 3 TỔNG KẾT
3.1 K t qu ế ả đạt được
Chỉ mới hoàn thành được 7/8 chức năng của đề án, mặc dù có thêm chức năng tìm nhân
sự bằng số điện thoại Chỉ mới dừng lại ở tương tác trên màn hình console, chưa làm được giao diện người dùng GUI và cũng chưa liên kết được với database
3.2 Đánh giá ưu, khuyết điểm của dự án
* Ưu điểm:
+ Giải quyết được vấn đề khó khăn trong việc quản lý nhân sự bằng excel một cách khoa học và thông minh hơn Giúp tiết kiệm thời gian và công sức trong việc quản lý nhân sự + Dễ sử dụng: Các chức năng của hệ thống được thiết kế đơn giản, dễ thao tác, phù hợp với người dùng
3.3 Hướ ng phát tri n m r ể ở ộng đề tài
Mở rộng thêm nhiều chức năng hơn: Phát triển thêm các chức năng chuyên sâu như quản
lý lương bổng, chấm công, đào tạo,
Tích hợp báo cáo thống kê: Cung cấp các báo cáo thống kê chi tiết về nhân sự, giúp ban lãnh đạo đưa ra quyết định chính xác
Trang 2518
Thiết kế hệ thống mở rộng: Xây dựng hệ thống với khả năng mở rộng cao để đáp ứng nhu cầu phát triển của doanh nghiệp trong tương lai
Ngoài ra, cần lưu ý một số vấn đề sau:
Đào tạo nhân viên sử dụng hệ thống: Cần tổ chức đào tạo để nhân viên sử dụng hệ thống hiệu quả
Bảo mật dữ liệu: Cần đảm bảo bảo mật dữ liệu nhân viên trong hệ thống
Sao lưu dữ liệu định kỳ: Cần sao lưu dữ liệu định kỳ để tránh mất mát dữ liệu
Danh m c tài li u tham kh o ụ ệ ả
Kathy Seirra, Bert Bates & Trisha Gee, Head Frirst Java, O’REILLY
Cay S Horstmann Gary Cornell, Core Java Volume 1 and 2, & O’REILLY
Trang 2619
KIỂM TRA ĐẠO VĂN
Ứng dụng kiểm tra đạo văn: Plagiarism checker
Trích dẫn nguồn đạo văn: duc-thang/triet-hoc/triet-hoc-van-dung-cac-nguyen- -luong-chat/53051300 li