oo presentation básica
Post on 15-Apr-2017
132 Views
Preview:
TRANSCRIPT
Orientação à Objetos primeiros passos
By Lorena
lcsouza@thoughtworks.com
Developer
5 years
Foco
TW
Tecnologia + Clean Code Princípios
Lorena é desenvolvedora na ThoughtWorks e depois de 5 anos desenvolvendo em projetos bem interessantes, ela anda estudando intensamente princípios como Orientação à Objetos, SOLID, Clean Code e TDD.
Como podemos tornar desenvolvedoras mais consciente?
Porque é IMPORTANTE conhecer mais sobre
Design Orientado à Objetos?
Design de Software bem feito com OO
Testes mais eficazes e maior cobertura
Manutenções mais fáceis e rápidas
Entregasrápidas de Software com qualidade
C++ Lua Java Go Ruby C#
Python Scala PHP Object-C
O que vem à sua mente quando surge o termo Orientação à
Objetos?
Classe, Objeto, Método público e privado, Comportamento, Pacote de Classes, Instância, Atributos, Herança, Coesão, Estado,
Interface, Acoplamento,
Constante.
O que é essa tal de Orientação a
Objetos?
É um “jeito” de escrever código?É um “jeito” de representar o problema do mundo real em código?É um design?É um modelo de programação?É tudo isso!
É um paradigma de programação!
Primeiros pensamentos..."O computador ideal deveria funcionar como um organismo vivo, isto é, cada célula relaciona com outras células a fim de alcançar um objetivo, mas cada uma funcionando de forma autônoma. As células poderiam também agrupar-se para resolver outros problemas"
Alan Key, Postulado.
Matematico, Biologo, Educador
Células = Objetos
Tudo no mundo real pode ser representado por um objeto?
Tudo no mundo real pode ser representado por um objeto!
Rota BR - USARota SP - BHRota RJ - NY
Tudo no mundo real pode ser representado por um objeto!
Primeiros pensamentos...
Objetos são como uma pessoa ao interagir com uma máquina de lavar roupa. Você interage com a máquina em "alto nível de abstração". Você coloca as roupas sujas, aperta um botão, e ela faz todo o serviço. Ao final ela nos dá roupas limpas.
Objeto é um "espelho"de uma classe e é caracterizada por:❏ Atributos
❏ Comportamento
❏ Estado
❏ Relacionamento
Classe/Objeto caracterizada por:❏ Atributos
❏ Comportamento
❏ Estado
❏ Relacionamento
Classe/Objeto caracterizada por:❏ Atributos
❏ Comportamento
❏ Estado
❏ Relacionamento
Composição Objeto pode conter outro(s) objeto(s)!
Composição
tem uma
ClassesConstructor:Inicia o objeto com suas características.
Variáveis/atributos/dependências:Tipo String, List, Stack, ArrayList, int, Integer, float, Objeto criado, Hash table.
Métodos/Função:Incluir loops, condicionais, tratamentos de exceção e qualquer manipulação de dados.
Vamos aoCódigo juntas!!
VISTOPacotes, Classes, Objetos, Métodos, Atributos, Interface.
Encapsulamento
Encapsulamento
PublicPrivate
Protected
Você não precisa entender todas os mecanismos do carro para dirigí-lo.
Como funciona a combustão?
Dirigir é muito simples!
Interface
Interface é o contrato que a Classe deve cumprir!!!
Interface
Pacotes
Classes e Pacotes.
Vamos aoCódigo juntas!!
CARROPacotes, Classes, Objetos, Métodos, Atributos, Encapsulamento, Interface.
Abstração! Abstração!
It's a important thing!
Abstrai!
"Abstrato tudo que não é concreto. É o que só existe na ideia, no conceito."
Abstrai!
"Abstrato tudo que não é concreto. É o que só existe na ideia, no conceito."
Pensar em classes de assuntos concretos é bem fácil. Mas e quando se trata de assuntos abstratos?
Abstrai!GATO, RENA, CORVO
CANADA, IRLANDA, ITALIA, SUÉCIA
ROTA CURTA, ROTA MEDIANA, ROTA LARGA
TRIANGULO, QUADRADO, CIRCULO
PORTUGUÊS, RUSSO, ESPANHOL, JAPONÊS
IPVA, IPTU, IRRF
Abstrai!GATO, RENA, CORVO = Animal
CANADA, IRLANDA, ITALIA, SUÉCIA = País
ROTA CURTA, ROTA MEDIANA, ROTA LARGA = Rota
TRIANGULO, QUADRADO, CIRCULO = Forma Geométrica
PORTUGUÊS, RUSSO, ESPANHOL, JAPONÊS= Idioma
IPVA, IPTU, IRRF= Imposto
Abstração de Software
"Abstração é a habilidade de concentrar nos aspectos essenciais de um contexto qualquer, ignorando características menos importantes. Em modelagem
orientada a objetos, uma classe é uma abstração de entidades existentes no domínio do sistema de software."
Wikipédia
Abstração de SoftwarePessoa em contexto de Universidade:Nome, endereço, curso, ensino básico, ensino médio, bolsista, ….
Pessoa em contexto de um Hospital:Nome, endereço, Tipo sanguíneo, Plano de saúde, Fumante, Diabético, ….
Pessoa em contexto de uma Loja de Roupas e Calçados:Nome, endereço, altura, peso, tamanho de calça, número do calçado, estilo, ….
Abordagem Procedural vs Orientacão à
Objetos
Muitos desenvolvedores dizem programar em OO mas ainda estão fazendo programacão procedural.
Procedural vs Orientacão à ObjetosProblema matemático
"Em códigos procedurais, a implementação é o que importa."
Produto do Departamento de Vendas
"Em códigos OO, a implementação também é fundamental, mas pensar no projeto de classes, em como elas se encaixam e como elas serão estendidas é o que importa."
QUEBRA-CABEÇA
HerançaUm objeto pode herdar características/ comportamentos de outro objeto.
Herança
Tipo de/Herda
Funcionário
Gerente
- Data de Admissão;- Recuperar Bonus;- Receber Docs;- Analisar Docs;- Aprovar Docs;
- Data Fim do Cargo;- Negociar Vendas.
"Preso a classe Mãe!"
PolimorfismoPolimorfismo é a capacidade de um objeto poder ser referenciado de várias formas.
Polimorfismo
Herda
Tipo de Funcionário
Gerente
- Data de Admissão;- Recuperar Bonus;- Receber Docs;- Analisar Docs;- Aprovar Docs;
- Data Fim do Cargo;- Recuperar Bonus;- Negociar Vendas.
Polimorfismo
Mas e se chamar o método de Recuperar a Bonificação?
Polimorfismo
Chamar getBonificação( ) do Gerente.
PolimorfismoOverride:Sobrescrita do método. Ocorre quando uma classe herda de outra classe.
Overload:Sobrecarga do método.Ocorre dentro de uma mesma classe.
Polimorfismo 1
Gerente herda o método recuperar Bonus? $$$$$$
Funcionários
Gerente
"override"
- Negociar Vendas.
- Recuperar Bonus;- Receber Docs.- Analisar Docs.- Aprovar Docs.
Polimorfismo 2
Receber Docs Disponíveis Receber Docs por quantidadeReceber Docs por intervalo de Data
Funcionários"overload"
- Recuperar Bonus;- Receber Docs.- Analisar Docs.- Aprovar Docs.
Vamos aoCódigo juntas!!
FuncionárioPacotes, Classes, Objetos, Métodos, Atributos, Encapsulamento, Interface.
"A natureza modular dos objetos permite que você faça alterações em uma parte de
seu programa, sem afetar outras partes." Confiável
"Uma vez que um determinado problema foi resolvido, a solução deverá ser
reutilizada." Reutilizável
"Corrige o problema em um lugar e todas as outras partes envolvidas serão
beneficiadas." Manutenível
"A implementação de várias classes pode ocorrer em paralelo e de forma
independente." Oportuno
"A implementação está sempre aberta à evolução." Extensível
"Para implementar um software, basta saber o que ele deve fazer." Natural
ConclusãoDemos só o primeiro passo da nossa jornada em OO!
Praticar esses conceitos é imprescindível!
LivrosPractical Object-Oriented Design in RubyAn Agile Primer da Sandi Metz
Orientação a Objetos e SOLID para Ninjas: Projetando classes flexíveis do Mauricio Aniche
top related