JavaScript和组合

时间:2013-03-06 18:12:41

标签: javascript oop composition

我目前正在尝试理解组合能够将它们实现为我正在处理的一段代码。我没有看到组合物atm的重要性/用途,但就我的目的而言,似乎我必须使用它。

我目前没有任何指导自己的例子。我已经尝试过在谷歌和YouTube上观看了。

我想用作文来完成的事情可以在下面看到:

该系统旨在允许预订飞机的多个座位。我们想用两个类来实现这个系统,一个Flight类和一个Aircraft类。每个Flight对象都应包含一个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>

1 个答案:

答案 0 :(得分:1)

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

<强>声明

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