我目前正在尝试理解组合,以便能够将它们实现到我正在处理的一段代码中。我没有看到组合 atm 的重要性/用途,但就我的目的而言,我似乎必须使用它。
目前我没有任何例子可以指导自己。我已经尝试在 Google 和 YouTube 上查找。
我想用组合来完成什么可以在下面看到:
该系统旨在允许为飞机预订多个座位。我们想使用两个类来实现这个系统,一个 Flight 类和一个 Aircraft 类。每个 Flight 对象都应该包含一个 Aircraft 对象的实例。这些类的角色和属性是:
飞机:这个类将存储两个属性,一个字符串形式的飞机名称和一个数字最大容量。
航班:此类将存储预订座位所需的信息。它将存储航班号(作为字符串)、保留的座位数,并将包含一个Aircraft 对象,该对象将用于确定可以预订的最大座位数。此类必须编写一个 bookSeats(noSeats) 成员函数,用于预订座位。在 bookSeats(noSeats) 中,如果飞机上没有足够的座位允许预订,您应该抛出异常。
在定义了两个类之后,实例化一个或多个航班并尝试预订座位,这样预订就会成功,并且预订会抛出异常。
<html>
<head>
<title>Test Template</title>
<script type="text/javascript">
function Flight(flightNo, maxSeats, reservedSeats ){
this.no = "AC781";
//Aaircarft object is needeed to get max number of seats
//this.maxSeats = 522;
this.reserved = 90;
}
//
function Aircraft (planeName,maxSeats){
this.planeName = "test"
this.maxSeats = 522;
}
Flight.prototype.bookSeats = function(noSeats){
if( noSeats + this.reserved <= this.maxSeats ){
this.reserved+= noSeats
} else {
throw "Not enough seats"; // THROW EXCEPTION
}
}
//Test the Flight implementation
var toHalifax = new Flight();
alert("Before update " + "No:" + toHalifax.no +
" Max seats:" + toHalifax.maxSeats +
" Reserved:" + toHalifax.reserved );
try{
toHalifax.bookSeats(46);
alert("After update " + "No:" + toHalifax.no +
" Max seats:" + toHalifax.maxSeats +
" Reserved:" + toHalifax.reserved );
} catch ( err ){
alert( err );
}
</script>
</head>
<body>
</body>
</html>