0

我目前正在尝试理解组合,以便能够将它们实现到我正在处理的一段代码中。我没有看到组合 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>
4

1 回答 1

1

Aircraft对象应该是对象的“类构造函数”的参数Flight

免责声明

我假设您正在使用航班/飞机作为编码练习的示例,并且您没有构建真实世界的航空公司预订系统。如果您正在构建一个真实的航空公司预订系统,我会给出不同的答案。

于 2013-03-06T18:31:25.867 回答