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 é?

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top