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

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

Atribuição de Responsabilidades em Projeto OO Professora: Aline Vasconcelos Cefet Campos

Apresentações semelhantes


Apresentação em tema: "Atribuição de Responsabilidades em Projeto OO Professora: Aline Vasconcelos Cefet Campos"— Transcrição da apresentação:

1 Atribuição de Responsabilidades em Projeto OO Professora: Aline Vasconcelos Cefet Campos

2 2 Recordando: o que são Responsabilidades? O que é Responsabilidade? –Um contrato ou obrigação de um tipo ou classe. Responsabilidades definem o comportamento do objeto! Responsabilidades definem o comportamento do objeto! Há basicamente dois tipos de Responsabilidades: –Fazer O objeto faz algo ele próprio. O objeto inicia ações em outros objetos. O objeto controla e coordena atividades em outros objetos. –Conhecer O objeto conhece e gerencia os seus dados privados encapsulados. O objeto conhece objetos relacionados. O objeto conhece coisas que ele pode derivar ou calcular.

3 3 Como identificar Responsabilidades? Especificação de Requisitos do Sistema: –Identificando verbos que expressem ações no sistema. –Avaliando as responsabilidades gerais do sistema. Lista das Classes Identificadas: –Avaliando responsabilidades das classes. –Avaliando responsabilidades necessárias para que as classes manipulem os seus atributos.

4 4 Como atribuir Responsabilidades? Heurísticas: oDistribuir igualmente a inteligência do sistema; oManter o comportamento junto das informações relacionadas ao mesmo; oManter informações sobre um elemento em um único local; oCompartilhar responsabilidade entre objetos relacionados.

5 5 Compartilhar Responsabilidades entre Objetos Relacionados Herança (é um tipo de): oExistência de atributos comuns sugere a existência de responsabilidades comuns. Agregação (todo-parte): oRelacionamentos todo-parte podem implicar na definição de responsabilidades divididas pelo todo para suas partes.

6 6 Dificuldades Comuns ao se Atribuir Responsabilidades Ausência de Classes: oResponsabilidades que não podem ser atribuídas facilmente a alguma classe existente. Atribuição Arbitrária: oVárias classes poderiam assumir uma determinada responsabilidade.

7 7 Cartões CRC Registro de Responsabilidades: Cartões CRC Cartões CRC: Class-Responsibility-Collaborator Cards O que são cartões CRC? oCartões para registro de responsabilidades de classes. oIncluem: Classe, Responsabilidade, Colaborações. oColaborações = objetos com os quais a classe colabora para satisfazer as suas responsabilidades. oRepresenta uma técnica para projeto orientado a objeto. oRepresenta a realidade como um sistema de agentes colaboradores.

8 8 Cartões CRC Registro de Responsabilidades: Cartões CRC Cartões CRC: Indexados por Classe; Registro Registro das responsabilidades e colaborações; Tomada de Decisão: Que Classe deve assumir uma determinada Responsabilidade??? Cartões CRC são desenvolvidos em uma seção com técnicos, onde as pessoas representam papéis correspondentes às classes do sistema (Role Playing!).

9 9 Registro de Responsabilidades: Cartões CRC Formato: Obs.: uma Classe por cartão!! Classe: ResponsabilidadeColaboração

10 10 Registro de Responsabilidades: Cartões CRC Deve-se registrar para a classe cada uma das responsabilidades atribuídas a ela. As responsabilidades devem ser descritas de forma breve. Uma classe não deve ter muitas responsabilidades. Não se deve registrar responsabilidades já presentes nas superclasses. –Obs.: Os cartões CRC para superclasses devem conter o nome da classe e os nomes das suas subclasses. Se a classe possuir superclasses, elas também devem ser registradas abaixo do nome da classe.

11 11 Aplicando os Padrões GRASP do LARMAN para Atribuição de Responsabilidades Padrões GRASP ajudam a responder: Que Classe deve assumir uma determinada Responsabilidade??? GRASP: Padrões para Atribuição de Responsabilidades (LARMAN, 2000): Expert (Especialista)Expert (Especialista) Creator (Criador)Creator (Criador) Controller (Controlador)Controller (Controlador) High Cohesion (Coesão Alta)High Cohesion (Coesão Alta) Low Coupling (Acoplamento Baixo)Low Coupling (Acoplamento Baixo)

12 12 Expert: Especialista Qual é o Princípio mais básico, segundo o qual as responsabilidades são atribuídas em projetos orientados a objetos??? –Atribuir responsabilidades ao especialista da informação, ou seja, à classe que tem a informação necessária para satisfazer a responsabilidade. –Em outras palavras, atribua as operações às Classes que possuem a maior parte dos atributos que serão necessários naquela operação.

13 13 Creator - Criador Atribua à classe B a responsabilidade de criar uma instância da classe A se uma das seguintes condições for verdadeira: –B agrega objetos A –B contém objetos A –B registra instâncias de objetos A –B usa de maneira muito próxima objetos A –B tem todos os dados de inicialização que serão passados para objetos A, quando de sua criação (assim, B é um Expert com relação à criação de A)

14 14 Controller - Controlador Evento do Sistema Atribuir a responsabilidade do tratamento de um Evento do Sistema a uma classe que representa uma das seguintes escolhas: Controlador Fachada –Representa todo o sistema (Controlador Fachada). –Representa todo o negócio ou organização (Controlador Fachada). Controlador do Papel –Representa algo do mundo real que é ativo (por exemplo, o papel de uma pessoa) e que pode estar envolvido na tarefa (Controlador do Papel ). Controlador do Caso de Uso. –Representa um tratador artificial de todos os eventos de sistema de um caso de uso, geralmente chamado Controlador do Caso de Uso. Observação: classes de interface (como janelas) não deveriam executar tarefas relacionadas à lógica do negócio. Portanto, estas classes não deveriam tratar eventos de sistema. Na realidade, elas deveriam receber estes eventos e os delegar a um controlador.

15 15 Controller – Controlador Um Controlador deve delegar a outros objetos o trabalho que precisa ser feito, enquanto ele coordena a atividade. Controlador de Caso de Uso – Vantagem: –Mantém informações sobre o estado do caso de uso, identificando, por exemplo, eventos fora de seqüência. Evite Controladores muito Inchados!!!! Eles conduzem a uma Classe com Alto Acoplamento e Baixa Coesão!


Carregar ppt "Atribuição de Responsabilidades em Projeto OO Professora: Aline Vasconcelos Cefet Campos"

Apresentações semelhantes


Anúncios Google