SlideShare uma empresa Scribd logo
1 de 11
Hangout OOD – Princípio
da Responsabilidade
Única
03/06/2014
Participantes:
• João Batista Neto - Hoster
• Augusto Pascutti - Moderador
• Priscila Mayumi Sato – Slider maker
• Ivo nascimento – Controlador do chat
• Luís Otavio
• Henrique Moody
• Daniel Ribeiro
Pauta
• Enfatizar o que são princípios de design.
• Abordar, com profundidade e exemplos, o princípio de design S.R.P.
• O que é responsabilidade?
• Como identificar as responsabilidade de um objeto?
• Ilustrar casos do mundo real, através de exemplos em frameworks ou
bibliotecas conhecidas, o uso de S.R.P. e as consequências que esse uso
trouxe para o FW ou biblioteca.
• Pôs pauta: discutir exemplos enviados previamente por cobaias.
Princípios de design
O Design de Software Orientado a Objetos trata
especificamente da forma com que os objetos se
relacionam, ou seja, como expor a responsabilidade dos
objetos de forma que outros objetos possam se
relacionar.
Vá entender realmente o que é Orientação a Objetos
antes de sair convertendo um código procedural dentro
de classes e chamar isso de Orientação a Objetos.
Decorar todos os Desing Patterns não irá te salvar no dia
a dia.
Princípio de design S.R.P.
Os motivos dos métodos de uma classe devem
fazer sentido e esta deve fazer conhecer seus
comportamentos sem causar transtorno ao resto
da aplicação.
Why on earth then does the class have a method called
priceFilter() in the middle of it? That method is not defined
by the interface, and if you look at the class name – which
should at least indicate the reason for it to exist – you can
most certainly say that it doesn’t belong to that context.
Como um método
representa UMA ação/comportamento do objeto, ele não
deve ser grande (10~15 linhas) e com isso você terá
classes pequenas (elas sendo bem dividas e talz não
deverão ter mais de 130 linhas não comentadas) .
Exemplo
Source: https://gist.github.com/drgomesp/852b7afe7a270958c22a
Pôs pauta!
• https://gist.github.com/Bolinha1/5112789
Cobaia 1: classe de Desvio Padrão
Métodos:
• _construtor($amostra)
• media()
• somaQuadradodoDesvio()
• desvioPadraoPopulacional()
• desvioPadraoAmostra()
• https://gist.github.com/Bolinha1/5112789
Álibi (ou não): teste

Mais conteúdo relacionado

Semelhante a Hangout OOD – Princípio da Responsabilidade Única

Questionário sobre padrões de projeto revisão da tentativa
Questionário sobre padrões de projeto  revisão da tentativaQuestionário sobre padrões de projeto  revisão da tentativa
Questionário sobre padrões de projeto revisão da tentativaAluisioSantos4
 
Design de Interação - Entendendo, conceituando e abordagem centrada no usuário
Design de Interação - Entendendo, conceituando e abordagem centrada no usuárioDesign de Interação - Entendendo, conceituando e abordagem centrada no usuário
Design de Interação - Entendendo, conceituando e abordagem centrada no usuárioLuiz Henrique Pinho de Sá
 
APOO.INT- S01 Paradigma de Orientação a Objetos (2).pdf
APOO.INT- S01 Paradigma de Orientação a Objetos (2).pdfAPOO.INT- S01 Paradigma de Orientação a Objetos (2).pdf
APOO.INT- S01 Paradigma de Orientação a Objetos (2).pdfpedrina4
 
Projetos centrados no usuário
Projetos centrados no usuárioProjetos centrados no usuário
Projetos centrados no usuáriotalkitbr
 
design patterns - introdução
design patterns - introduçãodesign patterns - introdução
design patterns - introduçãoelliando dias
 
Introdução a Padrões de Projeto
Introdução a Padrões de ProjetoIntrodução a Padrões de Projeto
Introdução a Padrões de ProjetoEduardo Mendes
 
Introdução à programação por objectos final
Introdução à programação por objectos finalIntrodução à programação por objectos final
Introdução à programação por objectos finalemcp11
 
Aveiro requisitos modelagem
Aveiro requisitos modelagemAveiro requisitos modelagem
Aveiro requisitos modelagemAline Cross
 
Apresentação_TDC_Design_Thinking_2019.pdf
Apresentação_TDC_Design_Thinking_2019.pdfApresentação_TDC_Design_Thinking_2019.pdf
Apresentação_TDC_Design_Thinking_2019.pdfALLYSONALVESCARVALHO
 
IES GF - Introdução a Linguagem de Programação Orientada a Objetos
IES GF - Introdução a Linguagem de Programação Orientada a ObjetosIES GF - Introdução a Linguagem de Programação Orientada a Objetos
IES GF - Introdução a Linguagem de Programação Orientada a ObjetosRamon Mayor Martins
 
Modelagem de sistemas
Modelagem de sistemasModelagem de sistemas
Modelagem de sistemassauloroos01
 
Apresentação Introdução Design Patterns
Apresentação Introdução Design PatternsApresentação Introdução Design Patterns
Apresentação Introdução Design PatternsLucas Simões Maistro
 
Interação Humano Computador Capítulo 9 - Design
Interação Humano Computador Capítulo 9 - DesignInteração Humano Computador Capítulo 9 - Design
Interação Humano Computador Capítulo 9 - DesignWellington Oliveira
 
Apresentação ied 2014
Apresentação ied 2014Apresentação ied 2014
Apresentação ied 2014Elainemat
 

Semelhante a Hangout OOD – Princípio da Responsabilidade Única (20)

Questionário sobre padrões de projeto revisão da tentativa
Questionário sobre padrões de projeto  revisão da tentativaQuestionário sobre padrões de projeto  revisão da tentativa
Questionário sobre padrões de projeto revisão da tentativa
 
Design de Interação - Entendendo, conceituando e abordagem centrada no usuário
Design de Interação - Entendendo, conceituando e abordagem centrada no usuárioDesign de Interação - Entendendo, conceituando e abordagem centrada no usuário
Design de Interação - Entendendo, conceituando e abordagem centrada no usuário
 
APOO.INT- S01 Paradigma de Orientação a Objetos (2).pdf
APOO.INT- S01 Paradigma de Orientação a Objetos (2).pdfAPOO.INT- S01 Paradigma de Orientação a Objetos (2).pdf
APOO.INT- S01 Paradigma de Orientação a Objetos (2).pdf
 
Projetos centrados no usuário
Projetos centrados no usuárioProjetos centrados no usuário
Projetos centrados no usuário
 
Análise de sistemas oo 1
Análise de sistemas oo   1Análise de sistemas oo   1
Análise de sistemas oo 1
 
design patterns - introdução
design patterns - introduçãodesign patterns - introdução
design patterns - introdução
 
Java aula 2
Java aula 2Java aula 2
Java aula 2
 
Aula 01 introdução aoo
Aula 01   introdução aooAula 01   introdução aoo
Aula 01 introdução aoo
 
Introdução a Padrões de Projeto
Introdução a Padrões de ProjetoIntrodução a Padrões de Projeto
Introdução a Padrões de Projeto
 
Introdução à programação por objectos final
Introdução à programação por objectos finalIntrodução à programação por objectos final
Introdução à programação por objectos final
 
Aveiro requisitos modelagem
Aveiro requisitos modelagemAveiro requisitos modelagem
Aveiro requisitos modelagem
 
Apresentação_TDC_Design_Thinking_2019.pdf
Apresentação_TDC_Design_Thinking_2019.pdfApresentação_TDC_Design_Thinking_2019.pdf
Apresentação_TDC_Design_Thinking_2019.pdf
 
Aula01-IntroducaoOO.pptx
Aula01-IntroducaoOO.pptxAula01-IntroducaoOO.pptx
Aula01-IntroducaoOO.pptx
 
Roteiro at-a-distancia
Roteiro at-a-distanciaRoteiro at-a-distancia
Roteiro at-a-distancia
 
IES GF - Introdução a Linguagem de Programação Orientada a Objetos
IES GF - Introdução a Linguagem de Programação Orientada a ObjetosIES GF - Introdução a Linguagem de Programação Orientada a Objetos
IES GF - Introdução a Linguagem de Programação Orientada a Objetos
 
Modelagem de sistemas
Modelagem de sistemasModelagem de sistemas
Modelagem de sistemas
 
Cesar.Edu Turma S2I
Cesar.Edu Turma S2ICesar.Edu Turma S2I
Cesar.Edu Turma S2I
 
Apresentação Introdução Design Patterns
Apresentação Introdução Design PatternsApresentação Introdução Design Patterns
Apresentação Introdução Design Patterns
 
Interação Humano Computador Capítulo 9 - Design
Interação Humano Computador Capítulo 9 - DesignInteração Humano Computador Capítulo 9 - Design
Interação Humano Computador Capítulo 9 - Design
 
Apresentação ied 2014
Apresentação ied 2014Apresentação ied 2014
Apresentação ied 2014
 

Mais de Priscila Mayumi

Do 0 a estar online no Google App Engine
Do 0 a estar online no Google App EngineDo 0 a estar online no Google App Engine
Do 0 a estar online no Google App EnginePriscila Mayumi
 
Bolovo - problema antigo de arquitetura de software - não use por aí
Bolovo - problema antigo de arquitetura de software - não use por aíBolovo - problema antigo de arquitetura de software - não use por aí
Bolovo - problema antigo de arquitetura de software - não use por aíPriscila Mayumi
 
Sistemas de recomendações e neo4J na cloud computing
Sistemas de recomendações e neo4J na cloud computingSistemas de recomendações e neo4J na cloud computing
Sistemas de recomendações e neo4J na cloud computingPriscila Mayumi
 
Oportunidades para desenvolvedores
Oportunidades para desenvolvedoresOportunidades para desenvolvedores
Oportunidades para desenvolvedoresPriscila Mayumi
 
Banco de dados de grafos
Banco de dados de grafosBanco de dados de grafos
Banco de dados de grafosPriscila Mayumi
 
Entity framework migrations
Entity framework migrationsEntity framework migrations
Entity framework migrationsPriscila Mayumi
 
Scripts Entity Framework
Scripts Entity FrameworkScripts Entity Framework
Scripts Entity FrameworkPriscila Mayumi
 
1ª madrugada de testes net coders coding dojo
1ª madrugada de testes net coders   coding dojo1ª madrugada de testes net coders   coding dojo
1ª madrugada de testes net coders coding dojoPriscila Mayumi
 
Trabalhando com banco de dados e Entity Framework
Trabalhando com banco de dados e Entity FrameworkTrabalhando com banco de dados e Entity Framework
Trabalhando com banco de dados e Entity FrameworkPriscila Mayumi
 
O Mágico Mundo do Entity Framework
O Mágico Mundo do Entity FrameworkO Mágico Mundo do Entity Framework
O Mágico Mundo do Entity FrameworkPriscila Mayumi
 
Apresentando a Linguagem de Programação Python
Apresentando a Linguagem de Programação PythonApresentando a Linguagem de Programação Python
Apresentando a Linguagem de Programação PythonPriscila Mayumi
 

Mais de Priscila Mayumi (18)

Microsoft MTACs
Microsoft MTACsMicrosoft MTACs
Microsoft MTACs
 
Do 0 a estar online no Google App Engine
Do 0 a estar online no Google App EngineDo 0 a estar online no Google App Engine
Do 0 a estar online no Google App Engine
 
Bolovo - problema antigo de arquitetura de software - não use por aí
Bolovo - problema antigo de arquitetura de software - não use por aíBolovo - problema antigo de arquitetura de software - não use por aí
Bolovo - problema antigo de arquitetura de software - não use por aí
 
Sistemas de recomendações e neo4J na cloud computing
Sistemas de recomendações e neo4J na cloud computingSistemas de recomendações e neo4J na cloud computing
Sistemas de recomendações e neo4J na cloud computing
 
Conhecendo o Firefox OS
Conhecendo o Firefox OSConhecendo o Firefox OS
Conhecendo o Firefox OS
 
Oportunidades para desenvolvedores
Oportunidades para desenvolvedoresOportunidades para desenvolvedores
Oportunidades para desenvolvedores
 
PHP no Windows Azure
PHP no Windows AzurePHP no Windows Azure
PHP no Windows Azure
 
Banco de dados de grafos
Banco de dados de grafosBanco de dados de grafos
Banco de dados de grafos
 
Entity framework
Entity frameworkEntity framework
Entity framework
 
Entity framework migrations
Entity framework migrationsEntity framework migrations
Entity framework migrations
 
Entity framework
Entity frameworkEntity framework
Entity framework
 
Scripts Entity Framework
Scripts Entity FrameworkScripts Entity Framework
Scripts Entity Framework
 
1ª madrugada de testes net coders coding dojo
1ª madrugada de testes net coders   coding dojo1ª madrugada de testes net coders   coding dojo
1ª madrugada de testes net coders coding dojo
 
Trabalhando com banco de dados e Entity Framework
Trabalhando com banco de dados e Entity FrameworkTrabalhando com banco de dados e Entity Framework
Trabalhando com banco de dados e Entity Framework
 
Ninja migrations
Ninja migrationsNinja migrations
Ninja migrations
 
O Mágico Mundo do Entity Framework
O Mágico Mundo do Entity FrameworkO Mágico Mundo do Entity Framework
O Mágico Mundo do Entity Framework
 
Ruby versus Python
Ruby versus PythonRuby versus Python
Ruby versus Python
 
Apresentando a Linguagem de Programação Python
Apresentando a Linguagem de Programação PythonApresentando a Linguagem de Programação Python
Apresentando a Linguagem de Programação Python
 

Hangout OOD – Princípio da Responsabilidade Única

  • 1. Hangout OOD – Princípio da Responsabilidade Única 03/06/2014
  • 2. Participantes: • João Batista Neto - Hoster • Augusto Pascutti - Moderador • Priscila Mayumi Sato – Slider maker • Ivo nascimento – Controlador do chat • Luís Otavio • Henrique Moody • Daniel Ribeiro
  • 3. Pauta • Enfatizar o que são princípios de design. • Abordar, com profundidade e exemplos, o princípio de design S.R.P. • O que é responsabilidade? • Como identificar as responsabilidade de um objeto? • Ilustrar casos do mundo real, através de exemplos em frameworks ou bibliotecas conhecidas, o uso de S.R.P. e as consequências que esse uso trouxe para o FW ou biblioteca. • Pôs pauta: discutir exemplos enviados previamente por cobaias.
  • 5. O Design de Software Orientado a Objetos trata especificamente da forma com que os objetos se relacionam, ou seja, como expor a responsabilidade dos objetos de forma que outros objetos possam se relacionar. Vá entender realmente o que é Orientação a Objetos antes de sair convertendo um código procedural dentro de classes e chamar isso de Orientação a Objetos. Decorar todos os Desing Patterns não irá te salvar no dia a dia.
  • 7. Os motivos dos métodos de uma classe devem fazer sentido e esta deve fazer conhecer seus comportamentos sem causar transtorno ao resto da aplicação. Why on earth then does the class have a method called priceFilter() in the middle of it? That method is not defined by the interface, and if you look at the class name – which should at least indicate the reason for it to exist – you can most certainly say that it doesn’t belong to that context. Como um método representa UMA ação/comportamento do objeto, ele não deve ser grande (10~15 linhas) e com isso você terá classes pequenas (elas sendo bem dividas e talz não deverão ter mais de 130 linhas não comentadas) .
  • 10. • https://gist.github.com/Bolinha1/5112789 Cobaia 1: classe de Desvio Padrão Métodos: • _construtor($amostra) • media() • somaQuadradodoDesvio() • desvioPadraoPopulacional() • desvioPadraoAmostra()