- Sobre o que se trata OOP
- Reuso (objeto pode ser reaproveitado por outros contextos)
- Abstração
- Encapsulamento (esconder implementação)
- Alta Coesão (objeto fazer bem uma única coisa)
- Baixo Acoplamento (objeto pode ser substituído sem afetar outros objetos)
- Elementos OOP
- Interface 1. Visibilidade/Segurança (public/protected/private) 2. Polimorfismo
- Implementação
1. Objeto
2. Classe
3. Instância
4. Atributos / Propriedades
5. Mensagem / Método
- Assinatura de Métodos / Sobrecarga (overloading)
- Métodos especiais
- Modelagem e Uso
- Composição (tem um) (agregation, association, composite and cardinality)
- Especialização / Generalização (é um) 1. Herança (subclasse / superclasse) 2. Protótipo (Composição + Delegação)
- Delegação
- Sobreposição (override)
- Desenvolvimento
- Testes
- Refactoring
- Design
- Design Patterns (MVC et al)
- SOLID 1. Single responsibility principle 2. Open/closed principle 3. Liskov substitution principle 4. Interface segregation principle 5. Dependency inversion principle
- Demeter’s Law
- TDD
- Gerenciamento de Objetos
- Contagem de Referência
- Garbage Collecting
- https://www.learneroo.com/modules/106/nodes/563
- http://www.itmaybeahack.com/homepage/books/oodesign.html
- https://www.lynda.com/Programming-tutorials/Foundations-of-Programming-Object-Oriented-Design/96949-2.html
- https://br.udacity.com/course/design-of-computer-programs--cs212/
- https://www.amazon.com/Robert-C.-Martin/e/B000APG87E/ref=dp_byline_cont_book_1
- http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod
- https://www.estantevirtual.com.br/sebogirassol/meilir-page-jones-fundamentos-do-desenho-orientado-a-objeto-com-uml-386703988
- http://a.co/h2xytTF