Orientação a Objetos na
prática
Paulo Moura
O mundo é procedural
O mundo também é
orientado a objetos
Objetos
Interações
gera
Comportamentos
Mas OO é sobre modelar
o mundo real?
Servlet API
Servlet API
Criar um design OO é parar de pensar o
mundo como um conjunto de procedimentos
e começar a vê-lo como uma série de troca
d...
Design
Design
Design
fácil de mudar
Design
fácil de mudar
prazer de escrever
Design
fácil de mudar
prazer de escrever
flexível, adaptável
Design
fácil de mudar
prazer de escrever
flexível, adaptável
componetizável (composable)
Dependências
Dependências
adas a objetos são feitas de partes que interagem para produzir comp
Programe orientado a interface, não à
implementação
public class FuncionarioDao {
public void gravaEmLote(ArrayList<Funcionario> funcionarios) { ... }
}
public class FuncionarioDao {
public void gravaEmLote(Collection<Funcionario> funcionarios) { ... }
}
public class FuncionarioDao {
public void gravaEmLote(Collection<Funcionario> funcionarios) { ... }
}
Tell, don’t ask
def street_name(user)
if user.address
user.address.street_name
else
'No street name on file'
end
end
def street_name(user)
user.address.street_name
end
class User
def address
@address || NullAddress.new
end
end
class NullAd...
def street_name(user)
user.address.street_name
end
class User
def address
@address || NullAddress.new
end
end
class NullAd...
def street_name(user)
user.address.street_name
end
class User
def address
@address || NullAddress.new
end
end
class NullAd...
Seus módulos devem ser abertos para a
extensão e fechados para modificação
Princípio da Substituição de Liskov
Princípio da Segregação de interfaces
lientes não devem ser forçados a depender de interfaces que não usam
Princípio da inversão de dependência
Obrigado!
Paulo moura
@paulociecomp
Orientação a Objetos na prática
Orientação a Objetos na prática
Orientação a Objetos na prática
Orientação a Objetos na prática
Orientação a Objetos na prática
Orientação a Objetos na prática
Orientação a Objetos na prática
Orientação a Objetos na prática
Orientação a Objetos na prática
Orientação a Objetos na prática
Orientação a Objetos na prática
Próximos SlideShares
Carregando em…5
×

Orientação a Objetos na prática

325 visualizações

Publicada em

Muitos conceitos de orientação a objetos são muito abstratos e de difícil compreensão para iniciantes a até mesmo para profissionais mais experientes. Nesta palestra iremos desmistificar alguns conceitos e tentar entender a importância da OO para um bom design de sua aplicação.

Publicada em: Engenharia
0 comentários
2 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
325
No SlideShare
0
A partir de incorporações
0
Número de incorporações
28
Ações
Compartilhamentos
0
Downloads
5
Comentários
0
Gostaram
2
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Orientação a Objetos na prática

  1. 1. Orientação a Objetos na prática Paulo Moura
  2. 2. O mundo é procedural
  3. 3. O mundo também é orientado a objetos
  4. 4. Objetos Interações gera Comportamentos
  5. 5. Mas OO é sobre modelar o mundo real?
  6. 6. Servlet API
  7. 7. Servlet API
  8. 8. Criar um design OO é parar de pensar o mundo como um conjunto de procedimentos e começar a vê-lo como uma série de troca de mensagens entre objetos
  9. 9. Design
  10. 10. Design
  11. 11. Design fácil de mudar
  12. 12. Design fácil de mudar prazer de escrever
  13. 13. Design fácil de mudar prazer de escrever flexível, adaptável
  14. 14. Design fácil de mudar prazer de escrever flexível, adaptável componetizável (composable)
  15. 15. Dependências
  16. 16. Dependências adas a objetos são feitas de partes que interagem para produzir comp
  17. 17. Programe orientado a interface, não à implementação
  18. 18. public class FuncionarioDao { public void gravaEmLote(ArrayList<Funcionario> funcionarios) { ... } }
  19. 19. public class FuncionarioDao { public void gravaEmLote(Collection<Funcionario> funcionarios) { ... } }
  20. 20. public class FuncionarioDao { public void gravaEmLote(Collection<Funcionario> funcionarios) { ... } }
  21. 21. Tell, don’t ask
  22. 22. def street_name(user) if user.address user.address.street_name else 'No street name on file' end end
  23. 23. def street_name(user) user.address.street_name end class User def address @address || NullAddress.new end end class NullAddress def street_name 'No street name on file' end end
  24. 24. def street_name(user) user.address.street_name end class User def address @address || NullAddress.new end end class NullAddress def street_name 'No street name on file' end end
  25. 25. def street_name(user) user.address.street_name end class User def address @address || NullAddress.new end end class NullAddress def street_name 'No street name on file' end end
  26. 26. Seus módulos devem ser abertos para a extensão e fechados para modificação
  27. 27. Princípio da Substituição de Liskov
  28. 28. Princípio da Segregação de interfaces lientes não devem ser forçados a depender de interfaces que não usam
  29. 29. Princípio da inversão de dependência
  30. 30. Obrigado! Paulo moura @paulociecomp

×