Encapsulamento (POO)

Para um melhor entendimento deste Artigo veja o Índice (Programação Orientada a Objetos)

Entenda como encapsulamento o ato de proteger características de nossos objetos, isto quer dizer que o que não for público estará protegido de ação externa.

Como exemplo iremos pegar um motor. Não precisamos saber o funcionamento dele, apenas temos que saber que o método Ligar() da nossa classe Motor irá fazer com que o nosso motor entre em funcionamento.

Mas não precisamos saber quais componentes o método irá acessar, modificar ou criar para que o nosso motor entre em funcionamento.

O que o método ligar faz, não nos diz respeito, apenas usamos e sabemos que vai funcionar.

No conceito de orientação a objetos podemos proteger aquilo que não queremos que sofram intervenção, nossas variáveis locais, nossos métodos e atributos.

Os dados protegidos só podem ser alterados dentro dos métodos em que foram declarados ou dentro do objeto a que eles pertencem.

Exemplo:

namespace Desenvolvedores.Net.Encapsulamento
{
 public class Motor
 {
 /*
 * Aqui podemos apenas recuperar o valor de Ligado.
 * Mas percebam que para modificar o motor para Ligado
 * não iremos conseguir fazer isso pois a propriedade
 * está como Private, logo podemos dizer que está
 * encapsulada.
 * Só iremos conseguir modificar este valor
 * internamente, dentro desta classe.
 */
 public bool Ligado { get; private set; }

 public void Ligar()
 {
 //variável declarada localmente.
 //podemos dizer que está encapsulada dentro
 //do método Ligar e é acessível
 //somente dentro deste método
 bool temGasolina = TemGasolina();

 if (temGasolina)
 /*
 * aqui modificamos a propriedade Ligado para verdadeiro.
 * Veja que só podemos alterar por aqui ou outro
 * método dentro deste objeto e nunca externamente.
 */
 Ligado = true;
 }

 /*
 * Este método está encapsulado, pois está acessível apenas
 * dentro desta classe (objeto)
 */
 private bool TemGasolina()
 {
 return true;
 }

public override string ToString()
 {
 if (Ligado)
 return "O motor está ligado.";
 else
 return "O motor está desligado.";
 }
 }

 class Program
 {
 static void Main(string[] args)
 {
 Motor motor = new Motor();

 Console.WriteLine(motor.ToString());

 motor.Ligar();

 Console.WriteLine(motor.ToString());

 //se tentarmos forçar o motor a ser ligado iremos
 //receber um erro do compilador:
 //Erro em C#
 //The property or indexer 'Encapsulamento.Motor.Ligado'
 //cannot be used in this context because the
 //set accessor is inaccessible

 motor.Ligado = true;

 Console.ReadKey();
 }
 }
}

Ver Índice

É isso ai pessoal 🙂
Até o próximo
♦ Marcelo

Marcelo

Nascido em Juruaia/MG em uma fazenda de criação de búfalos, e residindo na região Sul do Brasil.
Trabalha com desenvolvimento de aplicações desde os 17 anos. Atualmente é Arquiteto Organizacional na Unimake Software.
Para saber mais ... http://desenvolvedores.net/marcelo
[]'s

Você vai gostar de...

Postagens populares.

1 Comment

Deixe um comentário

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.