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

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

Atribuição de Responsabilidades em Projeto OO

Apresentações semelhantes


Apresentação em tema: "Atribuição de Responsabilidades em Projeto OO"— Transcrição da apresentação:

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

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! 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 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 Como atribuir Responsabilidades?
Heurísticas: Distribuir igualmente a inteligência do sistema; Manter o comportamento junto das informações relacionadas ao mesmo; Manter informações sobre um elemento em um único local; Compartilhar responsabilidade entre objetos relacionados.

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

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

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

8 Registro de Responsabilidades: Cartões CRC
Indexados por Classe; 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 Registro de Responsabilidades: Cartões CRC
Formato: Obs.: uma Classe por cartão!! Classe: Responsabilidade Colaboração

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 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) Creator (Criador) Controller (Controlador) High Cohesion (Coesão Alta) Low Coupling (Acoplamento Baixo)

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 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 Controller - Controlador
Atribuir a responsabilidade do tratamento de um Evento do Sistema a uma classe que representa uma das seguintes escolhas: Representa todo o sistema (Controlador Fachada). Representa todo o negócio ou organização (Controlador Fachada). Representa algo do mundo real que é ativo (por exemplo, o papel de uma pessoa) e que pode estar envolvido na tarefa (Controlador do Papel ). 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 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"

Apresentações semelhantes


Anúncios Google