1
resposta

[Dúvida] Esta conforme ?

Exemplo 1 – Função tradicional (sem POO)

import datetime

def calcular_idade(ano_nascimento):
    ano_atual = datetime.datetime.now().year
    return ano_atual - int(ano_nascimento)

pessoa_nome = "João"
pessoa_ano_nascimento = "2004"

print(calcular_idade(pessoa_ano_nascimento))

Exemplo 2 – Usando POO

import datetime

class Pessoa:
    def __init__(self, nome, ano_nascimento):
        self.nome = nome
        self.ano_nascimento = int(ano_nascimento)

    def calcular_idade(self):
        ano_atual = datetime.datetime.now().year
        return ano_atual - self.ano_nascimento

pessoa = Pessoa("João", "2004")
print(pessoa.calcular_idade())

Professor(a), tenho uma dúvida sobre a aplicação de programação orientada a objetos (POO) nos exercícios deste curso.

Eu já realizei a mesma atividade de duas maneiras diferentes: primeiro utilizando funções tradicionais, e depois reescrevendo o mesmo exercício em POO, transformando cada função em um método dentro de uma classe. Ao fazer isso, percebi que os métodos em POO funcionam de forma semelhante às funções, mas pertencem a um objeto específico, o que permite organizar melhor os dados e comportamentos relacionados a esse objeto.

Minha dúvida é: nos exercícios do curso, posso aplicar essa lógica e transformar funções em métodos dentro de classes, ou existe alguma diferença ou limitação importante que devo considerar ao fazer dessa forma?

1 resposta

Oii, Samuel.

Excelente iniciativa de ir além do enunciado! É exatamente assim que se fixa o aprendizado, explorando diferentes abordagens para o mesmo problema.

O seu uso da biblioteca datetime foi perfeito para tornar o código dinâmico (não precisando digitar o ano atual manualmente), e a sintaxe de ambos os exemplos está correta.

Sobre a sua dúvida conceitual entre Funções Isoladas vs. Métodos (POO):

  1. A Relação entre Funções e Métodos

Você observou corretamente: todo método é uma função, mas nem toda função é um método.

  • Na programação estruturada/funcional (Exemplo 1), a função é uma "ferramenta solta" na caixa de ferramentas. Ela recebe dados, processa e devolve algo. Ela não "guarda" estado.
  • Na POO (Exemplo 2), o método é um comportamento de uma entidade. O objeto Pessoa tem dados (nome, ano_nascimento) e ações (calcular_idade).
  1. Pode usar POO nos exercícios deste curso?

A resposta curta: Sim, você pode, e tecnicamente funcionará perfeitamente.

Mas tem algumas coisas que você precisa ter em mente: o objetivo do exercício e da complexidade do problema.

  • O risco do "Over-engineering" (excesso de engenharia):
    Pra um problema simples como apenas subtrair dois números (ano atual - ano nascimento), criar uma Classe inteira, instanciar um objeto e depois chamar o método pode ser considerado um exagero para um script simples. É como usar um caminhão para entregar uma carta. Funções simples são mais diretas e leves para tarefas pequenas.
  • O contexto do aprendizado:
    Se o foco do capítulo é aprender a sintaxe de funções (def, parâmetros, retorno), usar POO pode desviar um pouco o foco do conceito base. Porém, como prática pessoal para você que já está avançando, é um exercício fantástico!

Quando a POO brilha (e supera a função simples)?

A sua abordagem do Exemplo 2 se tornaria obrigatória se o exercício pedisse para "manter o estado".

  • Exemplo: Se você precisasse cadastrar 50 pessoas, calcular a idade de todas e depois filtrar apenas as maiores de idade. Com POO, você teria uma lista de objetos Pessoa, cada um com seus dados organizados. Com funções soltas, você teria que gerenciar várias listas paralelas ou dicionários complexos.

Então:

  • Para o curso: Se o exercício pede uma função, o Exemplo 1 é o mais "esperado" e direto.
  • Pra sua evolução: Continuar refatorando códigos simples para POO (Exemplo 2) é a melhor maneira de entender Classes, Atributos e Self. Continue fazendo isso!
Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!