<filename>oo/carros.py


"""Voce deve criar uma classe carro que vai assumir dois atributos compostos por duas classes:
1) Motor
2) Direcao

O motor terá a responsabilidade de controlar a velocidade.
Ele Oferece os seguintes atributos:
1) Atribuo de dado velocidade
2) Método acelerar, que deverá incrementar 1 unidade
3) Médoto freardecrementar a velocidade de 2 unidades

A Direcao tera a responsabilidade de controlar a direcao, ela oferece os seguintes atributos:
1) Valor de direcao com valores possiveis norte, sul, leste, oeste
2) Método girar a direita -
2) 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 direcao
  >>> 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_esquerda()
  >>> carro.calcular_direcao()
  'Norte'
  >>> carro.girar_a_esquerda()
  >>> carro.calcular_direcao()
  'Oeste'
"""
NORTE = 'Norte'
LESTE = 'Leste'
SUL = 'Sul'
OESTE = 'Oeste'

class Direcao:
    def __init__(self):
        self.valor = NORTE

    def girar_a_direita(self):
        if self.valor == NORTE:
            self.valor = LESTE
        elif self.valor == LESTE:
            self.valor = SUL
        elif self.valor == SUL:
            self.valor = OESTE
        elif self.valor == OESTE:
            self.valor = NORTE

    def girar_a_esquerda(self):
        if self.valor == NORTE:
            self.valor = OESTE
        elif self.valor == OESTE:
            self.valor = SUL
        elif self.valor == SUL:
            self.valor = LESTE
        elif self.valor == LESTE:
            self.valor = NORTE

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

    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()

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)
<filename>oo/carros.py


"""Voce deve criar uma classe carro que vai assumir dois atributos compostos por duas classes:
1) Motor
2) Direcao

O motor terá a responsabilidade de controlar a velocidade.
Ele Oferece os seguintes atributos:
1) Atribuo de dado velocidade
2) Método acelerar, que deverá incrementar 1 unidade
3) Médoto freardecrementar a velocidade de 2 unidades

A Direcao tera a responsabilidade de controlar a direcao, ela oferece os seguintes atributos:
1) Valor de direcao com valores possiveis norte, sul, leste, oeste
2) Método girar a direita -
2) 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 direcao
  >>> 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_esquerda()
  >>> carro.calcular_direcao()
  'Norte'
  >>> carro.girar_a_esquerda()
  >>> carro.calcular_direcao()
  'Oeste'
"""
NORTE = 'Norte'
LESTE = 'Leste'
SUL = 'Sul'
OESTE = 'Oeste'

class Direcao:
    def __init__(self):
        self.valor = NORTE

    def girar_a_direita(self):
        if self.valor == NORTE:
            self.valor = LESTE
        elif self.valor == LESTE:
            self.valor = SUL
        elif self.valor == SUL:
            self.valor = OESTE
        elif self.valor == OESTE:
            self.valor = NORTE

    def girar_a_esquerda(self):
        if self.valor == NORTE:
            self.valor = OESTE
        elif self.valor == OESTE:
            self.valor = SUL
        elif self.valor == SUL:
            self.valor = LESTE
        elif self.valor == LESTE:
            self.valor = NORTE

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

    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()

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)
Voce deve criar uma classe carro que vai assumir dois atributos compostos por duas classes: 1) Motor 2) Direcao  O motor terá a responsabilidade de controlar a velocidade. Ele Oferece os seguintes atributos: 1) Atribuo de dado velocidade 2) Método acelerar, que deverá incrementar 1 unidade 3) Médoto freardecrementar a velocidade de 2 unidades  A Direcao tera a responsabilidade de controlar a direcao, ela oferece os seguintes atributos: 1) Valor de direcao com valores possiveis norte, sul, leste, oeste 2) Método girar a direita - 2) 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 direcao   >>> 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_esquerda()   >>> carro.calcular_direcao()   'Norte'   >>> carro.girar_a_esquerda()   >>> carro.calcular_direcao()   'Oeste'