Design Orientado a Objetos

DESIGN ORIENTADO A OBJETOS: PRINCÍPIOS E PADRÕES

Programadores, de modo geral, costumam ter o primeiro contato com a Programação Orientada a Objetos em cursos acadêmicos. Em boa parte destes cursos, os conceitos vistos são apenas introdutórios e carecem de um enfoque maior em COMO aplicar verdadeiramente os fundamentos da OO (encapsulamento, abstração, coesão x acoplamento, etc…) em um software no “mundo real”.

Além disso, ao ingressarem no mercado de trabalho, muitos programadores acabam deixando de lado a OO, trabalhando no dia-a-dia em softwares legados repletos de código “macarrônico” e diversas más práticas.

Este treinamento tem por objetivo reapresentar o design de software orientado a objetos a estes programadores, de forma que os auxiliem a aplicar este paradigma no mundo real, projetando software capaz de ser mantido e evoluído de forma sustentável.

Portanto, este treinamento vai além da mera “Introdução a Programação Orientada a Objetos”, trazendo práticas, princípios e padrões em um nível mais avançado.

CONTEÚDO

Design de software
– O que é design?
– A importância de um software bem projetado
– Principais design smells: quando seu software começa a dar sinais de apodrecimento
– Como cuidar do design do software?

POO – Conceitos fundamentais
– Entendendo o que é realmente “Orientação a objetos”
– Uma revisão dos conceitos principais: mensagens, abstração, coesão, acoplamento,…
– A importância do encapsulamento
– Herança e seu mau uso (a máxima “Composição mais do que herança”)

Princípios de design

– Princípios GRASP
– Comand/Query Separation (CQS)
– Tell, don’t ask
– Law of Demeter
– Princípios SOLID
—– Princípio da Responsabilidade Única
—– Princípio do Aberto/Fechado
—– Principio de Substituição de Liskov
—– Princípio da Segregação de Interface
—– Princípio da Inversão de Dependência

Design Patterns Elementares (Gang of Four)
– O que são?
– Padrões mais comuns
– Quando usar (cuidado com a “patternite”)

Objetos em um software corporativo
– Objetos e “objetos” (Value Objects, DTOs, Eventos, Serviços, etc..)
– Os polêmicos ORMs
– Modelo Anêmico x Modelo Rico

Amostra-grátis
– O que é Domain-Driven Design e o que isso tem a ver com OO?
– Testando suas classes: um pouco sobre TDD e unit testing

CARGA HORÁRIA

16 horas, divididas em 2 sábados de 8 horas.

TECNOLOGIA UTILIZADA

Embora exemplos de código estejam na linguagem C#, o treinamento é 100% focado em orientação a objetos e não em particularidades de linguagem, podendo ser acompanhado por programadores com background em C#, Java, etc (e mesmo linguagens dinâmicas, como Ruby).

Para valores e demais informações, basta <<entrar em contato>>.

Anúncios