Escolar Documentos
Profissional Documentos
Cultura Documentos
Orientado a Objetos
utilizando a
Linguagem UML
Alcides Calsavara
Contedo Programtico
princpios de O-O
mtodo, casos de uso, classes
relacionamentos, restries, interfaces,
tipos parametrizados, esteretipos,
pacotes
estados e eventos
seqncia, colaborao, atividades,
componentes, implantao
Bibliografia Bsica
UML Toolkit
UML in a Nutshell
Object-Oriented Software Construction
Modelagem de Objetos atravs da UML
Design Patterns: Elements of Reusable
Object-Oriented Software
Modelagem e Projeto baseados em Objetos
Princpios de
Orientao a Objetos
Sumrio
Tipos de dados abstratos
Classes e instncias
Operaes e atributos
Construo de objetos
Referncias para objetos
Pacotes de classes
Encapsulamento
Modos de visibilidade/acesso
Sumrio
Asseres e invariantes de classe
Tratamento de excees
Objetos compostos
Herana, sobrecarga, polimorfismo
Herana mltipla
Interfaces
Tipos parametrizados
Exemplo de ADT
Pilha (Stack)
Opes de representao:
array
listas
...
Questo bsica:
Como definir formalmente uma pilha de
forma independente de sua
representao?
Exemplo de ADT
Primeira Parte: Tipos
Especificao ADT para pilhas
TYPES
STACK [G]
Exemplo de ADT
Segunda Parte: Funes
FUNCTIONS
put: STACK[G] X G --> STACK[G]
remove: STACK[G] -/-> STACK[G]
item: STACK[G] -/-> G
empty: STACK[G] --> BOOLEAN
new: STACK[G]
10
Exemplo de ADT
Terceira Parte: Axiomas
AXIOMS
Para todo x : G, s : STACK[G]
A1 - item ( put ( s, x ) ) = x
A2 - remove ( put ( s, x ) ) = s
A3 - empty ( new )
A4 - not empty ( put ( s, x ) )
11
Exemplo de ADT
Quarta Parte: Pr-condies
PRECONDITIONS
remove ( s : STACK[G] ) require not
empty(s)
item ( s : STACK[G] ) require not empty(s)
12
Modularizao
Construo de software orientado a
objetos a construo de um sistema
de software como uma coleo de
implementaes de ADTs
possivelmente parciais.
Um ADT corresponde a um mdulo de
um sistema de software.
13
Classe
Uma classe um tipo abstrato de dados
equipado com uma implementao
possivelmente parcial.
A definio de uma classe inclui uma lista
de atributos e uma lista de operaes.
Um sistema de software orientado a
objetos definido por um conjunto de
classes.
14
Instncia
Todo objeto instncia de alguma classe.
A execuo de um sistema de software
orientado a objetos corresponde a
interaes entre objetos atravs de
mensagens (chamadas de operaes).
Toda execuo iniciada em um objeto
raiz, com a chamada de uma de suas
operaes.
15
Classe X Objeto
Um classe um elemento de
construo de software. Portanto, um
elemento definido e criado
estaticamente.
Um objeto um elemento de run-time,
isto , s existe em tempo de execuo
de um sistema de software. Portanto,
criado dinamicamente.
16
Atributo
A definio de uma classe inclui uma lista
de atributos.
Toda instncia de uma classe contm
todos os atributos definidos pela classe.
Cada atributo tem um nome, um tipo e,
opcionalmente, um valor default.
O conjunto de valores dos atributos de
um objeto define o seu estado.
17
Atributo
Tipos de atributos:
de instncia: h um valor especfico para
cada instncia
de classe: h um nico valor
(compartilhado) para todas as instncias
18
Operao
A definio de uma classe inclui uma lista de
operaes que correspondem interface da
classe.
Uma operao uma funo ou
transformao que pode ser aplicada a todo e
qualquer objeto de uma classe.
Uma operao tem um nome, uma lista de
argumentos, um tipo de retorno e uma
implementao (um mtodo).
19
Operao
Em um sistema de software, existe
apenas uma nica ocorrncia de cada
operao de uma classe,
independentemente do nmero de
instncias da classe.
Operaes so definidas e criadas
estaticamente.
20
Construo de Objetos
Toda classe define um ou mais operaes
especficas para a criao (iniciao) de
novos objetos, normalmente denominadas
construtores da classe.
Toda vez que um novo objeto criado, um
construtor da correspondente classe deve
ser selecionado para execuo.
21
22
Pacote de Classes
Classes podem ser logicamente organizadas
em grupos denominados pacotes.
Pacotes so estrurados de forma hierrquica.
H pacotes disponibilizados em bibliotecas.
Usurios podem criar seus prprios pacotes.
23
Encapsulamento
Processo de ocultamento de partes
internas da implementao de um objeto e
permisso de acesso ao estado do objeto
somente atravs de uma interface bem
definida.
Os atributos de um objeto so manipulados
(para leitura e escrita) somente por
operaes definidas para o objeto.
24
Modos de
Visibilidade/Acesso
25
Modificador private
26
Modificador public
27
Modificadores public e
private Exemplo
1
class Pessoa
{ private int idade;
private int altura;
public Pessoa(int i, int a) { idade = i; altura = a; }
private void cresce( ) { idade++; altura++; }
private void decresce( ) { idade++; altura--; }
public void envelhece( )
{ if (idade < 22) cresce( ) else decresce( ); }
}
Modelagem de Software Orientado a Objetos utilizando a Linguagem UML
28
Modificadores public e
private Exemplo
2
class Funcionario extends Pessoa
{ private int nivel; private int horas;
public Funcionario(int i, int a, int n, int h)
{ super(i, a); nivel = n; horas = h; }
public double salario( )
{ return ( nivel * 80 * horas) ; }
}
Modelagem de Software Orientado a Objetos utilizando a Linguagem UML
29
Modificador package
30
Modificador protected
31
Modificadores package e
protected
class Veiculo { Exemplo
int ano; // package1
protected int potencia; ... }
class Carro extends Veiculo
{ ... potencia++;
ano++;
... }
class Retificadora
{ ... Carro c = new Carro (...) ;
c.ano = 1980;
c.potencia = 100; ... }
Modelagem de Software Orientado a Objetos utilizando a Linguagem UML
32
Modificadores package e
protected
Exemplo
2
package Basico; //
arquivo 1
class Veiculo { int ano; // package
protected int potencia; ... }
package Extensao; // arquivo 2
class Carro extends Veiculo
{ ... potencia++; ... } // sem acesso a ano
class Retificadora
{ ... Carro c = new Carro (...) ; ... }
// sem acesso a ano e potencia
Modelagem de Software Orientado a Objetos utilizando a Linguagem UML
33
Asseres
P {A} Q
A execuo de A, iniciando em um
estado no qual P verdadeira, terminar
em um estado no qual Q verdadeira.
P : pr-condio
Q : ps-condio
A : uma operao (ou parte de)
Modelagem de Software Orientado a Objetos utilizando a Linguagem UML
34
Asseres - Exemplos
{x >= 9} x := x + 5 {x >= 13}
{x >= 0} y := sqrt(x) { true }
{false} y := x * x { y >= 0 }
{not full} put(x : G) { not empty AND
item = x AND count = old count + 1 }
35
Invariante de Classe
Uma invariante uma propriedade
inaltervel durante todo o ciclo de vida
de um objeto.
Exemplos:
0 <= count
count <= capacity
empty = (count = 0)
36
Tratamento de Exceo
37
38
39
class TestNullP
{ static String s = null;
public static void main(String args[ ])
{
if (s != null && s.length( ) > 2)
char c1 = s.charAt(2);
s = new String("Curitiba");
if (s != null && s.length( ) > 2)
char c2 = s.charAt(2);
// c2 = 'r'
if (s != null && s.length( ) > 8)
char c3 = s.charAt(8);
} } // fim
40
class TestNullP
{ static String s = null;
public static void main(String args[])
{
try
{
char c1 = s.charAt(2);
}
catch (Exception e)
{
System.out.println("Exceo " + e);
// Exceo: java.lang.NullPointerException
}
// continua
41
s = new String("Curitiba");
try
{
char c2 = s.charAt(2);
// c2 = 'r'
}
catch (Exception e)
{
System.out.println("Exceo " + e);
}
// continua
42
try
{
char c3 = s.charAt(8);
}
catch (Exception e)
{
System.out.println("Exceo " + e);
// Exceo: java.lang.StringIndexOutOfBoundsException
}
}
} // fim
43
Hierarquia de excees
Throwable
Error
Exception
...
RuntimeException
IOException
...
...
...
44
A clusula throws
class TestNullP
{ static String s = null;
static void work( ) throws Throwable
{
try
{ char c1 = s.charAt(2); }
catch (Exception e)
{ System.out.println("Exceo"); throw(e); }
catch (Error e)
{ System.out.println("Erro"); throw(e); }
finally
{ System.out.println("Adios, amigos");}
}
// continua
45
46
// continua
Modelagem de Software Orientado a Objetos utilizando a Linguagem UML
47
class TestNullP
{ static String s = null;
static void work( ) throws ProblemaEmWork
{
try
{ char c1 = s.charAt(2); }
catch (Exception e)
{ throw(new ProblemaEmWork("Exceo em work " + e)); }
catch (Error e)
{ throw(new ProblemaEmWork("Erro em work " + e)); }
finally
{ System.out.println("Adios, amigos");}
}
// continua
48
49
Objeto Composto
50
Generalizao
Relacionamento entre uma classe e uma
ou mais verses refinadas ou
especializadas da classe.
Especializao: relacionamento inverso
Superclasse: verso mais abstrata de
outra classe, a subclasse
Subclasse: verso mais refinada de outra
classe, a superclasse
51
Herana
Mecanismo baseado em objetos que
permite que as classes compartilhem
atributos e operaes baseados em um
relacionamento, geralmente
generalizao.
Uma subclasse herda atributos e
operaes da superclasse.
52
Classes Abstratas e
Concretas
53
Interface
Um classe totalmente abstrata dita
ser uma interface.
A definio de uma interface no inclui
qualquer implementao.
54
Interfaces
- definio bsica
55
Interfaces
- definio bsica
56
Interfaces
- como usar - exemplo 1 public interface F
{ int k = 10; // public, static, final (constante)
int f ( ); // public, abstract
}
class C implements F
{
public int f ( ) { return k; } // tem que ser public
}
Modelagem de Software Orientado a Objetos utilizando a Linguagem UML
57
Interfaces
- como usar - exemplo 2 public interface F
{ int k = 10;
int f( );
}
interface G extends F
// G e seus membros tem visibilidade package
{ void g( ); }
class C implements G
{ public
int f( ) { return k; }
public
void g( ) {}
}
58
Interfaces
- como usar - exemplo 3 public interface F
{ int k = 10; int f( ); }
interface H
{ int k = 10; int h( ); }
interface G extends F, H
{ void g( ); }
class C implements G
{ public
int f( ) { return F.k;}
public
int h( ) { return H.k;}
public
void g() {}
}
Modelagem de Software Orientado a Objetos utilizando a Linguagem UML
59
Interfaces
- como usar - exemplo 4 public interface F
{ int k = 10; int f( ); }
interface H
{ int k = 10; int h( ); }
class D
{}
class E extends D implements F, H
{ public
int f( ) { return F.k;}
public
int h( ) { return H.k;}
}
Modelagem de Software Orientado a Objetos utilizando a Linguagem UML
60
Sobrecarga
61
62
63
Sobrecarga para
otimizao
O novo mtodo tem o mesmo protocolo
externo e apresenta o mesmos
resultados
A implementao do novo mtodo
(algoritmo utilizado) pode ser
completamente diferente
64
Sobrecarga por
convenincia
Emprego adhoc de herana para reutilizar
classes.
Uma nova classe tornada subclasse de
uma classe existente e substitui os mtodos
inconvenientes.
Semanticamente errado e conduz a
problemas de manuteno; recomenda-se
criar uma terceira classe (superclasse das
demais)
65
Polimorfismo
66
Herana Mltipla
Uma classe possui mais de uma
subclasse e herda caractersticas de
todos os seus ancestrais.
Maior capacidade de especificao de
classes.
Maior oportunidade de reutilizao.
Perda em simplicidade conceitual e de
implementao.
67
Tipo Parametrizado
Um tipo pode receber como parmetro
uma lista de tipos.
Exemplos:
pilha de inteiros
pilha de reais
pilha de pessoas
...
Modelagem de Software Orientado a Objetos utilizando a Linguagem UML
68
Modelagem Orientada a
Objetos
Use-Case Modeling
69
Objetivos bsicos de um
modelo use-case
Descrever o que um novo sistema deve
fazer
Descrever o que um sistema existente
faz
Formalizar os requisitos de um sistema,
normalmente obtidos atravs de
discusses entre os desenvolvedores e
os clientes (usurios) do sistema.
70
Componentes de um usecase
um conjunto de use cases
Um use case representa uma funcionalidade do
sistema, do ponto de vista do usurio do
sistema (viso externa).
um conjunto de actors
Um actor representa um tipo de usurio do
sistema.
Um actor deve estar associado a pelo menos
um use case
71
72
O componente actor
Um actor uma entidade externa ao
sistema que interage com o sistema.
Um actor normalmente um ser
humano, mas pode ser outro sistema
ou alguma espcie de hardware que
interage com o sistema.
73
do sistema.
Prover uma descrio clara, consistente e
simples do que o sistema dever fazer, facilitando
a discusso entre o desenvolvedor e o cliente do
sistema e ainda facilitando a comunicao dentro
da equipe de desenvolvedores
Ser a base para definio das classes do sistema
e para definio da dinmica do sistema.
74
Levantamento de estatsticas de
vendas
Corretor de
seguros
75
76
77
Modelagem Orientada a
Objetos
Relacionamentos
78
Contedo
79
Ligao
Uma conexo fsica ou conceitual entre
objetos
Exemplo: O pas Brasil tem como capital
a cidade de Braslia.
Exemplo: O funcionrio Joo trabalha na
empresa Transamrica S.A.
Exemplo: O artigo OO Solutions foi
publicado na conferencia OOPSLA99.
80
Associao
Relacionamento entre instncias de
duas ou mais classes descrevendo um
grupo de ligaes com estrutura e
semntica comuns.
Exemplo: Um pas tem como capital uma
cidade.
Exemplo: Um funcionrio trabalha numa
empresa.
81
Agregao
Forma especial de associao, entre o
todo e suas partes, na qual o todo
composto pelas partes
Tambm chamada de herana horizontal
Exemplo: Um artigo publicado em uma
conferncia, isto , o artigo faz parte da
conferncia (ou dos anais da conferncia).
82
Multiplicidade e Papel
Multiplicidade: Nmero de instncias
de uma classe que podem se relacionar
a uma nica instncia de um classe
associada (ou agregada).
Papel: nome que identifica
inequivocamente uma extremidade de
uma associao.
83
Atributo de Ligao
Um valor de dados presente em cada ligao
(nvel de instncias) de uma associao
(nvel de classes)
Uma propriedade da ligao entre objetos, e
no dos objetos ligados, propriamente ditos
Exemplos: permisso de acesso que um
usurio possui para a um arquivo; o salrio
de uma pessoa em um emprego em uma
companhia
84
85
Associao Ternria
86
Ordenao em
Associaes
87
Associao Qualificada
Relaciona dois objetos e um qualificador
O qualificador reduz a multiplicidade
Exemplo: Um diretrio contm muitos
arquivos, mas o nome do arquivo
dentro do diretrio que identifica o
arquivo (e identifica um nico arquivo)
Maior preciso na informao!!
88
Uso de Agregao
Na dvida, use associao!
Herana no representa o
relacionamento parte-todo
Agregados recursivos so frequentes
Agregao normalmente implica em
propagao de operaes
89
Modelagem Orientada a
Objetos
Modelagem Dinmica
Diagrama de Seqncia
90
Objetivos de um diagrama
de seqncia
Ilustrar como objetos interagem entre
si.
Detalhar um use case em termos de
objetos e mensagens.
91
Modelagem Orientada a
Objetos
Modelagem Dinmica
Diagrama de Estados
92
Objetivos de um
diagrama de estados
Representar o comportamento
dinmico de classes individuais
Representar o comportamento
dinmico de colaborao entre
classes
93
Elementos de um
diagrama de estados
94
Diagramas de Estados
95
Diagramas de Estados
Exemplo : Linha telefnica
no-gancho
Inativa
no-gancho
fora-do-gancho
dgito( n )
Sinal de
ocupado
nmero
ocupado
tronco
ocupado
Quedaqueda-da-linha
Sinal de discar
da-linha
a
h
n
i
-l
dgito( n ) queda-da
nmero Mensagem
Discando
gravada
invalido
nmero vlido
Ligando
encaminhado
Tocando
telefone chamado atende
Mensagem
terminada
Interligando
telefone chamado desliga
Desligando
Modelagem de Software Orientado a Objetos utilizando a Linguagem UML
96
Diagramas de Estados
Exemplo : jogo de xadrez
Diagrama de estados de uma s passagem
para um jogo de xadrez
Incio
Vez das
brancas
pretas
jogam
brancas
jogam
cheque-mate
Pretas
vencem
empate forado
Empate
empate forado
Vez das
pretas
cheque-mate
Brancas
vencem
97
Diagramas de Estados
Exemplo : Veculo
Diagrama de estados com transies guardadas
Norte / Sul
podem ir em frente
Norte / Sul
podem dobrar
esquerda
tem
nas po d
via eco
s e rri d
tem
squ o [
p
erd sem
n
o
tempo
as
tempo
d
as
e
via co
c
N / a rro
s e rrid
decorrido
decorrido
S] s
squ o [
erd sem
as
L / carro
O] s
Leste / Oeste
Leste / Oeste
podem dobrar
tempo decorrido [ carros podem ir em frente
esquerda
nas vias esquerdas L / O ]
Modelagem de Software Orientado a Objetos utilizando a Linguagem UML
98
Tipos de diagramas de
estados
99
Condies
100
Controle de Operaes
Atividades e aes podem ser
vinculadas a estados e eventos a fim
de se especificar o que faz o objeto
quando est em um determinado
estado e o que faz em resposta a
estmulos externos.
Definem o comportamento do objeto!
101
Atividade
102
Ao
103
Controle de Operaes
Aes para um menu instantneo
Inativo
104
Estado 1
faa : atividade 1
Evento 1 ( atributos )
[ condio 1 ] / ao 1
Estado 2
...
105
Diagramas de Estados
Nivelados
106
Nivelados
Exemplo : mquina de
vender
moedas introduzidas
( quantia ) verificar saldo
Inativa
Recolhendo dinheiro
moedas introduzidas ( quantia ) /
acrescentar ao saldo
[ item vazio ]
Selecionar ( item )
[ troco < 0 ]
[ troco < 0 ]
faa : preparar
troco
107
Nivelados
Exemplo : mquina de
vender
Atividade entregar item da mquina de vender
brao pronto
Faa : mover
brao para a
fileira correta
Faa : mover
brao para a
coluna correta
Transio selecionar
item da mquina de vender
faa : preparar
item
brao pronto
dgito( n )
clear
empurrado
faa : empurrar
item para fora
da prateleira
dgito( n )
Selecionar( item )
faa :
acrescentar
dgito
enter
108
Generalizao de Estados
109
Generalizao de Estados
Exemplo : transmisso de um carro
apertar R
Neutro
apertar N
apertar N
apertar F
Para a frente
sobe
pra
Primeira
reduz
sobe
Segunda
reduz
Terceira
110
Generalizao de Eventos
111
Generalizao de Eventos
Exemplo : eventos de
teclado
evento
tempo
Entrada do usurio
dispositivo
Boto do mouse
localizao
Boto do
mouse
apertado
Boto do
mouse
liberado
Hierarquia parcial de
eventos para eventos
de teclado
caracter do teclado
caracter
controle
grfico
espao
alfanumrico
pontuao
112
Concorrncia de
Agregao
113
Concorrncia de
Agregao
Carro
Ignio
Transmisso
Freio
Ignio
Desligada
Partida
Acelerador
liberar
chave
Ligada
desligar a chave
Acelerador
Desligado
apertar
acelerador
liberar acelerador
Freio
Ligado
Desligado
apertar
freio
Partido
liberar freio
114
Concorrncia Interna de
Objetos
115
Concorrncia Interna de
Objetos
Jogo de bridge com estados concorrentes
Jogando rubber
Vulnerabilidade N - S
No vulnervel
jogo N - S
Vulnervel
jogo N - S
Vulnerabilidade L - O
No vulnervel
jogo L - O
Vulnervel
jogo L - O
L - O vence rubber
116
Transio Automtica
117
Aes de Entrada e de
Sada
Aes vinculadas ao ato de entrar ou
sair de um estado
No adicionam poder de expresso,
mas permitem uma representao mais
concisa
Exemplo: Controle de uma porta de
garagem
118
Envio de Eventos
119
Sincronizao de Eventos
Concorrentes
Um objeto pode executar vrias
atividades de forma concorrente
(paralela).
As atividades no so necessariamente
sincronizadas, mas todas devem
terminar para que ocorra transio de
estado.
Exemplo: Caixa automtica.
120
Sincronizao de Eventos
Concorrentes
Emitindo
dinheiro
recolhido
Pronta para
reinicializar
Preparao
Faa : ejetar carto
carto
recolhido
121