0% acharam este documento útil (0 voto)
7 visualizações45 páginas

Aula 7 - Prog Avançada 2025-1

A aula aborda conceitos de programação orientada a objetos em Python, incluindo classes, objetos, atributos e métodos. Destaca as vantagens da POO, como reutilização de código, manutenção facilitada, abstração e encapsulamento. Também apresenta atividades práticas para criação de classes e implementação de um jogo de Batalha Naval.

Enviado por

snifferrtutu
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
7 visualizações45 páginas

Aula 7 - Prog Avançada 2025-1

A aula aborda conceitos de programação orientada a objetos em Python, incluindo classes, objetos, atributos e métodos. Destaca as vantagens da POO, como reutilização de código, manutenção facilitada, abstração e encapsulamento. Também apresenta atividades práticas para criação de classes e implementação de um jogo de Batalha Naval.

Enviado por

snifferrtutu
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 45

PRAV80 - Programação

Avançada - Orientação a
Objetos
Prof. Luiz Baroni
O que veremos hoje:

1. Relembrar nossa última aula;


2. Mais conceitos de python;
3. Exercícios de fixação:
a. Classes, Objetos, Atributos e Métodos;
Aula Passada
Python - Orientação a Objetos

Python é uma linguagem ‘multiparadigma’;

Você pode programar Python nos paradigmas:


- Imperativo;
- Funcional;
- Orientado a Objetos;
- etc.
Python - Orientação a Objetos

Outras linguagens que também são, ou permitem, a Orientação a Objetos:


● Java;
● PHP;
● Ruby;
● Javascript;
● C++, C#;
● Kotlin;
Python - Orientação a Objetos

A Orientação a Objetos é um paradigma que vai se basear na ideia de:

- Classes e;
- Objetos;
Python - Orientação a Objetos

Classes são estruturas abstratas construídas pelo programador que servirão


de tipo base para os Objetos;

Classes podem conter dados e código:

● Dados na forma de atributos ou propriedades; e


● Código, na forma de procedimentos, também conhecidos como métodos,
funções ou subrotinas).
Python - Orientação a Objetos

Objetos, por sua vez, são instâncias de Classes;

A classe é a forma de bolo;


O objeto é o bolo;
Python - Orientação a Objetos

Objetos, por sua vez, são instâncias de Classes;


A classe é a forma de bolo;
O objeto é o bolo;

Os atributos e métodos de uma classe


falam sobre os objetos que ela
pretende representar;
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

Vantagens da programação orientada objeto:

1. Reutilização de código: Classes e objetos permitem encapsular


funcionalidades específicas em unidades individuais;
Python - Orientação a Objetos

Vantagens da programação orientada objeto:

1. Reutilização de código: Classes e objetos permitem encapsular


funcionalidades específicas em unidades individuais;
2. Facilidade de manutenção: A POO promove uma estrutura modular;
Python - Orientação a Objetos

Vantagens da programação orientada objeto:

1. Reutilização de código: Classes e objetos permitem encapsular


funcionalidades específicas em unidades individuais;
2. Facilidade de manutenção: A POO promove uma estrutura modular;
3. Abstração: A POO permite modelar entidades do mundo real de forma
mais natural;
Python - Orientação a Objetos

Vantagens da programação orientada objeto:

1. Reutilização de código: Classes e objetos permitem encapsular


funcionalidades específicas em unidades individuais;
2. Facilidade de manutenção: A POO promove uma estrutura modular;
3. Abstração: A POO permite modelar entidades do mundo real de forma
mais natural;
4. Encapsulamento: Facilita segurança, deixando uma parte do código
escondida;
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;

Objetos são instâncias de uma Classe. Objetos podem modelar entidades do


mundo real (Carro, Pessoa, Usuário) ou entidades abstratas (Temperatura,
Umidade, Medição, Configuração).
Python - Orientação a Objetos

Métodos são funções definidas dentro de uma classe que descreve os


comportamentos de um objeto. Em Python, o primeiro parâmetro dos métodos
é sempre uma referência ao próprio objeto.

Os Atributos são definidos na Classe e representam o estado de um objeto. Os


objetos terão dados armazenados nos campos de atributos. Também existe o
conceito de atributos de classe, mas veremos isso mais pra frente.
Python - Orientação a Objetos

Vamos criar nossa primeira classe e nosso primeiro objeto:


Python - Orientação a Objetos

Vamos criar nossa primeira classe e nosso primeiro objeto:


(Em python, é convenção usar o camelCase, para nomear classes);
Python - Orientação a Objetos

Vamos criar nossa primeira classe e nosso primeiro objeto:


Python - Orientação a Objetos

Vamos criar nossa primeira classe e nosso primeiro objeto:


Python - Orientação a Objetos

Vamos criar nossa primeira classe e nosso primeiro objeto:


Método Construtor, o inicial:

O construtor cria o estado inicial do objeto com o conjunto mínimo de


parâmetros necessários para que ele exista.

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

Agora, vamos acrescentar mais um método, assar():


Python - Orientação a Objetos

Agora, vamos acrescentar mais um método, assar;

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

A orientação a Objetos se sustenta em 4 princípios:

1. Abstração: esconde dos usuários, e de outros devs, o funcionamento


interno da aplicação;
2. Herança: permite definir subclasses a partir de classes existentes
(superclasses);
3. Polimorfismo: permite modificar atributos e métodos de subclasses;
4. Encapsulamento: proteção dos dados internos (python não possui private -
public);
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

Atividade 1) Crie uma classe que represente uma pessoa:


- Defina os atributos: nome, idade, profissão;
- Defina métodos: dizer_ola(), andar();

Atividade 2) Teste sua classe e seus métodos;


Python - Orientação a Objetos

Atividade 3) Crie subclasses (criança, adulto, idoso) para a superclasse pessoa:


- Defina atributos para cada subclasse:
- escola, emprego, remedio;
- Defina métodos para cada subclasse:
- brincar(); trabalhar(); jogar_bingo();

Atividade 4) Teste sua classe e seus métodos;


Aula de hoje
Python - Orientação a Objetos

Métodos especiais:

- método construtor: __init__(self,<outros atributos da classe>):


<atributos>
Python - Orientação a Objetos

Métodos especiais:

- método construtor: __init__(self,<outros atributos da classe>):


<atributos>
- método string: __str__(self):
return f"{self.atributo1} … "
Python - Orientação a Objetos

Métodos especiais:

- método construtor: __init__(self,<outros atributos da classe>):


<atributos>
- método string: __str__(self):
return f"{self.atributo1} … "

O método string é acionado sempre que vc invocar um objeto da classe como


uma string
Python - Orientação a Objetos

Se você quiser deletar um atributo


de um objeto:

del obj.atributo
Python - Orientação a Objetos

del obj.atributo
Python - Orientação a Objetos

Se você quiser deletar um objeto:

del obj
Python - Orientação a Objetos

Se você quiser deletar um objeto:

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:

● PortaAvioes (tamanho 5);


● Encouracado (tamanho 4);
● Cruzador (tamanho 3);
● Submarino (tamanho 2);
● Destroyer (tamanho 1);

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

Você também pode gostar

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy