SlideShare uma empresa Scribd logo
Hangout OOD - Princípio
Open/Closed
11/06/2014
Participantes:
• João Batista Neto – Hoster
• Daniel Ribeiro - Moderador
• Priscila Mayumi Sato – Slides
• Ivo nascimento – Controlador do chat
• Luís Otavio
Pauta
• Repassar o que foi discutido no hangout passado e apontar o link
para a gravação.
• Abordar, com profundidade e exemplos, o princípio de design
O.C.P.
• Aberto mas fechado, como algo pode ser aberto mas fechado?
• Como saber se meu código não está fechado?
• Ilustrar casos do mundo real, através de exemplos em frameworks
ou bibliotecas conhecidas, o uso de O.C.P. e as consequências
que esse uso trouxe para o FW ou biblioteca.
Princípio de design S.R.P.
BREVE REVISÃO DO ÚLTIMO HANGOUT
HTTPS://WWW.YOUTUBE.COM/WATCH?V=NY3W2QT0LU0&LIST=PLRX4OTWY_G7
M4YG9LN-0ZWKYHZ1BNVYXF
Princípio Open/Closed
Princípio Open/Closed
• “Nem sempre a coisa pressuposta é eternamente
aquilo planejada, e como a classe não foi feita para
poder editar você não consegue. Por isso o principio se
trata sobre isso” João
• “A ideia geral dos princípios SOLID é evitar a mudança
ao máximo, e o principio Open/Closed evita ao
máximo a mudança daquele participante, ao invés de
alterar ele estende” Luiz Otávio
• “Assim nós temos o recurso da herança e do
polimorfismo para lidar com esse principio” Daniel
Princípio Open/Closed
• “OCP e SRP não são dependentes um do outro, um
código pode ter 3 responsabilidades e mesmo assim
não violar OCP” João
• “A ordem das letras do SOLID possuem uma certa
lógica, uma razão” Daniel
• “Quanto maior o número de responsabilidades maior a
possibilidade de violar o OCP. Der repente você toma
todo o cuidado com o SRP e cria uma pré suposição
que não deveria.” João
Princípio Open/Closed
• “Quando você vê os dois princípios (SRP e OCP)
aumenta a qualidade do código, seguir SRP diminui a
possibilidade de cometer erros com o OCP” Ivo
• “O OCP está relacionado não só a classe, mas
módulos, funções e pacotes. Estender não só objetos
como também outros itens” Daniel
• “Quando falamos de pacotes não são os mesmos
nomes do SOLID mas o conteúdo é a mesma coisa: ao
entregue uma coisa não editar mais a coisa, estender e
não editar” João
Princípio Open/Closed
• “O código que está em produção está funcionando, se
você editar o código em produção aumenta a chance
de adicionar um bug. Então escreva um código que é
estendível e não editável, tornando ela escalável sem
edição.” João
• “Herança e polimorfismo são duas coisas ligadas da
qual juntas ajudam a lidar com o OCP” Daniel
Princípio Open/Closed
• “Quando falamos de OCP falamos que o
comportamento deve ser extensível e uma forma de
escalar um objeto é falar de herança vertical, que é
algo muito delicado (tema do próximo hangout).
Quando falamos de polimorfismo falamos de várias
formas de algumas coisa se comportar.” João
Princípio Open/Closed
• “Escalar verticalmente é fazer uma classe filho ser do
tipo da classe pai.
Escalar horizontalmente é injetar a dependência.” João
• “A forma mais simples é passar um participante como
parâmetro (não vamos entrar nos assuntos futuros).”
João
• “Ou seja, estamos passando responsabilidade,
delegando, e isso tem forte relação com o SRP” Daniel
Princípio Open/Closed
• “Herança é ‘reaproveitar’ criando um sub tipo,
exemplo: a classe A é um tipo, e a classe B é do tipo da
A também.
Na questão do Polimorfismo é algo que tem várias
formas, você tem uma assinatura para aquele lugar,
não interessa como vão fazer.” Luíz
Exemplos
ENVIADOS ANONIMAMENTE PELO PÚBLICO
User
User Viola o OCP porquê deixando a configuração
de servidor aqui o código terá que ser alterado
a cada mudança o servidor
User
Você está assumindo que sempre irá usar
PDO, se um dia a fonte de dados mudar
essa classe precisará mudar.
User
O método CREATE viola OCP por culpa do
construtor.
User Se no construtor você passasse uma
interface e não direto a PDO, o método
CREATE não saberia da implementação
direta da PDO.
User Inclusive há uma violação de SRP: conexão
de base de dados não precisa ser de
responsabilidade dessa classe.
User
Solução: passar
por parâmetro
os dados de
configuração
(porém ainda
viola o SRP)
Login
Login
Ele quebra OCP pois
em uma futura
evolução a classe será
mudada para
adicionar condições
no switch.
Login
Se a lógica de um dos
cases mudar a classe
será mudada.
Login
Além do que mudar a
lógica de uma dessas
lógicas pode quebrar
o resto do código.
Login
Solução: usar
interfaces
(dica: padrão
estrategy).
Pôs pauta!
DISCUSSÃO ALÉM DA PAUTA E RESOLUÇÃO DE DÚVIDAS DO PÚBLICO

Mais conteúdo relacionado

PPTX
OOD - Princípio da Inversão de Dependência
PPTX
OOD - Princípio da Substituição de Liskov
PPTX
Hangout OOD – princípio da responsabilidade única
PDF
O que é análise de negócios?
PDF
BA Day 2011 - O que é análise de negócios?
PPTX
Apresentação Trend.Me (Grupo TV1)
PDF
OCP - The Open Close Principle - Princípio aberto/fechado
PPT
Open closed principle - SOLID
OOD - Princípio da Inversão de Dependência
OOD - Princípio da Substituição de Liskov
Hangout OOD – princípio da responsabilidade única
O que é análise de negócios?
BA Day 2011 - O que é análise de negócios?
Apresentação Trend.Me (Grupo TV1)
OCP - The Open Close Principle - Princípio aberto/fechado
Open closed principle - SOLID

Semelhante a OOD - Princípio Open/Closed (20)

PPT
PDF
qualidade de código: boas práticas, princípios e padrões
PPTX
Princípios SOLID de OO usando .NET
ODP
Apresentacao Boas praticas, revisão java, SOLID, KISS, DRY, design patterns, ...
PDF
(Re)pensando a OOP - TDC 2012
PPTX
DevTalk Zoox 04/2016
PPTX
PDF
principios_SOLID_resumo.pdf
PDF
Design Patterns com PHP
PPTX
Estudos Technocorp
PDF
PDF
(Re)pensando a OOP - PHPDay Curitiba 2013
PPTX
Semana um
PPTX
Padrões de projeto - Adapter, Proxy, Composite e Bridge
PPTX
SOLID - Clean Architecture
PDF
Orientacao A Objetos Da Teoria A Pratica Em Java
PDF
Orientação a Objetos - Da Teoria a Pratica
PPTX
Princípios SOLID
PPTX
Princípios solid
PPTX
Princípios SOLID
qualidade de código: boas práticas, princípios e padrões
Princípios SOLID de OO usando .NET
Apresentacao Boas praticas, revisão java, SOLID, KISS, DRY, design patterns, ...
(Re)pensando a OOP - TDC 2012
DevTalk Zoox 04/2016
principios_SOLID_resumo.pdf
Design Patterns com PHP
Estudos Technocorp
(Re)pensando a OOP - PHPDay Curitiba 2013
Semana um
Padrões de projeto - Adapter, Proxy, Composite e Bridge
SOLID - Clean Architecture
Orientacao A Objetos Da Teoria A Pratica Em Java
Orientação a Objetos - Da Teoria a Pratica
Princípios SOLID
Princípios solid
Princípios SOLID
Anúncio

Mais de Priscila Mayumi (19)

PPTX
Microsoft MTACs
ODP
Entity framework 7
PPTX
Do 0 a estar online no Google App Engine
PPTX
Bolovo - problema antigo de arquitetura de software - não use por aí
PPTX
Sistemas de recomendações e neo4J na cloud computing
PPTX
Conhecendo o Firefox OS
PPTX
Oportunidades para desenvolvedores
PDF
PHP no Windows Azure
PPT
Banco de dados de grafos
PPTX
Entity framework
PPTX
Entity framework migrations
PPTX
Entity framework
PPTX
Scripts Entity Framework
PPT
1ª madrugada de testes net coders coding dojo
PPT
Trabalhando com banco de dados e Entity Framework
PPTX
Ninja migrations
ODP
O Mágico Mundo do Entity Framework
PPT
Ruby versus Python
PPT
Apresentando a Linguagem de Programação Python
Microsoft MTACs
Entity framework 7
Do 0 a estar online no Google App Engine
Bolovo - problema antigo de arquitetura de software - não use por aí
Sistemas de recomendações e neo4J na cloud computing
Conhecendo o Firefox OS
Oportunidades para desenvolvedores
PHP no Windows Azure
Banco de dados de grafos
Entity framework
Entity framework migrations
Entity framework
Scripts Entity Framework
1ª madrugada de testes net coders coding dojo
Trabalhando com banco de dados e Entity Framework
Ninja migrations
O Mágico Mundo do Entity Framework
Ruby versus Python
Apresentando a Linguagem de Programação Python
Anúncio

Último (11)

PPTX
Proposta de Implementação de uma Rede de Computador Cabeada.pptx
PPTX
Eng. Software - pontos essenciais para o início
PDF
eBook - GUIA DE CONSULTA RAPIDA EM ROTEADORES E SWITCHES CISCO - VOL I.pdf
PDF
Manejo integrado de pragas na cultura do algodão
PDF
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PPTX
Design - Introdução a Gestalt e teoria das formas
PPTX
Viasol Energia Solar -Soluções para geração e economia de energia
PPTX
Utilizando code blockes por andre backes
PPTX
Tipos de servidor em redes de computador.pptx
PPTX
Arquitetura de computadores - Memórias Secundárias
Proposta de Implementação de uma Rede de Computador Cabeada.pptx
Eng. Software - pontos essenciais para o início
eBook - GUIA DE CONSULTA RAPIDA EM ROTEADORES E SWITCHES CISCO - VOL I.pdf
Manejo integrado de pragas na cultura do algodão
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Design - Introdução a Gestalt e teoria das formas
Viasol Energia Solar -Soluções para geração e economia de energia
Utilizando code blockes por andre backes
Tipos de servidor em redes de computador.pptx
Arquitetura de computadores - Memórias Secundárias

OOD - Princípio Open/Closed

  • 1. Hangout OOD - Princípio Open/Closed 11/06/2014
  • 2. Participantes: • João Batista Neto – Hoster • Daniel Ribeiro - Moderador • Priscila Mayumi Sato – Slides • Ivo nascimento – Controlador do chat • Luís Otavio
  • 3. Pauta • Repassar o que foi discutido no hangout passado e apontar o link para a gravação. • Abordar, com profundidade e exemplos, o princípio de design O.C.P. • Aberto mas fechado, como algo pode ser aberto mas fechado? • Como saber se meu código não está fechado? • Ilustrar casos do mundo real, através de exemplos em frameworks ou bibliotecas conhecidas, o uso de O.C.P. e as consequências que esse uso trouxe para o FW ou biblioteca.
  • 4. Princípio de design S.R.P. BREVE REVISÃO DO ÚLTIMO HANGOUT HTTPS://WWW.YOUTUBE.COM/WATCH?V=NY3W2QT0LU0&LIST=PLRX4OTWY_G7 M4YG9LN-0ZWKYHZ1BNVYXF
  • 6. Princípio Open/Closed • “Nem sempre a coisa pressuposta é eternamente aquilo planejada, e como a classe não foi feita para poder editar você não consegue. Por isso o principio se trata sobre isso” João • “A ideia geral dos princípios SOLID é evitar a mudança ao máximo, e o principio Open/Closed evita ao máximo a mudança daquele participante, ao invés de alterar ele estende” Luiz Otávio • “Assim nós temos o recurso da herança e do polimorfismo para lidar com esse principio” Daniel
  • 7. Princípio Open/Closed • “OCP e SRP não são dependentes um do outro, um código pode ter 3 responsabilidades e mesmo assim não violar OCP” João • “A ordem das letras do SOLID possuem uma certa lógica, uma razão” Daniel • “Quanto maior o número de responsabilidades maior a possibilidade de violar o OCP. Der repente você toma todo o cuidado com o SRP e cria uma pré suposição que não deveria.” João
  • 8. Princípio Open/Closed • “Quando você vê os dois princípios (SRP e OCP) aumenta a qualidade do código, seguir SRP diminui a possibilidade de cometer erros com o OCP” Ivo • “O OCP está relacionado não só a classe, mas módulos, funções e pacotes. Estender não só objetos como também outros itens” Daniel • “Quando falamos de pacotes não são os mesmos nomes do SOLID mas o conteúdo é a mesma coisa: ao entregue uma coisa não editar mais a coisa, estender e não editar” João
  • 9. Princípio Open/Closed • “O código que está em produção está funcionando, se você editar o código em produção aumenta a chance de adicionar um bug. Então escreva um código que é estendível e não editável, tornando ela escalável sem edição.” João • “Herança e polimorfismo são duas coisas ligadas da qual juntas ajudam a lidar com o OCP” Daniel
  • 10. Princípio Open/Closed • “Quando falamos de OCP falamos que o comportamento deve ser extensível e uma forma de escalar um objeto é falar de herança vertical, que é algo muito delicado (tema do próximo hangout). Quando falamos de polimorfismo falamos de várias formas de algumas coisa se comportar.” João
  • 11. Princípio Open/Closed • “Escalar verticalmente é fazer uma classe filho ser do tipo da classe pai. Escalar horizontalmente é injetar a dependência.” João • “A forma mais simples é passar um participante como parâmetro (não vamos entrar nos assuntos futuros).” João • “Ou seja, estamos passando responsabilidade, delegando, e isso tem forte relação com o SRP” Daniel
  • 12. Princípio Open/Closed • “Herança é ‘reaproveitar’ criando um sub tipo, exemplo: a classe A é um tipo, e a classe B é do tipo da A também. Na questão do Polimorfismo é algo que tem várias formas, você tem uma assinatura para aquele lugar, não interessa como vão fazer.” Luíz
  • 14. User
  • 15. User Viola o OCP porquê deixando a configuração de servidor aqui o código terá que ser alterado a cada mudança o servidor
  • 16. User Você está assumindo que sempre irá usar PDO, se um dia a fonte de dados mudar essa classe precisará mudar.
  • 17. User O método CREATE viola OCP por culpa do construtor.
  • 18. User Se no construtor você passasse uma interface e não direto a PDO, o método CREATE não saberia da implementação direta da PDO.
  • 19. User Inclusive há uma violação de SRP: conexão de base de dados não precisa ser de responsabilidade dessa classe.
  • 20. User Solução: passar por parâmetro os dados de configuração (porém ainda viola o SRP)
  • 21. Login
  • 22. Login Ele quebra OCP pois em uma futura evolução a classe será mudada para adicionar condições no switch.
  • 23. Login Se a lógica de um dos cases mudar a classe será mudada.
  • 24. Login Além do que mudar a lógica de uma dessas lógicas pode quebrar o resto do código.
  • 26. Pôs pauta! DISCUSSÃO ALÉM DA PAUTA E RESOLUÇÃO DE DÚVIDAS DO PÚBLICO