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
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
Opes de representao:
array listas ...
Questo bsica: Como definir formalmente uma pilha de forma independente de sua representao?
8
TYPES
STACK [G]
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
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.
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.
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.
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.
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.
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).
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.
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.
Uma referncia um valor de run-time que pode ser void ou attached. Quando o valor de uma referncia for attached, a referncia identifica um nico objeto. (A referncia est fixada em um certo objeto.) Podem existir vrias referncias para um mesmo objeto. Copiar uma referncia diferente de copiar um objeto.
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.
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.
Modos de Visibilidade/Acesso
Pode-se controlar a manipulao de atributos e operaes (membros, de forma geral) considerando-se os escopos de classe, subclasse e pacote, de forma combinada. Modificadores: private protected package public
25
Modificador private
Um membro qualificado como private somente acessvel a partir de mtodos da prpria classe qual pertence o membro.
26
Modificador public
Um membro qualificado como public acessvel a partir de qualquer operao de qualquer classe, independentemente de subclasse e de pacote.
27
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
Um membro qualificado como package acessvel a partir de qualquer operao de qualquer classe pertencente ao mesmo pacote que a classe qual pertence o membro, independentemente de subclasse.
30
Modificador protected
Um membro qualificado como protected acessvel a partir de qualquer operao de qualquer classe, exceto se a classe de acesso estiver em pacote distinto e no for subclasse da classe qual pertence o membro.
31
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:
36
Tratamento de Exceo
Excees so acontencimentos fora do comportamento normal ou desejado para um programa. O gerenciamento de exees permite o controle sobre erros e possivelmente uma soluo de contorno. Exemplos: entrada em formato invlido, arquivo corrompido, conexo de rede no disponvel, ndice invlido para vetor, ...
37
38
39
Hierarquia de excees
Throwable
Error
Exception
...
RuntimeException IOExcepti on
...
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");} }
Modelagem de Software Orientado a Objetos utilizando a Linguagem UML
// continua
45
46
// continua
Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 47
49
Objeto Composto
Um objeto pode conter uma referncia para outro objeto, recursivamente. Nesse caso, o objeto dito ser composto ou complexo.
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
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.
Classe abstrata: classe que no pode ter instncias diretas, mas cujos descendentes sim; organizam caractersticas comuns a diversas classes; mecanismo para reutilizar cdigo; pode definir operaes abstratas (sem um correspondente mtodo) Classe concreta: classe que pode ter instncias diretas; no pode definir operaes abstratas
53
Interface
Um classe totalmente abstrata dita ser uma interface. A definio de uma interface no inclui qualquer implementao.
54
Uma interface possui um nome, e define apenas mtodos abstratos e constantes (descreve uma abstrao, normalmente um comportamento) Uma interface no pode ser instanciada Uma interface pode ser implementada por uma ou mais classes Cada classe pode estender somente uma classe, mas pode implementar diversas interfaces (alternativa para a falta de herana mltipla em Java)
55
Uma classe que implementa uma interface deve implementar todos os mtodos abstratos definidos pela interface (no pode deixar qualquer implementao para suas subclasses) Uma interface pode estender uma ou mais interfaces Se uma classe herda duas constantes de duas interfaces distintas mas com o mesmo nome, deve fazer referncia a cada constante precedendo-a com o nome da interface e um ponto
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( ) {} } Modelagem de Software Orientado a Objetos utilizando a Linguagem UML
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
A nova operao igual operao herdada, exceto pelo fato de acrescentar alguns detalhes de comportamento, normalmente afetando novos atributos da subclasse.
62
63
64
Polimorfismo
Assume muitas formas A propriedade segundo a qual uma operao pode comportar-se diferentemente em classes diferentes. A subclasse redefine a implementao de uma operao herdada da superclasse. Onde se espera uma instncia de um certa classe pode aparecer uma instncia de qualquer subclasse daquela classe.
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.
Tipo Parametrizado
Um tipo pode receber como parmetro uma lista de tipos. Exemplos:
68
69
Componentes de um usecase
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
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
Fornecer uma base para a realizao de testes 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
Corretor de seguros
75
Um use-case pode ser estendido com outro(s) use case(s). Exemplo: Os use cases "Assinatura de seguro de carro" e "Assinatura de seguro de vida" so extenses do use case "Assinatura de aplice de seguro". Um use-case pode utilizar outro(s) use case(s). Exemplo: O use case "Assinatura do contrato de compra de um automvel" utiliza o use case "Assinatura de uma aplice de seguro de carro".
77
78
Contedo
Ligao entre objetos Associao entre classes Agregao Multiplicidade e Papel Atributo de ligao Associao como uma classe Associaes ternrias Ordenao em associaes Associao qualificada
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.
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.
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).
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.
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
Associao Ternria
Representa ligaes entre 3 objetos No pode ser dividida em associaes binrias sem que haja perda de informaes Associaes de grau maior que 3 so raras e devem ser evitadas devido a complexidade de entendimento e implementao Exemplo: pessoas que so programadoras usam linguagens de programao em projetos
86
Ordenao em Associaes
Em alguns casos o conjunto de objetos associados a um certo objeto apresenta uma ordem A palavra "ordenado" deve aparecer junto multiplicade "muitos" de uma associao para indicar que existe uma ordem entre os objetos ligados Exemplos: as janelas visveis em uma tela possuem uma ordem; os vrtices de um polgono
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!!
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
90
objetos de acordo com diagrama de classes mensagens so mapeadas em operaes nas classes
91
92
Representar o comportamento dinmico de classes individuais Representar o comportamento dinmico de colaborao entre classes
93
os estados possveis para os objetos de uma certa classe as transies de estado os eventos que causam transies de estados as aes decorrentes de
uma transio de estado entrada em um estado sada de um estado
94
Diagramas de Estados
Relaciona eventos e estados Um objeto muda de estado dependendo do evento e do estado atual. Transio: modificao de estado causada por um evento (mesmo quando estado final e inicial coincidem). Um evento pode ser irrelevante para um objeto em um certo estado. Exemplo: linha telefnica
95
dgito( n )
Sinal de ocupado Sinal de ocupado rpido nmero ocupado
tronco ocupado
Mensagem terminada
96
cheque-mate
97
tempo decorrido
tempo decorrido
Diagrama de lao contnuo: representa um ciclo de vida; sem estado inicial ou final. Exemplo: linha telefnica. Diagrama de uma s passagem: representa objetos com vida finita; possuem um estado inicial (criao do objeto) e um estado final (destruio do objeto). Exemplo: jogo de xadrez
99
Condies
Uma condio uma funo booleana de valores, vlida dentro de um intervalo de tempo. Condies funcionam como guardas nas transies: uma transio s dispara quando ocorre o evento e a condio de guarda for verdadeira. Exemplo: Pessoa com relao ao atributo "estar de luvas".
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!
Atividade
Est sempre vinculada a um estado Consome tempo para se completar executada continuamente durante o tempo em que o objeto est num certo estado Notao: faa: atividade Exemplo: Um vendedor logo aps ter recebido dinheiro para pagamento do item vendido deve calcular o troco. faa: calcular troco
102
Ao
Est normalmente vinculada a um evento, mas tambm pode estar vinculada a um estado (aes de entrada, sada e internas) executada "instantaneamente" Notao: evento / ao Exemplo: Exibir um menu quando o boto direito do mouse pressionado. boto direito pressionado / exibir menu
103
Controle de Operaes
Aes para um menu instantneo
boto direito liberado / apagar menu instantneo cursor movimentado / iluminar item do menu
Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 104
Estado 2 ...
105
Permitem refinamentos sucessivos do modelo dinmico Permitem uma descrio estruturada do sistema Pode-se expandir: um evento e sua correspondente ao uma atividade realizada em um certo estado Exemplo: Mquina de vender
106
[ item vazio ]
brao pronto
empurrado
faa : empurrar item para fora da prateleira
dgito( n ) clear
enter
108
Generalizao de Estados
Os estados de um objeto podem ser organizados de forma hierrquica, em super-estados e sub-estados. Um sub-estado um refinamento de um super-estado, i.e., um sub-estado um dos possveis estados do objeto dentro daquele super-estado. Um sub-estado herda as transies do super-estado; transies que se aplicam ao super-estado tambm se aplicam ao sub-estado. Exemplos: linha telefnica, transmisso automtica de um automvel
109
Generalizao de Estados
Exemplo : transmisso de um carro
apertar R
Neutro R
apertar F
sobe
Segunda
sobe
Terceira
reduz
reduz
110
Generalizao de Eventos
Os eventos que ocorrem em um sistema podem ser organizados de forma hierrquica, em super-eventos e sub-eventos. Um sub-evento herda atributos do super-evento. Onde um evento descrito qualquer sub-evento seu implicitamente descrito. A generalizao de eventos facilita a abstrao e permite conciso na representao de diagramas. Exemplo: Entrada do usurio.
111
espao
alfanumrico
pontuao
112
Concorrncia de Agregao
O estado de um objeto composto (um agregado) determinado pelos estados dos objetos que o compem. Exemplo: O estado de um carro determinado pelo estado da ignio, da transmisso, do freio, do acelerador, do motor, ... Os componentes de um agregado normalmente interagem entre si: a mudana de estado de um componente pode disparar uma transio em outro componente. A interao entre diagramas de estados de componentes representada atravs de eventos compartilhados e/ou condies de guarda.
113
Concorrncia de Agregao
Carro
Ignio
Ignio
Desligada
Transmisso
Freio
Acelerador
liberar chave
Ligada
desligar a chave
Acelerador apertar acelerador Freio Ligado Desligado apertar freio liberar freio
114
Desligado
Partido
liberar acelerador
Modelagem de Software Orientado a Objetos utilizando a Linguagem UML
O diagrama de estados de um objeto pode ser particionado de acordo com atributos e ligaes em sub-diagramas. O estado do objeto compreende um estado de cada sub-diagrama. Um mesmo evento pode causar transies em mais de um sub-diagrama. Exemplo: Jogo de bridge rubber.
115
Vulnerabilidade L - O
No vulnervel jogo L - O Vulnervel jogo L - O L - O vence rubber
116
Transio Automtica
Disparada quando a atividade vinculada a um estado termina O "evento" que causa a transio o trmino da atividade Exemplo: Mquina de vender no estado correspondente a atividade testar item e calcular troco pode disparar uma de quatro transies automticas.
117
Envio de Eventos
Uma ao pode ser especificada como enviar um certo evento para outro objeto. Notao: enviar E (atributos) (palavra enviar pode ser omitida) Exemplo: Uma linha telefnica envia o evento ligar(nmero-de-telefone) para o comutador quando um nmero completo discado. nmero completo / ligar(nmero-de-telefone)
119
Preparao
carto recolhido
121