Vous êtes sur la page 1sur 16

12/3/2008

Tpicos em Engenharia de Computao


Introduo / Reviso UML e POO (JAVA)
Prof. Ivan Prof. Zagari

UML
Linguagem Unificada. No metodologia, processo ou mtodo. Verso atual 2.0 3 categorias de Diagramas
Estruturais (Estticos)
De Classes; de Objetos; de Componentes; de Distribuio (Deployment)

Comportamentais (Dinmicos)
Use Case; Seqncia; Colaborao (comunicao UML 2.0); Atividades; Estados;

Gesto de Modelos
De Pacotes; de Sub-Sistemas;

12/3/2008

UML vs. Fases Eng. Software


Anlise
1.

Projeto
Classes representam ambos Domnios Problema e Soluo (entity,
boundary, control)

Diagramas Estruturais
(Estticos)

2.

Classes 1. representam o do Domnio do Problema (entity) 2. Pacotes para facilitar compreenso do 3. todo (dividir complexidade)

4.

Uso de Design Patterns e Frameworks Pacotes como critrios para sub-diviso e compreenso de frameworks, sub-sistemas fsicos e componentes Sub-Sistemas
Componentes
Pacotes

UML vs. Fases Eng. Software


Anlise
5.

Projeto
Classes, Herana de funcionalidades, associaes mais complexas, tipos, hierarquia de tipos, classes abstratas, interfaces (no GUI) Diagrama de Classes de Viso de Implementao Coordenados e Modelados pelo arquiteto de aplicaes (projetista). Incorporam-se informaes de design.

Diagramas Estruturais
(Estticos)

6.

7.

5. Classes, herana de funcionalidade, associaes simples Diagrama de 6. Classes de Viso Essencial Coordenados e 7. Modelados pelo Analista de Sistemas

12/3/2008

UML vs. Fases Eng. Software


Anlise
1.

Projeto
Realizao de Casos de Uso (Use case realization). Casos de uso com todos os detalhes de design Diagrama de seqncias expressam seqncia de mensagens (mtodos) entre objetos e interfaces (no GUI) que realizam (do percepo de como a soluo) o caso de uso

Diagramas Comportamentais
(Dinmicos)

2.

Casos de Uso 1. Comportamento desejado (sem tecnologia) Diagrama de seqncias 2. expressam seqncia de mensagens (eventos entre objetos de anlise) que modelam qual o comportamento desejado.

UML vs. Fases Eng. Software


Anlise
3.

Projeto
Diagramas de atividades modelam a soluo algortmica dos mtodos das classes Diagramas de atividades podem detalhar os estados associados ao comportamento da soluo Diagrama de Estados para objetos tpicos da aplicao/soluo (Forms, ODBC, etc..)

Diagramas Comportamentais
(Dinmicos)

4.

Diagramas de 3. Atividades modelam o workflow dos processos de 4. negcios Diagramas de Estados focados no comportamento geral (estados) dos objetos no contexto 5. do problema

12/3/2008

Reviso de UML - Java


Classe
Atributos Operaes

Classe Interna Inner Class

Especificadores de Acesso
+ Pblico - Privado # Protegido

Reviso de UML - Java


Pacotes (Packages)
Agrupamento de Classes Relacionadas
Classes do Pacote Classes de outro Pacote Pode acessar No Pode acessar No Pode acessar Sub-Classes do Pacote Pode acessar Pode acessar No Pode acessar Sub-Classes de outro Pacote Pode acessar Pode acessar No Pode acessar

Publico Protegido Privado

Pode acessar Pode acessar No Pode acessar

12/3/2008

Reviso de UML - Java


Construtor
Construtor mtodo especial executado apenas uma vez, na hora da construo da instncia. Usado quando o objeto que aciona a construo do objeto possui os dados da instncia que se deseja criar e/ou para inicializar elementos internos ao objeto Construtores JAVA suportam sobrecarga (vrias implementaes), desde que cada um tenha assinaturas diferentes. Mtodos tambm podem ter sobrecarga...

Reviso de UML - Java


Acessor Methods getters & setters
Todo atributo um caracterstica da classe que se particulariza nas instncias Em uma classe deve ter um mtodo que permite recuperar o valor do atributo em uma dada instncia (getter) e outro para estabelecer um valor de atributo em uma dada instncia (setter) Outros mtodos (no acessors) operam sobre o objeto

12/3/2008

public class Conta {

Exemplo: Acessors, Construtor e demais mtodos

private int numero; float saldo;

Atributos

public Conta(int numero) { Construtor this.numero = numero; this.saldo = 0; } public void depositar(float valorDeposito) { this.saldo = this.saldo + valorDeposito; } public boolean sacar(float valorSaque) { if (this.saldo>=valorSaque) { this.saldo = this.saldo - valorSaque; return true; Demais } else return false; Mtodos } public float getSaldo() { Acessors return saldo; (getter e } public void setNumero(int numero) { setters) this.numero = numero; } public void setSaldo(float saldo) { this.saldo = saldo; } ...... }

Reviso de UML - Java


Comentrio (Nota) ncora (linha pontilhada, ligando um elemento UML com sua nota

Exemplo:
Mtodo save() lana excees usando objetos do pacote documentado na nota

12/3/2008

Reviso de UML - Java


Mtodos Abstratos
Mtodos sem corpo e implementao Esteretipo <<abstract>> e/ou nome em itlico

Classes Abstratas
Aqueles que tem, pelo menos, um mtodo abstrato; Esteretipo <<abstract>> e/ou nome em itlico No podem ser Instanciadas Permitem herana dos mtodos implementados e/ou mtodos abstratos

Reviso de UML - Java


Herana (Generalizao / Especializao)
Permite que caractersticas (atributos e operaes) de uma classe mais geral sejam herdadas por classe mais especficas. Herana de Mtodos
Permite que seja herdada a implementao de um mtodo, que pode ser modificada na classe especializada;

Herana de Mtodos Abstratos


Permite que seja herdada apenas a assinatura do mtodo. A implementao fica localizada Assinatura Mtodos: Nome + Parmetros + Tipo de Retorno

12/3/2008

Reviso de UML - Java


Herana (Generalizao / Especializao)
E S P E C I A L I Z A O G E N E R A L I Z A O

Reviso de UML - Java


Dependncia
Relao entre dois elementos UML (origem destino). Se houver mudana no alvo (destino), h potencialmente um impacto na fonte (origem). Vice Versa aplicvel se dependncia for bidirecional (EVITE! Pssima Prtica!!!!) Pode ser usado em diversos elementos UML: classes, pacotes, subsistemas, etc...

12/3/2008

Reviso de UML - Java


Dependncia
Classe6 oferece servios classe 5

Acoplamento entre componentes implementados

Algum(ns) elemento(s) do pacote1 provocam dependncia no pacote 0

Reviso de UML - Java


Associaes entre classes
Denota uma relao estrutural entre classes Multiplicidade
Denota o numero de instncias de uma classe envolvida na associao com outra classe

Navegabilidade (de A para B)


Denota que uma classe A contm a informao necessria para que a classe B seja alcanada

12/3/2008

Exemplo Herana / Associao

Herana Associao:
Com navegabilidade Multiplicidade: Uma instncia de acionador permite acesso a 0..N Instncias de Conta Corrente um sub-tipo de conta

acionador

Acionador
(from acionador)

Exemplo Classe Abstrata


Horista
(f rom f olha)

main() 1

0..* Funcionario
(from folha)

salarioHora : double horasTrabalhadas : double salarioBruto : double Horista() getHorasTrabalhadas() setHorasTrabalhadas() getSalarioHora() setSalarioHora() calcularSalario() toString()

nome : Logical View::java::lang::String pis : Logical View:: java::lang::String folha Funcionario() getNome() setNome() getPIS() setPIS() toString() calcularSalario()

Mensalista
(f rom f olh a)

Comissionado
(from folha)

salarioMensal : double descont oFaltas : double Mensali sta() getDes contoFalt as() setDes contoFalt as() getSalarioMensal() setSalarioMensal() calcularSalario() toS tring()

totalVendasBrut o : double perc entile : double Comi ssionado() getPercent ile() setPercent ile() getTotalVendasBruto() setTotalVendasBruto() calcularSalario() toString()

10

12/3/2008

Reviso de UML - Java

Classe que requisita o servio cliente Classe que prov o servio provedora (servidora) Existe uma dependncia direta (explcita) entre cliente e provedor Funciona, se servio provido apenas por 1 classe E se o mesmo servio for implementado (provido) por duas classes diferentes???

Reviso de UML - Java

Controle de qual classe deve ser instanciada caber ao cliente Cliente dever ter o controle de qual instncia deve ser chamada. Aumenta complexidade da classe cliente. Diminui a reusabilidade das classes

11

12/3/2008

Reviso de UML - Java


Interface
Descrevem um conjunto de operaes visveis (apenas a declarao/assinatura) que podem ser implementados por diversos objetos. Oferecem apenas parte do comportamento da operao (contrato), sem particularizar o mtodo que ser aplicado para sua implementao Interfaces descrevem servios (contrato) que podem ser implementados de diferentes maneiras, por objetos de contextos completamente diferentes No herana. Trata-se de uma realizao

Reviso de UML - Java


Representaes da Interfaces Esteretipo <<interface>> Icnica

12

12/3/2008

Reviso de UML - Java


Realizao
Relao entre um elemento UML que define um contrato a ser seguido e outro elemento realizador, que aceita o contrato estabelecido e define os detalhes e particularidades Representado na UML com uma seta de herana, porm pontilhada. Por linha e circulo (pirulito - lollypop) quando o contratado uma interface e o realizador (contratante) uma classe

Reviso de UML - Java

UseCase

UseCase-Realization

13

12/3/2008

Reviso de UML - Java

Classe cliente solicita servios interface Prov reusabilidade e Polimorfismo Cada classe provedora, implementa os servios do contrato (interface) sua maneira Classes provedoras podem ser de domnios e mesmo de pacotes diferentes

Exemplo Interface (Viso Cannica Lollypop)

14

12/3/2008

Exemplo Interface (Viso Estereotipada)

Exemplo Interface + Classe Abstrata

15

12/3/2008

Reviso de UML - Java


Associaes Avanadas Composio:
Classe A (agregadora, todo) contm a classeB (parte de). Vinculo indissocivel.

Agregao:
Classe A (agregadora, todo) contm a classeB (parte de), porm a vinculao pode se desfazer.

Reviso de UML - Java


Composio

Agregao

16