1. Trang chủ
  2. » Tất cả

Phát triển phần mềm quản lý cho thuê sách

12 21 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Phát Triển Phần Mềm Quản Lý Cho Thuê Sách
Trường học Học Viện Công Nghệ Bưu Chính Viễn Thông
Chuyên ngành Lập Trình Hướng Đối Tượng
Thể loại Đề tài
Năm xuất bản N/A
Thành phố Hồ Chí Minh
Định dạng
Số trang 12
Dung lượng 318,42 KB
File đính kèm file dinh kem.rar (39 KB)

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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 quản lý cho thuê sách A MÔ HÌNH LẬP TRÌNH HƯỚNG ĐỐI T.

Trang 1

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 quản lý cho thuê sách

Trang 2

A MÔ HÌNH LẬP TRÌNH

HƯỚNG ĐỐI TƯỢNG

I GIỚI THIỆU VỀ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

Lập trình hướng đối tượng (Object Oriented Programming - gọi tắt là OOP)

hay chi tiết hơn là Lập trình định hướng đối tượng, chính là phương pháp lập trình lấy đối tượng làm nền tảng để xây dựng thuật giải, xây dựng chương trình Thực chất đây không phải là một phương pháp mới mà là một cách nhìn mới trong việc lập trình Để phân biệt, với phương pháp lập trình theo kiểu cấu trúc mà chúng ta quen thuộc trước đây, hay còn gọi là phương pháp lập trình hướng thủ

tục (Procedure-Oriented Programming), người lập trình phân tích một nhiệm vụ

lớn thành nhiều công việc nhỏ hơn, sau đó dần dần chi tiết, cụ thể hoá để được các vấn đề đơn giản, để tìm ra cách giải quyết vấn đề dưới dạng những thuật giải cụ thể rõ ràng qua đó dễ dàng minh hoạ bằng ngôn ngữ giải thuật (hay còn gọi các thuật giải này là các chương trình con) Cách thức phân tích và thiết kế như vậy chúng ta gọi là nguyên lý lập trình từ trên xuống (top-down), để thể hiện quá trình suy diễn từ cái chung cho đến cái cụ thể

II CÁC KHÁI NIỆM CƠ BẢN VỀ LẬP TRÌNH HƯỚNG ĐỐI

TƯỢNG

1 Đối tượng

Đối tượng (object): Các dữ liệu và chỉ thị được kết hợp vào một đơn vị đầy đủ tạo nên một đối tượng Đơn vị này tương đương với một chương trình con và vì thế các đối tượng sẽ được chia thành hai bộ phận chính: phần các phương thức (method) và phần các thuộc tính (property) Trong thực tế, các phương thức của đối tượng là các hàm và các thuộc tính của nó là các biến, các tham số hay hằng nội tại của một đối tượng (hay nói cách khác tập hợp các dữ liệu nội tại tạo thành thuộc tính của đối tượng) Các phương thức là phương tiện để sử dụng một đối tượng trong khi các thuộc tính sẽ mô tả đối tượng có những tính chất gì

2 Lớp (class)

Một lớp được hiểu là một kiểu dữ liệu bao gồm các thuộc tính và các phương thức được định nghĩa từ trước Đây là sự trừu tượng hóa của đối tượng Một đối tượng sẽ được xác lập khi nó được thực thể hóa từ một lớp Khác với kiểu dữ liệu thông thường, một lớp là một đơn vị (trừu tượng) bao gồm sự kết hợp giữa các phương thức và các thuộc tính Để có một đối tượng (mà có thể được xem như là một biến) hoạt động được thì việc thực thể hóa sẽ có thể bao gồm việc cài đặt các giá trị ban đầu của các thuộc tính cũng như việc đăng kí bộ nhớ, mà công việc này

Trang 3

thường được giao cho các phương thức gọi là “máy kết cấu” (constructor) hay hàm dựng Ngược lại khi một đối tượng thuộc về một lớp không còn sử dụng nữa thì cũng có thể có một phương thức để xử lý gọi là “máy hủy diệt” (destructor) hay hàm hủy

Như vậy, để có được các đối tượng thì người lập trình OOP cần phải thiết kế lớp của các đối tượng đó bằng cách xây dựng các thuộc tính và các phương thức

có các đặc tính riêng

Mỗi một phương thức hay một thuộc tính đầy đủ của một lớp còn được gọi tên

là một thành viên (member) của lớp đó

3 Lớp con (subclass)

Lớp con là một lớp thông thường nhưng có thêm tính chất kế thừa một phần hay toàn bộ các đặc tính của một lớp khác Lớp mà chia sẽ sự kế thừa gọi là lớp

phụ mẫu (parent class)

4 Lớp trừu tượng hay lớp cơ sở trừu tượng (abstract class)

Lớp trừu tượng là một lớp mà nó không thể thực thể hóa thành một đối tượng thực dụng được Lớp này được thiết kế nhằm tạo ra một lớp có các đặc tính tổng quát nhưng bản thân lớp đó chưa có ý nghĩa (hay không đủ ý nghĩa) để có thể tiến hành viết mã cho việc thực thể hóa (xem thí dụ) Thí dụ: Lớp “hinh_phang” được định nghĩa không có dữ liệu nội tại và chỉ có các phương thức (hàm nội tại)

“tinh_chu_vi”, “tinh_dien_tich” Nhưng vì lớp hình_phẳng này chưa xác định được đầy đủ các đặc tính của nó (cụ thể các biến nội tại là tọa độ các đỉnh nếu là

đa giác, là đường bán kính và toạ độ tâm nếu là hình tròn, …) nên nó chỉ có thể được viết thành một lớp trừu tượng Sau đó, người lập trình có thể tạo ra các lớp con chẳng hạn như là lớp “tam_giac”, lớp “hinh_tron”, lớp “tu_giac”,… Và trong các lớp con này người viết mã sẽ cung cấp các dữ liệu nội tại (như là biến nội tại

r làm bán kính và hằng số nội tại Pi cho lớp “hinh_tron” và sau đó viết mã cụ thể cho các phương thức “tinh_chu_vi” và “tinh_dien_tich”)

5 Phương thức (method)

Là hàm nội tại của một lớp (hay một đối tượng) Tùy theo đặc tính mà người lập trình gán cho, một phương pháp có thể chỉ được gọi bên trong các hàm khác của lớp đó, có thể cho phép các câu lệnh bên ngoài lớp gọi tới nó, hay chỉ cho phép các lớp có quan hệ đặc biệt như là quan hệ lớp con, và quan

hệ bạn bè (friend) được phép gọi tới nó Mỗi phương pháp đều có thể có kiểu trả về, chúng có thể trả các kiểu dữ liệu cổ điển hay trả về một kiểu là một lớp

đã được định nghĩa từ trước Một tên gọi khác của phương pháp của một lớp

là hàm thành viên

Trang 4

Người ta còn định nghĩa thêm vài loại phương pháp đặc biệt:

• Hàm dựng (constructor) là hàm được dùng để cài đặt các giá tri ban đầu cho các biến nội tại và đôi khi còn dùng để khai báo về việc xử dụng bộ nhớ

• Hàm hủy (destructor) là hàm dùng vào việc làm sạch bộ nhớ và hủy bỏ tên của một đối tượng sau khi đã dùng xong, trong đó có thể bao gồm

cả việc xóa các con trỏ nội tại và trả về các phần bộ nhớ mà đối tượng

đã dùng Trong một số trường hợp thì hàm hủy hay hàm dựng có thể được tự động hóa bởi ngôn ngữ OOP như là trường hợp của Visual C++, C#

• Tiện ích (utility) là các hàm chỉ họat động bên trong của một lớp mà không cho phép môi trường bên ngoài gọi tới Các hàm này có thể là những tính toán trung gian nội bộ của một đối tượng mà xét thấy không cần thiết phải cho thế giới bên ngoài của đối tượng biết là gì

6 Thuộc tính (attribude)

Thuộc tính của một lớp bao gồm các biến, các hằng, hay tham số nội tại của lớp đó Ở đây, vai trò quan trọng nhất của các thuộc tính là các biến vì chúng sẽ

có thể bị thay đổi trong suốt quá trình hoạt động của một đối tượng Các thuộc tính có thể được xác định kiểu và kiểu của chúng có thể là các kiểu dữ liệu cổ điển hay đó là một lớp đã định nghĩa từ trước Như đã ghi, khi một lớp đã được thực thể hóa thành đối tượng cụ thể thì tập hợp các giá trị của các biến nội tại làm thành trạng thái của đối tượng Giống như trường hợp của phương pháp, tùy theo người viết mã, biến nội tại có thể chỉ được dùng bên trong các phương pháp của chính lớp đó, có thể cho phép các câu lệnh bên ngoài lớp, hay chỉ cho phép các lớp có quan hệ đặc biệt như là quan hệ lớp con, (và quan hệ bạn bè (friend) trong C++) được phép dùng tới nó (hay thay đổi giá trị của nó) Mỗi thuộc tính của một lớp còn được gọi là thành viên dữ liệu của lớp đó

7 Thực thể

Thực thể hóa (instantiate) là quá trình khai báo để có một tên (có thể được xem như là một biến) trở thành một đối tượng từ một lớp nào đó Một lớp sau khi được tiến hành thực thể hóa để có một đối tượng cụ thể gọi là một thực thể Hay nói ngược lại một thực thể là một đối tượng riêng lẽ của một lớp đã định trước Như các biến thông thường, hai thực thể của cùng một lớp có thể có trạng thái nội tại khác nhau (xác định bởi các giá trị hiện có của các biến nội tại) và do đó hoàn toàn độc lập nhau nếu không có yêu cầu gì đặc biệt từ người lập trình

Trang 5

8 Công cộng

Công cộng là một tính chất được dùng để gán cho các phương pháp, các biến nội tại, hay các lớp mà khi khai báo thì người lập trình đã cho phép các câu lệnh bên ngoài cũng như các đối tượng khác được phép dùng đến nó Thí dụ: Trong C++ khai báo public: int my_var; thì biến my_var có hai tính chất là tính công cộng và là một integer cả hai tính chất này hợp thành đặc tính của biến my_var khiến nó có thể được xử dụng hay thay đổi giá trị của nó (bởi các câu lệnh) ở mọi

nơi bên ngoài lẫn bên trong của lớp

9 Riêng tư

Khi dùng tính chất này gán cho một biến, một phương pháp thì biến hay phương pháp đó chỉ có thể được sử dụng bên trong của lớp mà chúng được định nghĩa.Mọi nỗ lực dùng đến chúng từ bên ngoài qua các câu lệnh hay từ các lớp

con sẽ bị phủ nhận hay bị lỗi

10 Bảo tồn

Tùy theo ngôn ngữ, sẽ có vài điểm nhỏ khác nhau về cách hiểu tính chất này Nhìn chung đây là tính chất mà mà khi dùng để áp dụng cho các phương pháp, các biến nội tại, hay các lớp thì chỉ có trong nội bộ của lớp đó hay các lớp con của nó (hay trong nội bộ một gói như trong Java) được phép gọi đến hay dùng đến các phương pháp, biến hay lớp đó

So với tính chất riêng tư thì tính bảo tồn rộng rãi hơn về nghĩa chia sẻ

dữ liệu hay chức năng Nó cho phép một số trường hợp được dùng tới các đặc tính của một lớp (từ một lớp con chẳng hạn)

11 Đa kế thừa

Đây là một tính chất cho phép một lớp con có khả năng kế thừa trực tiếp cùng lúc nhiều lớp khác

Vài điểm cần lưu ý khi viết mã dùng tính chất đa kế thừa:

• Khi muốn có một sự kế thừa từ nhiều lớp phụ mẫu thì các lớp này cần phải độc lập và đặc biệt tên của các dữ liệu hay hàm cho phép kế thừa phải có tên khác nhau để tránh lỗi “ambiguity” Bởi vì lúc đó phần mềm chuyển dịch sẽ không thể xác định được là lớp con sẽ thừa kế tên nào của các lớp phụ mẫu

• Không phải ngôn ngữ OOP loại phân lớp nào cũng hỗ trợ cho tính chất này

• Ngoài các khái niệm trên, tùy theo ngôn ngữ, có thể sẽ có các chức năng OOP riêng biệt được cấp thêm vào

Trang 6

B GIỚI THIỆU PROJECT

I GIỚI THIỆU TỔNG QUAN

1 Mục đích

Một project được tạo ra nhằm quản lý việc cho thuê sách tại của hàng cho thuê sách Phần mềm này có thể quản lý được những mã sách nào đang được thuê và

đã cho thuê bao nhiêu cuốn, đồng thời cũng quản lý được có những khách hàng nào đang thuê sách tại cửa hàng

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

II CÁC CHỨC NĂNG CÓ TRONG PROJECT

1 Quản lý mã sách

Cửa hàng sẽ có một số lượng sách nhất định cần quản lý Mỗi cuốn sách sẽ có một mã sách duy nhất để quản lý Nhân viên cửa hàng có thể thêm mới 1 mã sách vào phần mềm với các thông tin như mã sách, tên sách, tác giả, nhà xuất bản và

số lượng

Trong code hiện tại đã được fix cứng một số mã sách để sử dụng khi demo sản phẩm – như hình

2 Quản lý số lượng bạn đọc

Tương tự với số lượng đầu sách cần quản lý, cửa hàng cũng cần có nơi quản lý những khách hàng (bạn đọc) đã mượn sách tại cửa hàng Nhân viên có thể thêm mới một bạn đọc với các thông tin sau Tên, Địa chỉ và Số điện thoại

Trong code cũng đã có sẵn một số bạn đọc để phục vụ cho quá trình demo sản phẩm – như hình

3 Quản lý số lượng sách được thuê

Đây là chức năng chính, chức năng quan trọng nhất của phần mềm

Nhân viên có thểm vào phần mềm những bản ghi ghi nhận lại rằng bạn đọc nào đã mượn cuốn sách có mã gì và với số lượng là bao nhiêu cuốn

Bên cạnh chức năng thêm mới,nhân viên có thể cập nhật lại các bản ghi đã tạo trước đó, hoặc xóa đi những bản ghi lưu trữ data khi bạn đọc tới thuê sách (khi xóa bản ghi đi tức là công nhận việc bạn đọc đã hoàn trả sách và không còn đang thuê sách của cửa hàng nữa)

Đây cũng là chức năng duy nhất được hiển thị trên giao diện (tới thời điểm hiện tại) với một list các bản ghi ghi nhận sự thuê sách của các bạn đọc cùng với các button chức năng như Add (thêm mới bản ghi), Edit (chỉnh sửa bản ghi), Delete (xóa bản ghi) và button Update để cập nhật data mới nhất cho list quản lý – như hình

Trang 7

C XÁC ĐỊNH TÍNH HƯỚNG ĐỐI TƯỢNG

CÓ TRONG PROJECT

I TÍNH ĐÓNG GÓI

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

Đó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 Tính đóng gói có trong project

Project được chia thành 7 class và được “đóng gói” vào 3 packages như hình

Trang 8

❖ Package Controller: đây là package chịu trách nhiệm cho phần nhập xuất dữ

liệu của phần mềm Package này bao gồm một class duy nhất

● Class IO: đây là class lưu trữ các hàm nhập xuất của phần mềm

● 3 file DAT bao gồm BANDOC.DAT, QLMS.DAT và SACH.DAT:

dây là các file lưu thông tin (trong các file này không bao gồm các câu lệnh, chỉ gồm các cụm mã nhị phân có cấu trúc)

❖ Package Entity: đây là package bao gồm các lớp đối tượng chính có trong

project Package này bao gồm 4 class

● Class BD: đây là lớp đối tượng bạn đọc (khách hàng của cửa hàng)

● Class Nguoi: lớp đối tượng Người

● Class QL: lớp đối tượng quản lý thuê sách

● Class Sach: lớp đối tượng Sách

❖ Package View: đây là package cho phần giao diện của project và chỉ bao gồm

1 class duy nhất

● Class Main: class lưu trữ các câu lệnh của project

II 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 Lớp đối tượng có trong project

❖ Class BD: lớp đối tượng này bao gồm các đối tượng với thuộc tính Mã, Tên,

Địa chỉ và Số điện thoại

package Entity;

import java.io.Serializable;

public class BD extends Nguoi implements Serializable{

int ma;

Trang 9

public BD() {

}

public BD(int ma, String ten, String dc, String sdt) {

super(ten, dc, sdt); //ke thua tu cha

this.ma = ma;

}

public int getMa() {

return ma;

}

public void setMa(int ma) {

this.ma = ma;

}

}

❖ Class Nguoi: lớp đối tượng này bao gồm các đối tượng với thuộc tính Tên,

Địa chỉ và Số điện thoại

package Entity;

public class Nguoi {

protected String ten, dc, sdt;

public Nguoi() {

}

public Nguoi(String ten, String dc, String sdt) {

this.ten = ten;

this.dc = dc;

this.sdt = sdt;

}

❖ Class QL: lớp đối tượng này bao gồm các đối tượng với thuộc tính Mã bnj

đọc, Tên bạn đọc, Mã sách, Tên sách, Số lượng và Tình trạng

Trang 10

package Entity;

import java.io.Serializable;

public class QL implements Serializable{

int maBD;

String tenBD;

int maS;

String tenS;

int sl;

String tt;

public QL() {

}

public QL(int maBD, String tenBD, int maS, String tenS, int sl, String tt) {

this.maBD = maBD;

this.tenBD = tenBD;

this.maS = maS;

this.tenS = tenS;

this.sl = sl;

this.tt = tt;

}

❖ Class Sach: lớp đối tượng này bao gồm các đối tượng với thuộc tính Mã,

Tên, Tác giả và Nhà xuất bản

package Entity;

import java.io.Serializable;

public class Sach implements Serializable{

int ma;

String ten, tg, cn;

int nxb, sl;

public Sach() {

}

Ngày đăng: 26/11/2022, 11:22

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w