@startuml
'https://plantuml.com/class-diagram

abstract class AbstractAircraft {
    # bulletCurveStrategy AbstractBulletCurveStrategy;
	# maxHp:int
    # hp:int
    + AbstractAircraft(int locationX, int locationY, int speedX, int speedY, int hp):void
    + decreaseHp(int decrease):void
    + getHp():int
    + shoot():List<Bullet>
}

AbstractAircraft *--> AbstractBulletCurveStrategy

interface AbstractBulletCurveStrategy {

     + shoot(AbstractAircraft aircraft): List<AbstractBullet>
}

NoBulletStrategy <|.. AbstractBulletCurveStrategy
ScatterStrategy <|.. AbstractBulletCurveStrategy
StraightLineStrategy <|.. AbstractBulletCurveStrategy

class NoBulletStrategy

@enduml