no Reino Unido, Portugal e sede em Mogi Guaçu. • Nosso objetivo é facilitar a transformação digital nas organizações. • Desenvolvemos aplicações personalizadas para Web, Dispositivos moveis, interfaces conversacionais (Assistentes pessoais e Chatbots) • Ruby on Rails, JavaScript, Java, Python, machine learning… • www.kazap.com.br
demora um bom tempo para encontrar onde alterar, pesquisa e altera vários lugares no código • Essa pessoa esquece de alterar em alguns lugares; Realidade
demora um bom tempo para encontrar onde alterar, pesquisa e altera vários lugares no código • Essa pessoa esquece de alterar em alguns lugares; • E aí massa? Realidade
demora um bom tempo para encontrar onde alterar, pesquisa e altera vários lugares no código • Essa pessoa esquece de alterar em alguns lugares; • E aí massa? Realidade
demora um bom tempo para encontrar onde alterar, pesquisa e altera vários lugares no código • Essa pessoa esquece de alterar em alguns lugares; • E aí massa? Realidade
demora um bom tempo para encontrar onde alterar, pesquisa e altera vários lugares no código • Essa pessoa esquece de alterar em alguns lugares; • E aí massa? Realidade
Objetos. (que vão te ajudar a organizar melhor seu código) • Criado por Robert C. Martin (Uncle Bob), apresentado em seu artigo "The Principles of OOD” e Identificado depois por Michael Feathers;
Objetos. (que vão te ajudar a organizar melhor seu código) • Criado por Robert C. Martin (Uncle Bob), apresentado em seu artigo "The Principles of OOD” e Identificado depois por Michael Feathers; • http://www.butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod
Objetos. (que vão te ajudar a organizar melhor seu código) • Criado por Robert C. Martin (Uncle Bob), apresentado em seu artigo "The Principles of OOD” e Identificado depois por Michael Feathers; • http://www.butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod • Não está ligado diretamente a um linguagem de programação.
Objetos. (que vão te ajudar a organizar melhor seu código) • Criado por Robert C. Martin (Uncle Bob), apresentado em seu artigo "The Principles of OOD” e Identificado depois por Michael Feathers; • http://www.butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod • Não está ligado diretamente a um linguagem de programação. • Java, C#, PHP, Typescript, Javascript…
Objetos. (que vão te ajudar a organizar melhor seu código) • Criado por Robert C. Martin (Uncle Bob), apresentado em seu artigo "The Principles of OOD” e Identificado depois por Michael Feathers; • http://www.butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod • Não está ligado diretamente a um linguagem de programação. • Java, C#, PHP, Typescript, Javascript…
• Encapsulamento (esconder características e comportamentos) • Herança (herdar características e comportamentos) • Polimorfismo (através de abstrações, classes com métodos de mesmo nome podem fazer coisas diferentes)
and only one, reason to change. OCP -The Open Closed Principle You should be able to extend a classes behavior, without modifying it. LSP -The Liskov Substitution Principle Derived classes must be substitutable for their base classes. ISP -The Interface Segregation Principle Make fine grained interfaces that are client specific. DIP -The Dependency Inversion Principle Depend on abstractions, not on concretions.
2008-2013, https:// dicionario.priberam.org/coes%C3%A3o [consultado em 20-10-2019]. “Qualidade de uma coisa em que todas as partes estão ligadas umas às outras.”
addProduct(productId: string) {/*...*/} public removeProduct(productId: string) {/*...*/} public getProductList() {/*...*/} public estimateShipping(cep: number) {/*...*/} }
addProduct(productId: string) {/*...*/} public removeProduct(productId: string) {/*...*/} public getProductList() {/*...*/} public estimateShipping(cep: number) {/*...*/} }
addProduct(productId: string) {/*...*/} public removeProduct(productId: string) {/*...*/} public getProductList() {/*...*/} public estimateShipping(cep: number) {/*...*/} }
extend a classes behavior, without modifying it.” “Você deve ser capaz de estender o comportamento de uma classe sem modifica-la.” Princípio Aberto-Fechado
*/ } } class Ebook { public static downloadEbooks(arquivos: any[]) { arquivos.forEach((arquivo: any) => { if (arquivo.constructor.name === 'EbookEpub') { arquivo.downloadEpub() } else if (arquivo.constructor.name === 'EbookPdf') { arquivo.downloadPdf() } else if (arquivo.constructor.name === 'EbookHtml') { arquivo.downloadHtml() } }) } } E se eu adicionar mais um tipo de Ebook?
• Apresentado por Barbara Liskov em 1987 Fontes: https://en.wikipedia.org/wiki/Barbara_Liskov, https://www.youtube.com/watch?v=_jTc1BTFdIo Barbara Liskov é Cientista da computação, vencedora do Turing Award e uma das primeiras mulheres a receber um doutorado em ciência da computação nos Estados Unidos. Barbara Liskov é Professora no MIT e head do PMG (Programming Methodology Group)
_size: number get size() { return this._size } set size(size: number) { this._size = size } get width(): number { return this._size } get height(): number { return this._size } public area() { return this._size * this._size } } Conclusão
OCP - Classes devem estar abertas para extensão mas fechadas para modificação • LSP - Classes devem ser substituíveis pelas suas classes base • ISP -Evite interfaces gordas
OCP - Classes devem estar abertas para extensão mas fechadas para modificação • LSP - Classes devem ser substituíveis pelas suas classes base • ISP -Evite interfaces gordas
OCP - Classes devem estar abertas para extensão mas fechadas para modificação • LSP - Classes devem ser substituíveis pelas suas classes base • ISP -Evite interfaces gordas • DIP -Dependa de abstrações e não de implementações