Mô phỏng hệ thống thang máy
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
──────── * ───────
BÀI TẬP LỚN
MÔN: LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Đề tài : “Mô phỏng hệ thống thang máy”
Mã đề tài: De10A
Sinh viên thực hiện Trịnh Viết Nam (NT)
Nguyễn Thái Dương Đỗ Văn Quân
Nhóm sinh viên : Nhóm 4
Giáo viên hướng dẫn : TS Cao Tuấn Dũng
Hà Nội, tháng 11 năm 2011
Trang 2
Lời nói đầu 3
PHẦN 1: TỔNG QUAN 4
Kiến thức nền tảng phục vụ cho bài toán: 4
PHẦN 2 : PHÂN TÍCH THIẾT KẾ MỨC KIẾN TRÚC CỦA BÀI TOÁN 4
2.1 Mô tả yêu cầu bài toán 4
2.2 Biểu đồ use case 5
2.3 Biểu đồ trình tự .5
2.4 Biểu đồ lớp 6
PHẦN 3: THIẾT KẾ CHI TIẾT VÀ GIẢI PHÁP KỸ THUẬT XÂY DỰNG CÁC LỚP VÀ CHỨC NĂNG CHÍNH CỦA NÓ: 7
3.1 Mô tả các thuộc tính và phương thức của lớp Cabin 7
3.2 Mô tả các thuộc tính và phương thức của lớp Display 9
3.3 Mô tả các thuộc tính và phương thức của lớp PersonWalking 11
3.4 Mô tả các thuộc tính và phương thức của lớp CreateRandomPerson 12
Phần 4: Kết luận và đánh giá 12
Phân công công việc nhóm: 13
TÀI LIỆU THAM KHẢO 15
Phụ lục: 16
Trang 3Lời nói đầu
Có lẽ ai học công nghệ thông tin đều biết,các ngôn ngữ lập trình hướng đối tượng ưu việt hơn nhiều so với các ngôn ngữ hướng thủ tục,điều này đã được kiểm nghiệm và chứng minh.Nhưng nhờ đâu các nhà thiết kế lại có thể nghĩ ra ngôn ngữ lập trình hướng đối tượng,có lẽ tên mà ta hay gọi cho nó cũng đã bao hàm câu trả lời cho câu hỏi trên rồi,đối tượng là một khái niệm không hề có trong lập trình hướng thủ tục,mà đối tượng chính là các thực thể trong thế giới thực.Khi mới bắt đầu làm quen với lập trình hướng đối tượng chúng thì cách tiếp cận khá tốt là đi vào các ví dụ mà ở đó ranh giới giữa các đối tượng rõ ràng Từ thực tế thang máy đang rất phổ biến trong việc phục vụ di chuyển và hoạt động của nó cũng rất thú vị,đồng thời không khó khăn để xác định các thực thể trong hệ thống này, vì lý do đó nhóm sinh viên bọn em lựa chọn đề tài “Mô phỏng hoạt động của thang máy”,đề tài thực hiện chương trình mô phỏng hệ thống hai thang máy hoạt động ở chế độ một bảng điều khiển phục vụ di chuyển trong tòa nhà mười tầng.Chương trình được viết bởi ngôn ngữ thuần đối tượng java
Do mới làm với ngôn ngữ Java,và việc xử lý đa luồng không đơn giản nên
trong chương trình còn có một nhiều hạn chế Nhóm em mong nhận được các nhận xét của thầy về đề tài này của nhóm để nhóm em có thể khắc phục các hạn chế trong đề tài này để có thể làm tốt hơn trong đề tài khác
Trang 4
PHẦN 1: TỔNG QUAN
Kiến thức nền tảng phục vụ cho bài toán:
+ Phân tích và thiết kế hướng đối tượng,bao gồm :
- Tư duy lập trình hướng đối tượng
- Các nguyên lý cơ bản trong lập trình hướng đối tượng (Đóng gói,kế thừa,sử dụng các giao diện,đa hình,chồng phương thức )
- Biết sử dụng ngôn ngữ lập trình java
- Tìm hiểu hoạt động thực sự của thang máy
-
PHẦN 2 : PHÂN TÍCH THIẾT KẾ MỨC KIẾN
TRÚC CỦA BÀI TOÁN
2.1 Mô tả yêu cầu bài toán
Mô phỏng hệ thống thang máy.
Tạo một chương trình gồm có:
Cửa sổ chính mô phỏng hoạt động của thang máy (đi lên ,đi xuống theo yêu cầu,đứng yên khi đã chuyển người đến nơi và không có yêu cầu).Người sử dụng thang máy ở tầng được sinh ra theo hai chế độ ngẫu nhiên hoặc qua lệnh điều khiển,trong trường hợp ngẫu nhiên thì số người sinh ra tại một thời điểm không quá hai(khoảng cách hai lần sinh do tác giả tùy chỉnh).
Cửa sổ phụ là giao diện phòng điều khiển.Tại phòng điều khiển nhân viên điều khiển có thể xem các thông số của thang máy :Tầng hiện tại,chiều chuyển động,trọng tải hiện tại,có thể dừng thang máy,sinh ra khách chờ cùng với yêu dùng thang máy ở chế độ điều khiển.
Khi thang máy quá tải,báo chuông và chỉ hoạt động với số người hợp lý.
Hoạt động tối ưu,Tiết kiệm năng lượng.
Trang 52.2 Biểu đồ use case
Hình 1:Biểu đồ use case mô tả hệ thống
2.3 Biểu đồ trình tự
Hình 2:Biểu đồ trình tự cho chức năng phục vụ di chuyển của thang
Trang 62.4 Biểu đồ lớp
Hình 3:Biểu đồ lớp của chương trình
Trang 7PHẦN 3: THIẾT KẾ CHI TIẾT VÀ GIẢI PHÁP KỸ THUẬT XÂY DỰNG CÁC LỚP VÀ CHỨC NĂNG CHÍNH CỦA NÓ:
3.1 Mô tả các thuộc tính và phương thức của lớp Cabin
Tên lớp Thuộc tính Ý nghĩa
trên tường
Có hai phím lên và xuống -tabelInCabin Bảng hiển thị các phím bấm
như trong cabin thật
tốc độ,Khóa tầng -openAndCloseDoor Thực hiện đóng mở cửa cabin
hay không
đóng kín cửa chưa
hết cửa chưa
- nextFloor Tầng tiếp theo cabin sẽ đến,khi
cabin đứng yên thì nó bằng tầng hiện tại
- nextState Trạng thái tiếp theo của cabin
dừng
trong cabin
nhanh
- positionAvalbel Vị trí có còn khả năng chứa
người trong cabin -maxPersonInCabin Số người tối đa trong cabin
Trang 8- isUpdating Kiểm tra cabin có đang cập
nhật người hay không
- updateAgain Tín hiệu báo cabin cập nhật
người thêm lân nữa
- leftDoor2 Cửa trái trên tầng chắn người
vào khoang chứa cabin,điều kiện an toàn
vào khoang chứa cabin,điều kiện an toàn
của cabin
của cabin
gọi tầng trên tầng -checkPersonInCabin Kiểm tra có người trong cabin
hay không
Bảng 1.
Tên lớp Phương thức Ý nghĩa
Cabin - emergencyTreatment Xử lý khi cabin có tín hiệu dừng bắt
buộc(người quản trị ấn nút stop)
+ setLocaldoor Thiết lập vị trí cửa của cabin
chuyển sẽ kiểm tra tầng nào gần sẽ chuyển tới
tầng yêu cầu + showDilogControl Hiển thị hộp thoại điều khiển cabin + showDialog Hiển thị hộp thoại chứa bảng gọi
tầng trong cabin + setColorButtonCall Thiết lập màu cho các nút + checkPositionAvalbel Kiểm tra vị trí người có thể đứng + releasePositionAvalbel Trả lại ví trí người vừa dùng
Bảng 2.
Trang 93.2 Mô tả các thuộc tính và phương thức của lớp Display
Tên lớp Thuộc tính Ý nghĩa
Display MAXPERSON Số người tối đa trong hệ thống
thống ở vị trí người dùng muốn
tâng nhà
vào như bức tường
cabin -tablecall Đối tượng hiển thị bảng gọi tầng
trên các tầng
- countComponent Đếm các thành phần trong lớp
Display
- changeMode Thay đổi chế độ điều khiển hay tự
động
- showTableManager Hiển thị bẳng nút ấn trong cabin
- showDirectionCabin1 Hiển thị hộp thoại để điều khiển
cabin1
- showDirectionCabin2 Hiển thị hộp thoại để điều khiển
cabin2
- updateInformation Cập nhật thông tin về vị trí tầng
Trang 10-checkExistPerson Kiểm tra có tồn tại người hay
không -checkExistPersonAdvance Kết hợp với checkExistPerson
Kiểm tra người có tồn tại trong hệ thống không
-timeCreateRandomPerson Thời gian để sinh ra người trong
trường hợp tự động
động hoặc điều khiển
-maxPersonInFloor Số người tối đa trên mỗi tầng
- dialogInputFloor Hộp thoại nhập yêu cầu của người
dùng ở chế độ điều khiển -autoScroll Thiết lập chế độ tự động di chuyển
thanh cuộn
trí trong cabin cho mỗi người vào
ra cabin
- colorBackground Màu nền cho giao diện chính
hướng dẫn và giới thiệu tác giả
Bảng 3.
Tên lớp Phương thức Ý nghĩa
luồng điều khiển cabin,cập nhật thông tin và luồng tạo người ngẫu nhiên
-randomCreatePerson Thực thi luồng tạo người
-showDilogInputFloorCall Hiển thị bảng nhập yêu cầu người
của người dùng +setStatusFoorCall Thiết lập chiều mũi tên trên tầng
- intTableInCabin Khởi tạo nút ấn bên trong cabin
- showTableInCabin Hiển thị bảng bấm trong cabin -showDialogDirection Hiển thị bảng điều khiển
-confirmInputfloor Xử lý xác nhận yêu cầu nhập tầng
Trang 113.3 Mô tả các thuộc tính và phương thức của lớp PersonWalking
Tên lớp Thuộc tính Ý nghĩa
- leaveCabin Kiểm tra thoát khỏi cabin
- createFloorOut Tạo ra tầng ra(trường hợp
random)
Bảng 5.
Tên lớp Phương thức Ý nghĩa
Bảng 6.
Trang 123.4 Mô tả các thuộc tính và phương thức của lớp CreateRandomPerson
Tên lớp Thuộc tính Ý nghĩa
CreateRandomPerson -Thread Luồng sinh người
-person Người được sinh ra Bảng 7.
CreateRandomPerson +actionControl Sinh người ở chế độ
điều khiển +action Sinh người ở chế độ
random
Bảng 8.
Trên đây mới chỉ là những lớp cơ cản của chương trình,ngoài ra còn một số lớp khác như:
Class Bell:lớp xử lý âm thanh trong chương trình
Class TableInCabin :Tạo bảng trong Cabin
Class Direction: tạo giao diện của người quản tri
Class ButtonFloorCall:Tạo các nút cơ sở cho chương trình
Class FloorCall:Bảng hiển thị trên mỗi tầng về chiều và tầng hiện tại
Class Main:Tạo giao diện khi chạy chương trình
Class UpdateInformation:Cập nhật thông tin về vị trí tầng và chiều dich chuyển của Cabin
Class PanelWelCome chứa ảnh nền giao diện ban đầu
Phần 4: KẾT LUẬN VÀ ĐÁNH GIÁ
- Kết quả đạt được: Qua quá trình làm bài tập lớn nhóm đã cải thiện được khá nhiều tinh thần và kĩ năng làm việc theo nhóm,đồng thời nâng cao rõ rệt về khả
Trang 13- Khuyết điểm còn tồn tại: Tuy bọn em đã rất nỗ lực,nhưng không thể tránh được sai sót,người chuyển động chưa được mượt
Phân công công việc nhóm:
Thảo luận chung để đưa ra định hướng gồm có:
- Phân tích yêu cầu
- Thống nhất thuật toá
- Tạo biểu đồ Use Case
- Biểu đồ trình tự
Cá nhân mỗi người:
1 Trịnh Viết Nam: code giao diện đồ họa,xử lý trường hợp :Đóng mở cửa nhanh,cập nhật tầng,quá tải
2 Đỗ Văn Quân: code thuật toán
3 Nguyễn Thái Dương: đồng bộ luồng,vẽ ảnh người chuyển động
Kế hoạch làm việc:
Tuần 2 :
- Tạo nhóm và chọn chủ đề thực hiện
Tuần 3-5 :
- Tìm hiểu ngôn ngữ java và lập trình đồ họa
- Phân tích bài toán
- Đưa ra các yêu cầu của bài toán và thuật toán
- Viết các biểu đồ lớp
Tuần 6-9:
- Thiết kế giao diện
- Chỉnh sửa thuật toán sử dụng trong bài toán
Tuần 10-11:
- Kết hợp xử lý luồng vào bài toán
- Chỉnh sửa giao diện đồ họa
- Hoàn thiện chương trình và test ,kiểm soát lỗi
Tuần 12
- Test
- Viết báo cáo theo đề cương chi tiết
Trang 14- Quay video mô tả hoạt động của thang máy và các chức năng của thang máy
- Ghi đĩa CD và in báo cáo môn học
- Nộp bản toàn bộ chương trình và báo cáo
Tuần 13 -15 :
- Bảo vệ đồ án môn học
- Nghe nhận xét của thầy và rút ra kinh nghiệm cho bản thân
-Tự đánh giá % công việc của mỗi người:
Trịnh Viết Nam: 40%
Đỗ Văn Quân: 30%
Nguyễn Thái Dương: 30%
Trang 15TÀI LIỆU THAM KHẢO
- Slide bài giảng cô Nguyễn Thị Thu Trang bộ môn Công nghệ phần mền ĐHBKHN.
- Lập trình đồ họa trên java 2D và 3D nguồn:tailieu.vn
- Giáo trình java sun của nhóm phát triển phần mềm SSDG
- Nhiều tài liệu tiếng Việt khác
- Java™ How to Program, SeventhEdition By H M Deitel - Deitel &
Associates, Inc., P J Deitel - Deitel & Associates, Inc.
Trang 16Phụ lục:
Danh mục bảng được sử dụng
lớp cabin
của lớp cabin
lớp Display
của lớp Display
lớp PersonWalking
của lớp PersonWalking
Trang 17của lớp CreateRandomPerson
Danh mục hình ảnh được sử dụng
tả bài toán
chức năng phục vụ
di chuyển của thang
chương trình