Thông qua việc ứng dụng của lập trình hướng đối tượng, biến các thực thể ngoài đời thực thành các đối tượng trong hệ thống đã giúp việc quản lý đơn giản và nhanh chóng hơn.. Ví dụ 2: ta
Ngôn ng ữ Java và l ập trình hướng đối tượ ng
Ứ ng d ụ ng c ủ a Java
Ngày nay Java được sử dụng với các mục đích sau :
- Phát tri ể n ứ ng d ụ ng cho các thi ế t b ị điệ n t ử thông minh, các ứ ng d ụ ng cho doanh nghi ệ p v ớ i quy mô l ớ n.
- Tạo các trang web có nội dung động (web applet), nâng cao chức năng của server
- Phát triển nhiều loại ứng dụng khác nhau: Cơ sở dữ liệu, mạng, Internet, viễn thông, giải trí,
3.Những đặc điểm cơ bản của Java
- Đơn giản và quen thuộc: Vì Java kế thừa trực tiếp từ C/C++ nên nó có những đặc điểm của ngôn ngữ này, Java đơn giản vì mặc dù dựa trên cơ sở
C++ nhưng Sun đã cẩn thận lược bỏ các tính năng khó nhất của của C++ để làm cho ngôn ngữ này dễ sử dụng hơn.
- Hướng đối tượng và quen thuộc
- Mạnh mẽ (thể hiện ở cơ chế tự động thu gom rác - Garbage Collection) và an toàn
- Kiến trúc trung lập, độc lập nền tảng và có tính khả chuyển (Portability)
- Máy ảo (biên dịch và thông dịch)
- Đa nhiệm: Ngôn ngữ Java cho phép xâ dựng trình ứng dụng, trong đó nhiều quá trình có thể xảy ra đồng thời Tính đa nhiệm cho phép các nhà lập trình có thể biên soạn phần mềm đáp ứng tốt hơn, tương tác tốt hơn và thực hiện theo thời gian thực.
Hướng đối tượ ng trong Java
Ưu điểm
• Nâng cao hiệu năng phát triển phần mềm, liên quan tới 3 yếu tố trong OOP: o Tính Mô - đun: Tách biệt các nhiệm vụ trong quá trình phát triển phần mềm dựa trên các đối tượng cụ thể, hay mỗi đối tượng có một nhiệm vụ riêng. o Tính mở rộng: Các đối tượng có thể mở rộng thêm các thuộc tính mới, các hành vi mới trong tương lai. o Tính tái sử dụng: Các đối tượng có thể tái sử dụng một ứng dụng hoặc nhiều ứng dụng khác nhau Nhờ vào các yếu tố trên mà OOP giúp tăng hiệu năng phát triển phần mềm so với lập trình hướng thủ tục truyền thống
• Nâng cao khả năng bảo trì phần mềm: Chính nhờ các yếu tố kể trên mà việc bảo trì cũng trở nên dễ dàng hơn, vì thiết kế theo mô - đun nên việc thay đổi một phần của chương trình có thể không làm ảnh hưởng đến những phần còn lại, rất phù hợp với những dự án lớn, đòi việc phải bảo trì và thay đổi nhiều
Lập trình hướng đối tượng (OOP) giúp phát triển phần mềm nhanh hơn nhờ tính tái sử dụng cao OOP cung cấp thư viện đối tượng đa dạng, cho phép tái sử dụng đoạn mã đã tối ưu hóa trong các dự án tương lai Điều này làm giảm đáng kể chi phí phát triển phần mềm.
Nhược điểm
• Khá phức tạp, có thể khó nhằn cho beginner, bởi nó đòi hỏi sự tư duy dựa trên sự tương tác giữa các đối tượng, do đó chúng ta cần nắm được bản chất: lớp, đối tượng, thuộc tính, phương thức; nắm được 4 tính chất của hướng đối tượng gồm: tính trừu tượng (abstract), tính kế thừa (inheritance), tính đóng gói (encapsulation), tính đa hình (polymorphism).
• Chương trình có thể chậm và kích thước lớn hơn so với các chương trình lập trình hướng thủ tục Do các phần mềm này thường yêu cầu nhiều câu lệnh hơn để thực thi, người lập trình cần viết ra nhiều dòng mã hơn để đảm bảo các thuộc tính, phương thức của đối tượng => kích thước chương trình lớn theo.
• Lập trình hướng đối tượng không phải là chìa khóa vạn năng cho nhiều vấn đề Theo em, mỗi một phương pháp lập trình đều có sự phù hợp với mỗi bài toán thực tế nhất định Chẳng hạn giải phương trình bậc 2, thay vì phải ngồi viết ra đối tượng phương trình bậc 2 (theo OOP), cài đặt các thuộc tính và các phương thức cho nó, tr ong lập trình hướng chức năng trong 1 file duy nhất, ta chỉ cần viết mỗi một hàm con có chức năng tìm nghiệm nhờ vào việc truyền vào 3 tham số giá trị và cho in nghiệm là xong.
Khảo sát hệ thống và phân tích yêu cầu
Hi ệ u sách là khu dành cho m ọi ngườ i (t ừ h ọ c sinh,sinh viên,ti ến sĩ,giáo sư, ngườ i cao tu ổi,… ) có nhu cầ u v ề vi ệ c tìm hi ể u các thông tin v ề khoa h ọ c k ỹ thu ậ t, th ẩ m m ỹ,… từ căn bả n t ớ i chuyên sâu có th ể tìm đượ c cho mình các th ể l ọ ai sách phù h ợ p v ớ i nhu c ầ u v à đúng chuyên môn củ a mình c ầ n tìm hi ể u Yêu c ầ u qu ả n lý v ề vi ệ c nh ậ p xu ấ t chung các ngu ồ n sách c ủ a hi ệ u sách đã rấ t khó, còn thêm ph ả i qu ả n lý vi ệ c mua bán sách hằng ngày đối với các cửa hàng Vì vậy cần 1 chương trình quản lý để giúp nhân viên và qu ả n lý d ễ dàng hơn trong công việ c c ủ a mình
Các công vi ệ c chính c ủa thư việ n g ồ m: Nh ậ n sách t ừ các nhà cung c ấ p xu ấ t truy ề n v ề kho Xu ấ t (bán) các lo ạ i sách hi ệ n có trên ứ ng d ụ ng và thông báo các sách có kh ả d ụng để mua không , n ế u có th ể mua cho phép thanh toán online
Vai trò c ủ a các th ự c th ể c ủ a hi ệ u sách đượ c phân c ấ p qu ả n lý theo t ừ ng b ộ ph ận như sau:
• Qu ả n lý : là ngườ i qu ả n lý toàn b ộ h ệ th ố ng hi ệ u sách, có c ấ p b ậ c quy ề n cao nh ấ t và có th ể qu ả n lý các th ự c th ể khác
• Nhân viên: là nhân viên c ủ a hi ệ u sách ngườ i ch ị u trách nhi ệ m nh ậ p xu ấ t kho sách, tra c ứ u l ị ch s ử c ủa ngườ i dùng
• Khách hàng: Ngườ i dùng có tài kho ả n có th ể đăng nhậ p và mua sách tr ự c tuy ế n trên h ệ th ố ng
Việc mất mát tiền, sách vở của khách sẽ được phát hiện và xử lý ngay nhờ sự rà soát từng người, từng bộ phận và nhờ vào số liệu chính xác trong từng bản ghi hệ thống (logs) mà được tự động ghi khi mỗi hành động tương tác vào hệ thống.
M ỗ i nhân viên tùy theo nhi ệ m v ụ c ủ a mình ch ỉ được xem báo cáo liên quan đế n công vi ệc, mà không được xem chương trình của ngườ i khác
2.Phân tích yêu cầu a.Yêu cầu chức năng
- Người dùng có thể mua sách trực tuyến khi đủ số dư
- Quản lý sách hiện có ( thêm , xoá , sửa , đọc )
- Quản lý nhật ký hệ thống ( system logs ) , nhật kí sử dụng (action logs)
- Mô hình CRUD các user account , sách , danh mục …
- Quản lý có thể xem các thống kê hệ thống b.Yêu cầu phi chức năng
- Hệ thống có khả năng bảo mật và phân quyền
+ Bảo mật : sử dụng các biến private trong hệ thống, có password khi truy cập các tài khoản khác nhau
+ Phân quyền : mỗi tài khoản có phân quyền khác nhau : Customer (khách) , Staff(Nhân viên) , Manager(Quản lý)
- Phân chia khảnăng truy cập :
+ Customer chỉ truy cập được vào các khu vực hiệu sách, mua sách và thông tin cá nhân
+ Staff thì truy cập được vào các khu vực quản lý sách và tra cứu lịch sử mua hang
+ Manager có thể truy cập vào các khu vực hệ thống như quản lý người dùng , nhật ký hệ thống …
Phân tích h ệ th ố ng
1.Các đối tượng trong hệ thống
- Đối tượng Model_Log ( bản ghi hệ thống ) :
- Đối tượng People_User :Là lớp cơ bản triển khai thông tin cơ bản của 1 người dùng trong hệ thống thực thi giao diện IUser , bao gồm các method cơ bản của 1 user bất kì trong hệ thống có thể thực hiện Đây là 1 lớp abstract
- Đối tượng People_Khach : Kế thừa từ People_User và thực thi giao diện
ICustomer, cho phép tạo ra đối tượng có các chức năng và thông tin đầy đủ như
1 vị khách mua sách trong hệ thống
Đối tượng People_NhanVien kế thừa từ People_User và triển khai giao diện IStaff, hỗ trợ tạo đối tượng có đầy đủ chức năng và thông tin giống như nhân viên thực thụ trong hệ thống, bao gồm quản lý sách, tra cứu lịch sử người dùng và nhiều tác vụ khác.
- Đối tượng People_QuanLy : Kế thừa từ People_User và thực thi giao diện IStaff và IManager, cho phép tạo ra đối tượng có các chức năng và thông tin đầy đủ của 1 nhân viên và 1 quản lý làm việc trong hệ thống ( có quyền hạn cao nhất )
2.Mối quan hệ giữa các đối tượng
Use Case c ủ a các th ự c th ể
ây d ự ng giao di ệ n
- Đây là khâu quan trọng vì giao diện tốt thì mới đem đến trải nghiệm cho người dùng tốt
Giao diện trưng bày sách
Giao diện thông tin cá nhân
Giao diện quản lý người dùng
Giao diện quản lý sách
Giao diện quản lý nhật ký
Giao diện thay đổi mật khẩu
Giao diện kho sách cá nhân
D ữ li ệ u h ệ th ố ng
Mục này mô tả dữ liệu mà hệ thống lưu trữ trên database , bao gồm cấu trúc , dữ liệu minh hoạ
Bảng dữ liệu danh mục sách
Bảng dữ liệu cấu trúc kho đồ và giỏ hàng
Bảng dữ liệu cấu trúc kho sách
Bảng dữ liệu cấu trúc table login
Bảng dữ liệu cấu trúc table đánh giá (rate)
Các ch ức năng trong hệ th ố ng
1.Chức năng cơ bản (User)
- Là các chức năng cơ bản của bất kì người dùng nào đều có, bao gồm : Đăng nhập, Đăng kí , Đổi mật khẩu, Cập nhật thông tin, Xem lịch sử nhật ký
- Cho phép người dùng login với tài khoản, mật khẩu được cấp hoặc do người dùng tự đăng ký
- Cho phép người dùng tuỳ chỉnh cấu hình IP máy chủ (để hỗ trợ việc remote từ xa), xem lịch sử phiên bản ( lưu ở máy chủ, có thể cập nhật mọi lúc không yêu cầu cập nhật launcher )
- Cho phép người dùng tạo tài khoản mới vào hệ thống
- Có tính năng captcha xác thực người dùng, tránh tình trạng bị spam tạo account vào hệ thống máy chủ
*Chức năng xem và cập nhật thông tin
- Người dùng không được phép sửa các thông tin quan trọng, cập nhật 1 lần : User ID , CMND, Chức vụ trong hệ thống
*Chức năng đổi mật khẩu
- Cho phép thay đổi mật khẩu truy cập vào hệ thống của account người dùng
- Chức năng xem sách, xem hiệu sách cũng là chức năng cơ bản mà bất kì user nào có tài khoản đều có thể sử dụng
- Có thể xem được thông tin cuốn sách, đánh giá để quyết định có mua hay không
2.Đối với Khách hàng ( Vai trò Customer )
- Khách hàng : là người có thể sử dụng hệ thống để mua sách phục vụ nhu cầu đọc sách cá nhân
- Quyền hạn : Bao gồm các chức năng cơ bản của 1 user (kế thừa các method từ IUser) và các chức năng của Customer như mua sách, thêm vào giỏ hàng, thanh toán sách, kho sách
- Nếu người dùng có đủ số dư và đủ điều kiện mua sách thì có thể mua sách trên hệ thống bằng cách click vào nút Buy trong trang xem sách
- Nếu người dùng không đủ số dư thì không thể mua sách trên hệ thống
*Chức năng kho đồ cá nhân
- Khi người dùng mua sách thành công, sách sẽ được thêm vào giỏ đồ đã sở hữu của người dùng
- Người dùng có thể truy cập vào và xem sách hiện có ( có thể xem thông tin sách và số lượng đang sở hữu )
- Đôi khi người dùng chưa đủ tiền, hoặc đang cân nhắc các cuốn sách với nhau thì hiệu sách còn hỗ trợ việc người dùng thêm vào giỏ hàng để thanh toán sau cũng được, bằng cách ấn nút Add to cart ở trang xem sách, là thêm sách vào giỏ
- Nếu giỏ đã có sẵn sách đó thì sẽ tăng số tượng lên 1
- Sau đó người dùng có thể mua sách ( Buy) , hoặc xoá nó khỏi giỏ và không mua nữa (Remove) Nếu mua sách thì sẽ thêm sách với số lượng 1 vào kho cá nhân hoặc tăng số lượng nên 1 nếu đã sở hữu
- Đối với 1 số sách đã bán hết, người dùng không thể mụa hay thêm nó vào giỏ hàng được cho đến khi nó được cập nhật vào kho
- Người dùng chỉ có thể đánh giá sách sau khi họ đã mua và đọc sách
(tránh trường hợp đánh giá xấu sách mặc dù chưa mua và đọc )
- Khi mua sách thành công, thì khu vực đánh giá sách sẽ có thể cho phép đánh giá
- Sau khi ấn submit , đánh giá của chúng ta sẽ hiện lên vào trong bảng Đánh giá, và những người dùng khác trong hệ thống có thể thấy đánh giá đó ( công khai ).
3.Đối với Nhân viên ( Vai trò Staff )
- Đây là những nhân viên có vai trò khác nhau tuỳ vào phân công, có thể là quản lý kho, nhập xuất sách, hay là hỗ trợ người dùng Suy cho cùng, đều là các account được kế thừa từ lớp User cơ bản và các interface chung và riêng như IUser và Istaff Từ đó sinh ra 1 đối tượng Staff hoàn chỉnh
- Quyền hạn : Có các chức năng như 1 User cơ bản, ngoài ra còn có : Tra cứu lịch sử mua hàng của người dùng, Quản lý kho sách
*Chức năng tra cứu lịch sử mua hàng
- Mỗi khi người dùng mua sách, hệ thống sẽ tự động ghi lại các hành động đó vào nhật ký (các logs) , để các nhân viên hoặc quản lý có thể tra cứu nó
- Ở đây nhân viên có thể xem được các thông tin về user khi họ mua sách, bao gồm ( thời gian, người dùng và sách họ mua )
*Chức năng quản lý sách
- Đối với chức năng quản lý sách, cơ bản xây dựng trên mô hình CRUD ( Create – Read – Update – Delete ) , cho phép nhân viên linh hoạt trong việc quản lý sách trong kho hơn.
- Nhân viên có thể đính kèm ảnh trong máy cho sách, không cần phải can thiệp vào database để lưu ảnh
4.Đối với Quản lý ( Vai trò Manager )
- Đây là các người dùng có vai trò cao nhất trong hệ thống, có thểđọc toàn bộ nhật ký hệ thống và can thiệp tới các người dùng khác và sách
- Quyền hạn : Có đầy đủ chức năng của 1 User cơ bản, 1 Staff ( Nhân viên, bao gồm : Quản lý sách , tra cứu mua hàng ) , ngoài ra còn có các chức năng : Quản lý người dùng ( mô hình CRUD ), tra cứu nhật ký hệ thống (System logs), xem thống kê ( Analytics )
*Chức năng Quản lý người dùng
- Một quản lý ( Manager ) có thể can thiệp tới các người dùng khác, bao gồm : Thêm , xoá sửa thông tin người dùng ; reset mật khẩu người dùng; thêm người dùng mới
- Manager còn có thể chỉ định , cấp quyền cho người dùng khác làm
Manager hoặc là cấm họ khỏi hệ thống ( Ban account )
*Chức năng tra cứu nhật ký hệ thống
- Ngoài việc tra cứu lịch sử mua hàng, Manager còn có thể tra cứu nhiều thông tin quan trọng của hệ thống mà người dùng khác không làm được
M ộ t s ố đoạ n code minh ho ạ
Đánh giá ưu, nhược điể m
- Hệ thống có thể triển khai thực tế ( thông qua giao thức remote , cho phép người dùng truy cập từ xa )
- Có sức chịu tải lớn ( > 500 sách , 100 user ) đối với máy chủ có cấu hình tầm trung
- Có khả năng bảo mật, phân quyền cao
- Vận dụng các kiến thức đã học vào hệ thống
- Thời gian có hạn nên hệ thống chưa đạt đến mức chi tiết cao
- Khảnăng tối ưu code chưa cao
K ế t lu ậ n
- Qua đây ta có thể thấy ứng dụng của lập trình hướng đối tượng có thể giải quyết được các bài toán thực tế trong cuộc sống ( ví dụ như Quản lý hiệu sách, quản lý hiệu thuốc )
Hơn thế nữa, ta có thể trực quan hóa các đối tượng thực tế thành các đối tượng trong ngôn ngữ lập trình, bao gồm thuộc tính (đặc điểm đời thực) và phương thức (hành động đối tượng có thể thực hiện) và tương tác với các đối tượng.
Thành viên nhóm, đóng góp
- Nguyễn Ngọc Đan Trường ( Trưởng nhóm ) (Lớp CNTT 15-04) – Mã sinh viên 1571020257 : Trưởng nhóm dự án, phụ trách chính thiết kế code , xây dựng hệ thống , database và tài liệu ( Đóng góp 60%)