IT-Swarm.Net

encapsulamento vs abstração exemplo do mundo real

Para um exemplo de encapsulamento, posso pensar na interação entre um usuário e um telefone celular. O usuário não precisa conhecer o funcionamento interno do celular para operar, então isso é chamado de abstração. Mas onde o encapsulamento se encaixa nesse exemplo? Alguém poderia por favor lançar alguma luz sobre isso?

39
crowso

Encapsulamento é uma maneira de conseguir "esconder informações" então, seguindo o seu exemplo, você não "precisa saber o funcionamento interno do celular para operar " com isso. Você tem um interface para usar o comportamento do dispositivo sem conhecer os detalhes da implementação.

Abstraction no outro lado, pode ser explicado como a capacidade de usar o mesmo interface para objetos diferentes. Diferentes implementações da mesma interface podem existir. Detalhes são ocultados por encapsulamento.

67
davioooh

Hospedagem em nuvem rápida, confiável e acessível

Inscreva-se e receba $50 de bônus em 30 dias!

Abstração : você nunca vai comprar um "dispositivo", mas sempre comprar algo mais específico: iPhone, GSII, Nokia 3310 ... Aqui, iPhone, GSII e N3310 são coisas concretas, o dispositivo é abstrato.

Encapsulamento : você tem vários dispositivos, todos eles têm uma porta USB. Você não sabe que tipo de circuito impresso está de volta, você só precisa saber que poderá conectar um cabo USB nele.

Abstração é um conceito, que é permitido pelo encapsulamento. Meu exemplo não foi o melhor (não há link real entre os dois blocos).

Você pode fazer encapsulamento sem usar abstração, mas se você quiser usar alguma abstração em seus projetos, precisará de encapsulamento.

59
zessx

Em palavras gerais, a abstração está apenas ocultando as coisas complexas por trás de um procedimento específico para tornar o procedimento mais simples.
Exemplo: Monitor ON/OFF :: - O usuário não precisa saber muito sobre o funcionamento de todos os chips que acontece quando o Monitor está ligado ou desligado .. Tudo o que ele precisa saber é On Function ON-Monitor está ligado e ligado a função OFF-Monitor está desligado ...

Ou melhor procurar um carro - todos sabem que há uma máquina de engrenagem especial que muda o equipamento, ninguém se preocupou em saber o que toda a funcionalidade sofre para uma engrenagem para mudar ... Então, isso é abstração (evitando implementações indesejadas para evitar complexidade).

Portanto, se um desenvolvedor fornecer uma boa abstração, os usuários não ficarão tentados a espiar os mecanismos internos do objeto.

A abstração é obtida fazendo abstração de classe tendo um ou mais métodos abstratos. O que não é senão uma característica essencial que deve ser implementada pela classe que o estende. e.g. quando você inventa/projeta um carro que você define características como carro deve ter 4 portas, freio, volante etc ... então qualquer um usa isso o design deve incluir essas características. Implementação não é a cabeça de cada abstração. Apenas definirá características que devem ser incluídas.

O encapsulamento está restringindo o usuário a seguir um procedimento específico para acessar o controle de um processo específico. Ele apenas fornece segurança e garante a robustez do sistema.

Exemplo: Podemos considerar o RH em uma empresa como uma pessoa que trabalha com o princípio de encapsulamento.i.e. não podemos falar diretamente com outros departamentos, precisamos nos comunicar por meio do HR. Isso garante segurança e melhor manutenção dos registros da empresa.

Juntos, podemos tomar o exemplo de um UNDER CONSTRUCTION BUILDING..onde podemos dizer que coisas como 'no. de gerentes 'exigido, tipos de materiais, não de trabalhadores etc como abstração como eles precisam lá em cada construção civil.

Mas, ao mesmo tempo, a inclusão de cada campo em um CONTRATANTE que atua como um mediador entre os trabalhadores e o edifício-investidor pode ser encarada como encapsulamento. Como, ele esconde todas as propriedades acima em um só Entidade.

Portanto, se você tivesse compreendido até agora, pode dizer que a abstração é apenas um subconjunto da ENCAPSULAÇÃO. Toda entidade que realiza a abstração é encapsulada internamente, mas todas as coisas que Mostram encapsulamento não precisa ser abstração sempre.

por exemplo. .ToString() O método definido em quase todas as classes é a implementação de Abstraction, porque não fazemos a functionaltiy Within, tudo o que nos importa é que ele muda quase tudo para string.E como ele monta uma unidade, é encapsulado também..Mas, os membros privados que nós escondemos e acessamos através de Properties é um exemplo de encapsulamento apenas porque é feito basicamente mantendo a segurança de dados em mente .. !!

Espero que isso responda sua pergunta..!!

21
Rahul Ranjan

Tudo tem muitas propriedades e comportamentos, então pegue qualquer objeto que você queira: TV, Celular, Carro, Humano ou qualquer coisa.

Abstração:

  1. Processo de escolher a essência de um objeto que você realmente precisa
  2. Em outras palavras, escolha as propriedades que você precisa do objeto Exemplo:
    uma. TV - Som, Visuais, Entrada de Energia, Entrada de Canais.
    b. Celular - Botão/tela sensível ao toque, botão liga/desliga, botão de volume, porta sim.
    c. Carro - Direção, Break, Clutch, Accelerator, Key Hole.
    d. Humano - Voz, Corpo, Visão, Audição, Emoções. 

Encapsulamento:

  1. Processo de esconder os detalhes de um objeto que você não precisa
  2. Em outras palavras, oculte as propriedades e operações que você não precisa do objeto, mas são necessárias para que o objeto funcione corretamente Exemplo:
    uma. TV - Interno e conexões de alto-falante, Display, distribuição de energia p/b componentes, mecanismo de canal.
    b. Móvel - Como a entrada é analisada e processada, Como pressionar um botão liga/desliga ou altera volumes, como o sim se conectará aos provedores de serviços.
    c. Carro - Como girar a direção vira o carro, Como quebrar devagar ou parar o carro, Como funciona a embreagem, Como o acelerador aumenta a velocidade, Como o buraco da chave liga/desliga o carro.
    d. Humano - Como a voz é produzida, O que está dentro do corpo, Como a visão do olho funciona, Como funciona a audição, Como as emoções nos geram e nos afetam. 

RESUMO tudo que você precisa e ENCAPSULAR tudo que você não precisa;)

12
Sandeep Kumar

O texto da sua pergunta é estranho - Abstração versus Encapsulamento? Deve ser - alguém explica abstração e encapsulamento ...

Abstração é entender a essência da coisa. 

Um exemplo do mundo real é a arte abstrata. Os artistas deste estilo tentam capturar/pintar a essência da coisa que ainda permite que seja a coisa. Esta mancha marrom de 4 linhas captura a essência do que é um touro. 

O encapsulamento é o boxe preto.

Um celular é um ótimo exemplo. Não tenho ideia de como o celular se conecta a um satélite, torre ou outro telefone. Eu não tenho ideia de como a maldita coisa entende minhas teclas pressionadas ou como elas são tiradas e envia fotos para um endereço de e-mail ou outro número de telefone. Eu não tenho idéia sobre os intrincados detalhes da maioria de como funciona um telefone inteligente moderno. Mas eu posso usar isso! Os telefones têm interfaces padrão (sim - literal e design de software) que permitem que alguém entenda o básico de um deles para usar quase todos eles.

Como estão os dois relacionados? 

Tanto a abstração quanto o encapsulamento são fundamentos subjacentes do pensamento e do design orientados a objetos. Então, no nosso exemplo de celular. A noção de um smartphone é uma abstração, dentro da qual certos recursos e serviços são encapsulados. O iPhone e o Galaxy são abstrações adicionais da abstração de nível superior. Seu iPhone ou Galaxy físico são exemplos concretos de várias camadas de abstrações que contêm recursos e serviços encapsulados.

7
mson

Abstração Significa Focamos nas qualidades essenciais de alguma coisa em vez de um exemplo específico e descartamos automaticamente o que não é importante ou irrelevante.

Exemplo Estamos escrevendo uma classe de conta bancária, qualidades essenciais da conta bancária são data de abertura, título da conta, número da conta, Saldo etc ...

Encapsulamento Significa a ideia de encapsular ou cercar alguma coisa não apenas para manter o conteúdo unido, mas também para proteger e restringir a forma de acessar o lado externo.Entre o sigilo, trata-se de reduzir dependências entre diferentes partes do aplicativo .

Exemplo Em nossa classe de conta bancária Alguém acessando o atributo de Saldo e tentando alterá-lo, a tentativa pode ser bem-sucedida se não houver encapsulamento. 

5
Shan

O encapsulamento ajuda a aderir ao princípio de responsabilidade única e a abstração ajuda a aderir ao código da interface e a não implementá-lo. 

Digamos que eu tenha uma aula para Car: Classe de Provedor de Serviços e Classe de Driver: Classe de Consumidor de Serviço. 

Para abstração: definimos classe abstrata para CAR e definimos todos os métodos abstratos nela, que são função disponível no carro como: changeGear (), applyBrake (). 

Agora, o carro real (ou seja, como Mercedes, a BMW implementará esses métodos à sua maneira e abstrair a execução e o usuário final ainda aplicará a troca e mudança de engrenagem para uma determinada ocorrência de concreto e polimorficamente a execução ocorrerá conforme definido na classe de concreto . 

Para encapsulamento: Agora diga Mercedes surgir com novo recurso/tecnologia: Anti Skid Braking, enquanto implementa o applyBrake (), ele irá encapsular esse recurso no método applyBrake () e assim fornecer coesão, e o consumidor de serviço ainda acessará pelo mesmo método applyBrake () do objeto de carro. Assim, o encapsulamento permite mais na mesma implementação de classe concreta.

3
user3576978

O encapsulamento está ocultando informações.

A abstração está ocultando os detalhes da funcionalidade.

O encapsulamento é realizado construindo a classe. A abstração é obtida criando Classes Abstratas ou Interfaces no topo da sua classe. 

No exemplo dado na pergunta, estamos usando a classe por sua funcionalidade e não nos importamos com a maneira como o dispositivo consegue isso. Assim, podemos dizer que os detalhes do telefone são "abstraídos" de nós. 

O encapsulamento está escondendo o que o telefone usa para conseguir o que quer que ele faça; Abstração está escondendo como faz it.-

3
Navin Israni

Eu sinto que o encapsulamento pode fazer mais sentido para discutir quando você vê como não fazer na programação. Por exemplo, considere uma classe Car como abaixo.

 class Car{
   public float speed =0;
   public boolean isReverse = false;
   public boolean isStarted = false;
 }

O código do cliente pode usar a classe de carro acima conforme abaixo. 

class Main{
  public static void main(args String[]){
   Car car = new Car();
   // No need to start??
   car.speed = 100; // Turbo mode directly to 100
   car.speed = 0; // Turbo break
  }
}

Veja mais em: http://brevitaz.com/encapsulation-example-benefits-Java/

Este é o acesso descontrolado à velocidade do carro e outras variáveis. Por encapsulamento, a classe Car pode ter controle total sobre como as variáveis ​​de dados dentro da classe car podem ser modificadas.

Qualquer entidade concreta que tenha algum comportamento é um exemplo de encapsulamento. O comportamento é fornecido envolvendo algo e escondendo algo do cliente. No caso de dispositivos móveis, são sinais, chips, circuitos, bateria e assim por diante. 

Para abstração do mesmo exemplo - usuário normal pode dizer que eu estou bem com qualquer coisa usando o que eu posso fazer chamadas e receber chamadas. Essa abstração pode ser substituída por qualquer móvel concreto. Check out Exemplos de abstração .

2
Vishal Shukla

Deixe-me dar meus 2 centavos de uma analogia de exemplo do mundo real perto de TI.

Vamos dizer que você tem um site de inscrição, por exemplo, um site wordpress

Cada usuário tem um papel, por exemplo, admin, assinante e assim por diante. Muitos usuários podem ser administradores, assinantes etc.

Então abstração aqui é refletida no fato de que qualquer usuário com função admin pode fazer um conjunto de coisas, não importa qual usuário específico é (este é um exemplo de abstração ) .

Por outro lado, os usuários assinantes não têm acesso a certas configurações do site, portanto alguns internos do aplicativo são encapsulados para assinantes simples (este é um exemplo de encapsulamento )

Como se pode ver abstração e encapsulamento são conceitos relativos, eles se aplicam em relação a algo específico.

Pode-se seguir essa linha de raciocínio e explicar polimopromo e herança .

Por exemplo, usuários superadministradores poderiam fazer todas as coisas que os usuários administradores poderiam fazer, além de um pouco mais. Além disso, se as funções administrativas obtiverem uma atualização na funcionalidade, os superadministradores receberão a mesma atualização. Assim, pode-se ver aqui um exemplo de herança , em que os papéis superadministradores herdam todas as propriedades das funções administrativas e as estendem. Nota que para a maior parte do site, os administradores são intercambiáveis ​​com superadministradores (o que significa que um usuário superadministrador pode ser facilmente usado no lugar de um usuário administrador, mas não vice-versa em geral).

1
Nikos M.

Se você viu uma importante máquina de TV, conexões de TV e tubo de cor de TV estão escondidos dentro da caixa de TV que não foi exposta para espectadores como nós e expostos apenas itens necessários de uma TV como teclas de canal de TV, teclas de volume de TV, interruptor ON/OFF , Cabo Switch e controle remoto da TV para os telespectadores para usá-lo.Isso significa máquina de TV, conexões de TV e tubo de cor de TV é um dado indesejado e não é necessário para os telespectadores para ver está escondido de fora do mundo

Portanto, encapsulamento significa esconder as características importantes de uma classe que não é necessário ser exposto fora de uma classe e expor apenas as coisas necessárias de uma classe. Aqui, parte oculta de uma classe age como Encapsulamento e expõe parte de uma classe. classe age como abstração.

0
Biju kalanjoor

Abstração 

É usado para gerenciar complexidades de OOPs. Ao usar essa propriedade, podemos fornecer recursos essenciais de um objeto ao usuário sem incluir suas explicações de segundo plano. Por exemplo, ao enviar uma mensagem para um amigo, simplesmente escrevemos a mensagem, diga "hiiii" e pressione "enviar" e a mensagem é entregue ao seu destino (ela, amiga). Aqui vemos abstração no trabalho, ou seja, estamos menos preocupados com o funcionamento interno do celular que é responsável pelo envio e recebimento de mensagens

0
Akash Singh

Pense em Abstração como ocultar os detalhes do teclado e da tela, Encapsulamento como ocultando os circuitos internos que os ligam.

0
user3757331

Abstração

Usamos muitas abstrações no nosso dia-a-dia.Considere um carro.A maioria de nós tem uma visão abstrata de como funciona um carro.Nós sabemos como interagir com ele para fazê-lo fazer o que queremos fazer: nós coloque gasolina, gire uma chave, pressione alguns pedais e assim por diante. Mas nós não necessariamente entendemos o que está acontecendo dentro do carro para fazer com que ele se mova e nós não precisamos. [.] Milhões de pessoas usam carros todos os dias sem entender os detalhes de como eles funcionam. A abstração nos ajuda a obter para a escola ou o trabalho!

Um programa pode ser projetado como um conjunto de abstrações interativas. Em Java, essas abstrações são capturadas em classes. O criador de uma classe obviamente tem que conhecer sua interface, assim como o motorista de um carro pode usar o veículo sem saber como o motor funciona.

Encapsulamento

Considere um sistema bancário. Sistema bancário tem propriedades como conta não, tipo de conta, saldo .. etc. Se alguém tentar alterar o saldo da conta, a tentativa poderá ser bem-sucedida se não houver encapsulamento. Portanto, o encapsulamento permite que a classe tenha controle total sobre suas propriedades.

0
Joby Wilson Mathews

Eu acho que um Egg Shell pode ser considerado o encapsulamento e o conteúdo da abstração. O Shell protege as informações. Você não pode ter o conteúdo de um ovo sem a casca.

0
Humberto

Abstração que esconde detalhes internos para o mundo exterior por exemplo você cria uma classe (como uma calculadora da classe) mas para uso final você fornece objeto de classe, Com a ajuda do objeto eles vão jogar e executar operação, Ele não sabe o que tipo de mecanismo de uso interno .Objeto de classe em forma abstrata.

Encapsulamento é a técnica de tornar os campos em uma classe privada e fornecer acesso aos campos por meio de métodos públicos. Se um campo for declarado como privado, ele não poderá ser acessado por ninguém fora da classe, ocultando os campos dentro da classe. Por esse motivo, o encapsulamento também é chamado de ocultação de dados. Por exemplo, a calculadora de classe que contém métodos privados getAdd, getMultiply.

Mybe acima da resposta irá ajudá-lo a entender o conceito.

0
Apurva