export { Trip, Trips }; class Trip { constructor(destination, miles, gallons) { this.destination = destination; this.miles = parseFloat(miles); this.gallons = parseFloat(gallons); } get isValid() { // a read-only property if (this.destination == "" || isNaN(this.miles) || isNaN(this.gallons)) { return false; } else if (this.miles <= 0 || this.gallons <= 0){ return false; } else { return true; } } get mpg() { // a read-only property return this.miles / this.gallons; } toString() { const mpg = this.mpg.toFixed(1); return `${this.destination}: Miles - ${this.miles}; MPG - ${mpg}`; } } class Trips { constructor() { this._trips = []; } push(trip) { // only allow Trip objects to be added to array if (trip instanceof Trip) { this._trips.push(trip); } } get totalMpg() { // a read-only property let totalMiles = 0; let totalGallons = 0; for (let trip of this._trips) { totalMiles += trip.miles; totalGallons += trip.gallons; } return totalMiles / totalGallons; } toString() { let str = ""; for (let trip of this._trips) { str += trip.toString() + "\n"; } str += "\nCumulative MPG: " + this.totalMpg.toFixed(1); return str; } }