class TestISS(unittest.TestCase): def setUp(self): self.item = Item('bolsa', 200) self.orcamento = Orcamento() self.orcamento.adiciona_item(self.item) def test_calcula_ISS(self): iss = ISS() self.assertEqual(iss.calcula(self.orcamento), 200 * 0.1) def test_calcula_ICMS(self): icms = ICMS() self.assertEqual(icms.calcula(self.orcamento), 200 * 0.06)
class CalculadorDeImpostosTestCase(unittest.TestCase): 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() def test_realiza_calculo_ICMS(self): valor = self.calculador_de_impostos.realiza_calculo( self.orcamento, ICMS()) self.assertEqual(valor, 33.0) def test_realiza_calculo_ISS(self): valor = self.calculador_de_impostos.realiza_calculo( self.orcamento, ISS()) self.assertEqual(valor, 105.0) def test_realiza_calculo_ICPP(self): valor = self.calculador_de_impostos.realiza_calculo( self.orcamento, ICPP()) self.assertEqual(valor, 38.5) def test_realiza_calculo_IKCV(self): valor = self.calculador_de_impostos.realiza_calculo( self.orcamento, IKCV()) self.assertEqual(valor, 55) def test_realiza_calculo_IKCV_com_ICMS(self): valor = self.calculador_de_impostos.realiza_calculo( self.orcamento, IKCV(ICMS())) self.assertEqual(valor, 88)
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 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 impostos import ISS, ICMS, ICPP, IKCV from orcamento import Item 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 calculador = Calculador_de_impostos() orcamento = Orcamento() orcamento.adiciona_item(Item("pasta de dentes", 100)) calculador.realiza_calculo(orcamento, ISS()) calculador.realiza_calculo(orcamento, ICMS()) calculador.realiza_calculo(orcamento, ICPP()) calculador.realiza_calculo(orcamento, IKCV()) #Calculo imposto composto IKCV + ISS calculador.realiza_calculo(orcamento, IKCV(ISS(ICMS())))
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)
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}")
# -*- 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 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 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)
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)
# -*- coding: UTF-8 -*- # calculador_de_descontos.py from descontos import Desconto_por_cinco_itens, Desconto_por_mais_de_quinhetos_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() ) ) return desconto.calcula(orcamento) 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 'Desconto calculado : %s' % (desconto)
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), ' |'
class Calculador_de_imposto(object): def calcula(self, orcamento, imposto): print(imposto.calcula(orcamento)) if __name__ == '__main__': from orcamento import Orcamento, Item from imposto import ICMS, ISS orcamento = Orcamento() orcamento.adiciona_item(Item('ITEM_1', 50)) orcamento.adiciona_item(Item('ITEM_2', 200)) orcamento.adiciona_item(Item('ITEM_3', 250)) calculador_de_imposto = Calculador_de_imposto() print('ICSM e ISS') calculador_de_imposto.calcula(orcamento, ICMS()) calculador_de_imposto.calcula(orcamento, ISS()) print('ICSM com ISS') calculador_de_imposto.calcula(orcamento, ICMS(ISS()))
# -*- coding: UTF-8 -*- class Calculadora_de_descontos(object): """Classe responsável por montar a cadeia de responsabilidade de descontos""" @staticmethod def calcula_desconto(orcamento): """Função que monta a cadeia de responsabilidade""" desconto = Desconto_por_5_itens(Desconto_por_500_reais(Sem_desconto())) return desconto.calcula(orcamento) if __name__ == '__main__': from orcamento import Orcamento, Item orcamento = Orcamento() orcamento.adiciona_item(Item("Saco de Cimento", 75.00)) orcamento.adiciona_item(Item("Torneira de pia", 125.00)) orcamento.adiciona_item(Item("Azulejo da cozinha", 400.00)) print("Orçamento com os valores de desconto iniciais") print(orcamento.valor) print(orcamento.valor_desconto) print("Aplicando desconto no orçamento!") orcamento.aplica_desconto() print("Imprimindo valores do desconto!") print(orcamento.valor_desconto)
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()) calculador.realiza_calculo(orcamento, ISS(ICMS())) print 'ICPP e IKCV' calculador.realiza_calculo(orcamento, ICPP()) calculador.realiza_calculo(orcamento, IKCV()) calculador.realiza_calculo(orcamento, ICPP(IKCV()))
# _*_ encoding: utf-8 _*_ from descontos import Desconto_por_cinco_itens, Desconto_por_mais_de_quinhentos_reais, Sem_desconto class Calculador_de_descontos(object): def calcula(self, orcamento): # exemplo do design patter Chain of Responsability (cadeia de responsabilidades) desconto = Desconto_por_cinco_itens( Desconto_por_mais_de_quinhentos_reais(Sem_desconto()) ).calcula(orcamento) return desconto # este trecho possibilita a execução de testes com esta classe if __name__ == '__main__': from orcamento import Orcamento, Item orcamento = Orcamento() orcamento.adiciona_item(Item('ITEM 01', 100)) orcamento.adiciona_item(Item('ITEM 02', 50)) orcamento.adiciona_item(Item('ITEM 03', 400)) orcamento.adiciona_item(Item('ITEM 04', 400)) orcamento.adiciona_item(Item('ITEM 05', 500)) orcamento.adiciona_item(Item('ITEM 06', 40)) print orcamento.valor calculador = Calculador_de_descontos() desconto = calculador.calcula(orcamento) print 'Desconto calculado %s' % (desconto)
from desconto import Desconto_por_cinco_itens, Desconto_por_mais_de_quinhentos_reais, Sem_desconto class Calculador_de_desconto(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_1', 100.0)) orcamento.adiciona_item(Item('ITEM_2', 50.0)) orcamento.adiciona_item(Item('ITEM_3', 400.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)) calculador_de_desconto = Calculador_de_desconto() desconto = calculador_de_desconto.calcula(orcamento) print(f'O desconto eh de: {desconto}')
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())
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())
#../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)
# -*- 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)
) 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)
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())
# -*- 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
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 ISS, ICMS, IKCV, ICPP calculador = Calculador_de_impostos() orcamento = Orcamento() orcamento.adiciona_item(Item('ITEM 1', 50)) orcamento.adiciona_item(Item('ITEM 1', 200)) orcamento.adiciona_item(Item('ITEM 1', 250)) print 'INSS e ICMS' calculador.realiza_calculo(orcamento, ISS()) calculador.realiza_calculo(orcamento, ICMS()) print 'INSS 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' calculador.realiza_calculo(orcamento, ICPP(IKCV()))
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 -*- from descontos import Deconto_por_cinco_itens, Desconto_por_mais_de_quinhentos_reais, Sem_desconto class Calculador_de_descontos(object): def calcula(self, orcamento): desconto = Deconto_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 - 1', 50)) orcamento.adiciona_item(Item('ITEM - 1', 400)) calculador = Calculador_de_descontos() desconto = calculador.calcula(orcamento) print 'Desconto %s ' % (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)
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)
# -*- coding: UTF-8 -*- 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)) calculador = Calculador_de_descontos() desconto = calculador.calcula(orcamento) print 'Desconto calculado %s' % (desconto)
""" from item import Item from orcamento import Orcamento def ISS(orcamento): return ISS.__name__, orcamento.valor * 0.1 def ICMS(orcamento): return ICMS.__name__, orcamento.valor * 0.06 class CalculadoraDeImpostos(object): def realiza_calculo(self, orcamento, calcula_imposto): descricao, valor = calcula_imposto(orcamento) print(descricao, valor, '%') if __name__ == '__main__': calculador = CalculadoraDeImpostos() orcamento = Orcamento() orcamento.adiciona_item(Item('ITEM 1', 50)) orcamento.adiciona_item(Item('ITEM 2', 100)) calculador.realiza_calculo(orcamento, ISS) calculador.realiza_calculo(orcamento, ICMS)
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, ICPP, IKCV orcamento = Orcamento() calculador_de_impostos = Calculador_de_impostos() orcamento.adiciona_item(Item('Item A', 50.0)) orcamento.adiciona_item(Item('Item B', 200.0)) orcamento.adiciona_item(Item('Item C', 250.0)) print('ICMS e ISS') calculador_de_impostos.realiza_calculo(orcamento, ICMS()) calculador_de_impostos.realiza_calculo(orcamento, ISS()) print('ISS com ICMS') ISS_com_ICMS = ISS(ICMS()) calculador_de_impostos.realiza_calculo(orcamento, ISS_com_ICMS) print('ICPP e IKCV') calculador_de_impostos.realiza_calculo(orcamento, ICPP()) calculador_de_impostos.realiza_calculo(orcamento, IKCV()) print('ICPP com IKCV') ICPP_com_IKCV = ICPP(IKCV()) calculador_de_impostos.realiza_calculo(orcamento, ICPP_com_IKCV)