Buscar

Arquitetura de Software - Atividade 3

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

ARQUITETURA DE SOFTWARE – ATIVIDADE 3
Padrões de projeto de software são recursos utilizados para melhorar a qualidade dos projetos e têm o objetivo de fornecer boas práticas para problemas encontrados em diversas atividades no desenvolvimento de softwares. Existem algumas topologias que os definem, e os processos de criação dos objetos são abstraídos dos padrões de projetos. O objetivo, portanto, é que os padrões façam com que o sistema se torne independente da mesma forma como são os seus objetos. Nesse contexto, disserte como cada um dos 4 grupos de padrões pode modificar a arquitetura de software.
Padrões de projeto são soluções prontas para problemas repetitivos; em projetos de software os padrões de projeto utilizam características da Orientação a Objetos, como herança e polimorfismo, além da reescrita de códigos para facilitar o projeto. Os Principais autores que norteiam os padrões de projeto são Erich Gamma, Richard Helm, Ralph Johnson e John Vlissides, mais conhecidos como Gang of Four (GoF). Em seu Livro “Design Patterns: Elements of Reusable Object-Oriented Software” (1994), os padrões GoF foram classificados de acordo com dois critérios: O primeiro critério, denominado propósito, reflete o que o padrão faz. Os padrões podem ter propósito criacional, estrutural ou comportamental. Os padrões criacionais abstraem o processo de criação dos objetos. Os estruturais lidam com a composição de classes ou objetos. Já os comportamentais caracterizam as maneiras pelas quais classes ou objetos interagem e distribuem responsabilidades. O segundo critério, denominado escopo, especifica se o padrão é aplicável principalmente às classes ou aos objetos. Os padrões de classe lidam com o relacionamento entre classes e suas subclasses. Enquanto os padrões de objetos lidam com as relações entre objetos, que podem ser alteradas em tempo de execução e por isso são mais dinâmicos.
· Padrões de Criação: como o próprio nome já diz, são padrões responsáveis pela forma como os objetos serão criados no projeto. Assim ele facilita junto à arquitetura em quando e como serão criados os objetos necessários ao projeto, reduzindo assim a complexidade do projeto.
· Padrões Estruturais: se preocupam como a forma como as classes e objetos são compostos para formar estruturas maiores e mais complexas, utilizando-se da reescrita e herança para que não aumente muito o código-fonte, facilitando o planejamento do projeto.
· Padrões Comportamentais: são responsáveis pelo comportamento dos objetos na comunicação sem que esses objetos conheçam os outros que estão se comunicando, utilizando encapsulamento e herança, faz com que a equipe que está desenvolvendo o software se preocupe somente com a forma que eles se comunicam, proporcionando mais tempo para concentração em outros detalhes.
Já no critério escopo, temos por exemplo o padrão Strategy, que define uma maneira de encapsular uma família de algoritmos, também conhecidos por estratégias, e os torna intercambiáveis. Isto permite que o algoritmo varie independentemente dos Clientes que o utilizam. Como exemplo, implementaremos uma Calculadora e suas quatro operações básicas: adição, subtração, multiplicação e divisão. Para tal, começaremos utilizando o princípio de programar para interface, criando a interface “Operacao”. O uso desta interface nos proporcionará a possibilidade de alternar dinamicamente entre as estratégias através do polimorfismo. Depois de definida a interface, é preciso identificar o que tende a variar e separar do que é estático, ou seja, definir as estratégias e fazê-las implementar a interface que criamos, sendo que cada estratégia deve ser implementada em uma classe separada. Desta maneira, as estratégias poderão ser facilmente permutadas.

Continue navegando

Outros materiais