Baixe o app para aproveitar ainda mais
Prévia do material em texto
Projeto por contrato O contrato é uma metodologia de design e implementação de aplicativos e componentes popularizada pela linguagem de programação Eiffel. Consiste em considerar os elementos de design como participantes de uma relação semelhante ao contrato comercial. Assim, os componentes podem ser projetados assumindo que certas condições de entrada (pré-condições) serão atendidas, enquanto certas condições de saída (pós-condições) devem ser garantidas, bem como a invariante de classe (propriedades que permanecem invariáveis apesar do processamento executado pelo componente). Esta metodologia promete: • Uma melhor compreensão da programação orientada a objetos. Isso porque o protótipo de um recurso de uma classe também faz parte do contrato que ela oferece. Por raciocínios desse tipo, por exemplo, o comportamento covariante dos tipos de retorno dos métodos de Eiffel é justificado. • Menos erros no código graças a uma melhor representação das especificações. • Um sistema eficaz para detectar erros. • Uma maneira conveniente de documentar seu código ao mesmo tempo em que está sendo programado. • Aninhamento eficaz com mecanismos de herança e reutilização. • Uma forma eficaz de encapsulamento que evita o acesso a outras propriedades e métodos. • Um agrupamento de operações para o mesmo contexto. Se falamos de uma entidade A da qual podemos instanciar dois objetos B e C que têm contextos diferentes relacionados à entidade A, com o contrato não expomos o negócio que o objeto B tem a oferecer com o de C. Um exemplo A = Banco , B = receitas bancárias e C = pagamentos de contas. As condições do contrato nunca devem ser violadas durante a execução de um programa sem bugs. Portanto, os contratos são normalmente verificados apenas no modo de depuração durante o desenvolvimento do software. Mais tarde, na liberação, as verificações de contrato são desativadas para maximizar o desempenho. Em muitas linguagens de programação, os contratos são implementados com assert. Asserts são compilados por padrão no modo de lançamento em C / C ++, e similarmente desativados em C # e Java. Lançar o interpretador Python com "-O" (para "otimizar") como um argumento fará com que o gerador de código Python não emita nenhum bytecode para declarações. Isso elimina efetivamente os custos de tempo de execução de declarações no código de produção - independentemente do número e despesas computacionais de declarações usadas no desenvolvimento - uma vez que nenhuma dessas instruções será incluída na produção pelo compilador.
Compartilhar