def test_calcula(self): item_a = Item(nome='Item A', valor=100) orcamento = Orcamento(itens=[item_a]) imposto = ICMS() imposto_calculado = imposto.calcula(orcamento) imposto_esperado = 60 self.assertEqual(imposto_esperado, imposto_calculado)
def main(): orcamento = Orcamento() orcamento.adiciona_item(Item('Item 01', 100)) orcamento.adiciona_item(Item('Item 02', 50)) orcamento.adiciona_item(Item('Item 03', 400)) print("Orcamento total - em aprovacao") print(orcamento.total) print("\nAplicou desconto") orcamento.aplica_desconto_extra() print(orcamento.total) orcamento.aprova() print("\nOrcamento aprovado \n\nAplicou novo desconto") orcamento.aplica_desconto_extra() print(orcamento.total) print("\nOrcamento finalizado") orcamento.finaliza()
def test_calcula_sem_desconto(self): item_a = Item(nome='Item A', valor=10) orcamento = Orcamento(itens=[item_a]) sut = CalculadorDesconto() desconto_calculado = sut.calcula(orcamento) desconto_esperado = 0 self.assertEqual(desconto_calculado, desconto_esperado)
def test_calcula_iss(self): calculador = CalculadorImposto() item_a = Item(nome='Item A', valor=100) orcamento = Orcamento(itens=[item_a]) imposto = ISS() imposto_calculado = calculador.calcula(orcamento, imposto) imposto_esperado = 10 self.assertEqual(imposto_esperado, imposto_calculado)
def test_calcula(self): itens = [Item(nome=f'Item {it}', valor=it) for it in range(1, 10)] orcamento = Orcamento(itens=itens) sut = SemDesconto() desconto_calculado = sut.calcula(orcamento) desconto_esperado = 0 self.assertEqual(desconto_calculado, desconto_esperado)
def test_calcula_desconto_por_cinco_itens(self): itens = [Item(nome=f'Item {it}', valor=it) for it in range(1, 10)] orcamento = Orcamento(itens=itens) sut = CalculadorDesconto() desconto_calculado = sut.calcula(orcamento) desconto_esperado = 4.5 self.assertEqual(desconto_calculado, desconto_esperado)
def main(): """ Alterar o comportamento de um determinado objeto de acordo com o estado no qual ele se encontra, por exemplo, no jogo do mario, ao pegar um cogumelo o estado interno do personagem muda e vira um mario grande, e ao pegar uma peninha ele aprende a voar, mudando o estado interno do personagem. """ orcamento = Orcamento() orcamento.adiciona_item(Item('Item 01', 100)) orcamento.adiciona_item(Item('Item 02', 50)) orcamento.adiciona_item(Item('Item 03', 400)) print(orcamento.total) orcamento.aplica_desconto_extra() print(orcamento.total) orcamento.aprova() orcamento.aplica_desconto_extra() print(orcamento.total) orcamento.finaliza()
# -*- coding: UTF-8 -*- from descontos import Desconto_por_cinco_itens, Desconto_por_mais_de_quinhentos_reais, Sen_desconto class Calculador_de_descontos(object): def calcula(self, orcamento): desconto = Desconto_por_cinco_itens( Desconto_por_mais_de_quinhentos_reais( Sen_desconto())).calcula(orcamento) return desconto if __name__ == '__main__': from orcamento import Orcamento, Item orcamento = Orcamento() orcamento.adiciona_item(Item('Item - 1', 100)) orcamento.adiciona_item(Item('Item - 2', 50)) orcamento.adiciona_item(Item('Item - 3', 100)) calculador = Calculador_de_descontos() desconto = calculador.calcula(orcamento) print orcamento.valor print 'Desconto calculado %s' % (desconto)
# -*- coding: UTF-8 -*- # calculador_de_descontos.py from descontos import Desconto_por_cinco_itens, Desconto_por_mais_de_quinhentos_reais, Sem_desconto class Calculador_de_descontos(object): def calcula(self, orcamento): desconto = Desconto_por_cinco_itens( Desconto_por_mais_de_quinhentos_reais(Sem_desconto()) ).calcular(orcamento) return desconto """ Bloco de testes """ if __name__ == '__main__': from orcamento import Orcamento, Item orcamento = Orcamento() orcamento.adiciona_item(Item('Item A', 100.0)) orcamento.adiciona_item(Item('Item B', 50.0)) orcamento.adiciona_item(Item('Item C', 400.0)) calculador_de_descontos = Calculador_de_descontos() desconto = calculador_de_descontos.calcula(orcamento) print orcamento.valor print 'Desconto calculado : %s' % (desconto) # imprime 38.5
from descontos import Desconto_por_cinco_itens, Desconto_por_mais_de_quinhentos_reais, Sem_desconto class Calculador_de_descontos(object): def calcula(self, orcamento): desconto = Desconto_por_cinco_itens( Desconto_por_mais_de_quinhentos_reais( Sem_desconto())).calcula(orcamento) return desconto if __name__ == "__main__": from orcamento import Orcamento, Item orcamento = Orcamento() orcamento.adiciona_item(Item("ITEM-1", 100)) orcamento.adiciona_item(Item("ITEM-2", 50)) orcamento.adiciona_item(Item("ITEM-3", 400)) orcamento.adiciona_item(Item("ITEM-3", 00)) orcamento.adiciona_item(Item("ITEM-3", 400)) print(orcamento.valor) calculador = Calculador_de_descontos() desconto = calculador.calcula(orcamento) print('Desconto calculado %s' % desconto)
) class CalculadorDescontos: def calcula(self, orcamento): return DescontoCincoItens(DescontoMaisDeQuinhentosReais( SemDesconto())).calcula(orcamento) if __name__ == '__main__': from orcamento import Orcamento, Item orcamento = Orcamento() orcamento.adiciona_item(Item('item 0', 100.0)) orcamento.adiciona_item(Item('item 1', 100.0)) orcamento.adiciona_item(Item('item 2', 100.0)) orcamento.adiciona_item(Item('item 3', 100.0)) orcamento.adiciona_item(Item('item 4', 100.0)) orcamento.adiciona_item(Item('item 5', 100.0)) orcamento.adiciona_item(Item('item 6', 100.0)) orcamento.adiciona_item(Item('item 7', 100.0)) orcamento.adiciona_item(Item('item 8', 100.0)) orcamento.adiciona_item(Item('item 9', 100.0)) print(orcamento.valor) calculator = CalculadorDescontos() desconto = calculator.calcula(orcamento)
class Calculador_de_impostos(object): def realiza_calculo(self, orcamento, imposto): imposto_calculado =imposto.calcula(orcamento) print(imposto_calculado) if __name__ == '__main__': print() print('--CALCULADOR DE IMPOSTOS--') from orcamento import Orcamento, Item orcamento = Orcamento() orcamento.adiciona_item(Item('ITEM - 1', 10)) orcamento.adiciona_item(Item('ITEM - 2', 10)) orcamento.adiciona_item(Item('ITEM - 3', 10)) orcamento.adiciona_item(Item('ITEM - 4', 10)) orcamento.adiciona_item(Item('ITEM - 5', 10)) orcamento.adiciona_item(Item('ITEM - 6', 50)) calculador = Calculador_de_impostos() calculador.realiza_calculo(orcamento, ISS()) calculador.realiza_calculo(orcamento, ICMS()) calculador.realiza_calculo(orcamento, ISS(ICMS())) calculador.realiza_calculo(orcamento, ICPP()) calculador.realiza_calculo(orcamento, IKCV())
#../design-patterns-python/calculador_de_impostos.py class Calculador_de_impostos(object): def realiza_calculo(self, orcamento, imposto): valor = imposto.calcula(orcamento) print valor if __name__ == '__main__': from orcamento import Orcamento, Item from impostos import ICMS, ISS, IKCV, ICPP orcamento = Orcamento() orcamento.adiciona_item(Item('Item 1', 20)) orcamento.adiciona_item(Item('Item 2', 20)) orcamento.adiciona_item(Item('Item 3', 20)) orcamento.adiciona_item(Item('Item 4', 20)) orcamento.adiciona_item(Item('Item 5', 200)) calculador_de_impostos = Calculador_de_impostos() print 'ICMS seguido de ISS:' calculador_de_impostos.realiza_calculo(orcamento, ICMS()) calculador_de_impostos.realiza_calculo(orcamento, ISS()) print '\nICMS com ISS:' ISS_com_ICMS = ISS(ICMS()) calculador_de_impostos.realiza_calculo(orcamento, ISS_com_ICMS)
e deixarmos um único método descobrir o que deve ser feito, quebramos essas responsabilidades em várias diferentes classes, e as unimos como uma corrente. """ from desconto import Desconto_por_cinco_itens, Desconto_por_mais_quinhentos_reais, Sem_desconto class Calcula_descontos(object): def calcula(self, orcamento): desconto = Desconto_por_cinco_itens( Desconto_por_mais_quinhentos_reais( Sem_desconto())).calcula(orcamento) return desconto if __name__ == "__main__": from orcamento import Orcamento, Item orcamento = Orcamento() orcamento.adiciona_item(Item('ITEM - 1', 100)) orcamento.adiciona_item(Item('ITEM - 2', 50)) orcamento.adiciona_item(Item('ITEM - 3', 500)) orcamento.adiciona_item(Item('ITEM - 4', 400)) calculador = Calcula_descontos() desconto = calculador.calcula(orcamento) print(f"Desconto calculado R$ {desconto}")
from descontos import Desconto_por_cinco_items, Desconto_por_mais_de_quinhentos_reais, Sem_desconto class Calculador_de_descontos(object): def calcula(self, orcamento): desconto = Desconto_por_cinco_items( Desconto_por_mais_de_quinhentos_reais(Sem_desconto)).calcula(orcamento) return desconto if __name__ == '__main__': from orcamento import Orcamento, Item orcamento = Orcamento() orcamento.adiciona_item(Item('Item -1', 100)) orcamento.adiciona_item(Item('Item -2', 400)) orcamento.adiciona_item(Item('Item -3', 150)) orcamento.adiciona_item(Item('Item -4', 250)) orcamento.adiciona_item(Item('Item -5', 350)) orcamento.adiciona_item(Item('Item -6', 250)) orcamento.adiciona_item(Item('Item -7', 400)) print(orcamento.valor) calculador = Calculador_de_descontos() desconto_calculado = calculador.calcula(orcamento) print("Desconto Calculado: %s " % desconto_calculado)
from impostos import ISS, ICMS, IKCV, ICPP class Calculador_de_impostos(object): def realiza_calculo(self, calculo, imposto): imposto_calculado = imposto.calcula(orcamento) print 'R$ ', imposto_calculado if __name__ == '__main__': from orcamento import Orcamento, Item calculador = Calculador_de_impostos() orcamento = Orcamento() orcamento.adiciona_item(Item('Arroz', 30)) orcamento.adiciona_item(Item('Feijao', 59)) orcamento.adiciona_item(Item('Carne', 350)) print '---Total da compra-- ' print '-------------------- R$ ', orcamento.valor print 'ISS e ICMS' calculador.realiza_calculo(orcamento, ISS()) calculador.realiza_calculo(orcamento, ICMS()) print 'ISS com ICMS' calculador.realiza_calculo(orcamento, ISS(ICMS())) print 'IKCV e ICPP' calculador.realiza_calculo(orcamento, ICPP()) calculador.realiza_calculo(orcamento, IKCV())
class Calculador_de_descontos(object): def calcula(self, orcamento): desconto = Desconto_por_cinco_itens( Desconto_por_mais_de_quinhentos_reais( Sem_desconto() ) ).calcula(orcamento) return desconto if __name__ == '__main__': from orcamento import Orcamento, Item orcamento = Orcamento() orcamento.adiciona_item(Item('ITEM - 1', 100)) orcamento.adiciona_item(Item('ITEM - 2', 200)) orcamento.adiciona_item(Item('ITEM - 3', 101)) calculador = Calculador_de_descontos() desconto = calculador.calcula(orcamento) print 'desconto %s' % desconto
from impostos import ISS, ICMS, IKCV, ICPP class CalculadorDeImpostos(object): def realiza_calculo(self, orcamento, imposto): imposto_calculado = imposto.calcula(orcamento) print(imposto_calculado) if __name__ == "__main__": from orcamento import Orcamento, Item calculador = CalculadorDeImpostos() orcamento = Orcamento() orcamento.adiciona_itens(Item('Item 1', 50)) orcamento.adiciona_itens(Item('Item 1', 200)) orcamento.adiciona_itens(Item('Item 1', 250)) print("ICMS e ISS") calculador.realiza_calculo(orcamento, ICMS()) calculador.realiza_calculo(orcamento, ISS()) print("ICPP e IKCV") calculador.realiza_calculo(orcamento, ICPP()) calculador.realiza_calculo(orcamento, IKCV())
def setUp(self): self.orcamento = Orcamento() self.orcamento.adiciona_item(Item('Item A', 100.0)) self.orcamento.adiciona_item(Item('Item B', 50.0)) self.orcamento.adiciona_item(Item('Item C', 400.0)) self.calculador_de_impostos = CalculadorDeImpostos()
class Calculador_de_descontos(object): def calcula(self, orcamento): return Desconto_por_cinco_itens( Desconto_por_mais_de_quinhentos_reais( Sem_desconto())).calcula(orcamento) if __name__ == "__main__": from orcamento import Orcamento, Item orcamento = Orcamento() orcamento.adiciona_item(Item("item 0", 100.0)) orcamento.adiciona_item(Item("item 1", 100.0)) orcamento.adiciona_item(Item("item 2", 100.0)) orcamento.adiciona_item(Item("item 3", 100.0)) orcamento.adiciona_item(Item("item 4", 100.0)) orcamento.adiciona_item(Item("item 5", 100.0)) orcamento.adiciona_item(Item("item 6", 100.0)) orcamento.adiciona_item(Item("item 7", 100.0)) orcamento.adiciona_item(Item("item 8", 100.0)) orcamento.adiciona_item(Item("item 9", 100.0)) print orcamento.valor calculator = Calculador_de_descontos() desconto = calculator.calcula(orcamento)
from impostos import ICMS, ICPP, IKCV, ISS class CalculadorImpostos: def realiza_calculo(self, orcamento, imposto): imposto_calculado = imposto.calcula(orcamento) print(imposto_calculado) if __name__ == "__main__": from orcamento import Orcamento, Item orcamento = Orcamento() orcamento.adiciona_item(Item("item 0", 50.0)) orcamento.adiciona_item(Item("item 1", 200.0)) orcamento.adiciona_item(Item("item 2", 250.0)) calculador = CalculadorImpostos() print("ISS e ICMS") calculador.realiza_calculo(orcamento, ISS()) calculador.realiza_calculo(orcamento, ICMS()) print("ICPP e IKCV") calculador.realiza_calculo(orcamento, ICPP()) calculador.realiza_calculo(orcamento, IKCV())
# -*- coding: UTF-8 -*- # calculador_de_descontos.py from descontos import Desconto_por_cinco_itens, Desconto_por_mais_de_quinhentos_reais, Desconto_por_cem_reais, Sem_desconto class Calculador_de_descontos(object): def calcula(self, orcamento): desconto = Desconto_por_cinco_itens( Desconto_por_cem_reais( Desconto_por_mais_de_quinhentos_reais( Sem_desconto()))).calcular(orcamento) return desconto if __name__ == '__main__': from orcamento import Orcamento, Item orcamento = Orcamento() orcamento.adiciona_item(Item('Item A', 30.0)) calculador_de_descontos = Calculador_de_descontos() desconto = calculador_de_descontos.calcula(orcamento) print 'Desconto calculado : %s' % (desconto)
from impostos import ICMS, ICPP, IKCV, ISS class CalculadorImpostos: def realiza_calculo(self, orcamento, imposto): imposto_calculado = imposto.calcula(orcamento) print(imposto_calculado) if __name__ == '__main__': from orcamento import Orcamento, Item orcamento = Orcamento() orcamento.adiciona_item(Item('item 0', 50.0)) orcamento.adiciona_item(Item('item 1', 200.0)) orcamento.adiciona_item(Item('item 2', 250.0)) calculador = CalculadorImpostos() print('ISS e ICMS') calculador.realiza_calculo(orcamento, ISS()) calculador.realiza_calculo(orcamento, ICMS()) print('ICPP e IKCV') calculador.realiza_calculo(orcamento, ICPP()) calculador.realiza_calculo(orcamento, IKCV())
# -*- coding: Utf-8 -*- from desconto import Desconto_por_cinco_itens, Desconto_por_mais_de_quinhetos_reais, Sem_desconto class Calculador_de_desconto(object): def calcula(self, orcamento): desconto = Desconto_por_mais_de_quinhetos_reais(Desconto_por_mais_de_quinhetos_reais(Sem_desconto())).calcula(orcamento) return desconto if __name__ == "__main__": from orcamento import Orcamento, Item orcamento = Orcamento() orcamento.adiciona_item(Item('Item a', 100.0)) orcamento.adiciona_item(Item('Item b', 50.0)) orcamento.adiciona_item(Item('Item c', 400.0)) desconto = Calculador_de_desconto().calcula(orcamento) print('Desconto calculado : %s' % (desconto))
# -*- coding: UTF-8 -*- ''' Created on Oct 21, 2016 @author: tca85 ''' from calculador_de_impostos import Calculador_de_impostos # ----------------------------------------------------------------------------------------- if __name__ == '__main__': from orcamento import Orcamento, Item from impostos import ICMS, ISS, ICPP, IKCV orcamento = Orcamento() orcamento.adiciona_item(Item('Item 1', 500.0)) imposto = Calculador_de_impostos() print 'ISS %f' % (imposto.realiza_calculo(orcamento, ISS())) print 'ICMS %f' % (imposto.realiza_calculo(orcamento, ICMS())) print 'ISS com ICMS %f' % (imposto.realiza_calculo(orcamento, ISS(ICMS()))) print 'ICPP %f' % (imposto.realiza_calculo(orcamento, ICPP())) print 'IKCV %f' % (imposto.realiza_calculo(orcamento, IKCV())) print 'ICPP com IKCV %f' % (imposto.realiza_calculo( orcamento, ICPP(IKCV())))
from impostos import ISS, ICMS, ICPP, IKCV class Calculador_de_impostos(object): def realiza_calculo(self,orcamento,imposto): imposto_calculado = imposto.calcula(orcamento) print(imposto_calculado) if __name__ == '__main__': from orcamento import Orcamento, Item calculador = Calculador_de_impostos() orcamento = Orcamento() orcamento.adiciona_item(Item('ITEM 1',50)) orcamento.adiciona_item(Item('ITEM 2',200)) orcamento.adiciona_item(Item('ITEM 3',250)) print('ISS e ICMS') calculador.realiza_calculo(orcamento,ISS()) calculador.realiza_calculo(orcamento,ICMS()) print('ISS com ICMS') calculador.realiza_calculo(orcamento,ISS(ICMS())) print('ICPP e IKCV') calculador.realiza_calculo(orcamento,ICPP()) calculador.realiza_calculo(orcamento,IKCV()) print('ICPP com IKCV')
def setUp(self): self.item = Item('bolsa', 200) self.orcamento = Orcamento() self.orcamento.adiciona_item(self.item)
class Calculador_de_impostos(): def realiza_calculo(self, orcamento, imposto): imposto_calculado = imposto.calcula(orcamento) print(imposto_calculado) if __name__ == '__main__': from orcamento import Orcamento, Item orcamento = Orcamento() orcamento.adiciona_item(Item('item1', 50)) orcamento.adiciona_item(Item('item2', 200)) orcamento.adiciona_item(Item('item3', 250)) calculador = Calculador_de_impostos() calculador.realiza_calculo(orcamento, ISS()) calculador.realiza_calculo(orcamento, ICMS()) print('ISS e ICMS') calculador.realiza_calculo(orcamento, ISS(ICMS())) calculador.realiza_calculo(orcamento, ICPP()) calculador.realiza_calculo(orcamento, IKCV())
from imposto import ISS, ICMS, ICPP, IKCV from orcamento import Orcamento, Item class Calculador_Imposto(object): def __init__(self, orcamento, imposto): self.__calculado = imposto.calcula(orcamento) @property def imposto_calculado(self): return self.__calculado if __name__ == '__main__': orcamento = Orcamento() orcamento.adiciona_item(Item('Item - A', 100.0)) orcamento.adiciona_item(Item('Item - B', 50.0)) orcamento.adiciona_item(Item('Item - C', 400.0)) print 'ISS e ICMS' iss = Calculador_Imposto(orcamento, ISS()) icms = Calculador_Imposto(orcamento, ICMS()) print '%s\n%s' % (iss.imposto_calculado, icms.imposto_calculado) print 'ICPP e IKCV' icpp = Calculador_Imposto(orcamento, ICPP()) ikcv = Calculador_Imposto(orcamento, IKCV()) print '%s\n%s' % (icpp.imposto_calculado, ikcv.imposto_calculado)
from descontos import Desconto_por_cinco_itens, Desconto_por_quinhentos_reais, Sem_desconto class Calculador_de_descontos(object): def calcula(self, orcamento): desconto = Desconto_por_cinco_itens( Desconto_por_quinhentos_reais(Sem_desconto())).calcula(orcamento) return desconto if __name__ == '__main__': from orcamento import Orcamento, Item orcamento = Orcamento() orcamento.adiciona_item(Item('Arroz', 150)) orcamento.adiciona_item(Item('Feijão', 300)) orcamento.adiciona_item(Item('Carne', 20)) calculador = Calculador_de_descontos() desconto = calculador.calcula(orcamento) print '|----------------------------------------- |' print '|-- Bem vindo ao Supermercado do Rafael -- |' print '| ', (' ' * 39), '|' for itens in orcamento.obter_itens(): print '|--', itens.nome, (' ' * (37 - len(itens.nome))), '' print '|--------------- R$', itens.valor, (' ' * 19), '' print '| ', (' ' * 39), '|' print '|-- Total de itens ', (orcamento.total_itens), (' ' * 19), ' |' print '|-- Valor sem desconto R$ ', orcamento.valor, (' ' * 8), ' |'