<filename>oo/carro.py
"""
você deve criar uma classe carro que vai possuir 2
atributos compostos por outras duas classes:

1) motor
2) direção

o motor terá a responsabilidade de controlar a velocidade.
ele oferece os seguintes atributos:

1) atributo de dado velocidade
2) método acelerar, que vai incrementar a velocidade em uma uniade
3) método frear que deve decrementar a velocidade em duas unidades

A direção tera a responsabilidade de controlar a direção.
ela oferece os seguintes atributos:
1) valor de direção com valores possiveis, norte, sul, leste, oeste
2) método girar a direita
3) método girar a esquerda
  N
O   L
  S

  Exemplo:
  >>> #testando motor
  >>> motor = Motor()
  >>> motor.velocidade
  0
  >>> motor.acelerar()
  >>> motor.velocidade
  1
  >>> motor.acelerar()
  >>> motor.velocidade
  2
  >>> motor.acelerar()
  >>> motor.velocidade
  3
  >>> motor.frear()
  >>> motor.velocidade
  1
  >>> motor.frear()
  >>> motor.velocidade
  0
  >>> #testando direção
  >>> direcao = Direcao()
  >>> direcao.valor
  'Norte'
  >>> direcao.girar_a_direita()
  >>> direcao.valor
  'Leste'
  >>> direcao.girar_a_direita()
  >>> direcao.valor
  'Sul'
  >>> direcao.girar_a_direita()
  >>> direcao.valor
  'Oeste'
  >>> direcao.girar_a_direita()
  >>> direcao.valor
  'Norte'
  >>> direcao.girar_a_esquerda()
  >>> direcao.valor
  'Oeste'
  >>> direcao.girar_a_esquerda()
  >>> direcao.valor
  'Sul'
  >>> direcao.girar_a_esquerda()
  >>> direcao.valor
  'Leste'
  >>> direcao.girar_a_esquerda()
  >>> direcao.valor
  'Norte'
  >>> carro = Carro(direcao, motor)
  >>> carro.calcular_velocidade()
  0
  >>> carro.acelerar()
  >>> carro.calcular_velocidade()
  1
  >>> carro.acelerar()
  >>> carro.calcular_velocidade()
  2
  >>> carro.frear()
  >>> carro.calcular_velocidade()
  0
  >>> carro.calcular_direcao()
  'Norte'
  >>> carro.girar_a_direita()
  >>> carro.calcular_direcao()
  'Leste'
  >>> carro.girar_a_direita()
  >>> carro.calcular_direcao()
  'Sul'
  >>> carro.girar_a_direita()
  >>> carro.calcular_direcao()
  'Oeste'
  >>> carro.girar_a_direita()
  >>> carro.calcular_direcao()
  'Norte'
  >>> carro.girar_a_esquerda()
  >>> carro.calcular_direcao()
  'Oeste'
  >>> carro.girar_a_esquerda()
  >>> carro.calcular_direcao()
  'Sul'
  >>> carro.girar_a_esquerda()
  >>> carro.calcular_direcao()
  'Leste'

"""

class Carro:

    def __init__(self, direcao, motor):
        self.motor = motor
        self.direcao = direcao

    def calcular_velocidade(self):
        return self.motor.velocidade

    def acelerar(self):
        self.motor.acelerar()

    def frear(self):
        self.motor.frear()

    def calcular_direcao(self):
        return self.direcao.valor

    def girar_a_direita(self):
        self.direcao.girar_a_direita()

    def girar_a_esquerda(self):
        self.direcao.girar_a_esquerda()


NORTE = 'Norte'
SUL = 'Sul'
LESTE = 'Leste'
OESTE = 'Oeste'

class Motor:

    def __init__(self):
        self.velocidade = 0

    def acelerar(self):
        self.velocidade += 1

    def frear(self):
        self.velocidade -= 2
        self.velocidade = max(0, self.velocidade)


class Direcao:
    rotacao_a_direita = {NORTE: LESTE, LESTE: SUL, SUL: OESTE, OESTE: NORTE}
    rotacao_a_esquerda = {NORTE: OESTE, OESTE: SUL, SUL: LESTE, LESTE: NORTE}

    def __init__(self):
        self.valor = NORTE

    def girar_a_direita(self):
        self.valor = self.rotacao_a_direita[self.valor]

    def girar_a_esquerda(self):
        self.valor = self.rotacao_a_esquerda[self.valor]


<filename>oo/carro.py
"""
você deve criar uma classe carro que vai possuir 2
atributos compostos por outras duas classes:

1) motor
2) direção

o motor terá a responsabilidade de controlar a velocidade.
ele oferece os seguintes atributos:

1) atributo de dado velocidade
2) método acelerar, que vai incrementar a velocidade em uma uniade
3) método frear que deve decrementar a velocidade em duas unidades

A direção tera a responsabilidade de controlar a direção.
ela oferece os seguintes atributos:
1) valor de direção com valores possiveis, norte, sul, leste, oeste
2) método girar a direita
3) método girar a esquerda
  N
O   L
  S

  Exemplo:
  >>> #testando motor
  >>> motor = Motor()
  >>> motor.velocidade
  0
  >>> motor.acelerar()
  >>> motor.velocidade
  1
  >>> motor.acelerar()
  >>> motor.velocidade
  2
  >>> motor.acelerar()
  >>> motor.velocidade
  3
  >>> motor.frear()
  >>> motor.velocidade
  1
  >>> motor.frear()
  >>> motor.velocidade
  0
  >>> #testando direção
  >>> direcao = Direcao()
  >>> direcao.valor
  'Norte'
  >>> direcao.girar_a_direita()
  >>> direcao.valor
  'Leste'
  >>> direcao.girar_a_direita()
  >>> direcao.valor
  'Sul'
  >>> direcao.girar_a_direita()
  >>> direcao.valor
  'Oeste'
  >>> direcao.girar_a_direita()
  >>> direcao.valor
  'Norte'
  >>> direcao.girar_a_esquerda()
  >>> direcao.valor
  'Oeste'
  >>> direcao.girar_a_esquerda()
  >>> direcao.valor
  'Sul'
  >>> direcao.girar_a_esquerda()
  >>> direcao.valor
  'Leste'
  >>> direcao.girar_a_esquerda()
  >>> direcao.valor
  'Norte'
  >>> carro = Carro(direcao, motor)
  >>> carro.calcular_velocidade()
  0
  >>> carro.acelerar()
  >>> carro.calcular_velocidade()
  1
  >>> carro.acelerar()
  >>> carro.calcular_velocidade()
  2
  >>> carro.frear()
  >>> carro.calcular_velocidade()
  0
  >>> carro.calcular_direcao()
  'Norte'
  >>> carro.girar_a_direita()
  >>> carro.calcular_direcao()
  'Leste'
  >>> carro.girar_a_direita()
  >>> carro.calcular_direcao()
  'Sul'
  >>> carro.girar_a_direita()
  >>> carro.calcular_direcao()
  'Oeste'
  >>> carro.girar_a_direita()
  >>> carro.calcular_direcao()
  'Norte'
  >>> carro.girar_a_esquerda()
  >>> carro.calcular_direcao()
  'Oeste'
  >>> carro.girar_a_esquerda()
  >>> carro.calcular_direcao()
  'Sul'
  >>> carro.girar_a_esquerda()
  >>> carro.calcular_direcao()
  'Leste'

"""

class Carro:

    def __init__(self, direcao, motor):
        self.motor = motor
        self.direcao = direcao

    def calcular_velocidade(self):
        return self.motor.velocidade

    def acelerar(self):
        self.motor.acelerar()

    def frear(self):
        self.motor.frear()

    def calcular_direcao(self):
        return self.direcao.valor

    def girar_a_direita(self):
        self.direcao.girar_a_direita()

    def girar_a_esquerda(self):
        self.direcao.girar_a_esquerda()


NORTE = 'Norte'
SUL = 'Sul'
LESTE = 'Leste'
OESTE = 'Oeste'

class Motor:

    def __init__(self):
        self.velocidade = 0

    def acelerar(self):
        self.velocidade += 1

    def frear(self):
        self.velocidade -= 2
        self.velocidade = max(0, self.velocidade)


class Direcao:
    rotacao_a_direita = {NORTE: LESTE, LESTE: SUL, SUL: OESTE, OESTE: NORTE}
    rotacao_a_esquerda = {NORTE: OESTE, OESTE: SUL, SUL: LESTE, LESTE: NORTE}

    def __init__(self):
        self.valor = NORTE

    def girar_a_direita(self):
        self.valor = self.rotacao_a_direita[self.valor]

    def girar_a_esquerda(self):
        self.valor = self.rotacao_a_esquerda[self.valor]


você deve criar uma classe carro que vai possuir 2 atributos compostos por outras duas classes:  1) motor 2) direção  o motor terá a responsabilidade de controlar a velocidade. ele oferece os seguintes atributos:  1) atributo de dado velocidade 2) método acelerar, que vai incrementar a velocidade em uma uniade 3) método frear que deve decrementar a velocidade em duas unidades  A direção tera a responsabilidade de controlar a direção. ela oferece os seguintes atributos: 1) valor de direção com valores possiveis, norte, sul, leste, oeste 2) método girar a direita 3) método girar a esquerda   N O   L   S    Exemplo:   >>> #testando motor   >>> motor = Motor()   >>> motor.velocidade   0   >>> motor.acelerar()   >>> motor.velocidade   1   >>> motor.acelerar()   >>> motor.velocidade   2   >>> motor.acelerar()   >>> motor.velocidade   3   >>> motor.frear()   >>> motor.velocidade   1   >>> motor.frear()   >>> motor.velocidade   0   >>> #testando direção   >>> direcao = Direcao()   >>> direcao.valor   'Norte'   >>> direcao.girar_a_direita()   >>> direcao.valor   'Leste'   >>> direcao.girar_a_direita()   >>> direcao.valor   'Sul'   >>> direcao.girar_a_direita()   >>> direcao.valor   'Oeste'   >>> direcao.girar_a_direita()   >>> direcao.valor   'Norte'   >>> direcao.girar_a_esquerda()   >>> direcao.valor   'Oeste'   >>> direcao.girar_a_esquerda()   >>> direcao.valor   'Sul'   >>> direcao.girar_a_esquerda()   >>> direcao.valor   'Leste'   >>> direcao.girar_a_esquerda()   >>> direcao.valor   'Norte'   >>> carro = Carro(direcao, motor)   >>> carro.calcular_velocidade()   0   >>> carro.acelerar()   >>> carro.calcular_velocidade()   1   >>> carro.acelerar()   >>> carro.calcular_velocidade()   2   >>> carro.frear()   >>> carro.calcular_velocidade()   0   >>> carro.calcular_direcao()   'Norte'   >>> carro.girar_a_direita()   >>> carro.calcular_direcao()   'Leste'   >>> carro.girar_a_direita()   >>> carro.calcular_direcao()   'Sul'   >>> carro.girar_a_direita()   >>> carro.calcular_direcao()   'Oeste'   >>> carro.girar_a_direita()   >>> carro.calcular_direcao()   'Norte'   >>> carro.girar_a_esquerda()   >>> carro.calcular_direcao()   'Oeste'   >>> carro.girar_a_esquerda()   >>> carro.calcular_direcao()   'Sul'   >>> carro.girar_a_esquerda()   >>> carro.calcular_direcao()   'Leste'