termos eficaz C ++ 38: herança de (por um molde a uma tem-um cumprimento ou "De acordo com a alcançar algo para fora") orientada para o objecto

A classes de relações compósitos

  • Composto: é uma relação entre o tipo de meio que compreende outros tipos de objectos nos objectos de um determinado tipo de
  • Composto (Composição) Há outros sinónimos, por exemplo, camadas (estratificação), de contenção (intrão), agregação (polimerização), a incorporação de que (encaixado)
  • Por exemplo:
class Address {};
class PhoneNumber {};

//此类为复合类型
class Person
{
public:
    //...
private:
    std::string name;
    Address address;
    PhoneNumber voiceNumber;
    PhoneNumber faxNumber;
};

Em segundo lugar, o complexo tem dois significados

  • Na cláusula 32, que introduziu o "patrimônio público" na representa-a (a) sentido
  • Complexo contém dois significados:
    • ①has-A (a): geralmente utilizados no domínio de aplicação
    • ②is implementou-in-termos-de (algo implementado ilustrando): normalmente usado para implementar domínio

Três, "tem-um" senso

  • Representante tem-um: Existem outros tipos em um tipo
  • Por exemplo, no código o início do artigo, a classe Pessoa tem um tipo de endereço, tipo PhoneNumber, por isso tem uma classe Pessoa tem-um senso de

Quatro "é implementada-in-termos-of" significado

  • está implementada-in-terms- de ( de acordo com a perceber alguma coisa) é representativa de: para implementar algum tipo de outro tipo
  • Por exemplo:
    • C ++ set biblioteca STL e mapear recipientes, o fundo é estrutura de árvore vermelho-preto para alcançar, que é definido no mapa e ter uma sensação de "é implementada-in-termos-de", porque ele é implementado de acordo com a estrutura de árvore vermelho-preto em
    • Outro exemplo é, C ++ recipiente pilha biblioteca STL e fila de espera, que pode ser interna do vetor, lista e outros recipientes para atingir, de modo que a pilha e tem a fila "é implementada-em-termos de-" significado

apresentação do caso

  • Agora nós temos uma demanda:
    • Nós não queremos usar o conjunto de contêineres STL fornecido, mas a sua própria definição de um conjunto de recipiente
    • E, a fim de facilitar a realização, gostaríamos de usar o método em STL navio recipiente lista para alcançar Set
  • Seguindo uma abordagem errada, as razões erradas são:
    • elemento lista é repetível, enquanto os elementos do conjunto de elementos não será repetido
    • Portanto, este sistema de herança em violação da relação é-um
//直接继承于std::list,在内部直接调用list的方法来实现Set
template<typename T>
class Set :public std::list<T>
{
	//...
};
  • Se você tomar o "é implementada-in-terms-de" abordagem, em seguida, a maneira correta é tomar a seguinte forma:
//“is-implemented-in-terms-of”手法
template<typename T>
class Set
{
public:
    bool member(const T& item)const;
    void insert(const T& item);
    void remove(const T& item);
    std::size_t size()const;
private:
    std::list<T> rep; //底层以std::list实现
};

template<typename T>
bool Set<T>::member(const T& item)const
{
    return std::find(rep.begin(), rep.end(), item);
}

template<typename T>
void Set<T>::insert(const T& item)
{
    if (!member(item))
        rep.push_back(item);
}

template<typename T>
void Set<T>::remove(const T& item)
{
    //关于typename,参阅条款42
    typename std::list<T>::iterator it 
        = std::find(rep.begin(), rep.end(), item);
    if (it != rep.end())
        rep.erase(it);
}

template<typename T>
std::size_t Set<T>::size()const
{
    return rep.size();
}
  • No código acima, todos nós terá que trabalhar Set parte inferior da std :: list para ser concluído, por isso é fácil de entender "é implementada-in-termos-of (de acordo para conseguir algo)" O que significa o

V. Resumo

  • Complexo e público herança significado totalmente diferente
  • No domínio de aplicação, o que significa que o composto tem-um (a). Em alcançar domínio, isso significa que o composto é implementado-in-termos-de (algo implementado de acordo com a)
Lançado 1525 artigos originais · ganhou elogios 1085 · Vistas 450.000 +

Acho que você gosta

Origin blog.csdn.net/qq_41453285/article/details/104827423
Recomendado
Clasificación