逻辑视图模型建模
班级:信2305-3 学号: 20234316 姓名: 徐戌
一 实验目的
理解面向对象系统分析和对象类建模的概念;
了解和掌握面向对象系统分析的方法和步骤;
了解和掌握寻找待开发系统中类的方法和技巧;
了解和掌握分析类之间继承关系的方法;
了解和掌握分析类之间的关联关系的方法;
掌握使用Rational Rose建立类图模型的方法;
二 实验环境及实验准备
所需硬件环境为微机;
所需软件环境为Rational Rose、Miscrosoft Word等;
熟悉Rational Rose下类模型建模的方法和步骤;
完成系统用例模型建模;
三 实验内容
(1)分析系统用例,确定对象类
- 收集相关信息
1.1 系统交互角色(Actors)
• 酒店工作人员:负责客户入住、退房、预订管理、调整房间配置操作。
• 客户:通过系统进行预订、入住、查询房间、结账。
• 酒店经理:管理酒店的运营、查看报表、调整房间配置。
• 酒店服务人员:负责房间清洁、维护。
1.2 工作环境/场所(Environment)
• 前台:客户办理入住、退房、查询等操作的主要地点。
• 客房:客户入住并享受酒店服务的地方。
• 餐厅:提供食物与饮品的地方。
• 会议室:用于商务会议等活动的场所。
1.3 概念实体或事件(Conceptual Entities/Events)
系统中涉及的概念实体和事件是系统中的核心数据和操作,如:
• 预订:客户通过系统进行房间预订的操作。
• 入住:客户正式进入酒店并登记的过程。
• 结账:客户退房并支付账单的过程。
• 账单:显示客户消费和应支付金额的单据。
• 房间类型:房间的不同类型,如单人间、双人间、套房。
1.4 部门(Department)
酒店内部的各个部门也是潜在的对象类,例如:
• 前台部:负责客户入住、退房、信息登记。
• 客房服务部:负责客房清洁、用品更换、客户特殊需求的处理。
• 餐饮部:负责餐厅服务、餐饮管理。
• 安保部:负责酒店的安全保障、监控管理。
对象类整理并分类 - 人类角色类(有形性、可操作性):
• 酒店工作人员
• 客户
• 酒店经理
• 酒店服务人员 - 物理空间类(有形性、操作性):
• 前台
• 客房
• 餐厅
• 会议室 - 操作类(事件类)(顺序性、持久性):
• 预订
• 入住
• 结账 - 数据类(概念实体类)(持久性、完整性):
• 账单
• 房间类型 - 部门类(包含性、持久性):
• 前台部
• 客房服务部
• 餐饮部
• 安保部
(2)、采用 CRC 卡片标识对象类及其属性、操作 - 酒店工作人员(类名)
• 类的类型:角色类、人员
• 类的特征:有形的、可操作性
• 责任:
• 属性:
• name: String // 员工姓名
• employeeId: String // 员工编号
• position: String // 职位
• shift: String // 工作班次
• 操作:
• checkIn(customer: Customer): void // 办理客户入住
• checkOut(customer: Customer): void // 办理客户退房
• handleBooking(customer: Customer, room: Room): void // 处理客户预订
• manageRoomAssignments(room: Room, status: String): void // 管理房间分配和状态
• 协作者:
• Customer: 与客户进行入住、退房、预订操作。
• Room: 进行房间分配和状态更新。
• FrontDesk: 与前台协调操作,记录客户入住、退房。
- 客户(类名)
• 类的类型:角色类、人员
• 类的特征:有形的、可操作性
• 责任:
• 属性:
• name: String // 客户姓名
• id: String // 客户ID
• contactInfo: String // 联系方式
• 操作:
• makeReservation(roomType: RoomType): void // 客户进行房间预订
• checkInAtHotel(): void // 客户办理入住
• checkOutOfHotel(): void // 客户办理退房
• payBill(amount: float): void // 客户支付账单
• 协作者:
• Booking: 与预订类合作进行预订操作。
• Room: 与房间类合作分配房间。
• Bill: 用于计算和结算客户账单。
- 酒店经理(类名)
• 类的类型:角色类、人员
• 类的特征:有形的、可操作性
• 责任:
• 属性:
• name: String // 经理姓名
• employeeId: String // 经理ID
• role: String // 职位(例如:酒店经理)
• 操作:
• generateReport(): Report // 生成运营报表
• adjustRoomAvailability(room: Room, availability: Boolean): void // 调整房间的可用性
• handleCustomerComplaints(complaint: Complaint): void // 处理客户投诉
• manageHotelOperations(): void // 管理酒店运营
• 协作者:
• Room: 管理房间的可用性。
• FrontDesk: 通过前台管理客户的入住和退房。
• Staff: 协调和管理酒店工作人员的工作。
• Report: 生成和查看酒店运营报告。
- 酒店服务人员(类名)
• 类的类型:角色类、人员
• 类的特征:有形的、可操作性
• 责任:
• 属性:
• name: String // 服务员姓名
• employeeId: String // 服务员编号
• tasksAssigned: List// 被分配的任务列表
• 操作:
• cleanRoom(room: Room): void // 清洁房间
• respondToCustomerRequest(request: String): void // 响应客户请求
• reportMaintenanceIssue(issue: String): void // 上报维护问题
• 协作者:
• Room: 负责清洁和维护房间。
• Customer: 提供服务和回应客户请求。
• Maintenance: 与维护部门协作,报告设备问题。
- 前台(类名)
• 类的类型:物理空间类
• 类的特征:有形的、操作性
• 责任:
• 属性:
• location: String // 前台位置(例如:大厅中央)
• hoursOfOperation: String // 前台营业时间
• 操作:
• checkInCustomer(customer: Customer): void // 办理客户入住
• checkOutCustomer(customer: Customer): void // 办理客户退房
• processBooking(customer: Customer, roomType: RoomType): void // 处理客户预订
• provideRoomInfo(room: Room): void // 提供房间信息
• 协作者:
• Customer: 办理客户的入住、退房、预订。
• Room: 提供房间信息并分配房间。
• HotelStaff: 协助管理客户入住和退房。
- 客房(类名)
• 类的类型:物理空间类
• 类的特征:有形的、操作性
• 责任:
• 属性:
• roomNumber: String // 房间号
• roomType: RoomType // 房间类型(单人间、双人间等)
• status: String // 房间状态(如:已入住、空闲、维修中等)
• price: float // 房间价格
• 操作:
• updateRoomStatus(status: String): void // 更新房间状态
• assignRoomToCustomer(customer: Customer): void // 为客户分配房间
• 协作者:
• Customer: 处理房间分配。
• HotelStaff: 协助管理房间状态。
- 账单(类名)
• 类的类型:数据类
• 类的特征:持久性、完整性
• 责任:
• 属性:
• billNumber: String // 账单编号
• totalAmount: float // 账单总金额
• items: List// 账单项目列表(如:住宿费、餐饮费等)
• 操作:
• generateBill(customer: Customer): void // 生成账单
• addItemToBill(item: String, cost: float): void // 向账单添加项目
• processPayment(amount: float): void // 处理支付
• 协作者:
• Customer: 客户生成并支付账单。
• HotelStaff: 协助生成和处理账单。
- 房间类型(类名)
• 类的类型:数据类
• 类的特征:持久性、完整性
• 责任:
• 属性:
• typeName: String // 房间类型名称(如:单人间、双人间、套房等)
• price: float // 每种房间类型的价格
• description: String // 房间类型描述(如:房间大小、设施等)
• 操作:
• setRoomTypePrice(price: float): void // 设置房间类型价格
• updateRoomTypeDescription(description: String): void // 更新房间类型描述
• 协作者:
• Room: 为房间类型提供信息。
• Booking: 客户选择房间类型时使用。
- 餐厅(类名)
• 类的类型:物理空间类
• 类的特征:有形的、操作性
• 责任:
• 属性:
• location: String // 餐厅位置
• menu: List// 餐厅菜单
• 操作:
• takeOrder(order: String): void // 接收客户订单
• serveFood(order: String): void // 上菜
• updateMenu(newItem: String): void // 更新菜单
• 协作者:
• Customer: 提供点餐服务。
• Kitchen: 协同厨房准备食物。
(3)对象类间继承关系建模,绘制类图
(4)对象类间语义关联关系建模,完善类图
四 实验分析及问题思考
绘制类图时不够言简意赅,要提取关键词
逻辑视图模型建模
班级: 信2305-3 学号: 20234316 姓名:徐戌
实验自评
实验内容 自评结果(在对应格内打)
不熟练 一般 比较熟练 熟练
识别对象类及其属性、操作 √
确定类间关系 √
绘制类图,描述系统静态逻辑结构 √
实验体会
逻辑视图模型建模是一项具有挑战性但也非常有意义的任务。在进行逻辑视图模型建模实验的过程中,我认为以下几点是比较重要的体会:
首先,对系统的功能和需求有清晰的理解是至关重要的。只有明确了系统的目标和用户的需求,才能更好地设计逻辑视图模型,确保模型能够准确地反映系统的结构和行为。
其次,注重模型的抽象和简化。逻辑视图模型应该能够捕捉系统的主要特征和关系,避免过于复杂的细节,以便于理解和分析。
另外,良好的文档记录也是必不可少的。在建模过程中,及时记录模型的设计思路、假设和决策,有助于后续的维护和改进,也方便与其他团队成员进行沟通和协作。
最后,不断地验证和改进模型。通过实际的案例和数据对模型进行验证,发现问题及时进行调整和优化,以提高模型的准确性和实用性。