Desenvolvendo Aplicações SOLID
Por Charlin Agramonte y Rendy Del Rosario
NOME DA TRILHA
Desarrollando Aplicaciones SOLID
Mini-Biografia
Charlin Agramonte Rendy Del Rosario
charlin@crossgeeks.com
@chard003
xamgirl.com
rendy@crossgeeks.com
@rdelrosario
xamboy.com
ATENÇÃO:
ESTA PALESTRA ESTÁ SENDO GRAVADA E SERÁ DISPONIBILIZADA
PARA OS INSCRITOS QUE TENHAM DIREITO A ACESSAR O CONTEÚDO
POSTERIORMENTE.
EXCEPCIONALMENTE O CONTEÚDO GRAVADO TAMBÉM PODERÁ SER
DISPONIBILIZADO EM OUTRAS PLATAFORMAS PÚBLICAS, INCLUINDO
SITES DE STREAMING.
PERGUNTAS ESCRITAS, PARTICIPAÇÕES FALADAS OU CÂMERAS
ABERTAS PODERÃO SER CAPTURADAS.
AO REALIZAR QUAISQUER DAS AÇÕES ACIMA, VOCÊ AUTORIZA
TACITAMENTE A CAPTURA DOS DADOS CITADOS.
NOSSOS
PATROCINADORES_
Agradecemos a confiança e o investimento realizado pelos Patrocinadores
do MVPConf LATAM 2020.
Sem a participação deles o evento não aconteceria.
Nosso muito obrigado!!!
SINGLE RESPONSIBILITY OPEN CLOSE LISKOV SUBSTITUTION INTERFACE SEGREGATION DEPENDENCY INVERSION
S - Single Responsibility
(SRP)
https://medium.com/backticks-tildes/the-s-o-l-i-d-principles-in-pictures-b34ce2f1e898
Uma classe deve ter apenas um motivo para mudar.
Una clase debe tener solo una razón para cambiar.
Exemplo 1
Exemplo 2
1. Guardar
2. Mostrar Log
3. Persistir data
1. Guardar
2. Mostrar Log
3. Persistir data
O - Open-Closed
(OCP)
Uma classe deve ser aberta para extensão e fechada para modificação.
Una clase debe estar abierta para extensión y cerrada para modificación.
https://medium.com/backticks-tildes/the-s-o-l-i-d-principles-in-pictures-b34ce2f1e898
Exemplo 1
Exemplo 2
L - Liskov Substitution
(LSP)
. Uma classe filha deve ser capaz de substituir um objeto da classe Pai sem trazer erros ao sistema ou modificar o comportamento da classe base.
Una clase hijo debería poder reemplazar un objeto de la clase Padre sin traer errores en el sistema o modificar el comportamiento de la clase base.
https://medium.com/backticks-tildes/the-s-o-l-i-d-principles-in-pictures-b34ce2f1e898
Exemplo 1
Exemplo 2
Exemplo 2
El SumCalculator pierde su comportamiento original
O SumCalculator perde seu comportamento original
Exemplo 2
I - Interface Segregation
(ISP)
Os clientes não devem ser forçados a confiar em interfaces que não usam.
No se debe obligar a los clientes a depender de interfaces que no utilicen.
https://medium.com/backticks-tildes/the-s-o-l-i-d-principles-in-pictures-b34ce2f1e898
Exemplo 1
Exemplo 2
D - Dependency Inversion
(DIP)
Módulos de alto nível não devem depender de módulos de baixo nível. Ambos devem depender de abstrações.
Los módulos de alto nivel no deben depender de módulos de bajo nivel. Ambos deberían depender de abstracciones.
https://medium.com/backticks-tildes/the-s-o-l-i-d-principles-in-pictures-b34ce2f1e898
Exemplo 1
Exemplo 2
¿Como podemos
identificar que não está
sendo cumprido SOLID?
EM DESTAQUE_
¿Como podemos identificar que no se esta cumpliendo SOLID?
1. Se houver métodos definidos que não
correspondam ao objetivo da classe
Si hay métodos definidos que no corresponden con el propósito de la clase
2. Condições if muito longas
Condiciones If muy largas
3. Transmitindo para uma legenda
Castear a un subtitpo
4. Muitos métodos públicos
Muchos métodos públicos
5. Implementar métodos que lançam
UnsupportedOperationException
Implementar metodos que lancen UnsupportedOperationException
Dicas finais
EM DESTAQUE_
Tips finales
Especifique o nível de acesso correto
Especifique el nivel de acceso correcto
Expectativa
Realidade
A imutabilidade é sua amiga
La inmutabilidad es tu amiga
Marcar como somente leitura o que é somente leitura: V
Marcar solo lectura lo que es solo lectura :V
Marcar las clases que no se deben extender como SEALED
Marcar las clases que no se deben extender como SEALED
Charlin Agramonte
Rendy Del Rosario
charlin@crossgeeks.com
@chard003
xamgirl.com
rendy@crossgeeks.com
@rdelrosario
xamboy.com
Questões
Preguntas
OBRIGADO!

Desenvolvendo Aplicações SOLID

  • 1.
    Desenvolvendo Aplicações SOLID PorCharlin Agramonte y Rendy Del Rosario NOME DA TRILHA Desarrollando Aplicaciones SOLID
  • 2.
    Mini-Biografia Charlin Agramonte RendyDel Rosario charlin@crossgeeks.com @chard003 xamgirl.com rendy@crossgeeks.com @rdelrosario xamboy.com
  • 3.
    ATENÇÃO: ESTA PALESTRA ESTÁSENDO GRAVADA E SERÁ DISPONIBILIZADA PARA OS INSCRITOS QUE TENHAM DIREITO A ACESSAR O CONTEÚDO POSTERIORMENTE. EXCEPCIONALMENTE O CONTEÚDO GRAVADO TAMBÉM PODERÁ SER DISPONIBILIZADO EM OUTRAS PLATAFORMAS PÚBLICAS, INCLUINDO SITES DE STREAMING. PERGUNTAS ESCRITAS, PARTICIPAÇÕES FALADAS OU CÂMERAS ABERTAS PODERÃO SER CAPTURADAS. AO REALIZAR QUAISQUER DAS AÇÕES ACIMA, VOCÊ AUTORIZA TACITAMENTE A CAPTURA DOS DADOS CITADOS.
  • 4.
    NOSSOS PATROCINADORES_ Agradecemos a confiançae o investimento realizado pelos Patrocinadores do MVPConf LATAM 2020. Sem a participação deles o evento não aconteceria. Nosso muito obrigado!!!
  • 6.
    SINGLE RESPONSIBILITY OPENCLOSE LISKOV SUBSTITUTION INTERFACE SEGREGATION DEPENDENCY INVERSION
  • 7.
    S - SingleResponsibility (SRP)
  • 8.
    https://medium.com/backticks-tildes/the-s-o-l-i-d-principles-in-pictures-b34ce2f1e898 Uma classe deveter apenas um motivo para mudar. Una clase debe tener solo una razón para cambiar.
  • 9.
  • 10.
    Exemplo 2 1. Guardar 2.Mostrar Log 3. Persistir data 1. Guardar 2. Mostrar Log 3. Persistir data
  • 11.
  • 12.
    Uma classe deveser aberta para extensão e fechada para modificação. Una clase debe estar abierta para extensión y cerrada para modificación. https://medium.com/backticks-tildes/the-s-o-l-i-d-principles-in-pictures-b34ce2f1e898
  • 13.
  • 14.
  • 15.
    L - LiskovSubstitution (LSP)
  • 16.
    . Uma classefilha deve ser capaz de substituir um objeto da classe Pai sem trazer erros ao sistema ou modificar o comportamento da classe base. Una clase hijo debería poder reemplazar un objeto de la clase Padre sin traer errores en el sistema o modificar el comportamiento de la clase base. https://medium.com/backticks-tildes/the-s-o-l-i-d-principles-in-pictures-b34ce2f1e898
  • 17.
  • 18.
  • 19.
    Exemplo 2 El SumCalculatorpierde su comportamiento original O SumCalculator perde seu comportamento original
  • 20.
  • 21.
    I - InterfaceSegregation (ISP)
  • 22.
    Os clientes nãodevem ser forçados a confiar em interfaces que não usam. No se debe obligar a los clientes a depender de interfaces que no utilicen. https://medium.com/backticks-tildes/the-s-o-l-i-d-principles-in-pictures-b34ce2f1e898
  • 23.
  • 24.
  • 25.
    D - DependencyInversion (DIP)
  • 26.
    Módulos de altonível não devem depender de módulos de baixo nível. Ambos devem depender de abstrações. Los módulos de alto nivel no deben depender de módulos de bajo nivel. Ambos deberían depender de abstracciones. https://medium.com/backticks-tildes/the-s-o-l-i-d-principles-in-pictures-b34ce2f1e898
  • 27.
  • 28.
  • 29.
    ¿Como podemos identificar quenão está sendo cumprido SOLID? EM DESTAQUE_ ¿Como podemos identificar que no se esta cumpliendo SOLID?
  • 30.
    1. Se houvermétodos definidos que não correspondam ao objetivo da classe Si hay métodos definidos que no corresponden con el propósito de la clase
  • 31.
    2. Condições ifmuito longas Condiciones If muy largas
  • 32.
    3. Transmitindo parauma legenda Castear a un subtitpo
  • 33.
    4. Muitos métodospúblicos Muchos métodos públicos
  • 34.
    5. Implementar métodosque lançam UnsupportedOperationException Implementar metodos que lancen UnsupportedOperationException
  • 35.
  • 36.
    Especifique o nívelde acesso correto Especifique el nivel de acceso correcto Expectativa Realidade
  • 37.
    A imutabilidade ésua amiga La inmutabilidad es tu amiga
  • 38.
    Marcar como somenteleitura o que é somente leitura: V Marcar solo lectura lo que es solo lectura :V
  • 39.
    Marcar las clasesque no se deben extender como SEALED Marcar las clases que no se deben extender como SEALED
  • 40.
    Charlin Agramonte Rendy DelRosario charlin@crossgeeks.com @chard003 xamgirl.com rendy@crossgeeks.com @rdelrosario xamboy.com Questões Preguntas
  • 41.