Sobrecarga e
Encapsulamento
Paradigmas de Programação
Marco Antonio Montebello Júnior
[email protected]
Encapsulamento

Prática de esconder como um objetos executa
suas operações, quando solicitado por um cliente.

Traz muitos benefícios, pois o cliente não precisa
saber como o objeto funciona internamente.

Isso realmente não é relevante para ele.
Paradigmas de Programação
2
Encapsulamento




É o agrupamento dos dados e funções
relacionados a uma classe.
Permite determinar a forma como os membros da
classe serão expostos.
Possibilita baixo acoplamento, tornando as
classes independentes.
Em C#, pode-se utilizar propriedades para
acessar os atributos de uma classe,
garantindo a integridade.
Paradigmas de Programação
3
Encapsulamento
Modificadores de acesso de Classe

Os modificadores de acesso que podem ser utilizados na
construção das classes são
Modificador
Significado
none ou internal
A classe é acessível apenas dentro do projeto atual.
public
A classe é acessível de qualquer lugar
abstract ou internal abstract
A classe é acessível apenas dentro do projeto atual, não podendo ser
instanciada, apenas derivada
public abstract
A classe é acessível de qualquer lugar, não podendo ser instanciada,
apenas derivada (herdada)
sealed ou internal sealed
A classe é acessível apenas do projeto atual, não podendo ser
derivada, apenas instanciada
public sealed
A classe é acessível de qualquer local, não podendo ser derivada,
apenas instanciada
Paradigmas de Programação
4
Encapsulamento
Modificadores de acesso de Atributos

Normalmente é utilizado internamente na classe
(A exposição das características da classe é
tarefa das propriedades ou do métodos)
Modificador
Significado
public
Atributo acessível a partir de qualquer código
private
Atributo acessível apenas para o código que faz parte da classe (o
padrão se nenhuma palavra-chave for usada)
Internal
Atributo acessível apenas para o código dentro do projeto em que ele é
definido
protected
Atributo acessível apenas para o código que faz parte da classe, ou
uma classe derivada (filhos)
Paradigmas de Programação
5
Encapsulamento
Modificadores de acesso de Métodos

Os modificadores dos métodos são:



private
public
protected
Modificador
Significado
virtual
O métodos pode ser sobrescrito
abstract
O método deve ser sobrescrito (permitido apenas em classes abstratas)
override
O método se sobrepõe a um método da classe-pai / classe base
(deve ser usado se um método estiver sendo sobrescrito)
extern
A definição do método se encontra em outro lugar
Paradigmas de Programação
6
Encapsulamento
Exemplo


Ao pressionar o pedal de um carro (objeto), nós
(clientes) não precisamos saber que ele irá
aumentar a quantidade de combustível e ar
enviada ao motor, que irá gerar uma maior
combustão, movendo os pistões com mais força e
rapidez, com isso aumentando a velocidade do
carro.
Para o cliente basta saber que, ao pressionar o
pedal do acelerador, o carro irá adquirir
velocidade.
Paradigmas de Programação
7
Sobrecarga de métodos



Sobrecarregar um método traz a possibilidade de
termos diferentes versões do mesmo método ou
propriedade que, mesmo possuindo o mesmo
nome, aceitam um número diferente de
parâmetros ou parâmetros de tipos diferentes
O compilador diferencia o método que deve ser
executado pelo número, tipo ou/e ordem dos
parâmetros.
Sobrecarga de construtores
Paradigmas de Programação
8
Sobrecarga de métodos
(overload)



A sobrecarga permite que você crie métodos
com o mesmo nome, mas com assinaturas
diferentes.
Assinatura é a lista de parâmetros que o métodos
recebe.
A palavra “sobrecarga” pode trazer uma idéia de
estresse ou excesso de trabalho, mas em OO é
um elemento que nos ajuda muito.
Paradigmas de Programação
9
Sobrecarga de métodos
(overload)

Um exemplo de sobrecaraga é o método Show do
MessageBox.

Podemos observar que existem 21 alternativas
diferentes para o método.

O que diferencia um do outro é a combinação do
número de parâmetros, seus nomes e tipos.
Paradigmas de Programação
10
Sobrecarga
Construtores
//Construtor...
public Pessoa() : this(String.Empty)
{
}
public Pessoa(string Nome)
{
nome = Nome;
}
Paradigmas de Programação
11
Sobrecarga
Métodos
//Métodos...
public Imprime()
{
//Código do método...
}
public Imprime(string Nome, int Idade)
{
//Código do método...
}
Paradigmas de Programação
12
Sobrecarga
Construtores

Temos 2 (dois) construtores:



Um recebe o parâmetro para o nome da pessoa,
inicializando assim o nome da mesma.
Outro que não recebe nenhum parâmetro, mas utiliza o
outro construtor para iniciar a variável nome como
String.Empty(representa uma string vazia “”)
Essa é uma técnica comum que visa a correta
inicialização da classe reutilizando código.
Paradigmas de Programação
13
Sobrecarga por sobreposição

É o mecanismo que um SubClasse (classe filha)
possui de literalmente “passar por cima” de
métodos ou propriedades definidos em sua
SuperClasse / ClasseBase (classe pai)

Para que a SubClasse consiga sobrepor o
elemento, a SuperClasse precisa declará-lo com
a keyword virtual (C#)
Paradigmas de Programação
14
Sobrecarga por sobreposição

Mantendo a mesma identificação e assinatura do
método Imprimir

Um classe adicionando a keyword override (C#)
descarta (ignora) a definição do método Imprimir
da SuperClasse / ClasseBase e cria a sua
própria.
Paradigmas de Programação
15
Sobrecarga por sobreposição
Exemplo
//Métodos – SuperClasse (Pai)...
public virtual string Imprime()
{
//Código do método...
}
//Métodos – SubClasse (Filha)...
public override string Imprime()
{
//Código do método...
}
Paradigmas de Programação
16
Download

Encapsulamento