From 9d85e84ded551611619c0ac7f86d22a406f82c5e Mon Sep 17 00:00:00 2001 From: maricarvi Date: Wed, 13 Sep 2023 19:51:45 -0300 Subject: [PATCH 1/2] =?UTF-8?q?Entrega=20dos=20exerc=C3=ADcios=20da=20sema?= =?UTF-8?q?na?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- exercicios/para-casa/README.md | 4 +- .../mari carvalho/extra-para-casa.py | 31 ++ .../para-casa/mari carvalho/maricarvi.py | 36 ++ exercicios/para-sala/README.md | 4 + .../anota\303\247\303\265es dont pad" | 343 ++++++++++++++++++ exercicios/para-sala/ex2-heranca.py | 32 ++ exercicios/para-sala/exercicio1.py | 40 ++ exercicios/para-sala/exercicio2.py | 49 +++ exercicios/para-sala/extra.py | 44 +++ 9 files changed, 581 insertions(+), 2 deletions(-) create mode 100644 exercicios/para-casa/mari carvalho/extra-para-casa.py create mode 100644 exercicios/para-casa/mari carvalho/maricarvi.py create mode 100644 "exercicios/para-sala/anota\303\247\303\265es dont pad" create mode 100644 exercicios/para-sala/ex2-heranca.py create mode 100644 exercicios/para-sala/exercicio1.py create mode 100644 exercicios/para-sala/exercicio2.py create mode 100644 exercicios/para-sala/extra.py diff --git a/exercicios/para-casa/README.md b/exercicios/para-casa/README.md index 4a610d0..cbf0239 100644 --- a/exercicios/para-casa/README.md +++ b/exercicios/para-casa/README.md @@ -15,7 +15,7 @@ Na classe Carro, implemente um método chamado desconto() que retorna um descont Crie uma classe chamada Moto que também herda da classe Veiculo. Adicione um atributo adicional: -- cilindrada: a cilindrada da moto (um número inteiro). +- cilindrada: a cilindrda da moto (um número inteiro). Na classe Moto, implemente um método chamado `calcular_imposto()` que calcula o imposto a ser pago pela moto. O imposto para motos é de 5% do preço do veículo. Crie instâncias de Carro e Moto, atribuindo valores adequados aos atributos de cada veículo. @@ -32,7 +32,7 @@ Instruções: Crie uma classe base chamada Funcionario com os seguintes atributos: - - nome: o nome do funcionário. + - nome: o nome do funcionário. - salario: o salário base do funcionário (inicialmente definido como 0). A classe Funcionario deve ter um método chamado `calcular_pagamento()` que retorna o pagamento do funcionário. No entanto, este método deve ser definido como um método abstrato (utilizando `pass`) uma vez que cada tipo de funcionário (temporário e integral) calculará o pagamento de maneira diferente. diff --git a/exercicios/para-casa/mari carvalho/extra-para-casa.py b/exercicios/para-casa/mari carvalho/extra-para-casa.py new file mode 100644 index 0000000..595ebb1 --- /dev/null +++ b/exercicios/para-casa/mari carvalho/extra-para-casa.py @@ -0,0 +1,31 @@ +class Funcionario: + def __init__(self,nome): + self.nome = str(nome) + self.salario = 0 + + def calcularPagamento(self): + pass + +class Temporario(Funcionario): + def __init__(self,nome,salarioporhora,hora): + self.nome = str(nome) + self.salarioporhora = salarioporhora + self.hora = hora + + def calcularPagamento(self): + salario = self.salarioporhora * self.hora + return salario + +class FuncionarioIntegral(Funcionario): + def __init__(self, nome, salariomensal): + super().__init__(nome) + self.salariomensal = salariomensal + + def calcularPagamento(self): + return self.salariomensal + +marcinhatabata_funcionario = FuncionarioIntegral ('Marcinha Tabata',20.000) +fatinha_funcionario = Temporario ('Fatinha Rodrigues',1500, 10) + +print (marcinhatabata_funcionario.calcularPagamento()) +print (fatinha_funcionario.calcularPagamento()) diff --git a/exercicios/para-casa/mari carvalho/maricarvi.py b/exercicios/para-casa/mari carvalho/maricarvi.py new file mode 100644 index 0000000..b884b72 --- /dev/null +++ b/exercicios/para-casa/mari carvalho/maricarvi.py @@ -0,0 +1,36 @@ +class Veiculo: + def __init__(self, modelo, ano, preco): + self.modelo = modelo + self.ano = ano + self.preco = preco + + def calcular_imposto_carro(self): + imposto = self.preco * 0.1 + return imposto + +class Carro (Veiculo): + def __init__(self, modelo, ano, preco, marca): + super().__init__(modelo, ano, preco) + self.marca = marca + + def calcular_desconto(self): + desconto = self.preco * 0.05 + return desconto + +class Moto (Veiculo): + def __init__(self, modelo, ano, preco, cilindrada): + super().__init__(modelo, ano, preco) + self.cilindrada = cilindrada + + def calcular_imposto_moto(self): + imposto = self.preco * 0.05 + return imposto + +carro_andreza = Carro('esportivo', 2023, 25, 'porsche taycan') +moto_marcinha = Moto('custom', 2023, 60, 500) + +print(carro_andreza.calcular_imposto_carro()) +print(moto_marcinha.calcular_imposto_moto()) + +#Feito em chamada com as meninas da turma: +# Andreza, Igea, Louise, Thaysa, Julia, Maria de Fatima, Marcinha \ No newline at end of file diff --git a/exercicios/para-sala/README.md b/exercicios/para-sala/README.md index a039fa3..9b8bcae 100644 --- a/exercicios/para-sala/README.md +++ b/exercicios/para-sala/README.md @@ -25,6 +25,10 @@ Implemente os seguintes métodos na classe ContaBancaria: depositar(self, valor): Um método que permite ao titular da conta depositar dinheiro na conta. sacar(self, valor): Um método que permite ao titular da conta sacar dinheiro da conta, desde que haja saldo suficiente. + + + + Exemplo: ```python diff --git "a/exercicios/para-sala/anota\303\247\303\265es dont pad" "b/exercicios/para-sala/anota\303\247\303\265es dont pad" new file mode 100644 index 0000000..8859a1e --- /dev/null +++ "b/exercicios/para-sala/anota\303\247\303\265es dont pad" @@ -0,0 +1,343 @@ +Aula POO - 09/09/2023 + +1) escopo global é quando a variável é criada fora de uma função ou bloco e local qd quando o escopo dela pertence só a um bloco? + +2) Gostaria de entender o que escopo interfere na orientação a objetos, que a prof disse que isso é importante + +3) Além dos métodos "prontos"/que já existem, a gente cria/pode criar métodos novos. É isso? + +4) Tudo que vem depois do .(ponto) é método? foi isso que a prof falou? Exatamente + +5) Como eu faria para deixar o usuário inputar em uma função de classe? + + + +class cachorro: + def __init__(self, nome, raca): # metodo construtor + self.nome = nome + self.raca = raca + + def andar(self): + print('estou andando', self.nome) + + def info(self): + print(self.nome, self.raca) + + +cachorro_lulu = cachorro('lulu', 'Harrier') + +cachorro_rex = cachorro('rex', 'Pinscher') + +# .... N objetos + +cachorro_lulu.info() + +cachorro_rex.info() + +cachorro_lulu.andar() + +print(f'nome do meu cachoro: {cachorro_lulu.nome}') + +cachorro_lulu.nome + +cachorro_rex.andar() + +b = 1 +a = 2 + +print(b.__class__) + +resp = b.__add__(a) + + +print(resp) + + +# exercício 1 + +class ContaBancaria: + def __init__(self, numero_conta, titular_conta): + self.numero_conta = numero_conta + self.titular_conta = titular_conta + self.saldo = 0.0 # saldo inicial definido com 0.0 + + def depositar(self, valor): + if valor > 0: + text = f'Valor depositado de R${valor}, realizado com sucesso.' + self.saldo =+ valor # self.saldo = self.saldo + valor + print(text) + else: + print('O valor do depósito deve ser maior que 0') + + def sacar(self, valor): + if valor > 0: + if self.saldo >= valor: + self.saldo -= valor + print(f'Saque de R${valor} realizado com sucesso') + else: + print("saldo insuficiente para realizar o saque") + else: + print("O valor do saque deve ser maior que zero.") + + +------ + + +# # exercício 1 + +class ContaBancaria: + def __init__(self, numero_conta, titular_conta): + self.numero_conta = numero_conta + self.titular_conta = titular_conta + self.saldo = 0.0 # saldo inicial definido com 0.0 + + def depositar(self, valor): + if valor > 0: + text = f'Valor depositado de R${valor}, realizado com sucesso.' + self.saldo =+ valor # self.saldo = self.saldo + valor + print(text) + else: + print('O valor do depósito deve ser maior que 0') + + def sacar(self, valor): + if valor > 0: + if self.saldo >= valor: + self.saldo -= valor + print(f'Saque de R${valor} realizado com sucesso') + else: + print("saldo insuficiente para realizar o saque") + else: + print("O valor do saque deve ser maior que zero.") + + +contaDaviny = ContaBancaria(202301, "Daviny Letícia") + +contaDaviny.depositar(100) + +contaDaviny.sacar(10) + +print(contaDaviny.saldo) + +contaLais = ContaBancaria(202302, "Lais") + +contaLais.depositar(80) + +contaLais.sacar(1000) + + +# 2 Retangulo + +class Retangulo: + def __init__(self, largura, altura): + self.largura = largura + self.altura = altura + + def calcular_area(self): + # print(f'calcular a área{self.largura * self.altura}') + return self.largura * self.altura + + def calcular_perimetro(self): + return 2 * (self.largura + self.altura) + + +casa_fabiana = Retangulo(5.0, 3.0) + +print(f'A casa da Fabiana, tem: {casa_fabiana.calcular_area()} área') + +print(f'a casa da fabiana tem {casa_fabiana.calcular_perimetro()} de perímetro') + + + +casa_daviny = Retangulo(9.0, 10.5) + +print(casa_daviny.calcular_area()) +print(casa_daviny.calcular_perimetro()) + +6) Herança seria uma classe dentro de uma subclasse? + +7) Estou com dificuldade de entender o uso do (self) sozinho, sem nenhum outro parametro acompanhando, na def da função + + + +class Animal: + def __init__(self, nome): + self.nome = nome + + def fazer_som(self): + pass + +class Cachorro(Animal): + def fazer_som(self): + return f'{self.nome} faz um latido' + + def andar(self): + pass + + +class Gato(Animal): + def fazer_som(self): + return f'{self.nome} faz um miado' + +# ---- + +class Person: + def __init__(self, nacionalidade, genero, nome, idade): + self.nacionalidade = nacionalidade + self.genero = genero + self.nome = nome + self.idade = idade + + def info(self): + print(self.nacionalidade, self.genero, self.nome, self.idade) + +class PersonProfessional(Person): + def __init__ (self, nacionalidade, genero, nome, idade, setor, nivel): + super().__init__(nacionalidade, genero, nome, idade) + self.setor = setor + self.nivel = nivel + + + def info(self): + super().info() + print("Setor:", self.setor) + print("Nível:", self.nivel) + + +maria_dba = PersonProfessional('brasileira', 'feminina', 'Maria', '19', 'data', 'junior') + +maria_dba.info() + + +# 1 + +class Veiculo: + def __init__(self, marca, modelo, ano): + self.marca = marca + self.modelo = modelo + self.ano = ano + + def descricao(self): + return f'Marca: {self.marca}, Modelo: {self.modelo}, Ano: {self.ano}' + +class Carro(Veiculo): + def __init__(self, marca, modelo, ano, num_portas): + super().__init__(marca, modelo, ano) + self.num_portas = num_portas + + def descricao(self): + return super().descricao() + f', Números de portas: {self.num_portas}' + + +class Moto(Veiculo): + def __init__(self, marca, modelo, ano, tipo_motor): + super().__init__(marca, modelo, ano) + self.tipo_motor = tipo_motor + + def descricao(self): + return super().descricao() + f'tipo de motor: {self.tipo_motor}' + + +carro = Carro('Toyota', 'Corolla', 2023, 4) + +moto = Moto('honda', 'CBR500R', 2022, '4 tempos') + + +print(carro.descricao()) + +print(moto.descricao()) + + +carro_joao = Carro('Fiat', 'Siena', 2018, 4) + +print(carro_joao.descricao()) + + +# 2 + +class Produto: + def __init__(self, nome, preco): + self.nome = nome + self.preco = preco + + def descricao(self): + return f'nome: {self.nome}, Preço R$ {self.preco}' + +class ProdutoFisico(Produto): + def __init__(self, nome, preco, peso, dimensoes): + super().__init__(nome, preco) + self.peso = peso + self.dimensoes = dimensoes + + + def descricao(self): + return super().descricao() + f", Peso: {self.peso} kg, Dimensões: {self.dimensoes} cm" + +class ProdutoDigital(Produto): + def __init__(self, nome, preco, tamanho_arquivo): + super().__init__(nome,preco) + self.tamanho_arquivo = tamanho_arquivo + + def descricao(self): + return super().descricao() + f", Tamanho do Arquivo: {self.tamanho_arquivo} MB" + + +produto_fisico_darla = ProdutoFisico('livro', 30.00, 0.5, '20x15x3') + +print(produto_fisico_darla.descricao()) + +produto_digital_darla = ProdutoDigital('E-book', 50.00, 10) + +print(produto_digital_darla.descricao()) + + + +8) É possível criar um dicionário dentro da def __init__? + + + + +exercício extra + +implemente o método calcular_aluguel() em cada uma das subclasses para calcular o valor do aluguel com base em regras específicas: + +Para Casa, o aluguel deve ser calculado como preco_base + (area_terreno * 5). + +Para Apartamento, o aluguel deve ser calculado como preco_base + (numero_quartos * 300). + +e superclass tem o atributo endereco e nome_do_proprietario: + + + +class Imovel: + def __init__(self, endereco, nome_do_proprietario, preco_base): + self.endereco = endereco + self.nome_do_proprietario = nome_do_proprietario + self.preco_base = preco_base + + def calcular_aluguel(self): + return self.preco_base + +class Casa(Imovel): + def __init__(self, endereco, nome_do_proprietario, preco_base, area_terreno): + super().__init__(endereco, nome_do_proprietario, preco_base) + self.area_terreno = area_terreno + + def calcular_aluguel(self): + resp = self.preco_base + (self.area_terreno * 5) + return resp + +class Apartamento(Imovel): + def __init__(self, endereco, nome_do_proprietario, preco_base, numero_quartos): + super().__init__(endereco,nome_do_proprietario, preco_base) + self.numero_quartos = numero_quartos + + def calcular_aluguel(self): + resp = self.preco_base + (self.numero_quartos * 300) + return resp + + +casa_maria = Casa("122 Rua das Flores", "Maria", 1500, 300) +apartamento_carlos = Apartamento("333, Av. João Mendes", 'Carlos Jose', 1200, 2) + + +print(casa_maria.calcular_aluguel()) diff --git a/exercicios/para-sala/ex2-heranca.py b/exercicios/para-sala/ex2-heranca.py new file mode 100644 index 0000000..28be1ac --- /dev/null +++ b/exercicios/para-sala/ex2-heranca.py @@ -0,0 +1,32 @@ +class Produto: + def __init__(self, nome, preco): + self.nome = nome + self.preco = preco + + def descricao(self): + return f'nome: {self.nome}, Preço R$ {self.preco}' + +class ProdutoFisico(Produto): + def __init__(self, nome, preco, peso, dimensoes): + super().__init__(nome, preco) + self.peso = peso + self.dimensoes = dimensoes + + def descricao(self): + return super().descricao() + f' , Peso: {self.peso} kg, Dimensoes: {self.dimensoes} cm' + +class ProdutoDigital(Produto): + def __init__(self, nome, preco, tamanho_arquivo): + super().__init__(nome,preco) + self.tamanho_arquivo = tamanho_arquivo + + def descricao(self): + return super().descricao()+ f", Tamanho do Arquivo: {self.tamanho_arquivo} MB" + +produto_fisico_darla = ProdutoFisico('livro', 30.00, 0.5, '20x15x3') + +print(produto_fisico_darla.descricao()) + +produto_digital_darla = ProdutoDigital('Ebook', 50.00, 10) + +print(produto_digital_darla.descricao()) \ No newline at end of file diff --git a/exercicios/para-sala/exercicio1.py b/exercicios/para-sala/exercicio1.py new file mode 100644 index 0000000..78bb493 --- /dev/null +++ b/exercicios/para-sala/exercicio1.py @@ -0,0 +1,40 @@ +# exercicio 1 + +class conta_bancaria: + def __init__ (self, numero_conta, titular_conta): + self.numero_conta = numero_conta + self.titular_conta = titular_conta + self.saldo = 0.0 + + def depositar(self, valor): + if valor > 0: + self.saldo =+ valor #ou também pode ser self.saldo = self.saldo + valor + print(f'Valor depositado de R${valor}, realizado com sucesso.') + else: + print('O valor do depósito deve ser maior que 0.') + + def sacar(self, valor): + if valor > 0: + if self.saldo >= valor: + self.saldo -= valor + print(f'Saque de R${valor} realizado com sucesso') + else: + print('Saldo insuficiente') + else: + print('O valor a ser sacado deve ser maior que 0.') + +contaMari = conta_bancaria(202301, "Marimari") +contaMari.depositar(100) +contaMari.sacar(50) +print(contaMari.saldo) + +contaLais = conta_bancaria(202302, "Lais") +contaLais.depositar(500) +contaLais.sacar(1000) +print(contaLais.saldo) + + + + + + diff --git a/exercicios/para-sala/exercicio2.py b/exercicios/para-sala/exercicio2.py new file mode 100644 index 0000000..a15cd91 --- /dev/null +++ b/exercicios/para-sala/exercicio2.py @@ -0,0 +1,49 @@ +# exercicio 2 + +class retangulo: + def __init__ (self, altura, largura): + self.altura = altura + self.largura = largura + + def area (self, altura, largura): + area_calculada = (altura * largura) + return area_calculada + print(area_calculada) + + def perimetro(self, altura, largura): + perimetro_calculado = (altura) + (largura) + return perimetro_calculado + print(perimetro_calculado) + +retangulo_mari = retangulo(8.0, 4.0) +print(retangulo_mari.area()) +print(retangulo_mari.perimetro()) + +class Retangulo: + def __init__(self, largura, altura): + self.largura = largura + self.altura = altura + + def calcular_area(self): + # print(f'calcular a área{self.largura * self.altura}') + return self.largura * self.altura + + def calcular_perimetro(self): + return 2 * (self.largura + self.altura) + + +casa_fabiana = Retangulo(5.0, 3.0) + +print(f'A casa da Fabiana, tem: {casa_fabiana.calcular_area()} área') + +print(f'a casa da fabiana tem {casa_fabiana.calcular_perimetro()} de perímetro') + + + +casa_daviny = Retangulo(9.0, 10.5) + +print(casa_daviny.calcular_area()) +print(casa_daviny.calcular_perimetro()) + + + \ No newline at end of file diff --git a/exercicios/para-sala/extra.py b/exercicios/para-sala/extra.py new file mode 100644 index 0000000..f6748fa --- /dev/null +++ b/exercicios/para-sala/extra.py @@ -0,0 +1,44 @@ +# Implemente o método calcular_aluguel() em cada uma das subclasses para calcular o valor do aluguel +# com base em regras específicas: + +# Para Casa, o aluguel deve ser calculado como preco_base + (area_terreno * 5). + +# Para Apartamento, o aluguel deve ser calculado como preco_base + (numero_quartos * 300). + +# E superclass tem o atributo endereco e nome_do_proprietario + +#Criando a classe mãe +class Imovel: + def __init__ (self, nome_do_proprietario, endereco, preco_base): + self.nome_do_proprietario = nome_do_proprietario + self.endereco = endereco + self.preco_base = preco_base + + def calcular_aluguel(self): + return self.preco_base + +#Criando as classes filhas +class Casa(Imovel): + def __init__(self, endereco, nome_do_proprietario, preco_base, area_terreno): + super().__init__(endereco, nome_do_proprietario, preco_base) + self.area_terreno = area_terreno + + def calcular_aluguel(self): + resp = self.preco_base + (self.area_terreno * 5) + return resp + +class Apartamento(Imovel): + def __init__(self, nome_do_proprietario, endereco, preco_base, numero_quartos): + super().__init__(nome_do_proprietario, endereco, preco_base) + self.numero_quartos = numero_quartos + + def calcular_aluguel(self): + resp = self.preco_base + (self.numero_quartos * 300) + return resp + +#Criando os objetos +casa_maria = Casa('122 Rua das Flores', 'Maria', 1500, 300) +apartamento_carlos = Apartamento('333 Avenida Desespero', 'Carlos', 1200, 2) + +print(casa_maria.calcular_aluguel()) +print(apartamento_carlos.calcular_aluguel()) From a196e22c665cd2a58f92a63804e570b340d2eea6 Mon Sep 17 00:00:00 2001 From: maricarvi Date: Wed, 13 Sep 2023 19:52:48 -0300 Subject: [PATCH 2/2] =?UTF-8?q?Colocando=20informa=C3=A7=C3=A3o=20do=20gru?= =?UTF-8?q?po?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- exercicios/para-casa/mari carvalho/extra-para-casa.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/exercicios/para-casa/mari carvalho/extra-para-casa.py b/exercicios/para-casa/mari carvalho/extra-para-casa.py index 595ebb1..d2d9b43 100644 --- a/exercicios/para-casa/mari carvalho/extra-para-casa.py +++ b/exercicios/para-casa/mari carvalho/extra-para-casa.py @@ -29,3 +29,6 @@ def calcularPagamento(self): print (marcinhatabata_funcionario.calcularPagamento()) print (fatinha_funcionario.calcularPagamento()) + +#Feito em chamada com as meninas da turma: +# Andreza, Igea, Louise, Thaysa, Julia, Maria de Fatima, Marcinha \ No newline at end of file