Você está na página 1de 16

Overview de POO

O que é POO?
POO é a abreviação para Programação Orientada a Objetos, em tradução
literal do no inglês, Object-Oriented Programming (OOP).

A programação procedural ou processual, trata da escrita de


procedimentos ou métodos que executam operações nos dados, enquanto
a programação orientada a objetos trata da criação de objetos que contêm
dados e métodos.

A programação orientada a objetos tem várias vantagens sobre a


programação processual:

• É mais rápido e fácil de executar


• POO fornece uma estrutura clara para os programas
• Ajuda a manter o código C# DRY, do inglês "Don't Repeat Yourself", o
que torna o código mais fácil de manter, modificar e depurar
• POO torna possível criar aplicações totalmente reutilizáveis com
menos código e menor tempo de desenvolvimento

CSharp Page 1
Classes e Objetos

O que são Classes e Objetos?


Classes e objetos são os dois aspectos mais fundamentais da programação
orientada a objetos.

Uma classe é um modelo para objetos


Um objeto é uma instância de uma classe.

Quando os objetos individuais são criados, eles herdam todas as variáveis e


métodos da classe.

Como criar uma Classe?


Usamos a palavra-chave class para criar uma class.

public class Carro


{
string cor = "vermelho";
public string MinhaCor()
{
return cor;
}
}

Como criar um Objeto?


Um objeto é criado a partir de uma classe.
Acima temos a classe chamada Carro, agora podemos usá-la para criar
objetos.

Para criar um objeto Carro, especifique o nome da classe, seguido do nome


do objeto, e use a palavra-chave new.

Exemplo:
public class Program
{
public static void Main()
{
Carro ford = new Carro();
ford.Marca = "Ford";
ford.Modelo = "Fiesta";

Console.WriteLine($"O Carro é da marca: {ford.Marca} e modelo:


{ford.Modelo}");
}

public class Carro


{
string cor = "red";
public string Marca { get; set; }
public string Modelo { get; set; }

public string MinhaCor()


{
return cor;
}
}
}

CSharp Page 2
}

CSharp Page 3
Membros de uma classe

Os campos, propriedades e métodos dentro das classes são frequentemente


chamados de "Membros da Classe".

O que é Campo (Field)?

São varíáveis dentro de uma classe.


Podem ser acessados, quando criados de forma publica, ao criar um objeto. Para
isso, utiliza-se o ponto ".".

Dica: Normalmente são utilizado apenas de forma interna a uma classe.

O que é Metodo de um Objeto?


Os métodos normalmente pertencem a uma classe e definem como um objeto de
uma classe ira se comportar.

Assim como acontece com os campos, você pode acessar métodos com a sintaxe
de ponto. No entanto, observe que o método deve ser público. E lembre-se que
usamos o nome do método seguido de dois parênteses () e ponto e vírgula; para
chamar (executar) o método.

Caso o método possua parametros de entrada é importante fornecê-los.


Assim como, caso o método seja uma função e retorne o resultado, você deve
atribuir a uma variável do mesmo tipo de retorno para evitar multiplas chamadas
ao método e utilizar o valor retornado.

O que é Propriedade (prop)

Para entender propriedades, primero você deve ter um conhecimento básico de


“Encapsulamento”.

O significado do encapsulamento é garantir que os dados "sensíveis" sejam


ocultados dos usuários. Para conseguir isso, normalmente é declarado campos
internos (variáveis privadas) a classe e métodos públicos para acessar e atualizar
seus valores.

Assim, uma propriedade é como uma combinação de uma variável e um método, e


possui dois métodos:

• um para o retorno do valor do campo, chamado de get.


• um para atribuir o valor do campo, chamado de set.

CSharp Page 4
Construtores

O que é Construtor?

Um construtor é um método especial usado para inicializar objetos. A vantagem


de um construtor é que ele é chamado quando um objeto de uma classe é criado
e, também, pode ser usado para definir valores iniciais para campos.

Assim como qualquer outro métodos um construtor pode ser sobrecarregado,


usando diferentes parametros para sua inicialização.

O nome do construtor deve corresponder ao nome da classe e não pode ter um


tipo de retorno (como void ou int).

O construtor também é chamado quando o objeto é criado (instanciado).

Todas as classes têm construtores por padrão: se você não criar um construtor de
classe, o C# criará um para você. No entanto, você não poderá definir valores
iniciais para os campos.

Os contrutores devem ser públicos.

CSharp Page 5
Modificadores de Acesso

O que são Modificadores de Acesso?

Modificadores de acesso são palavras-chave em linguagens orientadas a objetos


que definem a acessibilidade de classes, campos, propriedades, métodos e
outros membros.

Os modificadores de acesso são uma parte específica da sintaxe da linguagem de


programação usada para facilitar o encapsulamento de componentes.

O C# possui os seguintes modificadores de accesso:

Modificador Descrição
public O código é acessível para todas as classes.
private O código só é acessível dentro da mesma classe
protected O código é acessível dentro da mesma classe ou em uma
classe herdada dessa classe.
internal O código só é acessível dentro de seu próprio assembly,
mas não em outro assembly.

CSharp Page 6
CSharp Page 7
Herança

O que é Herança?
Herança é a capcidade de se herdar caracteristicas de uma outra classe.

Em C#, é possível herdar campos e métodos de uma classe para outra.

Para facilitar o entendimento, vamos dividr o “conceito de herança” em


duas partes:

Classe Derivada (filho) - a classe que herda de outra classe


Classe Base (pai) - a classe cujo as caracteristicas serão herdadas,

Para herdar de uma classe, no C#, usamos use o símbolo ":" .

Por que e quando usar “Herança”?


- É útil para reutilização de código: reutiliza campos e métodos de uma
classe existente ao criar uma nova classe. poo - heranca | C# Online Compiler | .NET Fiddle
(dotnetfiddle.net)

A palavra-chave "sealed"
Se você não quiser que outras classes herdem de uma classe, use a
palavra-chave sealed.

CSharp Page 8
CSharp Page 9
Polimorfismo

O que é Polimorfismo?
Polimorfismo ou métodos de substituição significa “multiplas formas” e ocorre
quando temos muitas classes relacionadas entre si por herança.

Como já vimos, a herança nos permite herdar campos e métodos de outra classe.
O polimorfismo usa esses métodos para realizar diferentes tarefas, ou seja,
permite a realização uma única ação, porém de maneiras diferentes.

O C# fornece uma opção para substituir o método da classe base, adicionando a


palavra-chave virtual ao método dentro da classe base e usando a palavra-chave
override para cada método de classe derivada.

Por que e quando usar “Herança” e “Polimorfismo”?


- É útil para reutilização de código: reutiliza campos e métodos de uma classe
existente ao criar uma nova classe.

poo - polimorfismo | C# Online Compiler | .NET Fiddle (dotnetfiddle.net)

CSharp Page 10
CSharp Page 11
Abstração

O que é Abstração?

A abstração de dados é o processo de ocultar certos detalhes e mostrar apenas


informações essenciais ao usuário.

A abstração pode ser alcançada com classes abstratas ou interfaces (vamos ver em
seguida).

A palavra-chave abstract pode ser usada para classes e métodos no C#:

Classe abstrata:
É uma classe restrita que não pode ser utilizada para criar objetos (para acessá-la
deve ser herdada de outra classe).

Método abstrato:
só pode ser usado em uma classe abstrata e não possui corpo. O corpo é fornecido
pela classe derivada (herdada de).

Por que e quando usar classes e métodos abstratos?


Para obter segurança - oculte certos detalhes e mostre apenas os detalhes
importantes de um objeto.

Nota 1: Uma classe abstrata pode ter métodos abstratos e regulares.

Nota 2: A abstração também pode ser alcançada com Interfaces.

CSharp Page 12
CSharp Page 13
Interface

O que é Interface?

Uma interface é uma "classe abstrata", que só pode conter métodos e


propriedades abstratas, ou seja, com seus "corpos" vazios.

É considerada uma boa prática começar com a letra “I” no início do nome de uma
interface, pois torna mais fácil para você e para os outros lembrarem que se trata
de uma interface e não de uma classe.

Por padrão, os membros de uma interface são abstratos e públicos.

As interfaces podem conter propriedades e métodos, mas não campos e


variáveis.

Para acessar os métodos da interface, a interface deve ser "implementada"


(como se fosse herdada) por outra classe. Para implementar uma interface, use o
símbolo ":" (assim como na herança).

É requerido que o corpo dos método e propriedades de uma interface sejam


implementados, ou seja, códificados na classe que "implementa/herda" a
interface.

No caso da implementação dos metodos da interface, não é necessário utilizar a


palavra-chave "override" ao códifica-lo.

Assim como as classes abstratas, as interfaces não podem ser utilizadas para criar
objetos, ou seja, serem instanciadas.

Por que e quando usar interfaces?


1) Para obter segurança - oculte certos detalhes e mostre apenas os detalhes
importantes de um objeto (interface).

2) C# não suporta "herança múltipla" (uma classe só pode herdar de uma classe
base). No entanto, isso pode ser alcançado com interfaces, porque a classe pode poo - interface | C# Online Compiler | .NET Fiddle
(dotnetfiddle.net)
implementar múltiplas interfaces.

Nota: Para implementar múltiplas interfaces, separe-as com vírgula.

CSharp Page 14
Bônus: Listas

O que é uma Lista?

Listas (List) é uma coleção de objetos que mantém a ordem em que eles foram
adicionados.

Os objetos dentro de uma lista podem ser de tipos nativos ou customizados.


Estruturas complexas podem ser armazenadas nas listas.

Uma lista, permite a entrada de novos objetos, alteração e remoção de objetos já


existentes.

poo - bonus - lista | C# Online Compiler | .NET Fiddle (dotnetfiddle.net)

CSharp Page 15
Por que e quando usar Enums?
Use enums quando tiver valores que você sabe que não vão mudar, como dias do mês, dias, cores,
baralho de cartas, etc.

CSharp Page 16

Você também pode gostar