Phần mềm Quản lí sản xuất nội thất với Java | Học phần lập trình hướng đối tượng với Java giúp sinh viên năm được phương pháp lập trình hướng đối tượng (OOP) và ngôn ngữ lập trình Java cơ bản. Bài tập lớn môn học là tổng hợp kiến thức, kỹ năng về phương pháp lập trình hướng đối tượng và ngôn ngữ lập trình Java. Nội dung bài tập lớn gồm: Phân tích bài toán, giới thiệu tông quan về phương pháp lập trình hướng đối tượng, đặc trưng của ngôn ngữ lập trình Java, cài đặt phần mềm với ngôn ngữ Java trong đó sử dụng các lớp kế thừa, lớp trừu tượng vào giao diện (interface) của lập trình hướng đối tượng. Bài tập lớn là tài liệu tham khảo hữu ích cho SV ngành CNTT.
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ĐÔNG Á
(bìa 1, bìa đóng giấy màu)
TIỂU LUẬN/
BÀI TẬP LỚN HỌC PHẦN: LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
TÊN (TIỂU LUẬN/BÀI TẬP LỚN): QUẢN LÍ SẢN XUẤT NỘI
Trang 2BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ĐÔNG Á
(trang phụ bìa số 2, bìa mềm)
Điểm (Tiểu luận/ bài tập lớn) Bằng số: Bằng chữ:
CÁN BỘ CHẤM 1
(Ký và ghi rõ họ tên)
CÁN BỘ CHẤM 2
(Ký và ghi rõ họ tên)
Trang 3DANH MỤC THANH VIÊN (Trình bầy trong trang riêng)
Giáo viên hướng dẫn xác nhận
MỤC LỤC (Trình bầy trong trang riêng)
DANH MỤC CÁC TỪ VIẾT TẮT (Nếu có)
(trình bầy trong trang riêng)
Hình 2.1
Trang 4Nội dung chính:
PHẦN 1 : LÝ THUYẾT
Chương 1: Giới thiệu
-Định nghĩa Lập trinh hướng đối tượng 5
-Các ưu điểm của lập trình hướng đối tượng 6
Chương 2: Cú pháp cơ bản của Java -Cú pháp cơ bản trong Java 6
-Cú pháp cơ bản trong Java 7
Chương 3: Lớp và đối tượng -Đối tượng 7
-Lớp 8
-Sự khác nhau giữa lớp và đối tượng trong java 9
Chương 4: Tính Kế thừa - Tính kế thừa trong Java - Từ khóa extends và implements trong Java 9
-Các loại kế thừa trong Java 10
-Các loại kế thừa trong Java 11
-Các loại kế thừa trong Java 12
Chương 5: Đa hình -Định nghĩa đa hình java 13
-Đa hình lúc runtime trong java 13
-Đa hình lúc runtime trong Java với thành viên dữ liệu 14
-Đa hình lúc runtime trong Java với kế thừa nhiều tầng 14
Chương 6: Ngoại lệ và xử lý ngoại lệ -xử lý ngoại lệ 15
-xử lý ngoại lệ 16
-Hệ thống cấp bậc của các lớp ngoại lệ trong Java 17
-Các kiểu của ngoại lệ 17
PHẦN 2 : MÔ TẢ MỤC ĐÍCH CHƯƠNG TRÌNH -Nhu cầu thực tiễn……… 18
-Xác định I/O……… 18
-Các chức năng của hệ thống……… 18
PHẦN 3: XÂY DỰNG CHƯƠNG TRÌNH -Thiết lập SQL Server……… 18
-Xây dựng chương trình trong JAVA……… 19
Trang 5I LÝ THUYẾT
CHƯƠNG 1: Giới thiệu
Định nghĩa lập trình hướng đối tượng
-Lập trình hướng đối tượng hay còn gọi là lập trình OOP là kỹ thuật lập trình mà tất cả các
logic, yêu cầu thực tế đều được xây dựng xoay quanh các đối tượng
-Khi sử dụng OOP, chúng ta sẽ định nghĩa các class để mô hình hóa các đối tượng thực tế Trong ứng dụng các class sẽ được khởi tạo thành các instance Trong suốt thời gian ứng dụng chạy, các phương thức (method) của đối tượng này sẽ được gọi
-Trong thế giới thực, đối tượng là những thực thể tồn tại có trạng thái và hành vi
Trang 6-Hướng tiếp cận này hiện đang rất thành công và đã trở thành một trong những khuôn mẫu phát triển phần mềm, đặc biệt là các phần mềm cho doanh nghiệp
Các ưu điểm của lập trình đối tượng
• Dựa trên nguyên lý kế thừa, trong quá trình mô tả các lớp có thể loại bỏ những chương trình bị lặp, dư Và có thể mở rộng khả năng sử dụng các lớp mà không cần thực hiện lại Tối ưu và tái sử dụng code hiệu quả
• Đảm bảo rút ngắn thời gian xây dựng hệ thống và tăng năng suất thực hiện
• Sự xuất hiện của 2 khái niệm mới là lớp và đối tượng chính là đặc trưng của phương pháp lập trình hướng đối tượng Nó đã giải quyết được các khuyết điểm
của phương pháp lập trình hướng cấu trúc để lại Ngoài ra 2 khái niệm này đã giúp biểu diễn tốt hơn thế giới thực trên máy tính
CHƯƠNG 2: Cú pháp cơ bản trong java
Về chương trình Java, khi bạn đặt tên cho bất cứ thành phần nào, bạn cần tuân theo qui ước đặt tên của chúng Qui ước đặt tên trong Java là một qui tắc bạn cần theo khi quyết định đặt tên nào
Trang 7cho định danh (Identifier) của mình, chẳng hạn như đặt tên cho lớp, package, biến, hằng, phương thức, … Nhưng nó không bắt buộc để bạn phải theo Vì thế nó được gọi là qui ước chứ không phải là qui tắc
• Java là chương trình phân biệt chữ hoa chữ thường, điều đó có nghĩa
là QUANGHUY và QUANGHUY mang những ý nghĩa khác nhau trong Java
• Tên Class - Tất cả các tên Class trong Java nên viết hoa chữ cái đầu tiên và là một danh
từ
Nếu không viết hoa, các trình IDE sẽ cảnh báo bạn (tất nhiên là Java vẫn chấp nhận nếu
cố tình viết thường chữ cái đầu tiên)
Ví dụ public void actionPerformed()
• Tên biến - Nên bắt đầu với chữ thường, ví dụ: firstName, orderNumber
• Tên package - Nên bắt đầu với chữ thường, ví dụ: java, lang, sql, util
• Tên hằng - Nên bắt đầu với chữ hoa, ví dụ: RED, YELLOW, MAX_PRIORITY
• Tên file chương trình - Tên file nên giống hệt tên class
Khi bạn lưu file, bạn nên sử dụng tên class và thêm hậu tố `.java`
Ví dụ: với tên class `MyfirstJavaProgram`, bạn nên lưu file dưới
tên `MyFirstJavaProgram.java`
• public static void main(String args[]) - Chương trình Java bắt đầu bởi phương thức
main() cho tất cả các chương trình J2SE
CHƯƠNG 3: LỚP VÀ ĐỐI TƯỢNG
-Trong bài này chúng ta sẽ học về lớp và đối tượng trong java Trong phương pháp lập trình hướng đối tượng, chúng ta thiết kế chương trình bằng việc sử dụng các lớp và đối tượng
Đối tượng
Trang 8Một thực thể có trạng thái và hành vi được gọi là đối tượng Ví dụ như máy pha cà phê, xe đạp, cái quạt
Một đối tượng có ba đặc điểm:
• Trạng thái: Đại diện cho dữ liệu (giá trị) của một đối tượng
• Hành vi: Đại diện cho hành vi (chức năng) của một đối tượng như gửi tiền, rút tiền,
• Danh tính: Danh tính của một đối tượng thường được cài đặt thông qua một ID duy nhất ID này được ẩn đối với user bên ngoài Tuy nhiên nó được sử dụng trong nội bộ máy ảo JVM để định danh từng đối tượng
Ví dụ: Bút chì là một đối tượng Tên của nó là A, màu trắng, được gọi là trạng thái Nó được
sử dụng để viết, viết được gọi là hành vi
Đối tượng(Object) là một thể hiện của một lớp(Class) Lớp là một mẫu hoặc thiết kế từ đó
các đối tượng được tạo ra Vì vậy, đối tượng là các thể hiện (kết quả) của một lớp
Trong ví dụ này, chúng tôi đã tạo ra một lớp Student có hai thành viên dữ liệu id và name Chúng
ta tạo ra các đối tượng của lớp Student bởi từ khóa new và in giá trị của các đối tượng
public class Student {
int id; // thành viên dữ liệu
String name; // thành viên dữ liệu
public static void main(String args[]) {
Student student1 = new Student(); // tạo một đối tượng student1
System.out.println(student1.id);
System.out.println(student1.name);
}
}
Trang 9Kết quả:
0 null
Sự khác nhau giữa lớp và đối tượng trong java
Sự khác nhau giữa lớp và đối tượng trong java được thống kê trong bảng sau:
3 Đối tượng là 1 thực thể vật lý Lớp là 1 thực thể logic
4 Đối tượng được tạo ra chủ yếu từ từ khóa
new
Ví dụ: Student s1=new Student();
Lớp được khai báo bằng việc sử dụng từ khóa class
Ví dụ: class Student{}
5 Đối tượng có thể được tạo nhiều lần Lớp được khai báo 1 lần duy nhất
6 Đối tượng được cấp bộ nhớ khi nó được tạo
ra
Lớp không được cấp bộ nhớ khi nó được tạo
ra
7 Có rất nhiều cách để tạo ra đối tượng trong
java như từ khóa new, phương thức
newInstance(), phương thức clone(), phương
thức factory và deserialization
Chỉ có một cách để định nghĩa lớp trong java
sử dụng từ khoá class
CHƯƠNG 4: TÍNH KẾ THỪA
[Tính kế thừa trong Java - Từ khóa extends và implements trong Java]Tính kế thừa trong
Java là môt kỹ thuật mà trong đó một đối tượng thu được tất cả thuộc tính và hành vi của đối
tượng cha Ý tưởng đằng sau tính kế thừa trong Java là bạn có thể tạo các lớp mới mà được xây
dựng dựa trên các lớp đang tồn tại Khi bạn kế thừa từ một lớp đang tồn tại, bạn có thể tái sử
dụng các phương thức và các trường của lớp cha, và bạn cũng có thể bổ sung thêm các phương
Trang 10thức và các trường khác Tính kế thừa biểu diễn mối quan hệ IS-A, còn được gọi là mối quan hệ cha-con
Khi chúng ta nói về tính kế thừa, từ khóa thường xuyên nhất được sử dụng là extends trong java và implements trong java Những từ khóa này có thể định nghĩa một kiểu là loại IS-A của
loại khác Sử dụng những từ khóa, chúng ta có thể tạo một đối tượng sử dụng thuộc tính của đối tượng khác Chúng ta sử dụng từ khóa extends của lớp con để có thể kế thừa các thuộc tính của lớp cha trừ các thuộc tính private của lớp cha
Các loại kế thừa trong Java
Trên cơ sở các lớp thì có 3 loại kế thừa trong Java, đó là single (đơn), multilevel (nhiều tầng) và
hierarchical (có cấu trúc) Trong lập trình Java, đa kế thừa (multiple) và kế thừa lai (hybrid) chỉ
được hỗ trợ thông qua Interface Chúng ta sẽ tìm hiểu về Interface trong chương sau đó
Ghi chú: Đa kế thừa không được hỗ trợ trong Java thông qua lớp Khi một lớp kế thừa từ nhiều
lớp, thì đây là đa kế thừa
Câu hỏi: Tại sao đa kế thừa không được hỗ trợ trong Java thông qua lớp?
Trả lời: Để giảm tính phức tạp và làm đơn giản hóa ngôn ngữ, đa kế thừa không được hỗ trợ
trong Java Giả sử có tình huống có ba lớp là A, B và C Lớp C kế thừa lớp A và B Nếu các lớp
A và B có cùng phương thức và bạn gọi nó từ đối tượng lớp con, thì điều này gây là tính lưỡng nghĩa là để gọi phương thức của lớp A hoặc lớp B
Bởi vì, compile time error thì tốt hơn là runtime error, Java sẽ thông báo một compile time error nếu bạn kế thừa 2 lớp Do đó, dù bạn có hay không có cùng phương thức hay khác phương thức, thì đó cũng là một lỗi tại compile time
Trang 11Chương trình trên sẽ cho một Compile Time Error
Khi bạn đã hiểu rõ về từ khóa extends, chúng ta cùng tìm hiểu về từ khóa implements trong
quan hệ IS-A
Từ khóa implements được sử dụng bởi các lớp mà kế thừa từ Interface Interface có thể không
bao giờ được kết thừa bởi các lớp
Từ khóa instanceof trong Java
Bây giờ chúng ta sẽ dùng toán tử instanceof để kiểm tra xem B có phải là một A và dog có phải
là một A
interface A {}
class B implements A {}
public class C extends B {
public static void main ( String args []){
Trang 12B m = new B ();
C d = new C ();
System out println ( m instanceof A );
System out println ( d instanceof B );
System out println ( d instanceof A );
Quan hệ HAS-A trong Java
Có những quan hệ chủ yếu dựa vào cách sử dụng Nó xác định có hay không một lớp cụ thể HAS-A Quan hệ này giúp chúng ta giảm được dư thừa trong code cũng như tránh các bug Cùng xem ví dụ dưới đây:
public class Vehicle {}
public class Speed {}
public class Van extends Vehicle {
private Speed sp ;
}
Điều này chỉ ra rằng lớp Van có quan hệ HAS-A với lớp Speed Việc sử dụng lớp riêng rẽ cho lớp Speed, chúng ta không cần thiết phải đặt toàn bộ code của lớp Speed bên trong lớp Van, điều này tăng tính tái sử dụng của lớp Speed cho nhiều ứng dụng
Một đặc điểm quan trọng nữa phải ghi nhớ là Java chỉ hỗ trợ kế thừa đơn Điều này nghĩa là một lớp không thể kế thừa từ nhiều hơn một lớp Do đó, đoạn code dưới đây là không hợp lệ:
public class C extends A , B {}
Trang 13Mặc dù vậy một lớp vẫn có thể implement một hoặc nhiều interface Điều này loại bỏ khả năng không thể đa kế thừa trong Java
CHƯƠNG 5: ĐA HÌNH
Đa hình trong java (Polymorphism) là một khái niệm mà chúng ta có thể thực hiện một hành
động bằng nhiều cách khác nhau Polymorphism được cấu tạo từ 2 từ Hy Lạp: poly và morphs Trong đó "poly" có nghĩa là nhiều và "morphs" có nghĩa là hình thể Vậy polymorphism có nghĩa là nhiều hình thể
Có hai kiểu của đa hình trong java, đó là đa hình lúc biên dịch (compile) và đa hình lúc thực thi (runtime) Chúng ta có thể thực hiện đa hình trong java bằng cách nạp chồng phương thức và ghi đè phương thức
Nếu bạn nạp chồng phương thức static trong java, đó là một ví dụ về đa hình lúc biên dịch Trong bài này, chúng ta tập trung vào đa hình lúc runtime trong java
Đa hình lúc runtime trong java
Đa hình lúc runtime là quá trình gọi phương thức đã được ghi đè trong thời gian thực thi
chương trình Trong quá trình này, một phương thức được ghi đè được gọi thông qua biến tham chiếu của một lớp cha
Trước khi tìm hiểu về đa hình tại runtime, chúng ta cùng tìm hiểu về Upcasting
Ví dụ 1:
Chúng ta tạo hai lớp Bike và Splendar Lớp Splendar kế thừa lớp Bike và ghi đè phương thức run() của nó Chúng ta gọi phương thức run bởi biến tham chiếu của lớp cha Khi nó tham chiếu tới đối tượng của lớp con và phương thức lớp con ghi đè phương thức của lớp cha, phương thức lớp con được gọi lúc runtime
Khi việc gọi phương thức được quyết định bởi JVM chứ không phải Compiler, vì thế đó là đa hình lúc runtime
Trang 14public static void main(String args[]) {
Bike b = new Splender(); // upcasting
b.run();
}
}
Kết quả:
running safely with 60km
Đa hình lúc runtime trong Java với thành viên dữ liệu
Phương thức bị ghi đè không là thành viên dữ liệu, vì thế đa hình tại runtime không thể có được bởi thành viên dữ liệu Trong ví dụ sau đây, cả hai lớp có một thành viên dữ liệu là speedlimit, chúng ta truy cập thành viên dữ liệu bởi biến tham chiếu của lớp cha mà tham chiếu tới đối tượng lớp con Khi chúng ta truy cập thành viên dữ liệu mà không bị ghi đè, thì nó sẽ luôn luôn truy cập thành viên dữ liệu của lớp cha
public static void main(String args[]){
Bike obj=new Honda3();
Trang 15public static void main(String args[]) {
Animal a1, a2, a3;
Chương 6: Ngoại lệ và xử lý ngoại lệ
Exception Handling trong java hay xử lý ngoại lệ trong java là một cơ chế mạnh mẽ để xử lý
các lỗi runtime để có thể duy trì luồng bình thường của ứng dụng
Trong bài này, chúng ta sẽ tìm hiểu về ngoại lệ (Exception) trong java, các kiểu ngoại lệ và sự
khác biệt giữa các ngoại lệ checked và unchecked
Exception là gì?
Theo từ điển: Exception (ngoại lệ) là một tình trạng bất thường
Trong java, ngoại lệ là một sự kiện làm gián đoạn luồng bình thường của chương trình Nó là một đối tượng được ném ra tại runtime
Exception Handling là gì?
Trang 16Exception Handling (xử lý ngoại lệ) là một cơ chế xử lý các lỗi runtime như ClassNotFound,
IO, SQL, Remote, vv
Lợi thế của Exception Handling trong java
Lợi thế cốt lõi của việc xử lý ngoại lệ là duy trì luồng bình thường của ứng dụng Ngoại lệ thường làm gián đoạn luồng bình thường của ứng dụng đó là lý do tại sao chúng ta sử dụng xử
lý ngoại lệ Hãy xem xét kịch bản sau:
Hệ thống cấp bậc của các lớp ngoại lệ trong Java
Trang 17Các kiểu của ngoại lệ
Có hai loại ngoại lệ chính là: checked và unchecked Còn Sun Microsystem nói rằng có ba loại
ngoại lệ:
1 Checked Exception
2 Unchecked Exception
3 Error
Trang 18II MÔ TẢ MỤC ĐÍCH CHƯƠNG TRÌNH
PHẦN MỀM QUẢN LÍ SẢN XUẤT NỘI THẤT
2.1 Nhu cầu thực tiễn
- Quản lí nhiều mặt hàng, các giao dịch, doanh thu
- Dễ dàng truy cập, tìm kiếm thông tin sản phẩm và đặc điểm theo yêu cầu người dùng
- Các dữ liệu được thống nhất, lưu trữ trong suốt quá trình bán hàng, độ an toàn thông tin
=> Giải pháp:
- Xây dựng chương trình JAVA kết nối CSDL để phục vụ việc lưu trữ, thống
kê, tính toán, tra cứu, báo cáo về hàng hóa, khách hàng
- Lọc dữ liệu với các yêu cầu riêng
- Cho phép tạo ra nhiều cơ sở dữ liệu
- Thống kê đầy đủ và ràng buộc
III Xây dựng chương trình
3.1 Thiết lập SQL Server
3.1.2 Source Database SQL Server
Trang 193.1.3 Sơ đồ Diagram SQL Server
- Miêu tả kết nối giữa kết Table trong Database QuanLiSanXuatNoiThat
Trang 203.2 Xây dựng chương trình trong JAVA
3.2.1 Kiến thức được áp dụng trong BTL
- Lập trình hướng đối tượng (OOP) :
+ Lớp cha , con kế thừa
+ Tính đóng gói
+ Phương thức khởi tạo Constructor
+ Phương thức ghi đè Override
+ Lớp trừu tượng : Interface
+ Luồng vào ra I/O