A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Design Patterns Projeto de Sistemas de Software Leandra Mara da Silva.

Apresentações semelhantes


Apresentação em tema: "Design Patterns Projeto de Sistemas de Software Leandra Mara da Silva."— Transcrição da apresentação:

1 Design Patterns Projeto de Sistemas de Software Leandra Mara da Silva

2 © LES/PUC-Rio Motivação Aprimorar conhecimentos sobre Projeto de Sistemas de Software, realizando um estudo incremental dos Padrões de Projeto apresentados em [GoF]. Palavras-chave: Engenharia de Software, Projeto de Sistemas de Software, Padrões de Projeto.

3 Padrão State

4 © LES/PUC-Rio State Classificação –Comportamental de Objeto Também conhecido como: –Objects for States Propósito –Permitir a um objeto alterar o seu comportamento quando o seu estado interno mudar. O objeto parecerá ter mudado de classe.

5 © LES/PUC-Rio State Motivação Exemplo de Problema: –Um objeto responde de maneira distinta dependendo do seu estado

6 © LES/PUC-Rio State Exemplo de Solução: –Conexão possui um objeto que representa o seu estado e que executa as tarefas dependentes de estado (polimorfismo).

7 © LES/PUC-Rio State Aplicabilidade –O comportamento de um objeto depende do seu estado que é alterado em tempo de execução –Operações de um objeto possuem condicionais grandes, de várias alternativas (sintoma do caso anterior). Frequentemente, muitas operações irão conter essa mesma estrutura condicional. Estados são usualmente representados por uma ou mais constantes O State coloca cada ramo de comando condicional em uma classe separada, tratando os estados dos objetos como objetos propriamente ditos

8 © LES/PUC-Rio State Estrutura Questão: quem define as transições de estado?

9 © LES/PUC-Rio State Participantes –Context define a interface de interesse para os clientes mantém uma instância de uma subclasse ConcreteState que define o estado corrente –State define uma interface para encapsulamento associado com um determinado estado do Context –ConcreteState subclasses cada subclasse implementa um comportamento associado com um estado do Context

10 © LES/PUC-Rio State Colaborações –Context delega solicitações específicas de estados para o objeto corrente ConcreteState –Um contexto pode passar a si mesmo como um argumento para o objeto State que trata a solicitação. Isso permite ao objeto State acessar o contexto, se necessário –Context é a interface primária para os clientes. Os clientes não tem que lidar com objetos State diretamente –Tanto Context quanto as subclasses de ConcreteState podem decidir qual estado sucede outro

11 © LES/PUC-Rio State Exemplo de Código –Situação: usuário de biblioteca quer pegar empréstimo de livros. Dependendo do seu estado, o usuário pode ou não pegar livros –Classes Envolvidas: UsuarioContexto, UsuarioState, UsuarioSemEmprestimo, UsuarioComEmprestimo, UsuarioEmDebido

12 © LES/PUC-Rio State – Exemplo de Código

13 © LES/PUC-Rio State – Exemplo de Código

14 © LES/PUC-Rio State – Exemplo de Código

15 © LES/PUC-Rio State –Outros casos exemplos: Estados de seleção no Paint (lápis selecionado, balde selecionado) Estados de um projeto em um sistema de gerenciamento de projetos

16 © LES/PUC-Rio State Conseqüências –Separa comportamento dependente de estado. pró : Novos estados/comportamentos podem ser facilmente adicionados e ganho em legibilidade. A intenção sobre as transições de estado fica mais clara Contra: aumento no número de classes; menos compacto –Transição de estados é explícita –Objetos States podem ser compartilhados Quando não possuem variáves de instância podem ser compartilhados essencialmente como flyweights, sem estado intrínseco, somente comportamento

17 Fim!!


Carregar ppt "Design Patterns Projeto de Sistemas de Software Leandra Mara da Silva."

Apresentações semelhantes


Anúncios Google