Aula 7 - Prog Avançada 2025-1
Aula 7 - Prog Avançada 2025-1
Avançada - Orientação a
Objetos
Prof. Luiz Baroni
O que veremos hoje:
- Classes e;
- Objetos;
Python - Orientação a Objetos
classe Bolo:
# atributos
char sabor[];
int peso;
char cobertura[];
# métodos
comer_bolo();
cortar_bolo();
vender_bolo();
Python - Orientação a Objetos
Em Python, tudo é um
objeto, o que significa que
cada elemento, desde
números e strings até
funções e módulos, é um
objeto. Exemplo:
Python - Orientação a Objetos
As Classes são tipos de dados definidos pelo desenvolvedor que atuam como
um modelo para objetos. Pra não esquecer mais: Classes são fôrmas de bolo e
bolos são objetos;
Vamos modificar a classe Bolo, para que ela aceite parâmetros em seu
construtor.
Python - Orientação a Objetos
Vamos modificar a classe Bolo, para que ela aceite parâmetros em seu
construtor:
Python - Orientação a Objetos
Vamos modificar a classe Bolo, para que ela aceite parâmetros em seu
construtor:
Python - Orientação a Objetos
Para invocar este novo método, nós usamos o nome do objeto com um ponto e
o nome do método;
Python - Orientação a Objetos
Exemplo: Veículo
Python - Orientação
a Objetos
Exemplo:
Veículo é
Superclasse;
Carro e Moto
são subclasses;
Python - Orientação
a Objetos
Exemplo:
Python - Orientação a Objetos
Métodos especiais:
Métodos especiais:
Métodos especiais:
del obj.atributo
Python - Orientação a Objetos
del obj.atributo
Python - Orientação a Objetos
del obj
Python - Orientação a Objetos
del obj
Python - Orientação a Objetos
Atividade 1) - Crie uma classe Posição que represente as coordenadas no tabuleiro de Batalha
Naval. Atributos:
● linha (inteiro);
● coluna (inteiro ou caractere, dependendo da sua implementação);
Métodos:
● __init__(self, linha, coluna): inicializa uma posição
● __str__(self): retorna uma representação em string (ex: "A5", "B3")
● eh_valida(self, tamanho_tabuleiro): verifica se a posição está dentro dos limites do tabuleiro;
● converter_para_indices(self): se estiver usando notação de jogo (A5, B3), converte para
índices numéricos;
Python - Orientação a Objetos
Atividade 2) - Implemente uma classe abstrata Navio que servirá como base para todos os
tipos de navios. Atributos:
● nome (string); tamanho (inteiro);
● posicoes (lista de objetos Posicao); posicoes_atingidas (lista ou conjunto);
Métodos:
● __init__(self, nome, tamanho): inicializa o navio com nome e tamanho
● posicionar(self, posicoes): define as posições ocupadas pelo navio
● verificar_tiro(self, posicao): verifica se um tiro acertou o navio
● esta_afundado(self): retorna True se todas as posições foram atingidas
● __str__(self): retorna informações sobre o navio
Python - Orientação a Objetos
Atividade 3) - Crie as seguintes subclasses de Navio, cada uma com seu tamanho específico:
Cada classe deve herdar os atributos e métodos da classe Navio e implementar qualquer
funcionalidade específica necessária.
Python - Orientação a Objetos
Atividade 4) - Implemente uma classe Tabuleiro para representar o campo de jogo. Atributos:
● tamanho (inteiro, geralmente 10x10);
● navios (lista de objetos Navio em campo);
● tiros (matriz ou dicionário para registrar tiros);
Métodos:
● __init__(self, tamanho=10): inicializa um tabuleiro vazio;
● adicionar_navio(self, navio, posicao_inicial, orientacao): adiciona um navio ao tabuleiro;
● verificar_posicao_valida(self, navio, posicao_inicial, orientacao): verifica se é possível
posicionar o navio;
● registrar_tiro(self, posicao): registra um tiro e retorna o resultado (água, acerto, afundado);
● __str__(self): retorna uma representação visual do tabuleiro;
Próxima Aula
● Aula 7: Objetos:
○ criação
○ manipulação