Termos Básicos |
Programação Orientada a Objetos (POO): Uma abordagem para projetar e construir aplicativos flexíveis, naturais, bem trabalhados e testáveis, focando nos objetos e nas interações entre objetos.
Classe: O código que descreve uma determinada entidade na
aplicação, como Cliente, Pedido ou Endereco.
A classe contém o código que define as propriedades e métodos.
Propriedade: O código que define os dados gerenciados pela
classe, como Nome, NumeroPedido, Email, Preco,
etc.
Método: O código que define as ações ou comportamentos da classe,
como Validar() ou CalcularTotal(). Métodos são definidos no
código com funções C#.
Membros: Refere-se às propriedades e métodos de uma classe.
Objeto: Uma instância de uma classe que é criada em tempo de
execução. Em C#, uma instância é criada com a palavra-chave new.
Variável de objeto: A variável usada ao criar um objeto. Por
exemplo, var macoratti = new Cliente(); Neste exemplo,
macoratti é a variável de objeto. Use a variável de objeto para
definir as propriedades e chamar os métodos. A variável de objeto mantém
o estado do objeto.
Assinatura do método: O código que define a função do método,
incluindo o nome da função e o conjunto de parâmetros. A assinatura não
inclui o tipo de retorno. Cada assinatura de função dentro de uma classe
deve ser única. A assinatura é usada para "corresponder" chamadas
para a função.
Sobrecarga(Overloading): Métodos que têm o mesmo nome mas
parâmetros diferentes. Exemplo: public bool Retorno() e public
bool Retorno(int id). O método Retorno() neste exemplo é
dito ter "duas sobrecargas".
Contrato: O conjunto de propriedades e métodos públicos em uma
classe define o contrato das classes. A classe faz uma promessa de que
irá fornecer as propriedades definidas e os métodos para qualquer outro
código que precisa deles. Isso também é conhecido como "interface de
classe".
Construtor: Código que é executado sempre que uma instância da
classe é criada.
Construtor padrão: Um construtor sem parâmetros.
Substituição(Overriding): Ao usar herança, uma classe filha pode
substituir um membro da classe pai para fornecer sua própria
implementação.
Interface: Uma interface é um tipo separado (INotifyPropertyChanged
por exemplo) que define um conjunto de propriedades e métodos sem
implementação. Qualquer classe pode então implementar uma interface para
usar o conjunto de propriedades e métodos fornecidos na interface. Pense
em uma interface como um papel que um objeto pode desempenhar. Por
exemplo, uma interface ILoggable define uma
função de log. Uma interface IEmail define
uma função de email. Uma classe Pedido pode implementar a
interface ILoggable e IEmail para assumir
ambas as funções.
Os quatro pilares da Programação Orientada a Objetos |
Os pilares do OOP
definem as principais características da programação orientada a objetos
e são:
Abstração:
O processo de definir classes simplificando a realidade, ignorando
detalhes estranhos e focalizando no que é importante para um propósito.
Por exemplo, um cliente pode ter um nome, título, endereço, estado
civil, animais de estimação, crianças, informações de cartão de crédito,
veículos, etc. Mas se a finalidade da aplicação é processar ordens, a
aplicação só pode se preocupar com o nome do cliente , endereço e
informações de cartão de crédito.
Encapsulamento:
Uma maneira de ocultar (ou encapsular) os dados e detalhes de
implementação dentro de uma classe, escondendo assim a complexidade. Em
C#, os elementos de dados são definidos com campos de apoio privados e
expostos através de getters e setters de propriedade. Assim, os dados
são encapsulados.
Herança:
Uma relação entre classes em que as classes filhas(ou derivadas)
herdam todos os membros da classe pai (ou base). Por exemplo, um
aplicativo pode definir uma classe "base de objeto de negócios" de que
todos os objetos de negócios são herdados. Essa classe base pode conter
membros comuns a todas as classes filhas, como informações de estado da
entidade.
Polimorfismo:
Significa basicamente "muitas formas". O conceito de que um único
método pode se comportar de maneira diferente dependendo do tipo de
objeto que o chama. Por exemplo, o método
Validar
na classe Cliente
executa de forma diferente do método
Validar
na classe Ordem.
Polimorfismo Baseado em
Herança:
Polimorfismo no caso em que o método é definido em uma classe base e se
comporta de maneira diferente para cada classe filho.
Polimorfismo Baseado em
Interface:
Polimorfismo no caso em que o método é definido em uma interface e se
comporta de maneira diferente em cada classe que implementa a interface.
Relacionamento entre Classes |
Colaboração:
Relacionamento
"Usa um".
Os objetos podem colaborar com outros objetos. Por exemplo: Cliente
Repositorio "usa um" objeto Cliente para preencher e serializar
ao salvar.
Composição:
Relacionamento
"Tem um".
Os objetos podem ser compostos de outros objetos. Por exemplo, Pedido
"tem um" Cliente, e Pedido "tem um" endereço de remessa.
Herança:
Relacionamento
"É um".
Os objetos podem ser subtipificados. Por exemplo, um Cliente de Tipo de
Negócio "é um" Cliente, e, um Cliente de Tipo Residencial "é um"
Cliente ".
Termos C# na OOP |
Propriedades implementadas automaticamente (Auto-implemented
properties): Propriedades que criam e gerenciam o campo de
encapsulamento automaticamente.
Método estático (static): Adicionando o modificador static em um
membro da classe (propriedade ou método) define que o membro
pertence à própria classe, não uma instância da classe.
Classe selada (Sealed): Classe que não pode ser usada como uma
classe base para uma relação de herança.
Classe abstrata(Abstract): Classe que não pode ser instanciada,
portanto, nenhum objeto pode ser criado a partir da classe. Nem pode ser
acessado por seu nome de classe. A classe só pode ser usada como uma
classe base para outras classes.
Classe Concreta: Classe que pode ser instanciada. Basicamente, o
oposto de uma classe abstrata.
Classe estática (Static): Classe que não pode ser instanciada,
portanto, nenhum objeto pode ser criado a partir da classe. Os membros
da classe são acessados usando o nome da classe. Uma classe estática
fornece um atalho para os membros da classe quando o instanciamento é
injustificado. Por exemplo, a classe Console do .NET Framework é
uma classe estática. Para chamar o método WriteLine você usa
Console.WriteLine. Não é necessário criar uma nova instância do
Console.
Método abstrato: Método sem implementação (basicamente sem
código). O método deve ser substituído por uma classe filha.
Método virtual(Virtual): Método com uma implementação que pode
ser substituída por uma classe filha.
E estamos conversados...
Sabendo,
amados irmãos, que a vossa eleição é de Deus;Porque
o nosso evangelho não foi a vós somente em palavras,
mas também em poder, e no Espírito Santo, e em muita
certeza, como bem sabeis quais fomos entre vós, por
amor de vós.
1 Tessalonicenses 1:4,5