From 7bde086ccff7e4bffeea2dd5d86bc4f676ff5bee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luiz=20Ot=C3=A1vio?= Date: Tue, 15 Nov 2022 13:47:24 -0300 Subject: [PATCH] =?UTF-8?q?Agrega=C3=A7=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- aula135.py | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 aula135.py diff --git a/aula135.py b/aula135.py new file mode 100644 index 0000000..c53d4f2 --- /dev/null +++ b/aula135.py @@ -0,0 +1,41 @@ +# Relações entre classes: associação, agregação e composição +# Agregação é uma forma mais especializada de associação +# entre dois ou mais objetos. Cada objeto terá +# seu ciclo de vida independente. +# Geralmente é uma relação de um para muitos, onde um +# objeto tem um ou muitos objetos. +# Os objetos podem viver separadamente, mas pode +# se tratar de uma relação onde um objeto precisa de +# outro para fazer determinada tarefa. +# (existem controvérsias sobre as definições de agregação). +class Carrinho: + def __init__(self): + self._produtos = [] + + def total(self): + return sum([p.preco for p in self._produtos]) + + def inserir_produtos(self, *produtos): + # self._produtos.extend(produtos) + # self._produtos += produtos + for produto in produtos: + self._produtos.append(produto) + + def listar_produtos(self): + print() + for produto in self._produtos: + print(produto.nome, produto.preco) + print() + + +class Produto: + def __init__(self, nome, preco): + self.nome = nome + self.preco = preco + + +carrinho = Carrinho() +p1, p2 = Produto('Caneta', 1.20), Produto('Camiseta', 20) +carrinho.inserir_produtos(p1, p2) +carrinho.listar_produtos() +print(carrinho.total())