Professional Documents
Culture Documents
1. Introduo
Formalmente, para ser considerada uma linguagem OO, a linguagem em questo precisa implementar
quatro conceitos bsicos: abstrao, encapsulamento, herana e polimorfismo.
Abstrao
considerada como a habilidade de modelar caractersticas do mundo real do problema que o
programador esteja tentando resolver. Por exemplo, se o programador estiver interessado em
controlar dados dos clientes de uma empresa, muito mais fcil lidar com uma linguagem que
oferea recursos em que ele possa criar algo chamado "Cliente" ao invs de recorrer a estruturas de
dados tipo array ou record. Nesse contexto a abstrao refere-se capacidade de modelar o mundo
real, e por outro lado, podemos consider-la como um mecanismo pelo qual restringimos o nosso
universo de anlise e as variveis e constantes que compem esse universo, desprezando os dados
que no nos interessa na anlise. Podemos demonstrar o uso de abstrao facilmente, quando
fechamos os olhos e pensamos em uma mesa; esta mesa imaginria provavelmente no vai ser igual
a uma outra imaginada por outras pessoas, mas o que importa que todas as pessoas que
imaginaram uma mesa colocaram nessa abstrao as informaes que para elas so necessrias
para a sua funo (de ser uma mesa). No importa se a mesa de trs ps ou quatro, ou se o
tampo de vidro, madeira ou mrmore; o que importa que a imagem que idealizamos em nossa
cabea de uma mesa e tem as informaes necessrias para cumprir sua funo.
Encapsulamento
a base de toda a abordagem da Programao Orientada ao Objeto e dizemos que um dado est
encapsulado quando envolvido por cdigo de forma que s visvel na rotina onde foi criado; o
mesmo acontece com uma rotina, que sendo encapsulada, suas operaes internas so invisveis s
outras rotinas. Podemos visualizar a sua utilidade do encapsulamento pensando em um vdeo
cassete, onde temos os botes de liga-desliga, para frente, para traz, etc. Estes botes executam
uma srie de operaes existentes no aparelho, onde so executadas pelos componentes existentes
dentro do aparelho (transistores, cabos, motores, etc.) No interessa ao operador saber como o
funcionamento interno do equipamento; esta informao s relevante para os projetistas do
aparelho. As informaes pertinentes ao usurio do equipamento so as existentes no meio externo
(botes, controle remoto) que ativam as operaes internas do equipamento.
Herana
um mecanismo que permite altos nveis de reaproveitamento de atributos e mtodos . Do ponto de
vista prtico, pode ser entendido como sendo um conjunto de instncias criadas a partir de outro
conjunto de instncias com caractersticas semelhantes, e os elementos desse subconjunto herdam
todas as caractersticas do conjunto original. A idia fornecer um mecanismo simples (mas muito
poderoso) para que se definam novas classes a partir de uma j existente. Assim sendo, dizemos que
essas novas classes herdam todos os membros (propriedades+mtodos) da classe-me; isto torna o
mecanismo de herana uma tcnica muito eficiente para construir, organizar e reutilizar cdigo. Por
isso, nas linguagens que no suportam esse mecanismo, as classes so criadas como unidades
independentes: cada uma com seus membros concebidos do zero (sem vnculo direto com outras
classes), o que torna o processo mais demorado e com cdigos, s vezes, redundantes. A herana
possibilita a criao de uma nova classe de modo que essa classe (denominada subclasse, classefilha ou classe derivada) herde TODAS as caractersticas da classe-me (denominada superclasse,
classe base ou classe primitiva); podendo ainda, a classe-filha, possuir propriedades e mtodos
prprios.
Polimorfismo
O conceito de polimorfismo est diretamente associado Herana. O Polimorfismo trabalha com a redeclarao de mtodos previamente herdados por uma classe. Esses mtodos, embora semelhantes
(apresentam a mesma assinatura), diferem de alguma forma da implementao utilizada na superclasse, sendo necessrio, portanto, reimplement-los na sub-classe.
Porm, para evitar ter que modificar o cdigo-fonte, inserindo uma chamada a um mtodo com nome
diferente, redeclara-se o mtodo com o mesmo nome declarado na super-classe, Dessa maneira,
podem existir dois ou mais mtodos com a mesma nomenclatura, diferenciando-se na maneira como
foram implementados, sendo o sistema responsvel por verificar se a classe da instncia em questo
possui o mtodo declarado nela prpria ou se o herda de uma super-classe.
2. Definies
Vamos agora definir mais formalmente as principais noes do modelo a objetos.
Objeto
No conceito de sistemas orientados a objetos, um objeto representa uma entidade que pode ser
fsica, conceitual ou de software. uma abstrao de algo que possui fronteira definida e significado
para a aplicao.
Dentro da terminologia das linguagens de programao, um objeto passa a existir a partir de um
'molde'. Este 'molde', definido como classe do objeto, define os limites, seus atributos e suas funes.
Podem ser criados vrios objetos ou instncias de uma classe.
Em termos de implementao, objeto um bloco de dados privados envolvidos por cdigo, de
maneira que o acesso a ele s pode ser feito sob condies especiais. Todo o comportamento desse
"ente" encapsulado descrito atravs de rotinas que manipulam seus dados, sendo que o seu estado
corrente est em seus prprios dados; em outras palavras, cada objeto tem suas prprias
caractersticas, moldadas a partir de uma matriz.
Classe
Uma classe abstrai um conjunto de objetos com caractersticas similares. Uma classe define o
comportamento de seus objetos atravs de mtodos e os estados possveis destes objetos atravs de
atributos. Em outros termos, uma classe descreve os servios providos por seus objetos e quais
informaes eles podem armazenar.
Uma classe define estado e comportamento de um Objeto geralmente implementando mtodos e
atributos. Os atributos, tambm chamados de campos, indicam as possveis informaes
armazenadas por um objeto de uma classe, representando o estado de cada objeto. Os mtodos so
procedimentos que formam os comportamentos e servios oferecidos por objetos de uma classe.
Instncia:
Um objeto. A noo de instncia quase igual de objeto. Instncia se refere implicitamente a uma
classe, e sempre uma instncia de uma classe especifica. Objetos podem ser considerados
independentemente das suas classes.
A noo de instncia tambm mais geral. Qualquer conceito abstrato pode ter instncias (aplicaes
concretas do conceito). Por exemplo, um mtodo pode ser considerado uma instncia de uma
operao; um atributo particular de uma classe pode ser considerado uma instncia do conceito geral
de atributos, etc.
Propriedade:
Um conceito definido por um conjunto de propriedades. Por exemplo, uma pedra tem as seguintes
propriedades: dura, inanimada, slida, e muitas outras.
Uma classe modela um conceito listando algumas das suas propriedades interessantes, considerando
o problema a resolver. Por exemplo, a data de nascimento de um aluno vai ser uma propriedade
interessante. A cor dos cabelos tambm uma propriedade do conceito aluno, mas provavelmente,
no importante no modelo e no ser modelada.
Atributo:
Uma propriedade importante de uma classe que pode ser representada com uma varivel. Por
exemplo, a data de nascimento de um aluno.
Mtodo:
Uma propriedade importante de uma classe que pode ser representada com uma funo. Por
exemplo, a idade de um aluno pode ser calculada a partir da data de nascimento e da data do dia
corrente.
Operao:
Um mtodo mais abstrato. O mtodo se refere implicitamente a uma funo. A operao mais
abstrata, ela se refere idia do que a funo faz, mas no se preocupa com os detalhes de
implementao. Um mtodo implementa uma operao.
Mensagem:
Manda-se uma mensagem a um objeto para pedir a ele que execute uma operao particular.
Novamente, isso uma noo muito parecida ao mtodo, mas aqui, se presta mais ateno ao
aspecto dinmico: pedimos a um objeto que execute uma operao mandando uma mensagem a ele.
Interface:
o conjunto de propriedades da classe que pertencem ao conceito implementado pela classe.
Algumas operaes so complicadas demais para serem implementadas com uma funo s.
preciso criar pequenas funes utilitrias que vo simplificar a implementao das operaes. Mas
essas pequenas funes utilitrias no pertencem ao conceito que a classe implementa. Elas so
apenas detalhes de implementao.
A interface especifica quais funes podem ser chamadas por outros objetos e quais no podem. As
funes que no pertencem a interface so funes utilitrias que s podem ser chamadas pelo
prprio objeto.
Suponhamos que as propriedades do conceito (propriedades da interface) no vo mudar enquanto
os detalhes de implementao podem mudar. A interface permite proteger o exterior das mudanas
dentro da classe. Enquanto a interface no muda, para o exterior, a classe no muda.
Interface tem tambm outro sentido um pouco diferente deste, que estudaremos mais tarde.
A herana permite definir uma nova classe, reutilizando outras classes j definidas. Esta
reutilizao facilita a definio da nova classe, basta se concentrar no que a nova classe
acrescenta.
Cada classe um pequeno mdulo que contem dados e funes. Desta maneira, este
pequeno mdulo pode ser reutilizado em outros sistemas.
Estrutura e funo:
O modelo a objeto permite dar mais importncia estrutura de um sistema do que s funes. Isso
importante porque as funes que um sistema deve realizar sempre mudam com o tempo enquanto
so muito raras as mudanas da estrutura.
4. A UML 2.0
A UML 2.0 composta por 13 diagramas que se dividem em aspectos estticos (diagramas estruturais) e
aspectos dinmicos (diagramas comportamentais)
Diagramas Estruturais (Aspectos Estticos)
No incio, a operao vai ser definida de maneira muito abstrata. Quando afinar o modelo,
precisaremos definir a assinatura da operao, o que significa: seu nome (j definimos isso), nmero
de parmetros, tipos e ordem deles e eventualmente, seu tipo de retorno.
Relacionamentos
Os objetos tm relacionamentos entre eles: um professor ministra uma disciplina para alunos numa
sala, um cliente faz uma reserva de alguns lugares para uma data, etc. Esses relacionamentos so
representados tambm no diagrama de classes.
A UML reconhece trs tipos mais importantes de relacionamentos: associao, generalizao (ou
herana) e dependncia.
Associao
A associao pode existir entre classes ou entre objetos. Uma associao entre a classe
Professor e a classe Disciplina (um professor ministra uma disciplina) significa que uma
instncia de Professor (um professor especfico) vai ter uma associao com uma instncia de
Disciplina. Esta relao significa que as instncias das classes so conectadas, seja fisicamente
ou conceitualmente.
Vimos que um atributo de uma classe normalmente deveria ser de um tipo simples. A razo
que se uma classe precisar de um atributo de tipo de uma outra classe (uma disciplina precisa
de um atributo ministradoPor de tipo Professor), isso no se modela normalmente com um
atributo, mas com uma associao (h uma associao entre Disciplina e Professor).
Uma associao tem dois sentidos: (1) um professor ministra uma disciplina e (2) a disciplina
ministrado por um professor. comum interessar-se por apenas um dos dois sentidos, por
exemplo, num editor de textos, somos interessados em saber se um documento contm uma tal
figura, mas talvez no em saber qual documento contem uma figura particular.
O problema de representar uma associao por atributos numa classe que perdemos essa
noo dos dois sentidos. Se a classe Professor contm um atributo de tipo Disciplina, no
podemos adivinhar, olhando a classe Disciplina que ela tem uma associao com Professor.
Mesmo quando estivermos interessados por apenas um dos dois sentidos de uma associao,
melhor represent-la no modelo com uma associao mesmo.
O diagrama de classes tenta modelar a realidade (a associao tem dois sentidos). Isso no
impede que no momento da implementao possamos decidir por aproveitar somente um dos
dois sentidos.
a.1 -
Agregao
Composio
uma agregao onde uma classe que est contida na outra "vive" e constitui a outra.
Se o objeto da classe que contm for destrudo, as classes da agregao de
composio sero destrudas juntamente, j que as mesmas fazem parte da outra.
Uma forma prtica de identificar um relacionamento Composio identificar um
relacionamento 1 N onde a existncia do objeto-parte depende da existncia do
objeto-todo. Entretanto, o objeto-parte no atributo multi-valorado do objeto-todo.
Exemplo:
Revista 1 N Edio
No existe a Edio sem que haja a Revista. Entretanto, a Edio no pode ser
considerada um atributo multi-valorado de Revista.
Como representamos uma Agregao do tipo Composio?
representada como uma linha de associao com um diamante preenchido junto
Classe agregadora. A multiplicidade representada da mesma maneira que nas
associaes. Veja as figuras:
b.
Generalizao
a capacidade de se criar superclasses que encapsulam estrutura e/ou comportamento
comuns a vrias subclasses.
Procedimentos
Os procedimentos para se obter a generalizao so:
Uma maneira relativamente fcil de se entender isso comparando com a nossa herana
gentica: Voc possui algumas caractersticas de seus Pais. Mas seus Pais no possuem suas
caractersticas. Pois bem, voc seria uma subclasse.
Outra maneira de se compreender entendo o conceito de Herana.
Herana uma hierarquia de abstraes na qual uma subclasse herda a estrutura e/ou
comportamento de uma ou mais superclasses. Exemplo:
Herana simples quando uma subclasse herda estrutura e/ou comportamento de uma
nica superclasse.
Herana mltipla quando uma subclasse herda estrutura e/ou comportamento de mais
de uma superclasse.
IMPORTANTE: Herana uma relao entre Classes de Objetos, e no uma relao entre
instncia das Classes.
Uma subclasse herda:
Atributos
Operaes
Relacionamentos
c.
Dependncia
mostrar tambm os tipos de conexes entre esses computadores e perifricos. Especifica, tambm, os
componentes executveis e objetos que so alocados para mostrar quais unidades de software so
executadas em quais destes computadores.
O diagrama de implantao demonstra a arquitetura run-time de processadores, componentes fsicos
(devices), e de softwares que rodam no ambiente onde o sistema desenvolvido ser utilizado. a ltima
descrio fsica da topologia do sistema, descrevendo a estrutura de hardware e software que executam em
cada unidade.
O diagrama de implantao formado de componentes que possuem as mesmas simbologias dos
componentes do diagrama de componentes, ns, que significam objetos fsicos que fazem parte do sistema,
podendo ser uma mquina cliente numa LAN, uma mquina servidora, uma impressora, um roteador, etc., e
conexes entre estes ns e componentes que juntos compem toda a arquitetura fsica do sistema.
Dependncia
Exemplo:
Cliente
Montar
Processo
Parte
Contraria
Advogado
Notificar
Parte
Um caso de uso se apresenta como uma lista completa das interaes entre um usurio e o sistema para
cumprir uma tarefa. Lista completa significa que o caso de uso descreve as interaes desde o inicio da
tarefa, ate o fim.
Um exemplo de caso de uso proposto na figura abaixo.
Casos de uso descrevem interaes entre o sistema e os atores. Um ator alguma coisa (usurio, outro
sistema,...) que no faz parte do sistema e interage com ele. Por exemplo, para um sistema de regulagem
da temperatura, o termostato vai ser um ator, ele interage com o sistema e no faz parte dele.
Um usurio real pode cumprir vrios papis para o sistema (i.e. ser representado por vrios atores), por
exemplo, num banco, o gerente pode ser um ator quando ele coloca dinheiro no caixa (ator: operador) e um
outro ator quando ele tira dinheiro de sua prpria conta (ator: cliente). Um ator pode tambm representar
vrias pessoas, quando falamos de um cliente tirando dinheiro do caixa eletrnico, claro que esse ator
representa qualquer pessoa.
Delimitar o sistema.
O diagrama
O nome de um Caso de Uso pode ser qualquer sentena, mas a UML recomenda usar uma frase ativa curta
(verbo + substantivo), por exemplo: entrar reserva, tirar dinheiro, etc.
Terminar a operao e retornar o controle ao objeto que lhe passou o controle (chamando sua
operao).
Assim, o controle passa de objeto a objeto quando eles trocam mensagens. A passagem de controle entre
os objetos chama-se fluxo de controle.
Um fluxo de controle tem inicio quando o sistema (ou processo ou thread) iniciado e continua enquanto o
sistema (ou processo ou thread) estiver rodando.
Em um determinado momento, o fluxo de controle pertence unicamente a um objeto. O fluxo de controle s
muda de objeto com mensagens. Mensagens so trocadas uma depois da outra, em uma seqncia.
Um sistema pode ter vrios fluxos de controle quando contiver processos e/ou threads. Nesse caso
preciso indicar em cada mensagem a qual fluxo ela pertence. No vamos estudar isso.
4.8.1 Diagrama de Seqncia
Este diagrama procura mostrar a seqncia de eventos que ocorrem em um determinado processo, ou seja,
quais condies devem ser satisfeitas e quais mtodos devem ser disparados entre os objetos envolvidos e
em que ordem durante um processo especfico. Assim, determinar a ordem em que os eventos acontecem,
as mensagens que so enviadas, os mtodos que so chamados e como os objetos interagem entre si
dentro de um determinado processo o objetivo principal do diagrama de seqncia.
Um diagrama de seqncia mostra a colaborao dinmica entre os vrios objetos de um sistema.
O aspecto mais importante deste diagrama que a partir dele percebe-se a seqncia de mensagens
enviadas entre os objetos. Ele mostra a interao entre os objetos, alguma coisa que acontecer em um
ponto especfico da execuo do sistema. O diagrama de seqncia consiste em um nmero de objetos
mostrados em linhas verticais. O decorrer do tempo visualizado observando-se o diagrama no sentido
vertical de cima para baixo. As mensagens enviadas por cada objeto so simbolizadas por setas entre os
objetos que se relacionam.
Diagramas de seqncia possuem dois eixos: o eixo vertical, que mostra o tempo e o eixo horizontal, que
mostra os atores e os objetos envolvidos na seqncia de determinado processo. Eles tambm mostram as
interaes para um cenrio especfico de certa atividade do sistema.
No eixo horizontal esto os atores e os objetos envolvidos na seqncia. Cada um representado por um
retngulo de objeto (similar ao diagrama de objetos) e uma linha vertical pontilhada chamada de linha de
vida do objeto, indicando a execuo do objeto durante a seqncia, como exemplo citamos: mensagens
recebidas ou enviadas e a ativao de objetos. A comunicao entre os objetos representada como linha
com setas horizontais simbolizando as mensagens entre as linhas de vida dos objetos. A seta especifica se
a mensagem sncrona, assncrona ou simples. As mensagens podem possuir tambm nmeros
seqenciais, eles so utilizados para tornar mais explcito a seqncia no diagrama.
Em alguns sistemas, objetos rodam concorrentemente, cada um com sua linha de execuo (thread). Se o
sistema usa linhas concorrentes de controle, isto mostrado como ativao, mensagens assncronas, ou
objetos assncronos.
: Concurso
Elaborar
Edital
Divulgar
Edital
Abrir
Inscries
Realizar
Provas
{05-01 a 30-01}
{31-01 a 15-02}
{15-02 a 28-02}
{15-03 a 16-03}
Avaliar
Provas
Publicar
Resultados
{16-03 a 30-04}
{01-05}
Um diagrama de mquina de estados pode estar aninhado. Estados relacionados podem estar agrupados
em um nico estado.
Exemplo:
Descrio do exemplo: um sistema de leilo. Para que um lance seja efetuado com sucesso, a oferta tem
que ser vlida e o cliente tem que ter crdito suficiente.
Para capturar os trabalhos que sero executados quando uma operao disparada (aes). Este
o uso mais comum para o diagrama de atividade.
Para mostrar como um grupo de aes relacionadas podem ser executadas, e como elas vo afetar
os objetos em torno delas.
Para mostrar como uma instncia pode ser executada em termos de aes e objetos.
Para mostrar como um negcio funciona em termos de trabalhadores (atores), fluxos de trabalho,
organizao, e objetos (fatores fsicos e intelectuais usados no negcio).
O diagrama de atividades mostra o fluxo seqencial das atividades, normalmente utilizado para
demonstrar as atividades executadas por uma operao especfica do sistema. Consistem em estados de
ao, que contm a especificao de uma atividade a ser desempenhada por uma operao do sistema.
Decises e condies, como execuo paralela, tambm podem ser mostradas no diagrama de atividade. O
diagrama tambm pode conter especificaes de mensagens enviadas e recebidas como partes de aes
executadas.
Ao: Uma execuo atmica. Ela no pode ser interrompida e considera-se que ela dura um
tempo no significativo.
Os tipos de aes so: chamada de uma operao, envio de um sinal, retorno de um valor
(avaliao de uma expresso, execuo de um clculo), criao de um objeto, destruio de um
objeto, ou modificao do valor de um atributo. J vimos que os cinco primeiros correspondem ao
envio de uma mensagem. Uma outra classificao seria de dizer que uma ao pode modificar o
estado do sistema ou de um objeto ou retomar um valor.
Atividade: Uma execuo no atmica composta de aes ou de outras atividades. Por exemplo, a
execuo de uma operao para um objeto uma atividade.
Atividades podem ser interrompidas e se considera que suas execues duram algum tempo.
Evento: Alguma coisa que acontece. Existem quatro tipos de eventos: envio de um sinal, chamada
de uma operao, passo do tempo e mudana de estado. J vimos dois desses no capitulo
precedente, como tipos possveis de mensagens: chamada de uma operao e envio de um sinal.
Uma chamada de operao um evento sncrono, o emissor pra sua execuo e espera a
resposta (retorno da operao) do outro objeto.
Sinal: Um objeto nomeado enviado (thrown) de maneira assncrona por um objeto e recebido
(caught) por outro.
Sinais so eventos assncronos - ao contrrio das chamadas de operaes que so eventos
sncronos - o emissor envia o sinal, mas continua sua execuo sem esperar resposta, nem saber
se o outro objeto est pronto para receber o sinal.
Transio: A passagem de um estado para outro. As transies mostram o fluxo de controle de uma
atividade (ou ao) para outra.
A passagem de uma atividade para outra pode ser automtica (trigerless), quando a atividade
termina e o fluxo de controle passa para a atividade seguinte, ou provocada por um evento, por
exemplo, a chamada de uma operao (um dos vrios eventos possveis) vai provocar uma
mudana do fluxo de controle e vai iniciar uma nova atividade (execuo da operao chamada).