diff --git a/typescript/src/Helicoptere.ts b/typescript/src/Helicoptere.ts index cb07c05..c7922d9 100644 --- a/typescript/src/Helicoptere.ts +++ b/typescript/src/Helicoptere.ts @@ -1,11 +1,13 @@ import { Direction } from './Direction' +import { Module } from './Module' import { ModuleMartien3D } from './ModuleMartien3D' import { Position } from './Position' -import { Rover } from './Rover' -export class Helicoptere extends Rover implements ModuleMartien3D { - constructor(override readonly direction: Direction, override readonly position: Position) { - super(direction, position); +export class Helicoptere extends Module implements ModuleMartien3D { + constructor(readonly direction: Direction, readonly position: Position) { + super(); + super._direction = direction; + super._position = position; } monter() { diff --git a/typescript/src/Module.ts b/typescript/src/Module.ts new file mode 100644 index 0000000..5a0becf --- /dev/null +++ b/typescript/src/Module.ts @@ -0,0 +1,28 @@ +import { Direction } from './Direction' +import { Position } from './Position' + +export abstract class Module { + protected pretPourRecuperation = false; + protected _position: Position; + protected _direction: Direction; + + avancer() { + this._position = this._direction.mouvement2D.avancer(this._position); + } + + reculer() { + this._position = this._direction.mouvement2D.reculer(this._position); + } + + getPosition(): Position { + return this._position; + } + + isPretPourRecuperation(): boolean { + return this.pretPourRecuperation; + } + + activerRecuperation() { + this.pretPourRecuperation = true; + } +} diff --git a/typescript/src/Rover.ts b/typescript/src/Rover.ts index e918251..4df8ece 100644 --- a/typescript/src/Rover.ts +++ b/typescript/src/Rover.ts @@ -1,34 +1,12 @@ import { Direction } from './Direction' +import { Module } from './Module' import { ModuleMartien2D } from './ModuleMartien2D' import { Position } from './Position' -export class Rover implements ModuleMartien2D { - private pretPourRecuperation: boolean = false; - private readonly _direction: Direction; - protected _position: Position; - +export class Rover extends Module implements ModuleMartien2D { constructor(readonly direction: Direction, readonly position: Position) { - this._direction = direction; - this._position = position; - } - - avancer() { - this._position = this._direction.mouvement2D.avancer(this._position); - } - - reculer() { - this._position = this._direction.mouvement2D.reculer(this._position); - } - - activerRecuperation() { - this.pretPourRecuperation = true; - } - - getPosition(): Position { - return this._position; - } - - isPretPourRecuperation(): boolean { - return this.pretPourRecuperation; + super(); + super._direction = direction; + super._position = position; } }