現在、作業中のコードにコンポジションを実装できるように、コンポジションを理解しようとしています。コンポジションatmの重要性/使用法はわかりませんが、私の目的のためにはそれを使用する必要があるようです.
現時点では、自分自身を導くための例はありません。すでにGoogleやYouTubeで調べてみました。
私がコンポジションで達成しようとしていることは以下のとおりです。
このシステムは、飛行機のフライトで複数の座席を予約できるようにすることを目的としています。このシステムを実装するために、Flight クラスと Aircraft クラスの 2 つのクラスを使用します。すべての Flight オブジェクトには、Aircraft オブジェクトのインスタンスが含まれている必要があります。これらのクラスの役割と属性は次のとおりです。
航空機:このクラスは、文字列としての航空機名と数値の最大容量の 2 つの属性を格納します。
Flight:このクラスには、座席の予約に必要な情報が格納されます。フライト番号(文字列として)、予約済み座席数を格納し、予約可能な最大座席数を決定するために使用されるAircraft オブジェクトを含みます。このクラスは、座席の予約に使用される bookSeats(noSeats) メンバー関数をコーディングする必要があります。bookSeats(noSeats) では、予約を許可するために飛行機に十分な座席が残っていない場合、例外をスローすることが期待されています。
2 つのクラスを定義したら、1 つ以上のフライトをインスタンス化し、予約が成功するように座席を予約しようとします。予約は例外をスローします。
<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>