Buscar

Anotações do Básico de Programação Orientada a Objetos

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

POO – Curso em Vídeo
Objetivo - aproximar o mundo digital do mundo real.
Como era? – programação baixo nível >> programação linear >> programação estruturada >> programação modular >> programação orientada a objetos [POO].
Definições Tosca
Classe – seria um molde
Objeto – seria a execução do molde, do modelo. 
Para se criar um objeto, antes se cria uma classe. Exemplo da caneta, antes de criar a caneta, se tem o molde dela, objetivo final.
Três perguntas chaves para uma classe: exemplo de uma caneta.
· Coisas que eu tenho?	-- [Atributos] 	características
 Modelo, cor, ponta, carga, tampada
· Coisas que eu faço?		-- [Métodos]		comportamentos
		Escrever, rabiscar, pintar, tampar, destampar
· Como eu estou agora?	-- [Estado]		estado sempre atual
50% carga, ponta fina, azul, destampada, escrevendo
Exemplo didático, de forma simples:
Classe Caneta
	Modelo: Caractere
	Cor: Caractere
	Ponta: Real
	Carga: Inteiro
	Tampada: Lógico
	Método rabiscar()
		Se (tampada) então
			Escreva(“ERRO”)
		se não
			Escreva(“Rabisco”)
		FimSe 
	FimMétodo
	Método tampar()
		Tampada = verdadeiro
	FimMétodo
FimClasse
Instanciar
	Gerar um objeto a partir de uma classe.
	Exemplo: c1 = nome do objeto; nova = instanciar; Caneta = classe
		c1 = nova Caneta
		c1.cor = “Azul”
		c1.ponta = 0.5
		c1.tampada = falso
		c1.rabiscar()
		c2 = nova Caneta 		# c1 e c2 são completamente diferentes
		c2.cor = “Vermelho”
		c2.ponta = 1.0
		c2.tampada = falso
		c2.tampar()
Definição 
	Classe: define os atributos e métodos comuns que serão compartilhados por um objeto.
	Objeto: é uma instancia de uma classe.
Abstração
	Focar nos atributos que importam para o objeto no momento.
EXERCICIO:
	1) Identificar dois objetos físicos do meu ambiente e classifique-os.
		Classe Copo
			Atributos: formato, material, tamanho.
			Métodos: encher, esvaziar
			Estado: Vazio/ cheio
		Classe Estojo
			Atributos: cor, tamanho, bolsos, zíper ou velcro.
			Métodos: guardar, pegar algo, 
			Estado: vazio, com materiais, cheio
	2) Identificar dois objetos conceituais do seu dia-a-dia e classifique-os.
		Classe Estudo
			Atributos: matéria, forma (digital, vídeo, livro), tempo
			Métodos: 
			Estado: 
		Classe Desenho
			Atributos: desenho corpo todo, rosto, quadrinho, formas
			Métodos: material, caneta, tinta, nanquim, bico de pena
			Estado, esboço, finalização, finalizado
Aula 3 – Mudando Visibilidade
Linguagem de Modelagem Unificada – UML
Diagrama de Classes
	Caneta
	+ modelo
+ cor
- ponta
# carga
# tampa
	+ escrever()
+ rabiscar()
+ pintar()
- tampar()
- destampar()
Modificadores de Visibilidade
	Indicam o nível de acesso aos componentes internos de uma classe.
	+ pública		ex: orelhão	 (qualquer um pode usar)
		A classe atual e todas as outras classes.
	- privado		ex: celular 	(só eu posso usar)
		Somente a classe atual.
	# protegido		ex: telefone residencial 	(só minha mãe e os filhos dela)
		A classe atual e todas as suas subclasses.
Aula 4 – Métodos Especiais 
Métodos Acesso (Getters) – pega(get) alguma coisa.
Exemplo com método: 
e = nova Estante		Método Get é mais seguro do que deixar o acesso 
t = e.getTotDoc()		para qualquer pessoa.
	Exemplo sem método:
	e = nova Estante		Esse modo seria o equivalente a deixar qualquer pessoa
	t = e.totDoc			mexer na estante, deixando vulnerável.
Métodos Modificadores (Setters) – modificam coisas que estão dentro do objeto, garantindo a segurança.
Exemplo com método: 
e = nova Estante		Método Set é mais seguro do que deixar o acesso 
t = e.setTotDoc(doc)		para qualquer pessoa.
	Exemplo sem método:
	e = nova Estante		Esse modo seria o equivalente a deixar qualquer pessoa
	e.totDoc = e.totDoc + 1			mexer na estante, deixando vulnerável.
	Caneta
	+ modelo
- ponta
	+ getModelo()
+ setModelo(m)
+ getPonta()
+ setPonta(p)
	Classe Caneta
 público modelo: Caractere
 privado ponta: Real
 público Método getModelo()
 retorne modelo
 FimMétodo
 público Método setModelo
 (m: Caractere)
 modelo = m
 FimMétodo
 público Método getPont()
 Retorne ponta
 FimMétodo
 Público Método setPonta
 (p: Real)
 ponta = p
 FimMétodo
FimClasse
c1 = nova Caneta
c1.setModelo(“BIC Cristal”)
c1.setPonta(0.5) 
Escreva(c1.getModelo())
Escreva(c1.getPonta())
Método Construtor (Construct) - fazer uma ação automaticamente, no momento em que a classe for instanciada.
	
	Classe Caneta
 Método construtor()
 (m: Caractere, c: Caractere, p: real)
 setModelo(m)
 setCor(c)
 setPonta(p)
 tampar()
 FimMétodo
FimClasse
c1 = nova Caneta
 (“BIC”, “Azul”, 0.5)
Aula 5 –
Exemplo Prático
	ContaBanco
	+ numConta
# tipo 
- dono
- saldo
- status
	+ abrirConta()
+ fecharConta()
+ depositar()
+ sacar()
+ pagarMensal()
getnumConta()
setnumConta()
gettipo()
settipo()
getdono()
setdono()
getsaldo()
setsaldo()
getstatus()
setstatus()
construtor()
	Classe ContaBanco
// atributos
 público numConta: inteiro
 protegido tipo: Caractere
 privado dono: Caractere
 privado saldo: real
 privado status: lógico
// métodos
 público Método abrirConta()
 setTipo(t)
 setStatus(verdadeiro)
 se (t = “CC”) então
 saldo = 50
 senão se (t = “CP”) então
 saldo = 150
 FimSe
 FimMétodo
 público Método fecharConta()
 se (saldo > 0 )então
 Escreva(“Conta com dinheiro”)
 senão se (saldo < 0 )então
 Escreva(“Conta em débito”)
 senão
 setStatus(false)
 fimSe
 FimMétodo
 público Método depositar(v: Real)
 se (status = verdadeiro) então
 setSaldo(getSaldo() + v) ou saldo = saldo + v ( 1º é melhor)
 senão
 Escreva(“Impossível depositar”)
 fimSe
 FimMétodo
 
 público Método sacar(v: Real)
 se (status = verdadeiro) então
 se (saldo > v) então
 saldo = saldo – v 
 senão
 Escreva(“Saldo insuficiente”)
 fimSe
 senão
 Escreva(“Impossível sacar”)
 fimSe 
 FimMétodo
 público Método pagarMensal()
 var v: Real
 se (tipo = “CC”) então
 v = 12
 senão se (tipo = “CP”) então
 v = 20
 fimSe
 se (status = verdadeiro) então
 se (saldo > v) então
 saldo = saldo – v 
 senão
 Escreva(“Saldo insuficiente”)
 fimSe
 senão
 Escreva(“Impossível pagar”)
 fimSe 
 FimMétodo
// métodos especiais
 público Método construtor()
 saldo = 0
 status = falso
 FimMétodo
 público Método setNumConta(n: Inteiro)
 numConta = n
 FimMétodo
 público Método getNumConta()
 retorne numConta
 FimMétodo
 público Método setTipo(t: Caractere)
 tipo = t
 FimMétodo
 público Método getTipo()
 retorne tipo
 FimMétodo
 público Método setDono(d: Caractere)
 dono = d
 FimMétodo
 público Método getDono()
 retorne dono
 FimMétodo
 público Método setSaldo(s: Real)
 saldo = s
 FimMétodo
 público Método getSaldo()
 retorne saldo
 FimMétodo
 público Método setStatus(s: Lógico)
 status = s
 FimMétodo
 público Método getStatus()
 retorne status
 FimMétodo
FimClasse
Aula 6 –
Pilares da POO
	Encapsulamento
	Herança
	Polimorfismo
Encapsulamento
	Ocultar partes independentes da implementação, permitindo construir partes invisíveis ao mundo exterior.
# Você pode mandar mensagens para a capsula, troca de informações entre o usuário e a capsula, não precisa entender como a capsula funciona.
# Um bom objeto encapsulado tem uma boa INTERFACE.
# INTERFACE = lista de serviços fornecidos por um componente. É o contato com o mundo exterior, que
define o que pode ser feito com um objeto dessa classe.
Exemplo: uma PILHA seria um software encapsulado, seus polos (positivo e negativo) seriam sua interface.
Exemplo 2: controle remoto
IMPORTANTE: encapsular não é obrigatório, mas é uma boa prática para produzir Classes mais eficientes.
Vantagens em Encapsular
	1) Tornar mudanças invisíveis
Exemplo: quando acaba a pilha do controle remoto, pode ser trocado por qualquer outra pilha, independente da marca, basta caber
	2) Facilitar reutilização do código
Exemplo: posso pegar uma pilha de um determinado aparelho, controle de vídeo game por exemplo, e colocar no controle da TV
	3) Reduzir efeitos colaterais
Exemplo: uma pilha tem componente químicos, se não fosse encapsulado poderia por em risco a saúde do usuário, e o usuário pode acabar danificando a pilha também. 
Como Encapsular
	Controle Remoto
	<<interface>>
Controlador
	+ ligar()
+ desligar()
+ abrirMenu()
+ fecharMenu()
+ maisVolume()
+ menosVolume()
+ ligarMudo()
+ desligarMudo()
+ play()
+ pause()
Interfaces não tem atributos, apenas métodos.
Métodos abstratos – o método não é desenvolvido na interface, ele só aparece na interface. Só precisa saber o que vai acontecer. Previsto, mas não implementado.
Geralmente, dentro da interface, todos os métodos definidos são públicos.
	ControleRemoto
	- volume
- ligado 
- tocando
	+ ligar()
+ desligar()
+ abrirMenu()
+ fecharMenu()
+ maisVolume()
+ menosVolume()
+ ligarMudo()
+ desligarMudo()
+ play()
+ pause()
- setVolume()
- getVolume()
- setLigado() 
- getLigado()
- setTocando()
- getTocando()
Quando se está encapsulando um objeto, NUNCA se coloca os atributos como público, normalmente como privado ou protegido.
Quando se une uma classe a uma interface por meio de uma seta, é o mesmo que dizer que a Classe utilizará os métodos abstratos dessa Interface.
Normalmente os métodos especiais (get e set) são públicos, porém Guanabara quis demonstrar que eles podem ser privados.
	Interface Controlador
 // Métodos Abstratos
 público abstrato Método ligar()
 público abstrato Método desligar()
 público abstrato Método abrirMenu()
 público abstrato Método fecharMenu()
 público abstrato Método maisVolume()
 público abstrato Método menosVolume()
 público abstrato Método ligarMudo()
 público abstrato Método desligarMudo()
 público abstrato Método play()
 público abstrato Método pause()
FimInterface
	Classe ControleRemoto 
 //Atributos
 privado inteiro volume
 privado lógico ligado
 privado lógico tocando
 // Métodos Especiais
 público Método Construtor()
 volume = 50
 ligado = falso
 tocando = falso
 FimMétodo
 privado Método getVolume()
 retorne volume
 FimMétodo
 privado Método getLigado()
 retorne volume
 FimMétodo
 privado Método getTocando()
 retorne volume
 FimMétodo
 privado Método setVolume(v: Inteiro)	
 volume = v
 FimMétodo
 privado Método setLigado(l: lógico)
 ligado = l
 FimMétodo
 privado Método setTocando(t: lógico)
 tocando = t
 FimMétodo
FimClasse
	Classe ControleRemoto implementa Controlador
 // Sobrescrevendo Métodos
 público Método ligar()
 setLigado(verdadeiro)
 FimMétodo
 público Método desligar()
 setLigado(falso)
 FimMétodo
 público Método abrirMenu()
 Escreva(getLigado())
 Escreva(getVolume())
 Para i = 0 até getVolume() passo 10 faça
 Escreva(“|”)
 FimPara
 Escreva(getTocando)
 FimMétodo
 público Método fecharMenu()
 Escreva(“Fechando Menu...”)
 FimMétodo
 público Método maisVolume()
 Se (getLigado()) então
 setVolume(getVolume + 1)
 FimSe
 FimMétodo
 público Método menosVolume()
 Se (getLigado()) então
 setVolume(getVolume - 1)
 FimSe
 FimMétodo
 público Método ligarMudo()
 Se (getLigado() e getVolume() > 0) então
 setVolume(0)
 FimSe 	
 FimMétodo
 público Método desligarMudo()
 Se (getLigado() e getVolume() = 0) então
 setVolume(50)
 FimSe 
 FimMétodo
 público Método play()
 Se (getLigado() e não getTocando()) então
 setTocando(verdadeiro)
 FimSe
 FimMétodo
 público Método pause()
 Se (getLigado() e getTocando()) então
 setTocando(falso)
 FimSe
 FimMétodo
	
Aula 7 – Relacionamento entre Classes
	Lutador
	- nome
- nacionalidade
- idade
- altura
- peso 
- categoria
- vitórias
- derrotas
- empates 
	+ apresentar()
+ status()
+ ganharLuta()
+ perderLuta()
+ empatarLuta()

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais