jot*_*ttr 7 java oop io class-design
我应该写一个简单的电影预订系统,它允许客户预订电影.电影院由不同的剧院组成,座位数量,价格和电影放映时间不同.用户应该能够输入他的姓名和其他凭证,然后预订一个或多个电影和座位.当他完成预订时,系统应该输出收据,列出他的名字,电影的放映时间和预订号码.
我试图遵循OOP原则,以最好地利用我目前的能力.
我设置的课程如下:
我有点不确定在这种情况下将user-i/o置于何处:Shoud它保留在CinemaBooking中,还是应该生成一个只执行I/O的单独类?或者我应该将整个I/O内容移动到另一个类(例如Customer类)?
有很多建议,我只给予最重要的建议.
首先,OOP的主要思想是适应现实世界,所以最好让你的类尽可能接近真实对象.创建类预订,它将等同于票证,而不是程序的入口点.即它将包含有关用户,剧院,座位和费用的信息.创建类剧院,其中包含多个座位(不是行x列 - 可能会保留一些座位,有些可能会被打破,有些剧院也没有平方结构).或者,由于一个剧院可以有几个房间,您可以创建课堂,其中将有"座位"属性,然后将房间添加到剧院.还要创建类Movie.电影和剧院/房间将互相参考:电影将包含它所显示的剧院列表,剧院将包含它显示的电影列表.然后创建班级Seance,这将包含时间和电影.仅在以后您将与此客户合作并希望保存其属性(名称,预订历史记录等)时创建类Customer.否则再创建一个类是没有意义的.这是你的模特.类可能有点,但如果你有核心思想,这不会是一个问题.
其次,创建类BookingSystem,它将总结所有以前类的功能.它将是Facade设计模式的一个实现,它真正简化了对您的预订子系统的访问.
第三,为I/O工作创建单独的类.永远不要将I/O工作放到模型类中.想象一下,您的影院预订系统将成为另一个拥有自己I/O的系统的一部分 - 您需要重新设计所有代码以接收来自更高层的数据.因此,只需为用户的输入和程序输出单独创建类.这将是你的看法.
最后,创建主程序类.你可以给它同名的程序本身就是这样的.这个将只控制从视图到模型和返回的程序流.因此,这部分称为控制器,整体思路称为模型 - 视图 - 控制器模式.