Seja um programador das principais linguagem de progamação: java script,css, php,c# e muito mais

Seja um programador:
C++
Parte de um livro de Modern C ++ Design: Programação Genérica e Padrões de Design Aplicados
De Andrei Alexandrescu traduzido para português
Modern C ++ Design é um livro importante. Fundamentalmente, ele demonstra 'padrões genéricos' ou 'modelos de padrões' como uma maneira nova e poderosa de criar designs extensíveis em C ++ - uma nova maneira de combinar modelos e padrões que você nunca sonhou ser possível, mas é. Se o seu trabalho envolve design e codificação em C ++, você deve ler este livro. Altamente recomendado.-Herb Sutter
O que resta a dizer sobre o C ++ que ainda não foi dito? Muito, afinal. - Do prefácio de John Vlissides
Em Modern C ++ Design, Andrei Alexandrescu abre novas perspectivas para os programadores de C ++. Exibindo criatividade extraordinária e virtuosismo de programação, Alexandrescu oferece uma abordagem de ponta ao design que une padrões de design, programação genérica e C ++, permitindo que os programadores obtenham um código expressivo, flexível e altamente reutilizável.
Este livro introduz o conceito de modelos de design reutilizáveis ​​de componentes genéricos que produzem código padrão para o consumo do compilador - tudo em C ++. Os componentes genéricos permitem uma transição mais fácil e uniforme do código do projeto para o código do aplicativo, geram códigos que melhor expressam a intenção do design original e suportam a reutilização de estruturas de design com o mínimo de recodificação.
O autor descreve as técnicas e recursos específicos de C ++ que são usados ​​na construção de componentes genéricos e continua a implementar componentes genéricos de força industrial para aplicativos do mundo real. Problemas recorrentes que os desenvolvedores de C ++ enfrentam em suas atividades do dia-a-dia são discutidos em profundidade e implementados de maneira genérica. Esses incluem:
• Design baseado em políticas para flexibilidade • Especialização em modelos parciais • Estruturas de manipulação de tipos poderosos de tipos de letra • Padrões como Visitante, Singleton, Comando e Fábricas • Mecanismos de múltiplos métodos
Para cada componente genérico, o livro apresenta os problemas fundamentais e opções de design e, finalmente, implementa uma solução genérica.
Além disso, um site acompanhante, http://www.awl.com/cseng/titles/0-201-70431-5, disponibiliza as implementações de código para os componentes genéricos no livro e fornece uma biblioteca C ++ gratuita que pode ser baixada. , chamado Loki, criado pelo autor. O Loki fornece funcionalidade pronta para uso para praticamente qualquer projeto C ++.

1.4 O Benefício dos Modelos

Modelos são bons candidatos para lidar com comportamentos combinatórios porque eles geram código em tempo de compilação com base nos tipos fornecidos pelo usuário.
Modelos de classe são personalizáveis de maneiras não suportadas por classes regulares. Se você quiser implementar um caso especial, poderá especializar qualquer função de membro de um modelo de classe para uma instanciação específica do modelo de classe. Por exemplo, se o modelo for SmartPtr<T>,   você pode especializar qualquer função de membro para, digamos,SmartPtr<Widget>Isso oferece uma boa granularidade ao personalizar o comportamento.

Além disso, para modelos de classes com vários parâmetros, você pode usar a especialização parcial do modelo (como você verá no Capítulo 2). A especialização de modelo parcial oferece a capacidade de especializar um modelo de classe apenas para alguns de seus argumentos. Por exemplo, dada a definição  template <class T, class U> class SmartPtr { ... }; você pode se especializar SmartPtr<T, U> for Widget e qualquer outro tipo usando a seguinte sintaxe:template <class U> class SmartPtr<Widget, U> { ... };
A natureza inata do tempo de compilação e combinatória dos modelos os torna muito atraentes para a criação de peças de design. Assim que você tenta implementar tais projetos, você se depara com vários problemas que não são óbvios:
1. Você não pode especializar estrutura. Usando modelos sozinho, você não pode especializar a estrutura de uma classe (seus membros de dados). Você pode especializar apenas funções. 2. A especialização das funções-membro não é escalável. Você pode especializar qualquer função de membro de um modelo de classe com um parâmetro de modelo, mas não pode especializar funções de membro individuais para modelos com vários parâmetros de modelo. Por exemplo:template <class T> class Widget {    void Fun() { .. generic implementation ... } }; // OK: specialization of a member function of Widget template <> Widget<char>::Fun() {    ... specialized implementation ... } template <class T, class U> class Gadget {    void Fun() { .. generic implementation ... } }; // Error! Cannot partially specialize a member class of Gadget template <class U> void Gadget<char, U>::Fun() {    ... specialized implementation ... }
O escritor da biblioteca não pode fornecer vários valores padrão. Na melhor das hipóteses, um implementador de modelo de classe pode fornecer uma única implementação padrão para cada função de membro. Você não pode fornecer vários padrões para uma função de membro de modelo.
Agora compare a lista de desvantagens de herança múltipla com a lista de desvantagens de modelos. Curiosamente, herança múltipla e modelos promovem trade-offs complementares. Múltipla herança tem escassa mecânica; modelos têm mecânicas ricas. Múltipla herança perde informação de tipo, que
abunda em modelos. A especialização de modelos não é dimensionável, mas escalas de herança múltipla são muito boas. Você pode fornecer apenas um padrão para uma função de membro de modelo, mas pode gravar um número ilimitado de classes base.
Essa análise sugere que uma combinação de modelos e herança múltipla poderia gerar um dispositivo muito flexível, apropriado para criar bibliotecas de elementos de design
.methods:



Postagens mais visitadas