Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"python.analysis.autoImportCompletions": true,
"python.analysis.completeFunctionParens": true,
"python.analysis.supportAllPythonDocuments": true,
"python.analysis.diagnosticMode": "workspace",
"python.analysis.indexing": true,
"python.analysis.autoSearchPaths": true,
"python.analysis.extraPaths": ["."],
"editor.quickSuggestions": {
"other": true,
"comments": false,
"strings": false
},
"editor.definitionLinkOpensInPeek": false
}
42 changes: 42 additions & 0 deletions Resposta_10.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
Erro 1 = Nome da classe pessoa minúscula
Problema: classes em Py devem seguir a conversão CamelCase
Solução: Alterado para clss Pessoa
Conceito: Convenção e boas praticas de POO

Erro 2 = Pendente Self. (atributo nome não sendo iniciado corretamente)
Problema: Dentro do `__init__`, estava escrito `nome = nome`, não atribuindo valor ao objeto.
Solução: Inserido self.nome = nome
Conceito: Encapsulado e inicialização correta de atributos

Erro 3 = Atributo privado contribuindo para falha futura
Problema: self._cpf = None estava correto, mas poderia causar confusão sem getter/setter
Solução:Mantido (não é erro de fato). Apenas confirmamos sua funcionalidade.
Conceito: Encapsulamento

Erro 4 = Metodo apresentar() sem parametro self
Problema: Definido como def apresentar ()
Solução: Corrigido para `def apresentar(self)
Conceito: Metodo de instância

Erro 5 = Classe Estudante não chamando o construtor da classe mãe
Problema: Estava redefinindo `self.nome = nome` diretamente
Solução: Usado `super().__init__(nome, idade)
Conceito: Herança e uso correto de `super()

Erro 6 = Divisão por zero na média
Problema: sum(self.notas) / len(self.notas)` causa erro se a lista estiver vazia.
Solução:Adicionada verificação:

if len(self.notas) == 0:
return 0

Conceito:

Erro 7 = Média sendo calculada sem adicionar notas antes
Problema: No teste, chamava calcular_media() sem adicionar nenhuma nota.
Solução: Notas foram adicionadas antes da chamada e também implementada proteção no método.
Conceito: Lógica do programa e integridade dos dados.




48 changes: 48 additions & 0 deletions Resposta_10.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
class Pessoa:
def __init__(self, nome, idade):
self.nome = nome
self.idade = idade
self.cpf = None

def apresentar(self):
return f"Olá, sou {self.nome}"


class Estudante(Pessoa):
def __init__(self, nome, idade, curso):
super().__init__(nome, idade)
self.curso = curso
self.notas = []

def adicionar_nota(self, nota):
if 0 <= nota <= 10:
self.notas.append(nota)

def calcular_media(self):
if len(self.notas) == 0:
return 0
return sum(self.notas) / len(self.notas)


class Professor(Pessoa):
def __init__(self, nome, idade, departamento, salario):
super().__init__(nome, idade)
self.departamento = departamento
self.salario = salario

def apresentar(self):
return f"Ola, sou o professor {self.nome} do departamento {self.departamento}"


if __name__ == "__main__":
estudante = Estudante("Joao", 20, "Engenharia")
professor = Professor("Dr. Silva", 45, "Computacao", 8000)

print(estudante.apresentar())
print(professor.apresentar())

estudante.adicionar_nota(8)
estudante.adicionar_nota(10)

print(f"Média do estudante: {estudante.calcular_media()}")
print(f"Salário do professor: {professor.salario}")
26 changes: 26 additions & 0 deletions respExercicio01.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
class Aluno:
def __init__(self, nome, matricula, curso):
self.nome = nome
self.matricula = matricula
self.curso = curso


class Disciplina:
def __init__(self, nome, codigo, carga_horaria):
self.nome = nome
self.codigo = codigo
self.carga_horaria = carga_horaria


# Exemplos de uso
Aluno1 = Aluno("Joao Silva", "2023001", "Engenharia de Software")
Aluno2 = Aluno("Maria Santos", "2023002", "Ciencia da Computacao")

Disciplina1 = Disciplina("Programação Orientada a Objetos", "POO101", 60)
Disciplina2 = Disciplina("Estruturas de Dados", "ED202", 45)

print(f"Aluno: {Aluno1.nome}, Matrícula: {Aluno1.matricula}, Curso: {Aluno1.curso}")
print(f"Aluno: {Aluno2.nome}, Matrícula: {Aluno2.matricula}, Curso: {Aluno2.curso}")

print(f"Disciplina: {Disciplina1.nome}, Código: {Disciplina1.codigo}, Carga Horaria: {Disciplina1.carga_horaria} horas")
print(f"Disciplina: {Disciplina2.nome}, Código: {Disciplina2.codigo}, Carga Horaria: {Disciplina2.carga_horaria} horas")
40 changes: 40 additions & 0 deletions respExercicio02.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
class Aluno:
def __init__(self, nome, matricula, curso):
self.nome = nome
self.matricula = matricula
self.curso = curso
self.notas = []

def adicionar_nota(self, nota):
self.notas.append(nota)

def calcular_media(self):
if len(self.notas) == 0:
return 0
return sum(self.notas) / len(self.notas)

def status(self):
media = self.calcular_media()
if media >= 7:
return "Aprovado"
elif media >= 5:
return "Recuperação"
else:
return "Reprovado"

alunoTeste = Aluno("Carlos Silva", "2023003", "Matemática")
alunoTeste.adicionar_nota(8)
alunoTeste.adicionar_nota(7)
alunoTeste.adicionar_nota(9)
print(f"Média: {alunoTeste.calcular_media()}")
print(f"Status: {alunoTeste.status()}")










32 changes: 32 additions & 0 deletions respExercicio03.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
class Professor:
def __init__(self, nome: str, departamento: str, salario: float):
self.nome = nome
self.departamento = departamento
self._salario = salario # atributo privado

@property
def salario(self):
return self._salario

@salario.setter
def salario(self, novo_valor):
if novo_valor > 0:
self._salario = novo_valor
else:
print("Erro: Salário deve ser um valor positivo!")

def exibir_informacoes(self):
return f"Professor: {self.nome}, Departamento: {self.departamento}, Salário: R$ {self._salario:.2f}"

if __name__ == "__main__":
professor = Professor("Dr. Silva", "Computacao", 5000.00)
print(f"salario atual: {professor.salario}")
professor.salario = 6000.00
print(f"novo salario: {professor.salario}")
professor.salario = -1000.00
print(f"salario apos tentativa invalida: {professor.salario}")





39 changes: 39 additions & 0 deletions respExercicio04.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
class Pessoa:
def __init__(self, nome, cpf, data_nascimento):
self.nome = nome
self.cpf = cpf
self.data_nascimento = data_nascimento

def apresentar(self):
return f"Olá, meu nome é {self.nome}, meu CPF é {self.cpf}"


class Funcionario(Pessoa):
def __init__(self, nome, cpf, data_nascimento, cargo):
super().__init__(nome, cpf, data_nascimento)
self.cargo = cargo

def apresentar(self):
return f"Olá, meu nome é {self.nome} e eu trabalho no cargo de {self.cargo}."


class Professor(Pessoa):
def __init__(self, nome, cpf, data_nascimento, departamento):
super().__init__(nome, cpf, data_nascimento)
self.departamento = departamento

def apresentar(self):
return f"Olá, meu nome é {self.nome}, sou professor no departamento de {self.departamento}."


class Tutor(Professor):
def __init__(self, nome, cpf, data_nascimento, area_atuacao):
# o teste espera isso: departamento NÃO é pedido
super().__init__(nome, cpf, data_nascimento, departamento="Tutoria")
self.area_atuacao = area_atuacao

def apresentar(self):
return (
f"Olá, meu nome é {self.nome}, sou tutor na área de {self.area_atuacao} "
f"e pertenço ao departamento de {self.departamento}."
)
36 changes: 36 additions & 0 deletions respExercicio05.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
class Pessoa:
def __init__(self, nome, cpf, data_nascimento): # def = criar
self.nome = nome
self.cpf = cpf
self.data_nascimento = data_nascimento


class Funcionario(Pessoa):
def __init__(self, nome, cpf, data_nascimento, cargo, salario):
super().__init__(nome, cpf, data_nascimento)
self.cargo = cargo
self.salario = salario

def exibir_dados(self):
print("=== Dados do Funcionário ===")
print(f"Nome: {self.nome}")
print(f"CPF: {self.cpf}")
print(f"Data de Nascimento: {self.data_nascimento}")
print(f"Cargo: {self.cargo}")
print(f"Salário: R$ {self.salario:.2f}")
if __name__ == "__main__":
funcionario = Funcionario(
"Ana Costa",
"111.222.333-44",
"20/03/1988",
"Coordenadora",
4500.0)
funcionario.exibir_dados()








40 changes: 40 additions & 0 deletions respExercicio06.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
class Disciplina:
def __init__(self, nome, codigo, carga_horaria):
self.nome = nome
self.codigo = codigo
self.carga_horaria = carga_horaria

class Curso:
def __init__(self, nome, codigo):
self.nome = nome
self.codigo = codigo
self.disciplinas = []

def adicionar_disciplina(self, disciplina):
self.disciplinas.append(disciplina)

def listar_disciplinas(self):
print("Disciplinas do curso:")
for d in self.disciplinas:
print(f"- {d.nome} (Código: {d.codigo})")

def carga_horaria_total(self):
total = 0
for d in self.disciplinas:
total += d.carga_horaria
return total

if __name__ == "__main__":
curso = Curso("Engenharia de Software", "ES001")
disciplina1 = Disciplina("Programação Orientada a Objetos", "POO001", 60)
disciplina2 = Disciplina("Banco de Dados", "BD001", 80)

curso.adicionar_disciplina(disciplina1)
curso.adicionar_disciplina(disciplina2)
curso.listar_disciplinas()
print(f"Carga horária total: {curso.carga_horaria_total()}h")





54 changes: 54 additions & 0 deletions respExercicio07.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@

class Aluno:
def __init__(self, nome, matricula, curso):
self.nome = nome
self.matricula = matricula
self.curso = curso
self.disciplinas_inscritas = []

def listar_disciplinas(self):
print(f"=== Disciplinas inscritas do aluno {self.nome}:===")
if not self.disciplinas_inscritas:
print("Nenhuma disciplina inscrita.")
else:
for d in self.disciplinas_inscritas:
print(f"- {d.nome_disciplina} (Código: {d.codigo_disciplina})")
print()

class Disciplina:
def __init__(self, nome_disciplina, codigo_disciplina, carga_horaria):
self.nome_disciplina = nome_disciplina
self.codigo_disciplina = codigo_disciplina
self.carga_horaria = carga_horaria
self.alunos_matriculados = []

def listar_alunos(self):
print(f"===Alunos matriculados na disciplina {self.nome_disciplina}:===")
if not self.alunos_matriculados:
print("Nenhum aluno matriculado.")
else:
for a in self.alunos_matriculados:
print(f"- {a.nome} (Matrícula: {a.matricula})")
print()

class Secretaria:
@staticmethod
def inscrever_aluno(aluno, disciplina):
if disciplina not in aluno.disciplinas_inscritas:
aluno.disciplinas_inscritas.append(disciplina)
if aluno not in disciplina.alunos_matriculados:
disciplina.alunos_matriculados.append(aluno)

if __name__ == "__main__": #executa o código

aluno1 = Aluno("João Silva", "2023001", "Engenharia de Software")
aluno2 = Aluno("Maria Santos", "2023002", "Ciência da Computação")
disciplina1 = Disciplina("POO", "POO001", 60)
disciplina2 = Disciplina("Banco de Dados", "BD001", 80)

Secretaria.inscrever_aluno(aluno1, disciplina1)
Secretaria.inscrever_aluno(aluno1, disciplina2)
Secretaria.inscrever_aluno(aluno2, disciplina1)

aluno1.listar_disciplinas()
disciplina1.listar_alunos()
Loading