1. Herança
1.1. O compartilhamento de atributos e operações entre classes tem como base um relacionamento hierárquico
1.1.1. Interface
1.1.1.1. É responsável por determinar quais métodos as classes vão implementar
1.1.2. Classes Abstratas
1.1.2.1. São modelos para outras classes que dela herdem, não podendo ser instancia por si só.
1.2. Uma classe pode ser definida de forma abrangente e depois redefinida em sucessivas subclasses mais definidas
2. Paradigma
2.1. Processo conceitual independente da linguagem de programação. O desenvolvimento baseado em objetos é fundamentalmente uma forma de pensar e não uma técnica de programação
3. Abstração
3.1. Habilidade de esconder detalhes e concentrar-se no geral quando se avalia as propriedades comuns a um conjunto de objetos.
4. Classes e Objetos
4.1. Uma classe é uma abstração, ela descreve as propriedades importantes para uma aplicação, enquanto ignora o resto das propriedades.
4.2. Cada classe descreve um conjunto possivelmente ilimitado de objetos individuais
4.3. Cada objeto é considerado uma instância de sua classe
4.3.1. Cada instância dessa classe tem seu próprio valor para cada atributo, mas compartilha os nomes dos atributos e operações com outras instâncias da mesma classe.
4.3.2. Objetos são uma extensão do conceito de objetos do mundo real, nos quais você pode ter coisas tangíveis, um incidente (eventos ou ocorrencia) ou interações (transações ou contrato).
5. Encapsulamento
5.1. Consiste em evidenciar ou não as funcionalidades do objeto ao ambiente externo
5.2. O conceito de encapsulamento é a ação de ligar uma TV: não é interessante para o espectador saber se o diodo da TV foi ativado ou se o circuito inteiro responde a um determinado componente
5.3. Modificadores de acesso
5.3.1. São palavras-chave usadas para especificar a acessibilidade de uma claase
5.3.1.1. Public: o acesso é livre a qualquer código externo a classe;
5.3.1.2. Private: o acesso é permitido somente dentro da classe onde ela foi criada;
5.3.1.3. Protected: apenas a classe que contém o modificador e os tipos derivados dessa classe tem o acesso.;
6. Polimorfismo
6.1. Consiste na alteração do funcionamento interno de um método herdado de um objeto pai.
6.1.1. Sobreposição de métodos(Override)
6.1.1.1. É um conceito que nos permite reescrever um método.
6.1.2. Sobrecarga de métodos(Overload)
6.1.2.1. É um conceito que consiste em criar variações de um mesmo método, ou seja, a criação de dois ou mais métodos com nomes totalmente iguais em uma classe.