Ádamo Santana adamo@ufpa.br. Conceito: Classe ◦ Definição de um conjunto de objetos que...

Post on 07-Apr-2016

216 views 1 download

Transcript of Ádamo Santana adamo@ufpa.br. Conceito: Classe ◦ Definição de um conjunto de objetos que...

Ádamo Santanaadamo@ufpa.br

Conceito: Classe◦ Definição de um conjunto de objetos que

compartilham estrutura e comportamento comuns◦ Objetos são criados a partir das classes

Conceito: Objeto◦ Um objeto é um elemento da classe◦ Objeto deve pertencer a somente uma classe◦ É o elemento que efetivamente armazena as

informações de um programa◦ Objetos trocam mensagens entre si

Classe

Objetos

EntidadeObservada

Entidade Representada

Avião

ABSTRAÇÃOREPRESENTAÇÃO

Operação mentalpara observar umdomínio e capturarsua estrutura

Refere-se àsconvenções derepresentação

Notação gráfica,linguagem de programação

Estudantede

Graduação

José Maria

CLASSIFICAÇÃO

CATEGORIA

INDIVÍDUO(Objeto)

Classificação - Instanciação

Estudantede

Graduação

José Maria

CATEGORIA

INDIVÍDUO(Objeto)

Classificação - Instanciação

INSTANCIAÇÃO

Generalização (Especialização) a partir de duas categorias abstrai-se uma

categoria mais genérica sub-categorias satisfazem todas as

propriedades das categorias das quais elas constituem especializações

deve existir pelo menos uma propriedade que distingue duas categorias especializadas

Estudante

GENERALIZAÇÃO

ESPECIALIZAÇÃO(herança)

CATEGORIA

CATEGORIA

Generalização - Especialização

Estudantede

Graduação

Mamífero

GENERALIZAÇÃO

ESPECIALIZAÇÃO(herança)

CATEGORIA

CATEGORIA

Baleia

Atributos•sangue quente•vertebrado•vivíparo

Atributos•Habitat: mar•Tempo médio devida: 200 anos

Generalização - Especialização

Agregação (Decomposição) Associação entre 2 classes representa

um relacionamento todo-parte entre o agregado (todo) e um componente (parte)

A idéia é representar o relacionamento “tem um...”;

EmpresaCATEGORIA

INDIVÍDUO(Objeto)

Agregação - Decomposição

DECOMPOSIÇÃO

Departamento

AGREGAÇÃO1

*

Agregação - Decomposição

DECOMPOSIÇÃO

AGREGAÇÃO

Explicar por que o conhecimento da UML é importante para as organizações

Apresentar os conceitos básicos da UML

Apresentar diagramas utilizados e seus componentes

Diversos métodos e técnicas OO, com muitos aspectos em comum, porém utilizando notações distintas

Inconvenientes para a aprendizagem, aplicação, construção e uso de ferramentas, etc

Luta entre distintos enfoques

Diferentes notações para o mesmo conceito

Ex: SHLAER & MELLOR (1989 e 1991); COAD & YOURDON (1991); COAD & NICOLA (1993); COAD et al. (1995); WIRFS-BROCK et al. (1990); BOOCH (1994 e 1995); RUMBAUGH et al. (1991 e 1996); MARTIN & ODELL (1994 e 1995); JACOBSON (1994 e 1995)

Necessidade de uma padronização

Padrão de projeto para especificar, documentar aspectos de um sistema sob o paradigma OO

Surgiu como união dos modelos:◦ Object-modeling technique - OMT (James

Rumbaugh) ◦ Métodos de Booch (Grady Booch)◦ Object-oriented software engineering - OOSE (Ivar

Jacobson)

Desenvolver o modelo de uma aplicação antes de construí-la, é tão essencial quanto ter uma planta para a construção de uma casa

Bons modelos são essenciais para a comunicação entre os times de projetos e para assegurar a beleza arquitetural

Dificuldade com o aumento da complexidade dos sistemas

UML é apenas uma parte de um método para desenvolvimento de software◦ Análise de requisitos◦ Análise ◦ Projeto◦ Implementação◦ Teste

Modelagem de forma padronizada Documentação e visualização gráfica Composta por diversos diagramas de

modelagem Destina-se a projetar sistemas complexos

de software, como por exemplo:◦ Sistemas que manipulam as grandes bases: INPE

sobre desmatamento, Adepará sobre pecuária, Sagri sobre agricultura

◦ Transportes◦ Defesa/ espaço aéreo◦ ...

A UML define três tipos básicos de construção:

Elementos: abstrações de um modelo Relacionamentos: definem como os itens se

relacionam Diagramas: agrupam coleções de itens

De estrutura (estático) De comportamento (dinâmico) De agrupamento (organização) De anotação (explicativo)

Classes Interface Componentes Nós Classes Ativas

Classe

Interface◦ Descreve o comportamento visível externamente

da classe◦ A interface sempre é atachada a classe ou ao

componente que realiza a interface

Componentes◦ Partes físicas de um sistema, cujo comportamento

é definido pelas suas interfaces◦ O trabalho interno dos componentes deve ser

invisível e seu uso ser independente de plataforma.

Nós◦ Peça física de equipamento (hardware),

representa um recurso computacional do sistema

<nome>

Classes ativas◦ Classes cujos objetos possuem seus próprios

fluxos de controle (“threads”)◦ Elementos cujo comportamento (tempo de

execução) é concorrente com o de outros elementos

De estrutura De comportamento De agrupamento De anotação

Modelar o aspecto dinâmico do modelo◦ Caso de uso◦ Ator◦ Interação◦ Máquina de Estado

Caso de Uso◦ Ação realizada pelo sistema em relação a

um certo ator

Ator◦ Agente que vai interagir com o sistema

Processar venda

Interação◦ Troca de mensagens entre objetos◦ Modela o comportamento de um conjunto de

objetos ◦ Ordem temporal e sequência das operações

<nome_da_operação>

Máquinas de estado◦ Especifica o ciclo de execução de um objeto ou

interação durante seu tempo de vida em resposta aos eventos, juntamente com suas respostas a estes eventos

◦ Estado

◦ Transição

<nome>

De estrutura De comportamento De agrupamento De anotação

Pacotes◦ São as partes organizacionais dos modelos UML◦ Organização do elementos em grupos◦ Puramente conceitual

<elementos>

<nome>

De estrutura De comportamento De agrupamento De anotação

Notas◦ Comentários do modelo UML◦ Observações sobre elementos do modelo

<comentário>

A UML define três tipos básicos de construção:◦ Elementos◦ Relacionamentos◦ Diagramas

Características de relação e dependência entre os modelos UML

Associação Herança Dependência

Associação◦ A associação representa uma ligação entre dois

elementos◦ Expressas como uma linha sólida, de um

elemento ao outro, e com um verbo (ou substantivo) que qualifique a associação

◦ Podem expressar a cardinalidade e o sentido da associação

Especificam quantas instâncias de uma classe podem participar da associação

Cardinalidade Significado0..1 Zero ou um1 Somente 1

0..* Maior ou igual a zero* Maior ou igual a zero

1..* Maior ou igual a um1..20(m..n) De 1 até 20 (m a n), inclusive

Exemplo:

Uma classe financeira esta associada a 0 ou mais vendas da classe venda através da associação financiamento. E a classe venda está associada a no máximo um elemento da classe vendedor através da associação venda.

Financeiracodigonome

Vendadatahora

VendedornúmeroSenhanivel autorizacao

venda

0..n 1financiamento

0..1 0..n

Agregação

Composição

Características de relação e dependência entre os modelos UML

Associação Herança Dependência

Generalização (Herança)◦ Os elementos mais específicos possuem todas as

características do seu elemento mais geral

Características de relação e dependência entre os modelos UML

Associação Herança Dependência

Dependência◦ Conexão semântica entre dois elementos, um

independente e outro dependente◦ Qualquer alteração no elemento independente

pode afetar o elemento dependente

A UML define três tipos básicos de construção:◦ Elementos◦ Relacionamentos◦ Diagramas

Uma representação gráfica de uma coleção de elementos de um modelo

Um mesmo item pode aparecer em todos os diagramas ou em apenas alguns

Diagrama de Casos de Uso;

Diagrama de Classes; Diagrama de Objetos; Diagrama de

Estrutura Composta; Diagrama de

Sequência; Diagrama de

Comunicação;

Diagrama de Transição de Estados;

Diagrama de Atividades; Diagrama de

Componentes; Diagrama de

Desenvolvimento; Diagrama de Pacotes; Diagrama de Interface

Geral; Diagrama de Tempo; ...

Diagrama de classes Diagrama de objetos Diagrama de caso de uso (use case) Diagrama de sequência Diagrama de colaboração ou comunicação Diagrama de transição de estados Diagrama de atividades Diagrama de componentes Diagrama de desenvolvimento

Oferece uma visão estática da estrutura do sistema Exibe as classes do sistema e o grau do

relacionamentos entre elas

Um diagrama de classes pode oferecer três perspectivas, cada uma para um tipo de observador diferente◦ Conceitual◦ Especificação◦ Implementação

Conceitual (exemplo) ◦ Representa os conceitos do domínio em estudo◦ Perspectiva destinada ao cliente

Especificação (exemplo) ◦ Tem foco nas principais interfaces da arquitetura, nos principais

métodos, e não como eles irão ser implementados ◦ Perspectiva destinada as pessoas que não precisam saber

detalhes de desenvolvimento, tais como gerentes de projeto

Implementação - a mais utilizada de todas (exemplo) ◦ Aborda vários detalhes de implementação, tais como

navegabilidade, tipo dos atributos, etc◦ Perspectiva destinada ao time de desenvolvimento

Muito similar ao Diagrama de Classes e utiliza quase a mesma notação. “Retrato” do diagrama de classes

Este diagrama mostra uma “fotografia” dos objetos existentes na execução do sistema

Serve para visualizar os relacionamentos e interações entre os atores e os casos de uso do sistema

Especificam e documentam o comportamento de um elemento para se entender como este é utilizado

Exemplo:

Exemplo 2:

Mostra a interação entre os objetos da aplicação arranjados numa linha do tempo

Útil para se levantar quais são os envolvidos no fluxo e definir a interface de alguns objetos

Mostrar como as mensagens entre os objetos são trocadas no decorrer do tempo para a realização de uma operação

Semelhante ao diagrama de sequência Pode-se visualizar os relacionamentos entre

os objetos

Apresenta os estados possíveis de uma classe do modelo, e que eventos do sistema causam essas mudanças de estado (ciclo de vida)

Mostra o fluxo das atividades do sistema

Explora o lado funcional, expondo a relação entre seus componentes e suas dependências

Usado para modelar a visão de implementação estática de um sistema através da captura de dependências entre os diferentes tipos de componentes

Usos comuns:◦ Modelagem do código fonte ◦ Modelagem de executáveis◦ Modelagem de bancos de dados físicos

Mostra o lado funcional, exibindo a arquitetura física do hardware e do software do sistema

Um nó representa um recurso de processamento, tal como um computador. Nós podem conter instâncias de componentes, as quais podem conter objetos

70

Linguagem de Modelagem Unificada (UML) Padrão de projeto para especificar e

documentar aspectos da modelagem de um sistema

Criado pela necessidade de uma padronização

Utilizam para sua construção: elementos, relacionamentos e diagramas

ElementosCaracterizam a forma que os objetos serão

representados◦ De estrutura: Classes, Interface, Componentes,

Nós◦ De comportamento: Caso de uso, Interação,

Máquina de Estado ◦ De agrupamento: Pacotes◦ De anotação: Notas

RelacionamentosCaracterísticas de relação e dependência entre os

modelos UML◦ Associação ◦ Herança ◦ Dependência

DiagramasUma representação gráfica de uma coleção de

elementos de um modelo◦ Diagrama de classes◦ Diagrama de objetos◦ Diagrama de caso de uso◦ Diagrama de sequência◦ Diagrama de colaboração◦ Diagrama de transição de estados◦ Diagrama de atividades◦ Diagrama de componentes◦ Diagrama de desenvolvimento

Linguagem de modelagem de sistemas mais difundida no mercado para desenvolvimento de software

Compatibilidade com orientação à objetos Extremamente importante ter uma representação

visual de seu sistema antes que ele entre na etapa de implementação

UML pode não só facilitar e agilizar a modelagem de seu sistema de informação, como também cria uma facilidade de comunicação entre os gestores e os analistas de sistemas