Skip to content

Commit b4dab23

Browse files
Jim FloresJim Flores
authored andcommitted
Completed solution for TypeScript studio.
1 parent b765779 commit b4dab23

File tree

10 files changed

+204
-0
lines changed

10 files changed

+204
-0
lines changed

studio/Astronaut.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
"use strict";
2+
exports.__esModule = true;
3+
var Astronaut = /** @class */ (function () {
4+
function Astronaut(massKg, name) {
5+
this.name = name;
6+
this.massKg = massKg;
7+
}
8+
return Astronaut;
9+
}());
10+
exports.Astronaut = Astronaut;

studio/Astronaut.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { Payload } from './Payload';
2+
3+
export class Astronaut implements Payload {
4+
massKg: number;
5+
name: string;
6+
7+
constructor (massKg: number, name: string) {
8+
this.name = name;
9+
this.massKg = massKg;
10+
}
11+
}

studio/Cargo.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
"use strict";
2+
exports.__esModule = true;
3+
var Cargo = /** @class */ (function () {
4+
function Cargo(massKg, material) {
5+
this.material = material;
6+
this.massKg = massKg;
7+
}
8+
return Cargo;
9+
}());
10+
exports.Cargo = Cargo;

studio/Cargo.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { Payload } from './Payload';
2+
3+
export class Cargo implements Payload {
4+
massKg: number;
5+
material: string;
6+
7+
constructor (massKg: number, material: string) {
8+
this.material = material;
9+
this.massKg = massKg;
10+
}
11+
}

studio/Payload.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
"use strict";
2+
exports.__esModule = true;

studio/Payload.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export interface Payload {
2+
massKg: number;
3+
}

studio/Rocket.js

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
"use strict";
2+
exports.__esModule = true;
3+
var Rocket = /** @class */ (function () {
4+
function Rocket(name, totalCapacityKg) {
5+
this.cargoItems = [];
6+
this.astronauts = [];
7+
this.name = name;
8+
this.totalCapacityKg = totalCapacityKg;
9+
}
10+
Rocket.prototype.sumMass = function (items) {
11+
var sum = 0;
12+
for (var i = 0; i < items.length; i++) {
13+
sum += items[i].massKg;
14+
}
15+
return sum;
16+
};
17+
Rocket.prototype.currentMassKg = function () {
18+
return this.sumMass(this.astronauts) + this.sumMass(this.cargoItems);
19+
};
20+
Rocket.prototype.canAdd = function (item) {
21+
return (this.currentMassKg() + item.massKg) <= this.totalCapacityKg;
22+
};
23+
Rocket.prototype.addCargo = function (cargo) {
24+
if (this.canAdd(cargo)) {
25+
this.cargoItems.push(cargo);
26+
return true;
27+
}
28+
else {
29+
return false;
30+
}
31+
};
32+
Rocket.prototype.addAstronaut = function (astronaut) {
33+
if (this.canAdd(astronaut)) {
34+
this.astronauts.push(astronaut);
35+
return true;
36+
}
37+
else {
38+
return false;
39+
}
40+
};
41+
return Rocket;
42+
}());
43+
exports.Rocket = Rocket;

studio/Rocket.ts

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
import { Payload } from './Payload';
2+
import { Cargo } from './Cargo';
3+
import { Astronaut } from './Astronaut';
4+
5+
export class Rocket implements Payload {
6+
name: string;
7+
totalCapacityKg: number;
8+
cargoItems: Cargo[] = [];
9+
astronauts: Astronaut[] = [];
10+
massKg: number;
11+
12+
constructor (name: string, totalCapacityKg: number) {
13+
this.name = name;
14+
this.totalCapacityKg = totalCapacityKg;
15+
}
16+
17+
sumMass (items: Payload[]): number {
18+
let sum: number = 0;
19+
for (let i=0; i < items.length; i++) {
20+
sum += items[i].massKg;
21+
}
22+
return sum;
23+
}
24+
25+
currentMassKg (): number {
26+
return this.sumMass(this.astronauts) + this.sumMass(this.cargoItems);
27+
}
28+
29+
canAdd(item: Payload): boolean {
30+
return (this.currentMassKg() + item.massKg) <= this.totalCapacityKg;
31+
}
32+
33+
addCargo(cargo: Cargo): boolean {
34+
if (this.canAdd(cargo)) {
35+
this.cargoItems.push(cargo);
36+
return true;
37+
} else {
38+
return false;
39+
}
40+
}
41+
42+
addAstronaut(astronaut: Astronaut): boolean {
43+
if (this.canAdd(astronaut)) {
44+
this.astronauts.push(astronaut);
45+
return true;
46+
} else {
47+
return false;
48+
}
49+
}
50+
}

studio/studio.js

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
"use strict";
2+
// Instructions are published in the online book. The URL is:
3+
// https://education.launchcode.org/intro-to-professional-web-dev/chapters/typescript/studio.html
4+
exports.__esModule = true;
5+
var Astronaut_1 = require("./Astronaut");
6+
var Cargo_1 = require("./Cargo");
7+
var Rocket_1 = require("./Rocket");
8+
var falcon9 = new Rocket_1.Rocket('Falcon 9', 7500);
9+
var astronauts = [
10+
new Astronaut_1.Astronaut(75, 'Mae'),
11+
new Astronaut_1.Astronaut(81, 'Sally'),
12+
new Astronaut_1.Astronaut(99, 'Charles')
13+
];
14+
for (var i = 0; i < astronauts.length; i++) {
15+
var astronaut = astronauts[i];
16+
console.log(astronaut.name, falcon9.addAstronaut(astronaut));
17+
}
18+
var cargo = [
19+
new Cargo_1.Cargo(3107.39, "Satellite"),
20+
new Cargo_1.Cargo(1000.39, "Space Probe"),
21+
new Cargo_1.Cargo(753, "Water"),
22+
new Cargo_1.Cargo(541, "Food"),
23+
new Cargo_1.Cargo(2107.39, "Tesla Roadster"),
24+
];
25+
for (var i = 0; i < cargo.length; i++) {
26+
var c = cargo[i];
27+
console.log(c.material, falcon9.addCargo(c));
28+
}
29+
console.log("Final cargo and astronaut mass: " + falcon9.currentMassKg() + " kg.");

studio/studio.ts

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
// Instructions are published in the online book. The URL is:
2+
// https://education.launchcode.org/intro-to-professional-web-dev/chapters/typescript/studio.html
3+
4+
import { Astronaut } from './Astronaut';
5+
import { Cargo } from './Cargo';
6+
import { Rocket } from './Rocket';
7+
8+
let falcon9: Rocket = new Rocket('Falcon 9', 7500);
9+
10+
let astronauts: Astronaut[] = [
11+
new Astronaut(75, 'Mae'),
12+
new Astronaut(81, 'Sally'),
13+
new Astronaut(99, 'Charles')
14+
];
15+
16+
for (let i =0; i < astronauts.length; i++) {
17+
let astronaut = astronauts[i];
18+
console.log(astronaut.name, falcon9.addAstronaut(astronaut));
19+
}
20+
21+
let cargo: Cargo[] = [
22+
new Cargo(3107.39, "Satellite"),
23+
new Cargo(1000.39, "Space Probe"),
24+
new Cargo(753, "Water"),
25+
new Cargo(541, "Food"),
26+
new Cargo(2107.39, "Tesla Roadster"),
27+
];
28+
29+
for (let i =0; i < cargo.length; i++) {
30+
let c = cargo[i];
31+
console.log(c.material, falcon9.addCargo(c));
32+
}
33+
34+
console.log(`Final cargo and astronaut mass: ${falcon9.currentMassKg()} kg.`);
35+

0 commit comments

Comments
 (0)