Quais são os diferentes tipos de encapsulamento?
-
23-08-2019 - |
Pergunta
Quais são os diferentes tipos de encapsulamento?
Estou certo em pensar que isto refere-se basicamente aos conceitos de OO centrais, como abstração, polimorfismo e herança?
O meu entendimento de encapsulamento é que é um método de esconder dados / funcionalidade, mas eu nunca realmente considerado Polimorfismo ou herança uma forma de encapsulamento, embora eu possa ver como polimorfismo pode ser considerado encapsulamento, pois ele pode esconder o tipo exato de o objeto que você está interagindo com.
Então, você diria que é sobre ele, ou estou faltando alguns conceitos fundamentais?
editar eu só notei nos comentários alguém mencionou que poderia referir-se a métodos de público / privado, talvez eu estou pensando em para a questão muito e esperando uma resposta mais complicado do que realmente é?
Solução
Você está pensando muito eu acho.
http://en.wikipedia.org/wiki/Information_hiding
Trecho este artigo :
ocultação de informação em ciência da computação é o princípio de esconder de decisões de projeto em um programa de computador que são mais susceptíveis de mudança, assim, proteger outras partes do programa de mudança, se a decisão de design é alterado. A proteção envolve o fornecimento de uma interface estável que protege o restante do programa de implementação (os detalhes que são mais propensos a mudança).
Uma forma comum de encapsulamento está usando propriedades para ocultar campos de dados privados. Uma forma ainda mais comum é o uso de OO para encapsular a complexidade do software em classes bem divisoned com papéis e responsabilidades. Esta é uma Tennant chave de OO, como ele se move a partir de um estilo de design processual monolítico para um estilo mais estruturado que se esforça para esconder todas as informações irrelevantes, exceto o que pertence à tarefa especial o seu trabalho sobre.
Outras dicas
É minha opinião e entendimento de que o termo de encapsulamento (encapsular) é a arte / ciência de capturar a essência de algo para fins de exposição. Na verdade, por definição - para encapsular é empacotar algo ou colocá-lo em outro recipiente. Portanto, o termo encapsulamento significaria tirar a essência do que você está tentando alcançar e embalá-lo em uma forma útil para que possa ser reutilizado conforme necessário.
Assim, para interpretar esta, isso significaria para material de embalagem de uma forma que iria torná-lo mais útil mais tarde.
Então, realmente ... interpretar isso como você vê o ajuste. I vê-lo como tendo um grupo de algoritmos e utilitários e criar uma estrutura de classe que pode ser usado como uma API em outros projectos. Este código encapsulado pode ser herdada e / ou estendido para torná-lo útil para fins modificados sem alterar a essência subjacente da API.
Portanto, abstracção, polimorfismo e herança não são formas de encapsulamento, mas as formas de estender e modificar o código encapsulado.
Diferentes formas de encapsulamento significaria os modificadores sobre as propriedades, métodos, campos e classes - ou seja público, privado, estático, virtual (em C #). Tudo o resto (isto é, sobrecargas, substituições, sombras) é uma alteração ou uma extensão para que a encapsulação.
Você pode considerar o código modificado um encapsulamento que poderia então ser ainda mais herdou / abstraída / estendido, mas o pacote que deve ser estendida é o produto encapsulado.
O encapsulamento é definida pela Organização Internacional para a Norma Internacional de Normalização:. "A tecnologia da informação - Open Distributed Processing", ISO / IEC 10746 de 1998
É definido em termos de definições mais primitivas:
Entidade:. Qualquer concreto ou abstrato coisa de interesse
Objeto: Um modelo de uma entidade. Um objecto é caracterizado pelo seu comportamento e, duplamente, por seu estado.
Comportamento (de um objeto): Uma coleção de acções com um conjunto de restrições sobre quando eles podem ocorrer.
Interface: Uma abstracção do comportamento de um objeto que consiste em um subconjunto das interacções de esse objecto, juntamente com um conjunto de restrições de quando eles podem ocorrer.
encapsulamento: a propriedade de que a informação contida em um objeto é acessível apenas através de interacções com as interfaces suportadas pela objeto.
O ISO não define diferentes tipos de encapsulamento.
Outras Amarrar mencionados ocultação de informações. Será que a ISO não define encapsulamento explicitamente em termos de ocultação de informações, embora ele não parece implícito, consulte "fundamentos teoria Encapsulation", em http://www.edmundkirwan.com/pub/
Ed.
O encapsulamento é mais do que simplesmente esconder informações. Esse é um aspecto dele. Tem a ver com a interface de um módulo. Uma interface fornece duas funções muito importantes:. Encapsulamento e abstração
A abstração é quando um cliente de um módulo não precisa saber mais do que o que está na interface.
e
O encapsulamento é quando um cliente de um módulo não é capaz de saber mais do que o que está na interface.
(Ambas as definições de Usando UML por Perdita Stevens)
Desde encapsulamento refere-se simplesmente "esconder informações", então eu iria imaginar que um monte de coisas podem ser categorizadas como encapsulamento. No entanto, eu tendem a pensar de encapsulamento como "esconderijo implementação", em outras palavras, é uma ferramenta que eu uso para criar o acoplamento fraco entre escrever qualquer coisa que eu eo cliente nada do que eu escrevi.
Então, eu tendem a acreditar, pragmaticamente, que o encapsulamento é qualquer paradigma ou melhores práticas que me permite apresentar uma interface limpa e sólida para qualquer cliente.
Geralmente, o uso da palavra é muito parecido com o que diz. Você encapsular alguma coisa quando você contê-lo, e não deixe que qualquer uma das ofertas perder. A melhor maneira de pensar sobre isso é que está a tomar alguma coisa e colocá-lo em uma caixa-preta, onde ninguém pode ver os detalhes mais. A caixa esconde tudo, fornecendo alguma outra interface dissociado em seu lugar.
ocultação de informações é apenas um aspecto de encapsulamento, uma vez que, juntamente com os dados que você também pode ocultar qualquer um dos detalhes do próprio código. O objetivo de encapsular uma parte do seu sistema é chamar esse pouco de complexidade longe do todo, tornando assim mais fácil para entender os detalhes separados (nos dois lados). mais?
Paul.
"Definições candidatos para Encapsulation:
- Fisicamente agrupamento operações em conjunto relacionados ou coisas.
- GateKeeper de estado ou dados.
- Escondendo implementação. "
provenientes de: Encapsulation Definição
Há duas partes / maneiras de conseguir Encapsulation:
-
Primeiro, a encapsulação é uma técnica que os pacotes de dados e comportamentos relacionados numa única unidade, i.e., o agrupamento físico de operações (comportamentos)
por exemplo: -.
class Person {
String name;
int age;
void talk() {
}
void think() {
}
void work() {
}
void play() {
}
}
-
Em segundo lugar, o encapsulamento é uma técnica para proteger dados de uso indevido pelo mundo exterior, que é referido como ‘ocultação de informações’ ou ‘ocultação de dados’.
por exemplo: -.
class Person {
private String name;
private int age;
public String getName() {
return name;
}
public String getAge() {
return age;
}
}
provenientes de: o que é encapsulamento em Java - o quê, porquê e cOMO , autor saqueador cita interface como um exemplo, o que não é verdade. Interface são para Abstraction