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

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

Projeto de Sistemas de Software Leandra Mara da Silva

Apresentações semelhantes


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

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

2 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. © LES/PUC-Rio

3 Padrão State

4 State Classificação Também conhecido como: Propósito
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. © LES/PUC-Rio

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

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

7 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 Estados são usualmente representados por uma ou mais constantes enumeradas Frequentemente, muitas operações irão conter essa mesma estrutura condicional State coloca cada ramo do comando condicional em uma classe separada, tratando os estados como objetos O padrão State coloca cada ramo do comando condicional em uma classe separada. Isto lhe permite tratar o estdao do objeto como um objeto propriamente dito, que pode variar independentemente de outros objetos. © LES/PUC-Rio

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

9 State Participantes Context State ConcreteState subclasses
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 Define uma interface comum as subclasses © LES/PUC-Rio

10 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 O padrão State também prevê que cada estado pode ser responsável por determinar quem é o próximo estado, de forma que o controle do fluxo da aplicação se torna mais fácil de entender - se quiseres saber quem sucede o EstadoLogin, vá para a classe EstadoLogin e leia o método "proximo()". Bem mais fácil que ler um switch monstruoso de 800 linhas. © LES/PUC-Rio

11 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 Posso citar outros exs: 1. caso do projeto em elaboração, em andamento ou concluído. Método associar publicação. 2. caso do click no paint que se o balde estver selecionado o método onclick se comporta para pintar, se o lápis estiver se comporta para desenahr, etc © LES/PUC-Rio

12 State – Exemplo de Código
Posso citar outros exs: 1. caso do projeto em elaboração, em andamento ou concluído. Método associar publicação. 2. caso do click no paint que se o balde estver selecionado o método onclick se comporta para pintar, se o lápis estiver se comporta para desenahr, etc © LES/PUC-Rio

13 State – Exemplo de Código
Posso citar outros exs: 1. caso do projeto em elaboração, em andamento ou concluído. Método associar publicação. 2. caso do click no paint que se o balde estver selecionado o método onclick se comporta para pintar, se o lápis estiver se comporta para desenahr, etc © LES/PUC-Rio

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

15 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 Objetos state são frequentemente Singletons © LES/PUC-Rio

16 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 Objetos state são frequentemente Singletons © LES/PUC-Rio

17 Fim!!


Carregar ppt "Projeto de Sistemas de Software Leandra Mara da Silva"

Apresentações semelhantes


Anúncios Google