1. Trang chủ
  2. » Luận Văn - Báo Cáo

Thiết kế ứng dụng quản lý cửa hàng bán sách

30 15 0

Đ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

Định dạng
Số trang 30
Dung lượng 580,83 KB

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

Nội dung

Định nghĩa lớp Test và phương thức main để khởi tạo các đối tượng của lớp trên và in ra màn hình các thuộc tính bằng phương thức get.. Các thuộc tính và phương thức xử lý ở lớp sách sinh

Trang 1

TỔNG LIÊN ĐOÀN LAO ĐỘNG VIỆT NAM

TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG

KHOA CÔNG NGHỆ THÔNG TIN

BÁO CÁO CUỐI KỲ

MÔN LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

Trang 2

TỔNG LIÊN ĐOÀN LAO ĐỘNG VIỆT NAM

TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG

KHOA CÔNG NGHỆ THÔNG TIN

BÁO CÁO CUỐI KỲ MÔN LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

Trang 3

LỜI CẢM ƠN

Để hoàn thành bài tiểu luận này, không thể không kể đến sự hướng dẫn của Giảng viên Võ Hoàng Quân đã đứng lớp và hướng dẫn cho sinh viên húng em đi từ cnhững cái cơ bản nhất của môn Lập trình hướng Đối tượng, đồng thời cũng có một phần rất lớn của Thầy Dung Cẩm Quang phụ trách phần thực hành Và giờ chúng em

có thể có đủ kiến thức để hoàn thành bài cáo cáo cuối kỳ này, em xin cảm ơn!

Do đây cũng là lần đầu tiên em làm một bài báo cáo cuối kỳ nên không thể tránh khỏi những sai sót không đáng có, mặc dù em đã hạn chế đến mức tối đa những sai sót

Em rất mong nhận được những góp ý cũng như nhận xét của thầy để bài báo cáo của

em có thể hoàn thiện hơn Cuối cùng em xin chân thành cảm ơn!

Trang 4

ĐỒ ÁN ĐƯỢC HOÀN THÀNH

TẠI TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG

Tôi xin cam đoan đây là sản phẩm đồ án của riêng tôi và được sự hướng dẫn của Thầy Võ Hoàng Quân Các nội dung nghiên cứu, kết quả trong đề tài này là trung thực

và chưa công bố dưới bất kỳ hình thức nào trước đây Những số liệu trong các bảng biểu phục vụ cho việc phân tích, nhận xét, đánh giá được chính tác giả thu thập từ các nguồn khác nhau có ghi rõ trong phần tài liệu tham khảo

Ngoài ra, trong đồ án còn sử dụng một số nhận xét, đánh giá cũng như số liệu của các tác giả khác, cơ quan tổ chức khác đều có trích dẫn và chú thích nguồn gốc Nếu phát hiện có bất kỳ sự gian lận nào tôi xin hoàn toàn chịu trách nhiệm

về nội dung đồ án của mình Trường đại học Tôn Đức Thắng không liên quan đến

những vi phạm tác quyền, bản quyền do tôi gây ra trong quá trình thực hiện (nếu có)

TP Hồ Chí Minh, ngày 24 tháng 07 năm 2021

Tác giả (ký tên và ghi rõ họ tên)

Phạm Văn Quốc Vĩnh

Trang 5

PHẦN XÁC NHẬN VÀ ĐÁNH GIÁ CỦA GIẢNG VIÊN

Phần xác nhận của GV hướng dẫn

_ _ _ _ _ _ _

Tp Hồ Chí Minh, ngày tháng năm (kí và ghi họ tên)

Phần đánh giá của GV chấm bài

_ _ _ _ _ _ _

Tp Hồ Chí Minh, ngày tháng năm (kí và ghi họ tên)

Trang 6

TÓM TẮT

Trong bài báo cáo này có 2 phần, phần 1 sẽ đi tìm hiểu chung về OOP bao gồm những kiến thức cơ bản và một số phần code để minh họa cho phần lý thuyết Phần 2 là câu hỏi lập trình mở, đòi hỏi vận dụng những kiến thức đã học để giải thích các vấn đề của đề bài, vẽ sơ đồ UML cũng như viết code hoàn chỉnh

Trang 7

MỤC LỤC

LỜI CẢM ƠN i

PHẦN XÁC NHẬN VÀ ĐÁNH GIÁ CỦA GIẢNG VIÊN iii

TÓM TẮT iv

MỤC LỤC 1

CHƯƠNG 1 – BÀI LÀM PHẦN 1 2

1.1 Câu 1 2

1.2 Câu 2 5

CHƯƠNG 2 – BÀI LÀM PHẦN 2 7

2.1 Câu 1 7

2.2 Câu 2 14

2.3 Câu 3 15

2.4 Câu 4 21

2.5 Câu 5 22

Trang 8

CHƯƠNG 1 BÀI LÀM PHẦN 1 –

1.1 Câu 1: Java

a Trình bày quy tắc đặt tên biến trong Java và cho ví dụ cụ thể một số tên biến

b Trình bày 03 trong số các kiểu dữ liệu nguyên thủy (primitive type) có trong Java

c Lập trình giải bài toán theo yêu cầu sau:

● Định nghĩa một lớp Calculator

● Định nghĩa phương thức public static boolean checkPrime(int n) để kiểm tra một số truyền vào có là số nguyên tố hay không? Nếu có thì phương thức n

trả về true, ngược lại trả về false

● Định nghĩa phương thức public static int calSumPrime(int n) để tính tổng

tất cả các số nguyên tố bé hơn hoặc bằng n truyền vào

● Viết phương thức main để kiểm tra lại các phương thức vừa định nghĩa trên

Bài làm

a

Trong Java có các quy tắc đặt tên biến như sau:

- Ký tự bắt đầu của tên biến phải là chữ cái dấu gạch dưới, ( _ ) hoặc ký tự

dola ($) và không bắt đầu bằng số

Ví dụ: name, _name, $name

 Các tên biến sai: 5name, @name, #name

- Không được có khoảng trắng giữa các ký tự của biến

Ví dụ: dayOfBirth, day_Of_Birth

 Các tên biến sai: day Of Birth

- Không chứa các ký tự đặt biệt trong tên biến như !, @, #, %, &, …

 Các tên biến sai: n@me, Count#

- Không đặt tên biến trùng với các keyword của Java

Ví dụ: abstract, for, if, do, while, int, float, boolean, …

Trang 9

- Kiểu dữ liệu double: dùng để biểu diễn các số thực, tuy nhiên vùng giá trị

rộng hơn kiểu float Dùng để biểu diễn số thực 64 bit thay vì chỉ 32 bit như kiểu float Mặc định một số thực trong Java sẽ được hiểu là mang kiểu double

- Kiểu dữ liệu boolean: đây là kiểu dữ liệu logic chứa 1 trong 2 giá trị là

‘true’ hoặc ‘false’ Và giá trị mặc định của kiểu boolean khi mới được khởi

tạo là false

Trang 10

}

}

Trang 11

1.2 Câu 2: Lớp và đối tượng

a Định nghĩa lớp SinhVien với các yêu cầu sau:

● Chứa ít nhất 03 thuộc tính bất kỳ (thuộc tính phải phù hợp với đối tượng là sinh viên) với access modifier là private

● Chứa ít nhất 02 phương thức khởi tạo bất kỳ

● Chứa các phương thức get, set cho đối tượng

b Định nghĩa lớp Test và phương thức main để khởi tạo các đối tượng của lớp trên

và in ra màn hình các thuộc tính bằng phương thức get

Bài làm

a

public class SinhVien

{

private String studentID;

private String studentName;

private int birthYear;

Trang 12

public int getBirthYear(){

public static void main(String[] args){

SinhVien sinhVien1 = new SinhVien("52000123",

"Nguyen Van A", 2002);

System.out.println("Student ID: " +

System.out.println("Student Name: " +

sinhVien1.getStudentName()); System.out.println("Student Birth Year: " +

sinhVien1.getBirthYear()); }

}

Trang 13

CHƯƠNG 2 BÀI LÀM PHẦN 2

2.1 Câu 1

Sinh viên viết đặc tả về đề tài Quản lý cửa hàng bán sách Trong đó, một lớp sách

và hai lớp kế thừa từ sách là sách văn học và tạp chí Các thuộc tính và phương thức xử lý ở lớp sách sinh viên tự định nghĩa, trong đó có 01 thuộc tính là giá gốc của sách, ít nhất 02 thuộc tính bất kỳ (phù hợp đối tượng là sách), 02 phương

thức khởi tạo bất kỳ, 01 phương thức abstract dùng để tính giá bán và 02

phương thức xử lý do sinh viên tự định nghĩa thêm (Các phương thức khởi tạo, getter/setter, toString, equals không được tính là phương thức xử lý)

Đối với lớp con sách văn học có ít nhất 02 thuộc tính là Tác giả và Năm xuất bản,

có 02 phương thức khởi tạo, 01 phương thức tính giá bán và 02 phương thức

xử lý khác Phương thức tính bán của sách văn học là giá gốc + 5% thuế Các phương thức xử lý khác do sinh viên tự định nghĩa thêm

Đối với lớp con tạp chí có ít nhất 02 thuộc tính là Ngày xuất bản và Nhà xuất bản, có 02 phương thức khởi tạo, 01 phương thức tính giá bán và 02 phương thức xử lý khác Phương thức tính bán của tạp chí là giá gốc + 10% thuế Các phương thức xử lý khác sinh viên tự định nghĩa thêm

Trong đặc tả phải giải thích: các thuộc tính trong bài là gì, các phương thức trong bài là gì, overload ở đâu, override ở đâu, tính kế thừa/đa hình/trừu tượng ở đâu, …

Bài làm

Theo như đề bài, phải thiết kế 3 lớp, bao gồm 1 lớp Sach là lớp cha (và cũng

là lớp abstract do chứa các phương thức abstract) và 2 lớp con kế thừatừ lớp Sach

là SachVanHoc và TapChi

Giải thích cụ thể các phương thức và thuộc tính của mỗi lớp như sau:

Trang 14

* Lớp Sach:

- Thuộc tính:

o protected String tenSach: tên của sách

o protected double giaGoc: giá gốc của sách

o protected int soLuongConLai: số lượng sách còn lại của cửa hàng

- Phương thức:

o Phương thức khởi tạo:

▪ public Sach(): phương thức khởi tạo không có tham số

▪ public Sach(String tenSach, double giaGoc, int

soLuongConLai): phương thức khởi tạo có đầy đủ tham số

*Ở đây ta thấy được tính overloading (nạp chồng phương

thức) (nằm trong tính đa hình ở constructor, có 2 constructor )

đặt tên giống nhau nhưng tham số truyền vào khác nhau

o Phương thức getter và setter:

▪ public String getTenSach(): phương thức get tên sách

▪ public double getGiaGoc(): phương thức get giá gốc

▪ public int getSoLuongConLai(): phương thức get số lượng sách còn lại

▪ public void setTenSach(String tenSach): phương thức set tên sách

▪ public void setGiaGoc(double giaGoc): phương thức set giá gốc của sách

Trang 15

▪ public void setSoLuongConLai(int soLuongConLai): phương thức set số lượng sách còn lại

o Phương thức xử lý:

▪ public abstract double tinhGiaBan(): phương thức abstract

dung để tính giá bán, mỗi loại sách có giá tính khác nhau và sẽ

được định nghĩa sau

▪ public abstract double giamGia(): phương thức abstract tính

số tiền giảm giá, mỗi loại sách có cách giảm giá khác nhau và

sẽ được định nghĩa sau

▪ public abstract double soTienPhaiTra(): phương thức

abstract tính tổng số tiền phải trả sau khi đã trừ giảm giá

▪ public boolean kiemTra(): phương thức kiểm tra xem quyển

sách cần tìm còn trong cửa hàng không, nếu số sách còn lại lớn hơn 0 tức còn sách thì trả về true, ngược lại nếu số sách

còn lại bằng 0 tức đã hết sách thì trả về false

o Phương thức toString:

▪ public String toString(): phương thức toString để trả về

chuỗi đại diện của đối tượng (ở đây là Sách) theo định dạng

mình mong muốn

Trang 16

*Lớp SachVanHoc (kế thừa từ lớp Sach):

- Thuộc tính:

o private String tacGia: tác giả của sách

o private int namXuatBan: năm xuất bản của sách

- Phương thức:

o Phương thức khởi tạo:

▪ public SachVanHoc(String tenSach, double giaGoc, int

soLuongConLai, String tacGia, int namXuatBan): phương

thức khởi tạo có đầy đủ tham số

▪ public SachVanHoc(String tacGia, int namXuatBan):

phương thức khởi tạo chỉ có 2 tham số truyền vào

*Ở đây ta thấy được tính overloading (nạp chồng phương thức) (nằm trong tính đa hình ở constructor, có 2 constructor )

được đặt tên giống nhau nhưng tham số truyền vào khác nhau

o Phương thức getter và setter:

▪ public String getTacGia(): phương thức get tác giả của sách

▪ public int getNamXuatBan(): phương thức get năm xuất bản của sách

▪ public void setTacGia(String tacGia): phương thức set tác giả của sách

▪ public void setNamXuatBan(int namXuatBan): phương thức set năm xuất bản

Trang 17

*Ở class này ta có 2 thuộc tính private sẽ ẩn đi với các lớp khác Muốn truy xuất ta dùng các phương thức public getter

và setter Đây là một ví dụ về tính đóng gói

o Phương thức xử lý:

▪ public double tinhGiaBan(): overriding (ghi đè) lại phương thức abstract tinhGiaBan() ở lớp Sach Được định nghĩa là

trả về giá gốc + 5% thuế

▪ public double giamGia(): overriding (ghi đè) lại phương

thức abstract giamGia() ở lớp Sach Được định nghĩa là nếu

lượng sách trong kho lớn hơn hoặc bằng 20 quyển thì sẽ giảm

giá 5% trên tổng giá bán đã bao gồm thuế

▪ public double soTienPhaiTra(): overriding (ghi đè) lại phương thức abstract soTienPhaiTra() ở lớp Sach Được

định nghĩa trả về số tiền cần thanh toán cuối cùng bao gồm là

tổng giá bán (đã tính thuế) trừ đi giảm giá (nếu có)

*Ta lại thấy tính đa hình ở việc ghi đè phương thức: cùng là

phương thức giống tên nhau nhưng ở mỗi class khác nhau lại

thực hiện chức năng khác nhau

Trang 18

*Lớp TapChi (kế thừa từ lớp Sach):

- Thuộc tính:

o private String ngayXuatBan: ngày xuất bản của tạp chí

o private String nhaXuatBan: nhà xuất bản của tạp chí

- Phương thức:

o Phương thức khởi tạo:

▪ public TapChi(String tenSach, double giaGoc, int

soLuongConLai, String ngayXuatBan, String nhaXuatBan): phương thức khởi tạo có đầy đủ tham số

▪ public TapChi(String ngayXuatBan, String nhaXuatBan):

phương thức khởi tạo chỉ có 2 tham số truyền vào

*Ở đây ta thấy được tính overloading (nạp chồng phương

thức) (nằm trong tính đa hình ở constructor, có 2 constructor )

được đặt tên giống nhau nhưng tham số truyền vào khác nhau

o Phương thức getter và setter:

▪ public String getNgayXuatBan(): phương thức get ngày xuất bản của tạp chí

▪ public String getNhaXuatBan(): phương thức get nhà xuất bản của tạp chí

▪ public void setNgayXuatBan(String ngayXuatBan): phương thức set ngày xuất bản của tạp chí

▪ public void setNhaXuatBan(String nhaXuatBan): phương

thức set nhà xuất bản của tạp chí

Trang 19

*Ở class này ta có 2 thuộc tính private sẽ ẩn đi với các lớp

khác Muốn truy xuất ta dùng các phương thức public getter

và setter Đây là một ví dụ về tính đóng gói

o Phương thức xử lý:

▪ public double tinhGiaBan(): overriding (ghi đè) l phương ại

thức abstract tinhGiaBan() ở lớp Sach Được định nghĩa là

trả về giá gốc + 10% thuế

▪ public double giamGia(): overriding (ghi đè) lại phương

thức abstract giamGia() ở lớp Sach Được định nghĩalà nếu lượng tạp chí trong kho lớn hơn hoặc bằng 10 quyển thì sẽ giảm giá 2.5% trên tổng giá bán đã bao gồm thuế

▪ public double soTienPhaiTra(): overriding (ghi đè) lại phương thức abstract soTienPhaiTra() ở lớp Sach Được

định nghĩa là trả về số tiền cần thanh toán cuối cùng bao gồm

tổng giá bán (đã tính thuế) trừ đi giảm giá (nếu có)

*Ta lại thấy tính đa hình ở việc ghi đè phương thức cùng là phương thức giống tên nhau nhưng ở mỗi class khác nhau lại

thực hiện chức năng khác nhau

Trang 20

2.2 Câu 2: Thiết kế sơ đồ lớp UML theo mô tả đề bao gồm cả các thuộc tính và

+ getGiaGoc(): double + getSoLuongConLai: int + setTenSach(tenSach: String): void + setGiaGoc(giaGoc: double): void + setSoLuongConLai(soLuongConLai: int): void

+ double tinhGiaBan() + double giamGia() + double soTienPhaiTra ()

+ getNhaXuatBan(): String + setNgayXuatBan(ngayXuatBan: String): void + setNhaXuatBan(nhaXuatBan: String): void

+ double tinhGiaBan() + double giamGia() + double soTienPhaiTra()

SachVanHoc

- tacGia: String

- namXuatBan: int

+ SachVanHoc(tenSach: String, giaGoc: double,

soLuongConLai: int, tacGia: String, namXuatBan: int)

+ SachVanHoc(tacGia: String, namXuatBan: int)

+ getTacGia(): String

+ getNamXuatBan(): int

+ setTacGia(tacGia: String): void

+ setNamXuatBan(namXuatBan: int): void

+ double tinhGiaBan()

+ double giamGia()

+ double soTienPhaiTra()

Trang 21

2.3 Câu 3: Cài đặt (code) các lớp như thiết kế ở phần 2.

Bài làm

*Lớp Sach:

public abstract class Sach{

protected String tenSach;

protected double giaGoc;

protected int soLuongConLai;

Trang 22

public void setGiaGoc(double giaGoc){

public abstract double tinhGiaBan();

public abstract double giamGia();

public abstract double soTienPhaiTra();

public boolean kiemTra(){

public String toString(){

return "Ten Sach: "+this.tenSach + " - Gia Goc: " + this.giaGoc + " - So Luong Con Lai: "

+ this.soLuongConLai;

}

Ngày đăng: 15/04/2022, 15:59

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w