Prévia do material em texto
2015
AnáLise orientADA A
oBJetos i
Prof. Jean Carlos Possamai
Copyright © UNIASSELVI 2015
Elaboração:
Prof. Jean Carlos Possamai
Revisão, Diagramação e Produção:
Centro Universitário Leonardo da Vinci – UNIASSELVI
Ficha catalográfi ca elaborada na fonte pela Biblioteca Dante Alighieri
UNIASSELVI – Indaial.
005.1
P856ac Possamai, Jean Carlos
Análise orientada a objetos I / Jean Carlos Possamai. Indaial :
UNIASSELVI, 2015.
189 p. : il.
ISBN 978-85-7830-874-2
1. Programação orientada a objetos.
I. Centro Universitário Leonardo Da Vinci.
Impresso por:
III
ApresentAção
Prezado(a) acadêmico(a)!
Seja bem-vindo ao mundo da Programação Orientada a Objetos.
Neste universo você vai se deparar com termos como atributos, métodos,
abstração, encapsulamento, classes, hierarquia das classes, processo
unificado, entre outros, que compõem o material de estudo desta disciplina
e, por consequência, o dia a dia de um analista, desenvolvedor, programador,
ou seja, o profissional da programação.
Este caderno pressupõe que você já possua alguma experiência
anterior em programação, principalmente JAVA, afinal muitos dos objetos,
classes e diagramas apresentados neste material estão voltados a esta
linguagem de programação. É essencial você fazer uso dos conhecimentos
adquiridos em disciplinas anteriores para então conseguir acompanhar
o desenvolvimento de um sistema e assim auxiliar você na construção do
entendimento em programação orientada a objetos.
Aproveito a oportunidade para destacar a importância de desenvolver
as autoatividades, afinal cada exercício deste caderno foi desenvolvido para
a fixação de conceitos por meio da prática. Em caso de dúvida na realização
das atividades, sugiro que você entre em contato com seu Tutor Externo ou
com a tutoria da Uniasselvi, não prosseguindo as atividades sem ter sanado
todas as dúvidas que irão surgindo.
Vale destacar a necessidade de dedicação e de muita determinação,
afinal a Programação Orientada a Objetos exige de você bem mais do que
apenas este caderno para sua total compreensão. Aqui, você recebe somente
um início, ou seja, os conceitos de determinados pontos importantes na
programação, porém é somente na prática que você consegue compreender
o mundo da programação como um todo.
Lembre-se que o mundo da informática é encantador, assim, seu
entusiasmo por este universo depende somente de você, destacando neste
momento a compreensão da lógica envolvida no processo de construção de
programas. Por este motivo, destaco uma frase que considero importante
no caso da programação, afinal: “Para se ter sucesso, é amar de verdade o
que se faz. Caso contrário, levando em conta apenas o lado racional, você
simplesmente desiste. É o que acontece com a maioria das pessoas “ (Steven
Jobs – criador da Apple).
Bom estudo! Sucesso na sua trajetória acadêmica e profissional!
JEAN CARLOS POSSAMAI
IV
Você já me conhece das outras disciplinas? Não? É calouro? Enfim, tanto para
você que está chegando agora à UNIASSELVI quanto para você que já é veterano, há
novidades em nosso material.
Na Educação a Distância, o livro impresso, entregue a todos os acadêmicos desde 2005, é
o material base da disciplina. A partir de 2017, nossos livros estão de visual novo, com um
formato mais prático, que cabe na bolsa e facilita a leitura.
O conteúdo continua na íntegra, mas a estrutura interna foi aperfeiçoada com nova
diagramação no texto, aproveitando ao máximo o espaço da página, o que também
contribui para diminuir a extração de árvores para produção de folhas de papel, por exemplo.
Assim, a UNIASSELVI, preocupando-se com o impacto de nossas ações sobre o ambiente,
apresenta também este livro no formato digital. Assim, você, acadêmico, tem a possibilidade
de estudá-lo com versatilidade nas telas do celular, tablet ou computador.
Eu mesmo, UNI, ganhei um novo layout, você me verá frequentemente e surgirei para
apresentar dicas de vídeos e outras fontes de conhecimento que complementam o assunto
em questão.
Todos esses ajustes foram pensados a partir de relatos que recebemos nas pesquisas
institucionais sobre os materiais impressos, para que você, nossa maior prioridade, possa
continuar seus estudos com um material de qualidade.
Aproveito o momento para convidá-lo para um bate-papo sobre o Exame Nacional de
Desempenho de Estudantes – ENADE.
Bons estudos!
NOTA
V
VI
VII
UNIDADE 1 - O PARADIGMA DA ORIENTAÇÃO A OBJETOS ............................................. 1
TÓPICO 1 - HISTÓRICO .................................................................................................................... 3
1 INTRODUÇÃO .................................................................................................................................. 3
2 O QUE SÃO OBJETOS? ................................................................................................................... 3
2.1 OBJETOS COMPUTACIONAIS .................................................................................................. 5
2.2 OS DIFERENTES TIPOS DE OBJETOS COMPUTACIONAIS ............................................... 5
2.2.1 Objetos computacionais visuais......................................................................................... 5
2.2.2 Objetos com tarefa relacionada .......................................................................................... 6
2.2.3 Objetos multimídias ............................................................................................................ 7
2.2.4 Objetos de domínio do trabalho ........................................................................................ 8
2.3 ORIENTAÇÃO A OBJETOS ........................................................................................................ 9
2.3.1 Análise orientada a objetos ................................................................................................. 9
2.3.2 Análise orientada a objetos ................................................................................................. 10
2.3.3 Vantagens e benefícios da orientação a objetos ............................................................... 11
RESUMO DO TÓPICO 1..................................................................................................................... 13
AUTOATIVIDADE .............................................................................................................................. 14
TÓPICO 2 - PROCESSO UNIFICADO (UP) ................................................................................... 17
1 INTRODUÇÃO .................................................................................................................................. 17
2 CARACTERIZAÇÃO DO UP .......................................................................................................... 18
2.1 FASES DO UP ................................................................................................................................ 22
2.2 RUP – RATIONAL UNIFIED PROCESS .................................................................................... 25
2.2.1 Blocos de Construção do RUP ........................................................................................... 27
2.2.2 Papéis no RUP ...................................................................................................................... 27
2.2.2.1 Papel do Analista ..................................................................................................... 27
2.2.2.2 Papel do Desenvolvedor ......................................................................................... 28
2.2.2.3 Papel de Testador ..................................................................................................... 29
2.2.2.4 Papel de Gerente ...................................................................................................... 292.2.2.5 Outros Papéis............................................................................................................ 30
2.2.3 AUP – Agile Unified Process .............................................................................................. 32
2.2.4 Open UP – Open Unified Process ..................................................................................... 34
2.2.5 EUP – Enterprise Unified Process ..................................................................................... 35
2.2.6 RUP-SE – Rational Unified Process – Systems Engineering ......................................... 36
RESUMO DO TÓPICO 2..................................................................................................................... 38
AUTOATIVIDADE .............................................................................................................................. 39
TÓPICO 3 - ESTRUTURAS E RELACIONAMENTOS ................................................................. 41
1 INTRODUÇÃO .................................................................................................................................. 41
2 TIPOS DE ESTRUTURAS E RELACIONAMENTOS ................................................................ 41
2.1 ESTRUTURA GENERALIZAÇÃO – ESPECIALIZAÇÃO (GE) ............................................ 42
2.2 ESTRUTURA TODO – PARTE (TP) ........................................................................................... 43
2.3 CONEXÕES ................................................................................................................................... 44
2.3.1 Conexões de ocorrência ...................................................................................................... 44
sumário
VIII
2.3.2 Cardialidade ......................................................................................................................... 45
2.3.3 Conexão de mensagem ....................................................................................................... 45
2.3.4 Polimorfismo ........................................................................................................................ 47
LEITURA COMPLEMENTAR ............................................................................................................ 48
RESUMO DO TÓPICO 3..................................................................................................................... 54
AUTOATIVIDADE .............................................................................................................................. 55
UNIDADE 2 - UNIFIED MODELING LANGUAGE (UML) ........................................................ 57
TÓPICO 1 - INTRODUÇÃO A UML ................................................................................................ 59
1 INTRODUÇÃO .................................................................................................................................. 59
2 BREVE HISTÓRICO DA UML ....................................................................................................... 59
3 POR QUE MODELAR SOFTWARE? .............................................................................................. 61
3.1 LEVANTAMENTO E ANÁLISE DE REQUISITOS .................................................................. 63
3.2 PROTOTIPAÇÃO ......................................................................................................................... 65
3.3 PRAZOS E CUSTOS ..................................................................................................................... 67
3.4 MANUTENÇÃO ........................................................................................................................... 68
3.5 DOCUMENTAÇÃO HISTÓRICA .............................................................................................. 70
4 EVOLUÇÃO ........................................................................................................................................ 71
RESUMO DO TÓPICO 1..................................................................................................................... 73
AUTOATIVIDADE .............................................................................................................................. 74
FASES DO DESENVOLVIMENTO DE UM SISTEMA UML ...................................................... 77
1 INTRODUÇÃO .................................................................................................................................. 77
2 ANÁLISE DE REQUISITOS ............................................................................................................ 77
3 ANÁLISE ............................................................................................................................................. 79
4 DESIGN (PROJETO) .......................................................................................................................... 81
5 PROGRAMAÇÃO ............................................................................................................................. 82
RESUMO DO TÓPICO 2..................................................................................................................... 84
AUTOATIVIDADE .............................................................................................................................. 85
TÓPICO 3 - MODELOS DE ELEMENTOS ..................................................................................... 87
1 INTRODUÇÃO .................................................................................................................................. 87
2 CLASSES ............................................................................................................................................. 87
3 OBJETOS ............................................................................................................................................. 89
4 ESTADOS ............................................................................................................................................ 90
5 PACOTES............................................................................................................................................. 91
6 COMPONENTES ............................................................................................................................... 92
7 RELACIONAMENTOS .................................................................................................................... 93
8 MECANISMOS GERAIS ................................................................................................................. 98
LEITURA COMPLEMENTAR ............................................................................................................ 101
RESUMO DO TÓPICO 3..................................................................................................................... 103
AUTOATIVIDADE .............................................................................................................................. 104
UNIDADE 3 - DIAGRAMAS ............................................................................................................. 107
TÓPICO 1 - DIAGRAMAS DE CASOS DE USO ........................................................................... 109
1 INTRODUÇÃO .................................................................................................................................. 109
2 ATORES ............................................................................................................................................... 109
3 CASO DE USO ................................................................................................................................... 111
4 DOCUMENTAÇÃO DE CASOS DE USO .................................................................................... 113
5 ASSOCIAÇÕES.................................................................................................................................. 114
IX
6 INCLUSÃO ......................................................................................................................................... 114
7 EXTENSÃO ......................................................................................................................................... 115
8 ESPECIALIZAÇÃO/ GENERALIZAÇÃO .................................................................................... 117
9 EXEMPLOS DE DIAGRAMA DE CASOS DE USO ................................................................... 119
RESUMO DO TÓPICO 1..................................................................................................................... 122
AUTOATIVIDADE .............................................................................................................................. 123
TÓPICO 2 - DIAGRAMA DE CLASSES .......................................................................................... 125
1 INTRODUÇÃO .................................................................................................................................. 125
2 CLASSES, ATRIBUTOS E MÉTODOS ......................................................................................... 125
3 ABSTRAÇÃO...................................................................................................................................... 129
4 ENCAPSULAMENTO....................................................................................................................... 130
4.1 HIERARQUIA DAS CLASSES .................................................................................................... 133
5 HERANÇA .......................................................................................................................................... 133
5.1 HERANÇA MÚLTIPLA ............................................................................................................... 135
6 CLASSE ASSOCIATIVA .................................................................................................................. 137
7 RESTRIÇÃO ....................................................................................................................................... 139
8 PERSISTÊNCIA ................................................................................................................................. 139
9 EXEMPLOS DE DIAGRAMAS DE CLASSES ............................................................................. 140
RESUMO DO TÓPICO 2..................................................................................................................... 148
AUTOATIVIDADE .............................................................................................................................. 149
TÓPICO 3 - DIAGRAMA DE SEQUÊNCIA ................................................................................... 151
1 INTRODUÇÃO .................................................................................................................................. 151
2 ATORES ............................................................................................................................................... 151
3 OBJETOS ............................................................................................................................................. 152
4 LINHA DE VIDA ............................................................................................................................... 152
5 FOCO DE CONTROLE OU ATIVAÇÃO ...................................................................................... 153
6 MENSAGENS OU ESTÍMULOS .................................................................................................... 154
7 MENSAGENS DE RETORNO ........................................................................................................ 156
8 AUTOCHAMADAS OU AUTODELEGAÇÕES ......................................................................... 157
9 CONDIÇÕES OU CONDIÇÕES DE GUARDA ......................................................................... 158
10 EXEMPLOS DE DIAGRAMAS DE SEQUÊNCIA .................................................................... 159
RESUMO DO TÓPICO 3..................................................................................................................... 164
AUTOATIVIDADE .............................................................................................................................. 165
TÓPICO 4 - DEMAIS DIAGRAMAS EXISTENTES ..................................................................... 167
1 INTRODUÇÃO .................................................................................................................................. 167
2 DIAGRAMAS DE SERVIÇOS ........................................................................................................ 167
3 DIAGRAMA DE COLABORAÇÃO .............................................................................................. 169
4 DIAGRAMA DE ATIVIDADES ..................................................................................................... 172
5 DIAGRAMAS DE ESTADOS ......................................................................................................... 174
LEITURA COMPLEMENTAR ............................................................................................................ 176
RESUMO DO TÓPICO 4..................................................................................................................... 183
AUTOATIVIDADE .............................................................................................................................. 184
REFERÊNCIAS ...................................................................................................................................... 187
X
1
UNIDADE 1
O PARADIGMA DA
ORIENTAÇÃO A OBJETOS
OBJETIVOS DE APRENDIZAGEM
PLANO DE ESTUDOS
Esta unidade tem por objetivos:
• conhecer o histórico da programação orientada a objetos;
• identificar e caracterizar os objetos;
• compreender a cerca do Processo Unificado, sua caracterização e suas fases;
• conhecer como se comporta o Processo Unificado na Programação Orien-
tada, quais as suas caracterizações e suas fases;
• compreender como ocorre a interação entre os objetos, ou seja, a estrutura
e relacionamentos, existentes entre os objetos.
Esta unidade de ensino está dividida em três tópicos, sendo que no final
de cada um deles, você encontrará atividades que contribuirão para a
apropriação dos conteúdos.
TÓPICO 1 – HISTÓRICO
TÓPICO 2 – PROCESSO UNIFICADO (UP)
TÓPICO 3 – ESTRUTURAS E RELACIONAMENTOS
2
3
TÓPICO 1
UNIDADE 1
HISTÓRICO
1 INTRODUÇÃO
Como já é de seu conhecimento, a tecnologia se encontra em constante
evolução, seja em novos hardwares, gadgets e software.
Especificamente falando de software, também é possível perceber que a
forma como são desenvolvidos os softwares encontra-se em constante evolução.
Neste contexto, vale destacar que ao final da década de 60 surgiu a “Engenharia
de Software”, que veio para tentar solucionar problemas de qualidade e
produtividade de software. Já nas duas décadas seguintes 70 e 80, vários estudiosos
desenvolveram técnicas com propostas para solucionar estes problemas.
Uma das técnicas desenvolvidas pela Engenharia de Software foi a
orientação a objetos, que ocorreu na década de 90, sendo amplamente difunda
entre a comunidade de desenvolvedores, afinal, apresentava maior fidelidade
às situações em que são aplicadas no mundo real, como: maior produtividade,
usabilidade e reusabilidade de funções e códigos.
Nesta unidade serão abordados aspectos sobre o paradigma da orientação
a objetos, sua origem, seus conceitos, suas aplicações, suas vantagens e como
utilizá-los no contexto de desenvolvimento de software.
2O QUE SÃO OBJETOS?
Para que possamos iniciar nossos estudos sobre a Orientação a Objetos,
vamos visualizar algumas definições básicas, como por exemplo, o que é um
objeto? Correia e Tafner (2001, p. 1) se baseiam no dicionário Aurélio, onde temos
as seguintes definições para palavra objeto:
[Do lat. Objectu, part. De objicere, ´por, lançar diante´, ´expor´.] S.m.
1. Tudo que é exterior ao espírito;
2. Tudo que é aprendido pelo conhecimento, que não é o sujeito do
conhecimento;
3. Tudo que é manipulável e manufaturável;
4. Tudo que é perceptível por qualquer dos sentidos;
5. Coisa, peça, artigo de compra e venda;
6. Matéria, assunto.
UNIDADE 1 | O PARADIGMA DA ORIENTAÇÃO A OBJETOS
4
Ambler (1998, p. 5) em seu estudo traz uma definição computacional
de objeto onde “considera que qualquer indivíduo, lugar, coisa, tela, relatório
ou conceito que seja aplicável ao sistema é um objeto”. Ex.: Em um sistema
universitário, Arthur Dent é um estudante-objeto; ele atende a diversos
seminários-objetos e está trabalhando em um mestrado-objeto. Já em um sistema
bancário Artur é um cliente-objeto e possui uma conta corrente-objeto da qual
emite cheque-objetos.
FIGURA 1 – EXEMPLOS DE OBJETOS
FONTE: Disponível em: <http://www.dreamstime.com/stock-photo-retro-objects-icons-detailed-
set-image30928100>. Acesso em: 23 dez. 2014.
TÓPICO 1 | HISTÓRICO
5
Objetos são, com frequência, semelhantes a outros tipos de objetos.
Estudantes compartilham de características semelhantes (fazem os
mesmos tipos de coisas, são descritos da mesma forma), cursos compartilham
características semelhantes, contas bancárias compartilham características
semelhantes e assim por diante.
Assim, ao analisar as duas citações descritas acima, podemos concluir que
objeto é uma coisa física (pedra), ou abstrata (uma equação ou conta corrente).
2.1 OBJETOS COMPUTACIONAIS
Objetos computacionais procuram reproduzir as mesmas características
e comportamentos dos objetos do mundo real dentro de um sistema. Correia e
Tafner (2001) reforçam que os programadores podem interagir com estes objetos
ativando características ou comportamentos, sem necessidade de entender o
funcionamento interno do objeto computacional. Ou seja, para interagir com
objetos, precisamos apenas conhecer o que estes objetos fazem e usá-los, nada
mais.
2.2 OS DIFERENTES TIPOS DE OBJETOS
COMPUTACIONAIS
Para que você acadêmico possa compreender melhor a relação existente
entre os objetos computacionais e seu comportamento agregado, seguem alguns
tipos diferentes de objetos computacionais encontrados, bem como seus exemplos.
2.2.1 Objetos computacionais visuais
A utilização de programação visual proporciona ao usuário uma
experiência totalmente interativa. Desta forma, o usuário pode interagir
com sistema computacional através do mouse ou teclado, apertando botões,
selecionando itens de um calendário, escrevendo em um campo texto ou
selecionando itens de uma lista, conforme ilustrado na figura 2.
UNIDADE 1 | O PARADIGMA DA ORIENTAÇÃO A OBJETOS
6
FIGURA 2 – OBJETOS COMPUTACIONAIS VISUAIS COMUNS PARA INTERFACE COM USUÁRIO
FONTE: Sistema ERP Empresa Supero Tecnologia
2.2.2 Objetos com tarefa relacionada
Os desenvolvedores de softwares utilizam os objetos computacionais
visuais para desenvolver e realizar tarefas relacionadas a dados proporcionando
aos usuários: janelas, campos ou botões com os quais estes possam interagir.
Ex.: Um editor de textos qualquer, conforme representado na figura a
seguir, é um bom exemplo. Neste editor, o documento é apresentado ao usuário
por meio de uma interface gráfica (também orientada a objetos) que permite
uma interação direta e praticamente total com o documento em que as barras de
ferramentas são objetos com os quais o usuário pode interagir com o texto.
TÓPICO 1 | HISTÓRICO
7
FIGURA 3 – OBJETOS COM TAREFA RELACIONADA COMUM PARA INTERFACE COM USUÁRIO
FONTE: O autor
2.2.3 Objetos multimídias
Os objetos multimídia proporcionam uma rica experiência de interação
com o usuário. Este tipo de objeto computacional possibilita a reprodução de
sons, imagens, animações ou vídeos da mesma forma que nos editores de texto.
Como podemos verificar na figura a seguir, no reprodutor de fotos as barras de
ferramentas são objetos que permitem que o usuário interaja com o conteúdo
alterando seu comportamento.
FIGURA 4 – OBJETOS MULTIMÍDIAS COMUNS PARA INTERFACE COM USUÁRIO
FONTE: O autor
UNIDADE 1 | O PARADIGMA DA ORIENTAÇÃO A OBJETOS
8
2.2.4 Objetos de domínio do trabalho
São características ou compartimentos de um objeto ou sistema
operacional, criado para ficar, na maioria das vezes, oculto aos usuários. Afinal,
estes estão diretamente envolvidos com o funcionamento do sistema ou objeto
computacional. Para exemplificar esta situação observe na figura a seguir o
gerenciador de tarefas do sistema operacional. Ele está quase sempre oculto,
garantindo que os milhares de objetos do sistema operacional que fazemos uso
trabalhem adequadamente.
FIGURA 5 – OBJETOS DE DOMÍNIO DE TRABALHO COMUNS PARA INTERFACE COM USUÁRIO
FONTE: O autor
TÓPICO 1 | HISTÓRICO
9
2.3 ORIENTAÇÃO A OBJETOS
O conceito de Orientação a Objetos surgiu com o intuito de minimizar os
problemas encontrados até então na criação de softwares complexos, projetados
por meio de decomposição funcional e sub-rotinas (ARAÚJO, 2009).
A análise e programação orientada a objetos, não se resume apenas
na utilização de componentes de interface gráfica, mas, sim, na definição e
programação do sistema computacional, desde que atenda à metodologia.
Metodologia esta, que segundo Correia e Tafner (2001, p. 7) serve tanto
para a definição lógica do sistema quanto para a sua implementação, sendo esta
uma das vantagens da Orientação a Objetos.
2.3.1 Análise orientada a objetos
Como já foi visto anteriormente, um objeto é qualquer coisa, real ou
abstrata, a respeito da qual armazenamos dados e os métodos que os manipulam
disparam operações que mudam o estado dos objetos, possibilitando que eles
interagem uns com os outros.
Segundo Araújo (2009, p. 46), “o foco da análise Orientada a Objetos é no
mapeamento de uma solução sistêmica para algum processo de negócio”. Assim,
na análise orientada a objetos, os analistas e desenvolvedores têm como objetivo
principal identificar os objetos que farão parte do sistema computacional que está
sendo automatizado, seus atributos e principalmente no comportamento destes
objetos dentro do sistema computacional.
Larman (2004, p. 31) descreve que durante a análise orientada a objetos,
“o objetivo é encontrar e descrever os objetos – ou conceitos – no domínio do
problema. No caso do sistema de informação de uma biblioteca, por exemplo,
alguns dos conceitos incluem Livro, Biblioteca e usuário”, observe a representação
por meio da figura a seguir, demonstrada na programação orientada a objetos.
Orientação a Objetos consiste em considerar os sistemas computacionais como
uma coleção de objetos que interagem de maneira organizada (FARINELLI, 2007).
IMPORTANT
E
UNIDADE 1 | O PARADIGMA DA ORIENTAÇÃO A OBJETOS
10
2.3.2 Análise orientada a objetos
Segundo Larman (2004, p. 31), “durante o projeto orientado a objetos, há
uma ênfase na definição dos objetos de software e como eles colaboram para a
satisfação dos requisitos. No sistema da biblioteca, por exemplo, um objeto de
software Livro, pode ter um atributo título e um método obterCapítulo”, observe
a figura a seguir.
Em seu estudo David (2007, p. 1) define que a Programação Orientada a
Objetos “foi criada para tentar aproximar o mundo real do mundo virtual. Assim,
a ideia fundamental é tentar simular o mundo real dentro do computador. Para
isso, nada mais natural do que utilizar Objetos, afinal, nosso mundo é composto
por objetos”.
Na Programação Orientada a Objetos, o analista ou desenvolvedor é
responsável por delinear o mundo dos objetos, e assim determinar como devem
interagir entre si. Desta forma, é possívelperceber que os objetos conversam
entre si por meio de envio de mensagens, e, assim, a função do analista ou
desenvolvedor é verificar quais devem ser as mensagens que cada objeto deve
receber, e consequentemente verificar qual ação deve ser tomada ao receber cada
mensagem.
Finalmente Larman (2004) escreve que durante a implementação ou
programação orientada a objetos, os objetos são implementados, como uma classe
Livro em Java, conforme demonstra a figura seguinte.
“a Análise Orientada a Objetos consiste em definir quais objetos fazem parte de
um sistema e a maneira como se comportam” (CORREIA e TAFNER, 2001, p. 8).
IMPORTANT
E
TÓPICO 1 | HISTÓRICO
11
FIGURA 6 – A ORIENTAÇÃO A OBJETOS ENFATIZA A REPRESENTAÇÃO DE OBJETOS
FONTE: LARMAN (2004, p. 31)
2.3.3 Vantagens e benefícios da
orientação a objetos
Ao estudar a Orientação a Objetos, fica fácil perceber que sua principal
vantagem é a utilização de uma mesma metodologia, tanto para a análise de
sistemas, quanto para a programação.
Neste contexto, Farinelli (2007) descreve que a Orientação a Objetos
consiste em conceber um sistema computacional como um todo orgânico
formado por objetos que se relacionam entre si, trazendo consigo alguns
benefícios, como por exemplo: unificação entre dados e processos; consistência
entre análise e desenvolvimento; reutilização e aumento da produtividade;
multidesenvolvimento e, por último, mas não menos importante, suas facilidades
de manutenção.
“Programação Orientada a Objetos consiste em utilizar objetos computacionais
para implementar a funcionalidade de um sistema”. (CORREIA e TAFNER, 2001, p. 8)
IMPORTANT
E
UNIDADE 1 | O PARADIGMA DA ORIENTAÇÃO A OBJETOS
12
Assim, para finalizar o pensamento acerca deste tema, pode-se verificar
que a principal utilização desta ferramenta é a reutilização das informações
constantes no sistema.
13
Neste tópico, vimos:
• O Paradigma da Orientação a Objetos, que trata da utilização no
desenvolvimento de softwares, seu histórico; afinal, surgiu há algumas
décadas e, desde então, vem sendo difundido e adaptado às necessidades do
mercado.
• Os objetos e seus diferentes tipos: objetos computacionais, objetos visuais,
objetos multimídias, objetos de domínio do trabalho e objetos com tarefa
relacionada.
• A análise e programação orientada a objetos, que segundo David (2007), a
Programação Orientada a Objetos foi criada para tentar aproximar o mundo
real do mundo virtual. Assim, a ideia fundamental é tentar simular o mundo
real dentro do computador.
Neste momento, você está apto a realizar as autoatividades deste tópico
e iniciar na sequência, o Tópico 2 desta unidade.
Bom estudo!
RESUMO DO TÓPICO 1
14
AUTOATIVIDADE
1 Na área da informática um objeto pode ser considerado qualquer indivíduo,
lugar, coisa, tela, relatório ou conceito que seja aplicável ao sistema. Com
base nesta definição, cite os diversos tipos de objetos computacionais.
2 São características ou compartimentos de um objeto ou sistema operacional,
criados para ficarem, na maioria das vezes, ocultos aos usuários. Esta
afirmação se refere a:
a) Objetos multimídias.
b) Objeto domínio de trabalho.
c) Objetos computacionais visuais.
d) Objetos com tarefa relacionada.
3 Assinale V para as sentenças verdadeiras e F para as falsas no que diz
respeito à Orientação a Objetos.
( ) A metodologia utilizada na Orientação a Objetos serve tanto para
programação quanto para análise.
( ) A Análise Orientada a Objetos é bem definida e consiste em apresentar
quais os objetos que compõem um sistema e como se comportam.
( ) Com relação à Programação Orientada a Objetos, ela somente utiliza
a estrutura de dados que pode simular o comportamento dos objetos,
prejudicando, desta forma, a análise e programação do sistema.
( ) Uma das vantagens da Análise de Orientação a Objetos do analista ou
desenvolvedor é de dividir com o usuário seu entendimento acerca do
programa.
Agora, assinale a sequência CORRETA:
a) ( ) V – F – F – V.
b) ( ) F – F – V – F.
c) ( ) V – V – F – V.
d) ( ) F – V – F – F.
15
4 Utilizando-se das informações recebidas durante o estudo deste tópico,
descreva a diferença em Análise e Programação Orientada a Objetos.
5 Descreva uma das principais vantagens da Orientação a Objetos.
16
17
TÓPICO 2
PROCESSO
UNIFICADO (UP)
UNIDADE 1
1 INTRODUÇÃO
O Processo Unificado é um dos mais importantes padrões da indústria
de software atual. Vale destacar que o processo unificado (UP ou Unified Process)
foi desenvolvido por três importantes pioneiros da orientação a objetos nos anos
1990 (Jacobson, Booch e Rumbaugh). Este é o resultado de mais de 30 anos de
experiência acumulada em forma de projetos, notações e processos.
O UP é o primeiro modelo de processo inteiramente adaptado ao uso da
notação UML (Unified Modeling Language). Sua concepção foi baseada nas práticas
de maior Retorno do investimento (ROI) de mercado.
Wazlawick (2013, p. 75) descreve ainda que as atividades do UP são bem
definidas no seguinte sentido:
a)Elas são compostas por uma descrição clara e precisa.
b)Apresentam responsáveis.
c)Nestas atividades apresentam-se os artefatos de entrada e saída.
d)Determinam as dependências entre as atividades.
e)Possuem um modelo de ciclo de vida bem definido.
f)São acompanhadas de procedimentos adequados para o uso das
ferramentas disponibilizadas.
g)Indicam o uso da linguagem UML.
Neste tópico será abordado acerca do Processo Unificado, principalmente
sua caracterização, suas fases e por fim suas derivações.
UNIDADE 1 | O PARADIGMA DA ORIENTAÇÃO A OBJETOS
18
2 CARACTERIZAÇÃO DO UP
O UP é um framework extensível para a concepção de processos, podendo
ser adaptada as características de diferentes empresas e projetos (WAZLAWICK,
2013). Vejamos a seguir as principais características do UP:
a) Dirigido por Caso de Uso
Este é um processo compreendido do ponto de vista do usuário, não
antecipando decisões de implementações. Para o UP, o conjunto de casos de uso
deve esgotar toda a funcionalidade possível do sistema.
Neste momento, vale destacar, a aplicação mais fundamental do caso de
uno no desenvolvimento de sistemas é a incorporação dos requisitos funcionais
de forma organizada. Cada passo dos fluxos principais e alternativos de um
caso corresponde a uma função do sistema. Requisitos não funcionais podem
ser anotados juntamente com os casos de usos de seus passos, e requisitos
suplementares são anotados em um documento à parte (WAZLAWICK, 2013).
FIGURA 7 – CASOS DE USO
FONTE: Disponível em: <http://www.devmedia.com.br/artigo-clube-delphi-83-modelagem-uml-
com-together/11031>. Acesso em: 23 dez. 2014.
Cadastrar
Curso
Cadastrar
Professor
Cadastrar
Disciplina
Cadastrar
Aluno
Matricular
Aluno
Secretaria
TÓPICO 2 | PROCESSO UNIFICADO (UP)
19
a) Centrado na arquitetura
O UP sugere desenvolver uma sólida arquitetura de sistema. As
funcionalidades identificadas nos diversos casos de uso devem ser incrementadas
a esta arquitetura.
É importante destacar que a arquitetura pode ser compreendida como
o conjunto de classes, possivelmente agrupadas em componentes que realizam
operações definidas pelo sistema. Para Wazlawick (2013, p. 76), “a arquitetura
é basicamente um modelo que define a estrutura da informação, suas possíveis
operações e sua organização em componentes ou até mesmo em camadas”.
FIGURA 8 – CENTRADO NA ARQUITETURA
FONTE: Disponível em: <http://slideplayer.com.br/slide/345298/>. Acesso em: 23 dez. 2014.
A arquitetura se desenvolve por meio das visões dos usuários demonstradas
em casos de uso, sendo esta influenciada por fatores de implementação: arquitetura
de computador, sistema operacional, dbms, protocolos de redes, linguagem de
programação, ambiente de interface gráfica, biblioteca de funções disponíveis,
sistemas legados, necessidade de performance, portabilidade, entre outros.
Application-specific layer
Classes específicas de negócio
Application-general layer
Classes de ServiçosMiddleware layer
Pacotes Genéricos
System-software layer
Sistemas Operacionais
UNIDADE 1 | O PARADIGMA DA ORIENTAÇÃO A OBJETOS
20
FIGURA 9 – FATORES QUE INFLUENCIAM A ARQUITETURA
FONTE: Disponível em: <http://slideplayer.com.br/slide/345298/>. Acesso em: 23 dez. 2014.
a) Interativo e Incremental
“Assim como os desenvolvimentos ágeis, o UP preconiza o
desenvolvimento baseado em ciclos interativos de duração fixa, onde em cada
interação a equipe incorpora à arquitetura as funcionalidades necessárias para
realizar os casos de uso abordados”. (WAZLAWICK, 2013, p. 77).
Lembre-se, acadêmico(a), para cada interação os desenvolvedores
identificam os casos de uso relevante, analisando-os segundo a arquitetura
selecionada. Ao final, o produto da interação é componente (modelos ou módulos
executáveis). Desta forma, verifica-se então se os componentes satisfazem os
casos de uso e a arquitetura. Se a implementação atinge os objetivos, ou seja,
seus componentes satisfazem os casos de uso e a arquitetura, o desenvolvimento
passa para a próxima interação, caso contrário, os desenvolvedores devem
revisar as decisões anteriores e tentar uma nova abordagem (REBOUÇAS, 2007).
System software
Middleware (including frameworks)
Legacy systems
Standards and policies
Nonfunctional requirements
Distribution needs
Constraints and Enablers
Use Cases
Architecture
Experience:
Previous architectures
Architectural patterns
TÓPICO 2 | PROCESSO UNIFICADO (UP)
21
FIGURA 10 – DESENVOLVIMENTO INTERATIVO E INCREMENTAL
FONTE: Disponível em: <http://www.devmedia.com.br/introducao-ao-processo-unificado/3931>.
Acesso em: 23 dez. 2014.
Como principais benefícios do desenvolvimento interativo, Larman (2004,
p. 41) destaca:
a)Mitigação precoce.
b)Progresso visível desde o início.
c)Realimentação, envolvimento do usuário e adaptação imediatos,
levando a um sistema refinado que atenda, de forma mais adequada,
às reais necessidades dos interessados no projeto.
d)A complexidade é administrada, desta forma, a equipe não é
sobrecarregada pela paralisia da análise ou por passos muito longos
e complexos.
e)O aprendizado obtido em uma interação pode ser metodicamente
usado para melhorar o próprio processo de desenvolvimento,
interação por interação.
a) Focado em riscos
Este tipo de abordagem prioriza os casos de uso mais crítico onde são
tratados primeiro os problemas mais difíceis. Neste caso, os requisitos ou casos
de uso de maior risco são os mais imprevisíveis, assim, estudá-los primeiramente
além de garantir maior aprendizado sobre o sistema e decisões arquiteturais, vai
fazer com que riscos arquiteturais sejam dominados o mais cedo possível.
Realimentação
da iteração N leva
ao refinamento
e adaptação dos
requisitos e do
projeto na iteração
N+1
RequisitosTempo
N
N+1
Quatro semanas por exemplo.
O sistema cresce incrementalmente.
Requisitos
Implementação
Implementação
Testes e
Integração
Testes e
Integração
Projeto
Projeto
UNIDADE 1 | O PARADIGMA DA ORIENTAÇÃO A OBJETOS
22
2.1 FASES DO UP
Caro(a) acadêmico(a)! Observe, a seguir, quais são as fases que compõem
a construção de um UP, e ao final das descrições, observe a figura que demonstra
como essas fases se comportam durante o processo.
a) Concepção (inception)
Busca-se obter uma visão da abrangência do sistema.
Nesta fase são levantados os requisitos, e um modelo conceitual preliminar
é construído, bem como ocorre a identificação dos casos de uso de alto nível, que
implementam as funcionalidades requeridas pelo cliente.
Neste momento calcula-se também o esforço de desenvolvimento dos
casos de uso e é construído o plano de desenvolvimento, sendo este composto
por um conjunto de ciclos interativos nos quais são acomodados os casos de
uso. Pode haver, nesta fase, alguma implementação e testes, caso seja necessário
elaborar protótipos para reduzir riscos, possibilitando assim a verificação dos
casos de uso que requerem um maior cuidado.
b) Elaboração (elaboration)
As interações que ocorrem nesta fase têm como objetivo detalhar a análise
e expandir os casos de uso, para obter assim sua descrição detalhada e verificar
as situações excepcionais, ou seja, são voltadas para a produção da arquitetura
básica, e vários casos de uso são demonstrados com detalhes, possuindo uma
arquitetura projetada a qual utiliza-se de artefatos, os quais podem ser estáticos
ou dinâmicos.
O modelo conceitual será transformado em definitivo, cada vez mais
refinado, sobre o qual serão aplicados padrões de análise e uma descrição
funcional poderá ser feita, bem como o design lógico e físico do sistema.
Ao final desta fase, é necessário que os desenvolvedores estejam aptos a
planejar a fase seguinte a construção.
TÓPICO 2 | PROCESSO UNIFICADO (UP)
23
c) Construção (construction)
A fase de construção possui interações nas quais os casos de uso mais
complexos já foram tratados e a arquitetura já foi estabilizada, afinal, o produto é
construído no decorrer desta fase.
Assim, as atividades de suas interações consistem predominantemente na
geração de código e teste do sistema.
Com a automação da geração de código e a introdução de modelos de
desenvolvimento dirigidos a teste, pressupõe-se que um bom design possa dar
origem rapidamente a um código de alta qualidade, ou seja, o sistema será
composto por todos os casos de uso que a gerência e os usuários concordaram em
desenvolver para esta versão do produto.
Vale lembrar que mesmo que ocorram erros, estes podem ser corrigidos,
estando aptos assim para seguir no processo e iniciar a próxima fase.
d) Transição (deployment)
Esta fase consiste na implementação do sistema no ambiente de produção,
com a realização de teste e operação, onde a primeira versão do sistema é entregue
ao usuário.
Também, neste momento, é feita a transferência de dados de possíveis
sistemas antigos para o novo sistema e o treinamento dos usuários, caso ocorram
divergências no sistema, os usuários reportam-nas para os desenvolvedores,
incorporando as melhorias.
Nesta fase ainda pode haver alguma revisão de requisitos e geração de
código, mas não de forma significativa.
Após todas as definições, conforme mencionado no início deste tópico,
observe a figura que demonstra as fases, bem como os fluxos de trabalhos no
decorrer do processo de construção de um UP.
UNIDADE 1 | O PARADIGMA DA ORIENTAÇÃO A OBJETOS
24
FIGURA 11 – FASES DO UP – FLUXOS DE TRABALHO
FONTE: Disponível em: <http://www.devmedia.com.br/artigo-engenharia-de-software-o-
processo-unificado-integrado-ao-desenvolvimento-web/803>. Acesso em: 23 dez. 2014.
FIGURA 12 – EXEMPLO DE UM PROCESSO UNIFICADO
FONTE: Disponível em: <http://slideplayer.com.br/slide/345298/>. Acesso em: 23 dez. 2014.
Concepção Elaboração Construção Transição
Inicial Elab.nº 1
Elab.
nº 2
Const.
nº 1
Const.
nº 2
Const.
nº N
Trans.
nº 1
Trans.
nº 2
Teste
Fluxo de trabalho
Interações
Ambiente
Gerenciamento de Projeto
Geren. de
Configuração e Mudança
Implantação
Implementação
Requisitos
Análise e Design
Modelagem de Negócios
Fases
Use-Case
Model
Analysis
Model
Design
Model Deployment
Model
Implementation
Model
Test
Model
Specified by
realized by
distributed by
implemented by
verified by
X
OK
X
OK
X
OK
TÓPICO 2 | PROCESSO UNIFICADO (UP)
25
Observe como se apresenta o ciclo de desenvolvimento de um UP.
FIGURA 13 – CICLO DE DESENVOLVIMENTO UP
FONTE: Disponível em: <http://open2up.blogspot.com.br/>. Acesso em: 23 dez. 2014.
Agora, acadêmico(a), que você conhece a definição de UP, bem como
suas fases, chegou o momento de conhecer as derivações desta ferramenta de
programação, as quais se apresentam a seguir, iniciando-se por: RUP (Rational
Unified Process), AUP (Agile Unified Process), OpenUp (Open Unified Process), EUP
(Enterprise Unified Process), e finalizando com RUP-SE (Rational Unified Process –
Systems Engineering).
2.2 RUP – RATIONAL UNIFIED PROCESS
Micro Incremento
Ciclo de
Vida deIteração
Ciclo de
Vida de
Projeto
Dias
Semanas
Meses
Item de Trabalho
Plano de Interação
Plano de Projeto
Foco no
Indivíduo
Foco na
Equipe
Foco nos
Envolvidos
Iniciação Elaboração Construção Trânsição
Valor
Ríscos
Executável
Estável
Incremento
Interação
“Este processo de engenharia de software fornece uma abordagem
para assumir tarefas e responsabilidades dentro de uma organização de
desenvolvimento, cujo objetivo é assegurar a produção de software de alta
qualidade dentro de prazos e orçamentos previsíveis”. (KRUCHTEN, 2003, p.
14). O autor ainda afirma que “Derivado dos trabalhos sobre UML e do Processo
Unificado de Desenvolvimento de Software, ele captura seis das melhores práticas
no desenvolvimento de software de forma satisfatória para uma grande faixa de
projetos e organizações”.
UNIDADE 1 | O PARADIGMA DA ORIENTAÇÃO A OBJETOS
26
Em outras palavras, o autor quer dizer que o RUP é um método que pode
ser utilizado no desenvolvimento de software, contemplando técnicas que os
membros da equipe de desenvolvimento devem seguir para atingir o objetivo de
aumentar sua produtividade.
O RUP representa uma nova geração de processos genéricos, a
mais importante inovação é a separação de fases e workflows, e sobretudo, o
reconhecimento de que a implantação de software no ambiente do usuário é parte
do processo. (SENE, 2015).
FIGURA 14 – QUANDO DEVO UTILIZAR O RUP
FONTE: Disponível em: <http://www.wthreex.com/rup/v711_ptbr/rup/guidances/supportingmaterials/
introduction_to_rup,_uRs44C8CEdqfj_h52-wqcw.html> e <http://www.tiespecialistas.com.br/2011/02/
rup-primeiros-passos/>. Acesso em: 23 dez. 2014.
Maior Complexibilidade Técnica
- Tempo real incorporado, distribuído, tolerância aos defeitos
- Reengenharia de arquitetura sem precedentes, personalizada
- Alto desempenho
Menos Complexibilidade Técnica
- Maioria 4 GL ou baseada em componentes
- Reengenharia de aplicativo
- Desempenho interativo
Menor
Complexibilidade de
Gerenciamento
- Pequena escala
- Informal
- Investidor único
Maior
Complexibilidade de
Gerenciamento
- Larga escala
- Contratual
- Muitos investidores
Necessidade de alto
"nível de cerimônia"
TÓPICO 2 | PROCESSO UNIFICADO (UP)
27
2.2.1 Blocos de Construção do RUP
Identificamos o conjunto de elementos básicos (building blocks) da seguinte
forma:
a) Quem: define o conjunto de habilidades necessário para realizar determinadas
atividades.
b) O quê: define algo produzido por uma atividade, como diagramas, relatórios
ou código.
c) Como: descreve uma unidade de trabalho atribuída a um papel que produz
determinado conjunto de artefatos.
d) Quando: definem as tendências entre as diferentes atividades.
2.2.2 Papéis no RUP
O papel define um conjunto de comportamentos, habilidades e
responsabilidades de uma pessoa da equipe. Os papéis dentro de um projeto não
são necessariamente para pessoas específicas nem para cargos dentro da equipe.
A mesma pessoa pode exercer vários papéis em diferentes momentos do dia, no
mesmo projeto.
Vejamos a seguir as categorias em que são organizados os papéis:
2.2.2.1 Papel do Analista
O analista é o responsável por realizar o relacionamento ou contato com
usuário ou cliente do sistema. As pessoas que exercem este papel devem ser
capazes de entender quais são as necessidades do sistema, e criar descrições que
sejam compreendidas pelos designers, desenvolvedores e testadores.
Além de terem a responsabilidade de atentarem para as adequações de
reais necessidades, bem como verificar a conformidade com normas e padrões
estabelecidos.
UNIDADE 1 | O PARADIGMA DA ORIENTAÇÃO A OBJETOS
28
FIGURA 15 – PAPEL DO ANALISTA
FONTE: Disponível em: <http://www.wthreex.com/rup/portugues/process/workers/wk_implm.
htm>. Acesso em: 23 dez. 2014.
2.2.2.2 Papel do Desenvolvedor
Os desenvolvedores transformam os requisitos em produto de software
e devem ter o conhecimento necessário para desenvolver os códigos-fonte e
testá-los.
FIGURA 16 – PAPEL DO DESENVOLVEDOR
FONTE: Disponível em: <http://www.wthreex.com/rup/portugues/process/workers/wk_implm.
htm>. Acesso em: 23 dez. 2014.
Implementar
Componente
Componente
Realizar
Teste Unitário
Corrigir
um Defeito
Desenvolver
Artefatos de
Instalação
Artefatos
de Instalação
Implementar
Componentes de
Teste e de Subsistemas
Componente
de Teste
Subsistema de
Implementação
Implementador
TÓPICO 2 | PROCESSO UNIFICADO (UP)
29
2.2.2.3 Papel de Testador
É responsável por definir técnicas, estratégias, e principalmente definir os
casos de testes que serão aplicados no sistema, ou seja, tem a função de analisar
os resultados dos testes e no caso de necessidade, informar aos responsáveis que
providenciem a correção.
FIGURA 17 – PAPEL DO TESTADOR
FONTE: Disponível em: <http://www.wthreex.com/rup/portugues/process/workers/wk_tstr.
htm>. Acesso em: 23 dez. 2014.
2.2.2.4 Papel de Gerente
O papel de gerente está relacionado principalmente com as atividades de
planejamento, controle e sobre tudo a organização do projeto.
UNIDADE 1 | O PARADIGMA DA ORIENTAÇÃO A OBJETOS
30
FIGURA 18 – PAPEL DE GERENTE
FONTE: Disponível em: <http://www.wthreex.com/rup/portugues/process/workers/wk_projm.
htm>. Acesso em: 23 dez. 2014.
2.2.2.5 Outros Papéis
Neste item é possível encontrar outros papéis que não foram classificados
nos tipos anteriores como: interessados, desenvolvedor de curso, redator técnico
e administrador de sistemas.
Como o RUP é uma ferramenta adaptável, novos papéis podem ser
necessários e adicionados a um projeto ou processo específico.
TÓPICO 2 | PROCESSO UNIFICADO (UP)
31
FIGURA 19 – DESENVOLVEDOR DE CURSO
FONTE: Disponível em: <http://www.wthreex.com/rup/portugues/process/
workers/wk_crsdv.htm>. Acesso em: 23 dez. 2014.
FIGURA 20 – ADMINISTRADOR DE SISTEMA
FONTE: Disponível em: <http://www.wthreex.com/rup/portugues/process/
workers/wk_sysad.htm>. Acesso em: 23 dez. 2014.
Desenvolvedor
do Curso
Materiais de
Treinamento
Desenvolver
Materiais de
Treinamento
responsável por
Administrador
do Sistema
Suportar o
Desenvolvimento
Infraestrutura de
Desenvolvimento
responsável por
UNIDADE 1 | O PARADIGMA DA ORIENTAÇÃO A OBJETOS
32
FIGURA 21 – REVISOR DE PROJETO
FONTE: Disponível em: <http://www.wthreex.com/rup/portugues/process/workflow/ovu_mgm.
htm>. Acesso em: 23 dez. 2014.
2.2.3 AUP – Agile Unified Process
O Agile Unified Process é uma versão simplificada do RUP, que aplica
técnicas ágeis de desenvolvimento dirigido por testes (TDD), modelagem ágil e
fatoração.
A AUP teve sua origem no início do século XXI, por meio de um grupo
de engenheiros, consultores, autores, os quais, após muito estudo, denominaram
esta pesquisa de The Agile Manifesto, tendo então como objetivo a apresentação
e discussão de novas técnicas que poderiam ser utilizadas para desenvolver
softwares, disponibilizando maior agilidade por meio dos conceitos aplicados às
metodologias já existentes.
TÓPICO 2 | PROCESSO UNIFICADO (UP)
33
Após a criação deste manifesto, percebeu-se que a AUP seria um método
ágil e que poderia atender às seguintes prerrogativas:
a) Valorizar os indivíduos envolvidos no processo e as interações entre ambos.
b) Produzir softwares funcionais, não somente documentações completas e
atualizadas.
c) Colaborar com os clientes e não apenas discutir picuinhas contratuais.
d) Estar preparado para a adaptação e introdução de mudanças.
Em sentido complementar, vale destacar os princípios que denominam a
AUP:
a) Assumir simplicidade.
b) Flexibilidade para mudanças.
c) O software é o primeiro objetivo.
d) Viabilizar esforços futuros.
e) Alterações incrementais.
f) Maximizar o investimento dos interessados no software.
g) Modelar com propósito.
h) Múltiplos modelos.
i) Trabalho com qualidade.
FIGURA 22 – FASES DO AUP
FONTE: Disponível em: <http://www.cs.sjsu.edu/~pearce/modules/lectures/se/aup.
htm>. Acesso em: 23 dez. 2014.
Testing
Implementation
Modeling
Deployment
UNIDADE 1 | O PARADIGMA DA ORIENTAÇÃO A OBJETOS34
FIGURA 23 – Fases do AUP
FONTE: Disponível em: <http://pt.slideshare.net/redecharles21/aup-seminario-final>. Acesso em:
23 dez. 2014.
Ao contrário do RUP, conforme demonstra a figura acima, a AUP possui
apenas sete disciplinas (Modelagem, Implementação, Teste, Implantação,
Gerenciamento de configuração, Gerenciamento de projeto, Ambiente).
A filosofia de produção de artefatos é minimalista, ou seja, deve gerar o
mínimo necessário de artefatos para produzir um sistema com qualidade.
2.2.4 Open UP – Open Unified Process
A OpenUP é uma implementação aberta da UP desenvolvida como parte
do Eclipse Processes Framework, conhecida anteriormente como Basic Unified
Process (BUP). OpenUP aceita, grande parte dos princípios utilizados no Processo
Unificado, porém é um método independente de ferramenta, não exigindo grande
precisão e detalhes nos documentos.
O processo baseia-se em quatro princípios (Colaboração, Evolução,
Balanceamento e Foco).
O ciclo de vida também é dividido em quatro fases como no UP. Estas
fases são divididas em interações, porém aqui as equipes se auto-organizam para
planejar cada uma delas.
Test
Project Management
Configuration Management
Implementation
Deployment
Environment
Model
Inception
I1 E1 C1 T1 T2C2 Cn
Elaboration TransitionConstruction
Phases
Iterations
TÓPICO 2 | PROCESSO UNIFICADO (UP)
35
FIGURA 24 – CICLO DE VIDA OpenUP
FONTE: Disponível em: <http://open2up.blogspot.com.br/>. Acesso em: 23 dez. 2014.
Em relação ao UP, a maioria dos processos opcionais foi eliminada e
outros foram mesclados. O resultado é um processo mais simples, mais ainda fiel
aos princípios do RUP.
FIGURA 25 – MODELO DE CICLO DE VIDA DE UMA INTERAÇÃO OpenUp
FONTE: Disponível em: <http://pt.slideshare.net/jeanstreleski/open-up-gerenciando-projetos-
sob-principios-geis>. Acesso em: 23 dez. 2014.
2.2.5 EUP – Enterprise Unified Process
O modelo EUP visualiza ao desenvolvimento de software não apenas
como um projeto a ser desenvolvido, mais como algo intrínseco ao ciclo de vida
da empresa. Este modelo foi proposto como uma extensão ao modelo RUP para
prover, além das fases do RUP, duas novas fases para tratar a evolução ou suporte
ao sistema e à aposentadoria do sistema.
Iteration planning Stable weekly build Stable iteration
build
Iteration review /
Retrospective
Upfront planning
and architecture
Continuous
micro-increments /
bug-fixing / builds
Continuous
bug-fixing /
micro-increments /
builds
A few
hours
A few
hours
A few
days
- Escopo do sistema
- Requisitos do sistema
- Custo geral do sistema
- Riscos em potencial
- Baseline da Arquitetura
- Riscos em potencial
- Componentes do sistema
- Reusabilidade
- Qualidade do sistema
- Versões Alfa e Beta
- Release do sistema
- Teste Beta
- Conversão do BD
- Treinamentos
- Distribuição
- Documento de visão
- Lista de riscos
- Plano de interação
- Glossário
- Modelo de Caso de Uso
- Protótipos
- Protótipo
- Modelo de Design
- Modelo de Dados
- Modelo de Implantação
- Release do sistema
- Casos de Testes
- Material de Suporte
- Release
- Material de Suporte
- Casos de Testes
- Pacote de Distribuição
Objetivos do
Ciclo de Vida
FASES MARCOS OBJETIVOS ARTEFATOS
ElaboraçãoIniciação
Arquitetura do
Ciclo de Vida
Construção
Recurso Opera-
cional Inicial
Transição
Liberação do
Produto
UNIDADE 1 | O PARADIGMA DA ORIENTAÇÃO A OBJETOS
36
FIGURA 26 – FASES EUP
FONTE: Disponível em: <http://www.enterpriseunifiedprocess.com/>. Acesso em: 23 dez. 2014.
O objetivo principal da disciplina de operação e suporte é manter o
produto funcionando em produção. Afinal, estes devem garantir o correto
funcionamento do software, a evolução dos processos, a realização dos backups,
planos de recuperação de desastre devem ser criados e executados se necessário.
A fase de aposentadoria consiste na retirada de um sistema de operação
onde sistemas antigos são substituídos por sistemas novos ou retirados de
operação.
2.2.6 RUP-SE – Rational Unified Process
– Systems Engineering
O RUP-SE é uma extensão do modelo RUP, especialmente adequada para
o desenvolvimento de sistemas de grande porte, envolvendo software, hardware,
pessoas e componentes de informação.
TÓPICO 2 | PROCESSO UNIFICADO (UP)
37
FIGURA 27 – CICLO DE VIDA RUP-SE
FONTE: Disponível em: <http://www.devarticles.com/c/a/Development-Cycles/Organizing-RUP-
SE-Projects/1/>. Acesso em: 26 dez. 2014.
O Framework permite, neste caso, considerar o sistema a partir de
diferentes perspectivas (lógica, física ou informacional). Isto pode ser bastante útil
quando se deseja demonstrar ou discutir aspectos de um sistema com diferentes
interessados.
Maiores informações acerca do processo unificado, bem como selecionar
versões do processo unificado é possível por meio dos seguintes sites:
<www.rational.com/rup>.
<http://.flylib.com/books>.
<http://savannah.nongnu.org/>.
<http://www.git-scm.com/>.
<http://mercurial.selenic.com/>.
IMPORTANT
E
38
RESUMO DO TÓPICO 2
Neste tópico, vimos:
• O Processo Unificado (UP), bem como conhecer suas principais definições,
sua caracterização, suas fases, bem como suas derivações (RUP – Rational
Unified Process; AUP – Agile Unified Process; OpenUp – Open Unifies Process;
EUP – Enterprise Unified Process; RUP-SE – Rational Unified Process – Systems
Engineering).
• A importância de cada uma das derivações apresentadas, e como podemos
utilizá-las nos diferentes tipos de projetos. Afinal cada uma possui suas
especificidades e suas características próprias. Neste sentido, para auxiliar
na compreensão, foram apresentadas por meio das figuras as fases de cada
processo.
Neste Momento, você está apto a realizar as autoatividades deste tópico,
e, na sequência, iniciar o estudo do Tópico 3 desta unidade.
Bom estudo!
39
AUTOATIVIDADE
1 Descreva como se caracteriza processo unificado.
2 Explique as fases do processo unificado.
3 Entre os diversos papéis assumidos no RUP, quais são os que definem um
conjunto de comportamentos e responsabilidades para determinada pessoa?
Com base nesta afirmação, analise a figura a seguir:
Agora, assinale a alternativa CORRETA:
a) ( ) Outros papéis.
b) ( ) Papel do testador.
c) ( ) Papel do gerente.
d) ( ) Papel do desenvolvedor.
4 A figura a seguir se refere a qual das derivações apresentadas no Processo
Unificado?
40
a) Open-Up – Open Unified Process.
b) AUP – Agile Unified Process.
c) RUP – Rational Unifies Process.
d) EUP – Enterprise Unified Process.
5 As interações que ocorrem nesta fase têm como objetivo detalhar a análise e
expandir os casos de uso, para obter assim sua descrição detalhada e verificar
as situações excepcionais, ou seja, são voltadas para a produção da arquitetura
básica, e vários casos de uso são demonstrados com detalhes, possuindo uma
arquitetura projetada que se utiliza de artefatos, que podem ser estáticos ou
dinâmicos. A qual das fases esta afirmação se refere?
a) Construção.
b) Concepção.
c) Transição.
d) Elaboração.
Test
Project Management
Configuration Management
Implementation
Deployment
Environment
Model
Inception
I1 E1 C1 T1 T2C2 Cn
Elaboration TransitionConstruction
Phases
Iterations
41
TÓPICO 3
ESTRUTURAS E
RELACIONAMENTOS
UNIDADE 1
1 INTRODUÇÃO
Conforme foi abordado nos tópicos anteriores, você entrou em contato
com as definições acerca dos objetos, seus diferentes tipos e uma prévia sobre a
Análise e Programação Orientada a Objetos.
Teve contato também com os princípios básicos da Orientação a Objetos,
bem como seus principais conceitos. Agora, neste tópico, iremos abordar sobre as
estruturas de relacionamento dos objetos, ou seja, de que forma estas estruturas
auxiliam os analistas e desenvolvedores na composição e apresentação dos objetos
dentro do contexto de software, possibilitando assim uma melhor visualização
do problema a ser estudado.
Ainda neste contexto, vale frisar que o relacionamento entre os objetos
ocorre quando um objeto se referencia ao outro, ouquando um método de um
objeto é ativado por outro objeto.
2 TIPOS DE ESTRUTURAS E RELACIONAMENTOS
Segundo Correia e Tafner (2001, p. 39), “Na Programação Orientada a
Objetos, as estruturas possibilitam os analistas ou programadores arranjar os
objetos de forma que possa visualizar melhor o domínio e a complexidade do
problema em estudo”. Existem dois tipos básicos de estrutura: Generalização-
Especialização e Todo-Parte, que serão estudadas na sequência.
E com relação aos relacionamentos, os autores descrevem que os
relacionamentos ocorrem quando os objetos se referenciam uns aos outros
(conexão de ocorrência), ou quando um objeto ativa um método de outro objeto
(conexão de mensagem).
42
UNIDADE 1 | O PARADIGMA DA ORIENTAÇÃO A OBJETOS
42
2.1 ESTRUTURA GENERALIZAÇÃO
– ESPECIALIZAÇÃO (GE)
A Generalização é conhecida pelo conceito de associar indivíduos com
atributos em comum, e ao mesmo tempo despreza as diferenças.
Quando adaptamos pela generalização, não estamos distorcendo seu
conceito, estamos ampliando-o não apenas para o grupo de indivíduos, mas
também vamos generalizar alguns atributos para que a aderência do conceito seja
maior (ANGELANTONIO, 2014).
FIGURA 28 – EXEMPLO DE GENERALIZAÇÃO – ESPECIALIZAÇÃO
FONTE: Disponível em: <https://alexevalerio.wordpress.com/2014/04/07/modelagem-de-
banco-de-dados-generalizacaoespecializacao/>. Acesso em: 26 dez. 2014.
A Especialização é muito semelhante à herança, a qual já estudamos
anteriormente. Assim, caso tenha interesse em realizar uma herança, deve utilizar
a estrutura Generalização-Especialização.
TÓPICO 3 | ESTRUTURAS E RELACIONAMENTOS
43
2.2 ESTRUTURA TODO – PARTE (TP)
Este tipo de estrutura é bastante característico, uma vez que trata
de agregação ou decomposição de objetos. “Essa estratégia é muito útil na
identificação dos objetos e dos seus componentes diante de um determinado
problema em estudo”. (CORREIA E TAFNER, 2001, p. 41).
FIGURA 29 – ESTRUTURA TODO-PARTE
FONTE: Disponível em: <http://slideplayer.com.br/slide/298878/>.
Acesso em: 26 dez. 2014.
Além desta definição, é importante destacar que a estrutura Todo-Parte é
composta por uma característica conhecida por cardinalidade, que é importante
para determinar o número de ocorrências em um relacionamento.
FIGURA 30 – CARDINALIDADE NA PRÁTICA
FONTE: Disponível em: <http://slideplayer.com.br/slide/298878/>. Acesso em: 26 dez. 2014.
Todo
Parte 1 Parte 2
Automóvel Automóvel
0..1
4..5
Roda Roda Roda Roda Roda
44
UNIDADE 1 | O PARADIGMA DA ORIENTAÇÃO A OBJETOS
44
No exemplo apresentado na figura 30, um carro, como todos sabem, é
composto por quatro rodas (cinco, considerando o estepe), sendo todas iguais.
Desta forma denominamos roda um objeto e se repete quatro vezes dentro do
objeto carro. Em outras palavras, conforme a definição, roda ocorre quatro vezes
neste relacionamento entre carro e roda.
2.3 CONEXÕES
Na Programação Orientada a Objetos, existem dois tipos de conexão
entre os objetos, que são conhecidas por Conexões de Ocorrência e Conexões de
Mensagens (serão estudadas posteriormente), porém é importante destacar que
ambas não possuem nenhum tipo de hierarquia ou estrutura.
2.3.1 Conexões de ocorrência
Uma Conexão de Ocorrência existe quando um atributo de um objeto
contém uma referência a outro objeto. Sendo assim, “a necessidade de criar uma
conexão de ocorrência com frequência surge da identificação de atributos em um
objeto que é redundante e que sob uma análise mais atenta, percebe-se fazerem
parte de outro objeto”. (CORREIA e TAFNER, 2001, p. 43).
FIGURA 31 – CONEXÃO DE OCORRÊNCIA
FONTE: Correia e Tafner (2001, p. 44)
No diagrama representado pela Figura 31 existe uma conexão de
ocorrência entre carro e pessoa, neste objeto carro contém um atributo chamado
proprietário, que contém uma ocorrência para um objeto da classe pessoa.
TÓPICO 3 | ESTRUTURAS E RELACIONAMENTOS
45
2.3.2 Cardialidade
Conforme já foi visto anteriormente, Cardinalidade determina o número
de vezes que um objeto é referenciado ou se referencia ao outro. Quando se refere
à estrutura todo-parte, a cardinalidade é demonstrada por meio de pares de
números adjacentes à linha que representa a relação entre os objetos.
FIGURA 32 – CARDINALIDADE ENTRE ALUNO, MATRÍCULA E MATÉRIA
FONTE: Disponível em: <http://e-reality-database.blogspot.com.br/2007/09/cardinalidade.html>.
Acesso em: 26 dez. 2014.
Observando a Figura 32, contata-se que na cardinalidade existe o aluno que
pode se matricular em no mínimo uma disciplina e no máximo três disciplinas, e
neste contexto, cada matéria relaciona-se com as matrículas, e que podem ser de
no mínimo 0 e no máximo n alunos matriculados.
2.3.3 Conexão de mensagem
Com relação à conexão de mensagem, pode-se dizer que uma mensagem
é uma ação que envia um método específico no objeto receptor, fazendo com que
este efetue um comportamento determinado. Este método, por sua vez, retorna
ou não uma resposta para o objeto transmissor. Para simplificar, a conexão de
mensagem ocorre sempre que um objeto envia uma mensagem a outro objeto,
neste contexto apresenta-se o método transmissor e o receptor.
46
UNIDADE 1 | O PARADIGMA DA ORIENTAÇÃO A OBJETOS
46
FIGURA 33 – CONEXÃO DE MENSAGEM
FONTE: Disponível em: <http://slideplayer.com.br/slide/365068/>. Acesso em:
26 dez. 2014.
Para ajudar em sua compreensão, segue mais um exemplo de conexão de
mensagem.
FIGURA 34 – OUTRO EXEMPLO DE CONEXÃO DE MENSAGEM
FONTE: Disponível em: <http://slideplayer.com.br/slide/365068/>. Acesso em: 26 dez. 2014.
Analisando as figuras que se referem à conexão de mensagem, pode-se
perceber que na Figura 33 ocorre a transmissão de uma mensagem entre duas
pessoas, ou seja, uma realiza uma pergunta e a outra consequentemente a
responde.
Já na figura 34, estamos falando de um sistema que se refere à locação
de filmes, neste a locação envia uma mensagem para verificar se o cliente está
cadastrado para realizar a locação do filme, caso não esteja cadastrado retorna a
mensagem solicitando o cadastro do cliente.
Cadastro_Cliente
Criar_Cliente
Consultar_Cliente Criar_C
liente
Cliente
Locação
A_Fita
A _Cliente
Locar_Fita_Cliente
Cliente
Locar_Fita
Liberar_Fita
Consultar_Disp
Cadastro_Fita
Consultar_Fita
1,1 1,1
1,1 1,1
0,n
0,n
0,n 0,n
C
onsultar_C
liente
TÓPICO 3 | ESTRUTURAS E RELACIONAMENTOS
47
2.3.4 Polimorfismo
Segundo a definição de Lima (2005), polimorfismo é o princípio em que
classes derivadas de uma mesma superclasse podem invocar operações que
têm a mesma assinatura, mas comportamentos diferentes em cada subclasse,
produzindo resultados diferentes, dependendo de como cada objeto implementa
a operação. Continuando, o autor destaca que é a capacidade de objetos diferentes
possuírem operações com o mesmo nome e a mesma lista de argumentos, mas
que executam tarefas de formas diferentes.
FIGURA 35 – POLIMORFISMO
FONTE: Disponível em: <http://www.tomasvasquez.com.br/cursocsharp/programacao_orientada_
objetos/polimorfismo>. Acesso em: 26 dez. 2014.
Por meio da figura apresentada sobre polimorfismo, foi possível perceber
certa semelhança com a Herança que já foi estudada anteriormente, ou seja, a
subclasse bicicleta e a subclasse carro, ambos herdaram da superclasse veículo os
métodos movimentar e parar, assim cada objeto responde à mesma mensagem,
porém cada um a sua maneira. Ou seja, a bicicleta movimenta-se em duas rodas,
enquanto o carro necessita de quatro rodas para se movimentar, mas ambos
pertencem à mesma superclasse veículo.
Processos de Herança
Membros de Herdados
Classe Veículo
• ...
• Movimentar
• Parar
• ...
Classe Bicicleta
• ...
• Movimentar
• Parar
• ...
Classe Carro
• ...
• Movimentar
• Parar
• ...
48
UNIDADE 1 | O PARADIGMA DA ORIENTAÇÃO A OBJETOS
Herança
A herança é um mecanismo que permite a uma dada classe (classe
derivada-subclasse) aceder a dados e métodos de uma outra classe (classe base-
superclasse). A utilização de herança aplica-se de uma formanatural a todos os
procedimentos definidos de uma forma hierárquica, onde as classes derivadas
herdam as propriedades da(s) classe(s) base(s).
O processo da criação de uma classe derivada, permite:
• Especialização: criação de uma classe específica de uma dada classe, como por
exemplo a definição de uma classe para vectores de números inteiros com base
na classe genérica vector.
• Generalização: criação de uma classe que prolonga o comportamento da classe
base (oposto a especialização).
• Extensão: a classe derivada introduz novas funcionalidades à classe base, mas
não altera as existentes.
• Limitação: a classe derivada restringe as funcionalidades de uma classe base,
como, por exemplo, restringir as funcionalidades da classe vector por forma a
implementar só as funcionalidades pretendidas.
• Combinação: utilização de herança múltipla por forma a criar novas classes de
alto nível.
Visibilidade externa de uma classe:
class TESTE
{public: // Pode ser acedido por qualquer função
int f();
int x;
protected: // Pode ser acedido por qualquer função membro,
// função amiga ou classes derivadas;
int g();
int y;
private: // Só pode ser acedido pelas funções membro da
// própria classe ou por funções membro amigas
int h();
int z;
};
LEITURA COMPLEMENTAR
TÓPICO 3 | ESTRUTURAS E RELACIONAMENTOS
49
A parte protected: da classe permite:
• Definição de variáveis e métodos por forma a melhorar o acesso à classe base,
por parte da classe derivada.
• Obter uma maior eficiência no acesso à classe base.
1.1. Herança Simples
class BASE
{public:
int x;
protected:
int y;
int h(int a);
private:
int z;
};
class NATO: public BASE
{public:
int f() { return(x + BASE::x + y);
int g() { return( h() ); }
private:
int x;
};
ou
class NATO: private BASE
{public:
int f() { return(x + BASE::x + y);
int g() { return( h() ); }
private:
int x;
};
class NATO: public BASE
Todos os membros public e protected da classe BASE são membros
public e protected da classe NATO
Todos os membros private da classe BASE não podem ser acedidos pela classe
NATO.
class NATO: private BASE
Todos os membros public e protected da classe BASE são membros
private da classe NATO
Todos os membros private da classe BASE não podem ser acedidos pela classe
NATO.
50
UNIDADE 1 | O PARADIGMA DA ORIENTAÇÃO A OBJETOS
1.2. Herança Múltipla
class BASE1
{
public:
int x;
};
class BASE2
{
public:
int y;
};
class BASE3
{
public:
int z;
};
class NATO: public BASE1, public BASE2, public BASE3
{
public:
void f() { return(BASE1::x+BASE2::y+BASE3::z);
};
A Ordem de Derivação é Importante?
É importante para a inicialização (por omissão) das variáveis das classes
bases e derivadas (ver inicialização de construtores).
Pode-se especificar várias vezes uma classe base numa classe derivada?
Não. Não se pode especificar mais de uma vez como classe básica de uma
classe derivada, uma vez que uma referência à classe base seria ambígua.
class NATO: public BASE1, public BASE1 // erro
{
public:
void f() { return(BASE1::x+BASE2::y+BASE3::z);
};
Considere o seguinte conjunto de classes bases e derivadas, utilizando herança
simples e múltipla.
class L
{
TÓPICO 3 | ESTRUTURAS E RELACIONAMENTOS
51
public:
int x;
};
class A: public L
{
public:
int y;
};
class B: public L
{
public:
int z;
};
class C: public A, public B
{
public:
int f() { return(A::y + A::L::x + B::z + B::L::x + y + z); }
};
Em problemas onde existam diversas herança, por vezes torna-se mais
fácil visualizar a interligação destas classes, através da utilização de um esquema
representativo da interligação (herança) entre as classes.
Visualização da herança para melhor compreender heranças complicadas
Como aceder à variável “x“ da classe “L“ pertencente à classe “A“?
int main()
{
C derivada;
derivada::A::x = 1; // aceder à variável “x“ da classe “L“ da classe “A“
derivada::B::x = 2; // aceder à variável “x“ da classe “L“ da classe “B“
}
FONTE: Disponível em: <http://www.estig.ipbeja.pt/~rmcp/estig/20062007/1s/lp/cplusplus/
heranca.pdf>. Acesso em: 26 dez. 2014.
52
UNIDADE 1 | O PARADIGMA DA ORIENTAÇÃO A OBJETOS
Cardinalidade
Entenda quais são os tipos de relacionamentos e cardinalidade que usamos
na análise de relacionamento no processo de modelagem de dados, o Modelo de
Entidade e Relacionamento.
Relacionamento entre entidades é o tipo de ocorrência existente entre
entidades e aplicáveis no processo de modelar dados. Entender isso é importante
pois um modelo consistente é a base para um banco de dados de sucesso. O símbolo
que representa o relacionamento no Modelo de Entidade e Relacionamento
(MER) é um losango com o nome do relacionamento escrito no seu interior, como
no exemplo a seguir.
Em um modelo de entidade e relacionamento, nem todas as entidades
serão relacionadas, há casos em que não há ligação entre elas, nestes casos
consideramos como entidades isoladas. Embora não seja tão comum, é importante
levar em conta esta possibilidade. Mas quando as ligações existirem, elas serão
classificadas de acordo com os tipos a seguir.
Tipos de relacionamento
Existem três tipos de relacionamento entre entidades:
• um-para-um
• um-para-muitos
• muitos-para-muitos
Relacionamento um-para-um
O relacionamento um-para-um é usado quando uma entidade A se
relaciona com uma entidade B e vice-versa.
Este relacionamento é representado pelo sinal: 1:1
Veja o exemplo:
Pertence
Chefia1 1Gerente Seleção
TÓPICO 3 | ESTRUTURAS E RELACIONAMENTOS
53
Relacionamento um-para-muitos
O relacionamento um-para-muitos é usado quando uma entidade A pode
se relacionar com uma ou mais entidades B.
Este relacionamento é representado pelo sinal: 1:N
Veja o exemplo:
Relacionamento muitos-para-muitos
O relacionamento muitos-para-muitos é usado quando várias entidades
A se relacionam com várias entidades B.
Este relacionamento é representado pelo sinal: N:N ou N:M
Veja o exemplo:
Cardinalidade
A cardinalidade é um conceito importante para ajudar a definir o
relacionamento, ela define o número de ocorrências em um relacionamento. Para
determinar a cardinalidade, deve-se fazer a pergunta relativa ao relacionamento
em ambas as direções.
Um departamento possui quantos empregados?
- no mínimo 1 e no máximo N.
Um empregado está alocado em quantos departamentos?
- no mínimo em 1 e no máximo em 1
Somando-se as cardinalidades, definimos o resultado final do
relacionamento, ou seja, 1:N
FONTE: Disponível em: <http://www.luis.blog.br/relacionamento-entre-entidades-tipos-e-
cardinalidade.aspx> Acesso em: 26 dez. 2014.
ForneceN NFornecedor Produto
Trabalha1 NSeção Funcionário
54
RESUMO DO TÓPICO 3
Neste tópico, vimos:
• As estruturas de relacionamento dos objetos, e como estas estruturas auxiliam
os analistas e desenvolvedores na composição e apresentação dos objetos
dentro do contexto de software, possibilitando, assim, uma melhor visualização
do problema a ser estudado, facilitando a compreensão deste por parte de
usuários de negócio e desenvolvedores.
• O relacionamento entre os objetos ocorre quando um objeto se referencia ao
outro, ou quando um método de um objeto é ativado por outro objeto.
Assim, ao término deste tópico concluímos a Unidade 1. Com isso, você,
acadêmico(a), está apto(a) a aplicar os conhecimentos de Orientação a Objetos em
suas atividades diárias.
Bom estudo!
55
AUTOATIVIDADE
1 Descreva os dois tipos básicos de estruturas que auxiliam os analistas na
Análise e Orientação a Objetos:
2 É conhecida pelo conceito de associar indivíduos com atributos em comum,
e ao mesmo tempo despreza as diferenças. Assinale a alternativa CORRETA
para esta definição:
a) ( ) Encapsulamento.
b) ( ) Generalização-Especialização.
c) ( ) Classe Abstrata.
d) ( ) Todo-Parte.
3 Observe a figura a seguir e identifique a quem ela pertence:
FONTE: Disponível em: <http://slideplayer.com.br/slide/298878/>. Acesso em: 26 dez. 2014.
4 Cardinalidade determina o número de vezes que um objeto é referenciado
ou referencia ao outro, assim, com base nestadefinição, desenvolva uma
figura que apresenta estas características:
56
57
UNIDADE 2
UNIFIED MODELING
LANGUAGE (UML)
OBJETIVOS DE APRENDIZAGEM
PLANO DE ESTUDOS
A partir desta unidade você será capaz de:
• conhecer sobre a introdução à UML, por meio de seu histórico;
• compreender a utilização do Levantamento de Requisitos, Prototipação,
Prazos e Custos, entre outros;
• conhecer a respeito das fases do desenvolvimento de um sistema UML;
• compreender os modelos de elementos por meio das Classes, Objetos, Es-
tados, entre outros.
Esta unidade de ensino está dividida em três tópicos, sendo que no final de
cada um deles, você encontrará atividades que contribuirão para a apropria-
ção dos conteúdos.
TÓPICO 1 – INTRODUÇÃO A UML
TÓPICO 2 – FASES DE DESENVOLVIMENTO DE UM SISTEMA UML
TÓPICO 3 – MODELOS DE ELEMENTOS
58
59
TÓPICO 1
INTRODUÇÃO A UML
UNIDADE 2
1 INTRODUÇÃO
Neste primeiro tópico, você terá acesso às especificidades do
desenvolvimento de software, respondendo assim a uma pergunta básica: Por que
modelar software?
Para responder a esta pergunta, no decorrer do tópico, será apresentado
a você acadêmico: Como realizar uma análise e levantamento de requisitos; por
que e para que serve um protótipo; como respeitar prazos e custos de um projeto;
quais são os tipos de manutenção e quando incorremos em algum destes tipos;
para finalizar o levantamento necessário de toda documentação mantendo assim
um histórico detalhado do software.
É importante destacar o item Evolução, que contém os fatores que levam
um sistema a se adaptar às necessidades da organização.
2 BREVE HISTÓRICO DA UML
A Unified Modeling Language (UML), ou Linguagem de Modelagem
Unificada, surgiu da união de três metodologias de modelagem: o método
Booch, o método Object Modeling Technique (OMT) e o método Object Oriented
Software Engineering (OOSE). Agora acadêmico, vamos entender um pouco
desses métodos e como a união deles aconteceu:
• O método Booch foi definido por Booch, que trouxe a definição de que um
sistema é analisado a partir de um número de visões, na qual cada visão é
descrita por um número de diagramas e de modelos. Contudo, nesse método a
simbologia era complexa de ser desenhada a mão, contendo também o processo
pelo qual sistemas são analisados por micro e macro visões.
• OMT é uma técnica de Modelagem de Objetos ou Object Modelling Technique.
Esse método foi desenvolvido General Electric (GE), empresa na qual James
Rumbaugh trabalhava. O método OMT é basicamente voltado para testes de
modelos e fundamentado nas especificações da análise de requisitos do sistema.
O sistema que se baseia neste método é composto pela união dos modelos de
objetos, funcional e use-cases.
• OOSE/Objectory – Esses dois métodos (OOSE e o Objectory) foram desenvolvidos
com base da mesma visão de Ivar Jacobson. Jacobson traz no OOSE a visão do
UNIDADE 2 | UNIFIED MODELING LANGUAGE (UML)
60
FIGURA 36 – EVOLUÇÃO NA NOTAÇÃO UML
FONTE: Disponível em: <http://marcosmoraisdesousa.blogspot.com.br/2012_04_01_archive.
html>. Acesso em: 15 fev. 2015.
Na figura apresentada acima, você pode observar a evolução existente na
Notação UML e como ocorreu cada um dos processos em suas respectivas datas.
método orientado a objetos, enquanto no Objectory é utilizado para construir
sistemas nas suas mais variadas formas. Os dois métodos são fundamentos no
uso de use-cases, ou seja, utiliza definições de requisitos iniciais e vistos por
um ator externo. Cabe destacar ainda, que a engenharia de negócio utiliza o
método Objectory, de forma adaptada, para modelagem e no melhoramentos
dos processos referentes aofuncionamento de organizações.
Em 1997, a UML passa a ser adotado pela Object Management Group
(OMG) ou Grupo de Gerenciamento de Objetos – www.omg.com - como
linguagem padrão de modelagem. Em outubro do ano de 1994, Rumbaugh se
juntou a Booch na Rational, objetivando unir os métodos Booch e OMT, após
um ano de trabalho, foi lançado, em outubro do ano de 1995, se teve o esboço da
versão 0.8 do Unified Process (UP) ou Processo Unificado. Neste mesmo período,
Jacobson se associou à Rational, expandindo o escopo do projeto da UML para
incorporar o método OOSE. Nasce então, em junho do ano de 1996, a versão 0.9
da UML. Assim que a UML foi lançada ela passou a ser adotada por diversas
grandes organizações de software da época.
Foi desta forma, que "Os três amigos", termo que Grady Booch, James
Rumbaugh e Ivar Jacobson são conhecidos, decidiram criar uma Linguagem de
Modelagem Unificada.
TÓPICO 1 | INTRODUÇÃO A UML
61
3 POR QUE MODELAR SOFTWARE?
Muitos analistas ou desenvolvedores de softwares garantem que conseguem
definir todas as necessidades de um sistema de informações de cabeça e que desde
o início de suas atividades trabalham desta forma.
Porém, peço que você, acadêmico, visualize uma situação da construção
civil. Neste momento, faço a você a seguinte pergunta:
Você delegaria a construção de sua casa à equipe responsável sem um
projeto?
Leve em consideração que você não sabe quando (tempo), quanto ($) e
como fica sua casa depois de pronta.
Após esta reflexão, vale destacar que, por mais simples que seja, todo
e qualquer sistema de informação deve ser modelado antes que se inicie sua
implementação.
FIGURA 37 – MODELAGEM DE SOFTWARE
FONTE: Disponível em: <http://techne.pini.com.br/engenharia-civil/127/artigo286443-1.aspx>.
Acesso em: 15 fev. 2015.
Material: blocos de concreto
Altura: 19cm
Largura: 14cm
Comprimento: 39cm
Fa:6 MPa
Quantidade: 25 unidade
Alterações controladas
também podem ser feitas
em todos os demais
projetos. As modificações
são atualizadas em todos
os documentos integrados
à base de dados
As informações lançadas no
projeto de arquitetura são salvas
no banco de dados central e
ficam acessíveis às demais
equipes envolvidas na obra
As informações do banco de dados são
lidas por todos os softwares da obra.
São usadas, por exemplo, para gerar
planilha de orçamento
do empreendimento
Banco de dados
Orçamento
Projetos
Propriedades da alvenaria
UNIDADE 2 | UNIFIED MODELING LANGUAGE (UML)
62
Na figura 37, você, acadêmico(a), pode perceber quão complexa é a
construção civil, passando por inúmeros detalhes até o final do projeto, o mesmo
vale para a área de TI, afinal, são os responsáveis por desenvolver o sistema
utilizado pela construção civil, facilitando suas atividades, caso não haja um
sistema que auxilie em todo o processo de construção, a chance de erro é enorme
e com ele vem a possibilidade de falhas em todo o desenvolvimento do projeto.
Assim, um sistema de informação precisa possuir uma boa documentação,
que precisa ser atualizada para que o sistema possa ser mantido com facilidade,
rapidez e de maneira correta. “Modelar um sistema é uma forma bastante eficiente
de documentá-lo, a documentação é apenas uma das vantagens fornecidas pela
modelagem”. (GUEDES, 2004, p. 18).
Partindo da importância do por que modelar, outra pergunta nos vem à
mente, afinal quais os reais objetivos da modelagem?
Como principais objetivos, segundo Pontuschka (2010), temos:
• Ajudar a visualizar o sistema como gostaríamos que ele fosse.
• Permitir a especificação da arquitetura e comportamento de um sistema.
• Fornecer padrões de desenvolvimento que servem como guia de construção do
sistema.
• Documentar as decisões tomadas durante o processo de desenvolvimento.
Assim, observe o exemplo para uma melhor compreensão desta descrição:
FIGURA 38 – CARDINALIDADE ENTRE ALUNO, MATRÍCULA E MATÉRIA
FONTE: Disponível em: <http://slideplayer.com.br/slide/286444/>. Acesso em: 15 fev. 2015.
Por meio desta figura, você pode verificar que o sistema parte do item
de menor importância, porém é o que se tem no momento, para então chegar
ao item de maior importância, ou seja, o que realmente se deseja. Desta forma
compreende-se que a modelagem serve como uma ponte que faz a ligação entre
o que se tem para assim chegar ao objetivoque se deseja.
Menos importante Mais importante
Jato militarAvião de papel
TÓPICO 1 | INTRODUÇÃO A UML
63
3.1 LEVANTAMENTO E ANÁLISE DE REQUISITOS
Acadêmico(a)! Nesta etapa do processo de modelagem, o engenheiro de
software ou analista busca compreender as necessidades do usuário e quais são
as informações que ele necessita visualizar no sistema. São realizadas inúmeras
entrevistas, quando o usuário detalha como funcionam suas atividades, e quais
são os processos atualmente afins que possam ser informatizados, e por fim, os
serviços necessários fornecidos ao usuário ou cliente.
A comunicação é sem dúvida o maior desafio da fase de levantamento
de requisitos e da engenharia de software, sendo caracterizada pela dificuldade
em compreender um conjunto de conceitos vagos, abstratos e confusos que
representam as necessidades e os desejos dos usuários e clientes e transformá-los
em conceitos concretos, ou seja, criar um sistema apto para o cliente.
Outro fator crítico na fase de levantamento de requisitos são as incertezas
dos usuários com relação às potencialidades do sistema de informação. Em geral,
nesta fase, os engenheiros de software e analistas acabam
Veja na tabela a seguir, os fatores críticos na fase de levantamento de
requisitos que os engenheiros de software enfrentam para obter informações
necessárias, com o intuito de concluir suas atividades e apresentar algo que o
cliente deseja.
QUADRO 1 – FATORES CRÍTICOS NO LEVANTAMENTO DE REQUISITOS
Fatores Críticos %
1. Requisitos incompletos 13,1%
2. Falta de envolvimento do usuário 12,4%
3. Falta de recursos 10,6%
4. Expectativas irreais 9,9%
5. Falta de apoio executivo 9,3%
6. Mudança de requisitos e especificações 8,7%
7. Falta de planejamento 8,1%
8. Sistema não mais necessário 7,5%
FONTE: O autor
Vale destacar que ao observar o Quadro 1, os três primeiros colocados da
lista são informações que os usuários devem fornecer ao engenheiro de software,
o que por vezes ocorre de forma ineficaz, e compromete o trabalho desenvolvido.
Após saber quais são os fatores críticos, analise a figura a seguir e observe
como realmente ocorre o levantamento de requisitos.
UNIDADE 2 | UNIFIED MODELING LANGUAGE (UML)
64
FIGURA 39 – LEVANTAMENTO DE REQUISITOS
FONTE: Disponível em: <http://isosoftware.blogspot.com.br/2009/09/importancia-dos-
requisitos-de-software.html>. Acesso em: 15 fev. 2015.
Em sentido complementar, depois de encerradas as entrevistas e a fase
de levantamento de requisitos, passam para a fase de análise de requisitos.
Neste momento, os engenheiros e analistas de sistemas especificam e verificam
se todos os requisitos foram bem compreendidos. “A partir da análise de
requisitos são determinadas as reais necessidades do sistema de informação”
(GUEDES, 2004, p. 20).
Assim, ao analisar a figura acima, é possível concluir que boa parte
das falhas existentes neste processo poderiam ser evitadas, afinal não foram
claras o suficiente, ou seja, o usuário não soube o que explicar ao engenheiro,
não conseguiu transmitir qual foi sua real necessidade com relação ao sistema.
Porém destaca-se que o trabalho de desenvolvimento foi bem executado, mas
desenvolvido de maneira distorcida à desejada pelo usuário.
TÓPICO 1 | INTRODUÇÃO A UML
65
3.2 PROTOTIPAÇÃO
Segundo o Dicionário Aurélio da Língua Portuguesa, Protótipo nada mais
é que o primeiro exemplar, o primeiro modelo, o original.
Quando se tratar de tecnologia da informação, na fase de prototipação
do projeto são desenvolvidos “modelos”, “desenhos” ou “protótipos” das telas
que irão compor o sistema de informação, com isto é possível compreender
melhor o propósito do software que está sendo desenvolvido, o negócio do cliente,
propor melhorias, minimizar riscos e maximizar os tempos de desenvolvimento
e consequentemente os lucros para o cliente.
Vamos exemplificar por meio de uma figura, facilitando assim seu
entendimento.
FIGURA 40 – PROTOTIPAÇÃO
FONTE: Disponível em: <http://www.diegomacedo.com.br/modelos-de-ciclo-de-vida/?print=print>.
Acesso em: 15 fev. 2015.
construção
produto
construção
protótiporefinamentoprotótipo
avaliação
protótipo pelo
cliente
obtenção dos
requisitos
projeto
rápido
início
fim
Por meio das fases apresentadas na figura acima, você, acadêmico, verifica
os passos executados pelo processo e quais são as sequências futuras, com o
intuito de facilitar a visualização final do sistema por parte do cliente.
Com a utilização de protótipos pode-se evitar que após o desenvolvimento
do software, o cliente identifique que o mesmo não atende completamente as suas
UNIDADE 2 | UNIFIED MODELING LANGUAGE (UML)
66
necessidades devido às falhas de comunicação ocorridas entre o usuário e o
engenheiro nas fases de levantamento e análise de requisitos.
Um protótipo pode ser desenvolvido a partir de um desenho em um papel
ou utilizando ferramentas que nos apoiam neste processo.
A prototipação é um processo que tem como objetivo facilitar o
entendimento dos requisitos, apresentar conceitos e funcionalidades do software.
Desta forma podemos propor uma solução adequada para o problema do cliente,
aumentando sua percepção de valor (CAMARINI, 2013).
Vale destacar que a adoção deste tipo de ferramenta pode induzir ao
usuário, cliente a se equivocar e achar que o software se encontra em um estágio
avançado de desenvolvimento no qual ele não está ainda. “É preciso deixar claro
ao usuário que, o que está sendo apresentado é apenas um rascunho do que será
o software quando estiver finalizado o desenvolvimento” (GUEDES, 2004, p.21).
Observe a Figura a seguir para uma melhor compreensão dos processos
que envolvem a prototipação.
FIGURA 41 – PROCESSOS DE UM PROTÓTIPO
FONTE: Disponível em: <http://slideplayer.com.br/slide/327207/>. Acesso em: 15 fev. 2015.
Todos os passos apresentados na figura acima são necessários para o
processo de prototipação, afinal somente com a conclusão de todos os passos é
que se pode chegar à avaliação do protótipo, ou seja, se ele realmente atenderá às
necessidades de seus clientes.
Para nos apoiarmos nestes trabalhos, o engenheiro de software pode contar
com alguns instrumentos, desde planilhas eletrônicas (Excel) onde é possível
literalmente desenhar as telas ou ferramentas do tipo RAD (Rapid Application
Development ou Desenvolvimento Rápido de Aplicações) como Delphi, Visual
Basic ou Apex, entre outras. Estas ferramentas disponibilizam ambientes que nos
permitem a construção e alteração de interfaces de forma muito rápida.
TÓPICO 1 | INTRODUÇÃO A UML
67
3.3 PRAZOS E CUSTOS
Segundo Barcellos (2013), entregar um produto com qualidade, dentro do
prazo e custos esperados, é hoje um grande desafio para as organizações. Fatores
como esses impulsionam o interesse, por parte das organizações, pela estimativa
e controle dos custos dos projetos de software.
Assim, vale destacar que, logo após as primeiras entrevistas, os clientes
ficam bastante ansiosos para saber quanto vai custar o sistema de informação e
em quanto tempo eles o terão implantado e funcionando.
Porém, estas não são as únicas perguntas que se buscam responder
nesta etapa, mas é necessário verificar: quantos profissionais irão trabalhar no
projeto? Como determinar a real complexidade do software? Como irão trabalhar
para entregar o sistema no prazo? Entre outras dúvidas que são sanadas neste
momento.
Mesmo assim, é difícil determinar com exatidão os prazos finais de entrega
de um software. É recomendável sempre acrescentar uma margem de segurança à
data de entrega para minimizar erros de estimativas.
FIGURA 42 – PRAZOS E CUSTOS
FONTE: Disponível em: <http://www.logimex.com.br/reducao-de-custos.php>. Acesso em: 15
fev. 2015.
UNIDADE 2 | UNIFIED MODELING LANGUAGE (UML)
68
Durante o planejamento de um projeto de software é realizado o
planejamento de custos, em que esforço, prazo e custos propriamente ditos são
planejados para o projeto em questão. Quanto maior a experiência e conhecimentodo gerente do projeto, maior será sua capacidade de realizar um bom planejamento
de custos (BARCELLOS, 2013).
Analisando a citação anterior, vale destacar a importância de um
planejamento, sanando dúvidas, buscando desenvolver protótipos, entre outros
meios para não estourar o orçamento, não frustrar o cliente por atraso na entrega
do sistema, não ter margem para errar no desenvolvimento, afinal tudo tem um
custo e um prazo para conclusão.
Uma estimativa errada pode trazer prejuízos financeiros ao cliente por
não ter o projeto em operação e frustrar uma expectativa de mercado, assim
como para empresa que desenvolve o sistema, como, por exemplo, o acréscimo
no pagamento de salários de profissionais que não haviam sido provisionados
neste projeto.
3.4 MANUTENÇÃO
É ilusão imaginar que a vida de um software se encerra logo após sua
implantação, com certeza, ele será utilizado por anos, e durante este período de uso
serão necessárias inúmeras manutenções, seja por defeito, seja por atualizações,
impostos, alterações de alíquotas, indiferente do motivo, a manutenção é certa.
Assim, lhe pergunto, acadêmico(a), você sabe o significado de manutenção
e o seu custo? De acordo com Spínola (2013), a manutenção é caracterizada pela
modificação do software já entregue ao cliente, ou seja, a manutenção é qualquer
alteração no software após sua entrada em produção.
Com relação a custos, Guedes (2004) descreve que o custo de manutenção
de um software pode ser de 40 a 60% do custo total do projeto.
Sendo assim, é possível dizer que a modelagem utilizada pela UML
diminui os custos com manutenção, ou seja, com a modelagem correta, o sistema
não apresenta erro e com isso não necessita de manutenção.
TÓPICO 1 | INTRODUÇÃO A UML
69
FIGURA 43 – MANUTENÇÃO DE SOFTWARE
FONTE: Disponível em: <http://tecnicovip.forumpratodos.com/>. Acesso
em: 17 fev. 2015.
A modelagem não serve unicamente para diminuir a necessidade de
futuras manutenções, mas também para facilitar a compreensão do
sistema por quem tiver que mantê-lo, já que, em geral, a manutenção
de um sistema é considerada uma tarefa ingrata pelos profissionais de
desenvolvimento, por normalmente exigir que estes despendam grandes
esforços para compreender códigos escritos por outros profissionais
com estilos de desenvolvimento diferentes e que normalmente não se
encontram mais na empresa (GUEDES, 2004, p. 23).
Desta forma, é importante frisar que quando utilizada uma modelagem
correta, e se estiver associada a uma documentação completa e atualizada em um
sistema de informação, é possível tornar mais rápido o processo de manutenção
e evitar erros durante este processo.
Após algumas definições sobre manutenção, observe agora, os tipos de
manutenções existentes em um software:
• Manutenção corretiva – é o tipo de manutenção utilizada na hora de realizar a
correção de defeitos de funcionalidade do sistema, incluindo também acertos
emergenciais do programa.
• Manutenção evolutiva – este tipo de manutenção visa acrescentar novas
funcionalidades e melhorias conforme solicitações realizadas pelos usuários.
• Manutenção adaptativa – são as modificações realizadas em um software
adaptando a uma nova realidade. Ex.: inclusão de um novo imposto, uma nova
regra imposta pelo governo.
UNIDADE 2 | UNIFIED MODELING LANGUAGE (UML)
70
FIGURA 44 – MANUTENÇÃO
FONTE: Disponível em: <http://www.gfi.pt/index.php?option=com_content&view=article&id=181>.
Acesso em: 17 fev. 2015.
3.5 DOCUMENTAÇÃO HISTÓRICA
O termo documentação histórica foi adotado para justificar a guarda da
documentação de um projeto por um longo período de tempo, ou seja, é histórica
por guardar todas as modificações existentes em um sistema de informação.
Assim, segundo Hoffmann (2002, p. 8), “a documentação é ‘filha’ do
projeto que a gera, enquanto ele estiver em execução. Quando o projeto terminar, a
documentação sobreviverá a ele e, como ‘herdeira’, retém toda a riqueza, todos os
resultados, as virtudes e (por que não?) as deficiências e as carências do projeto”.
Continuando seu pensamento, a autora descreve ainda que,
a documentação, vista como uma ferramenta de auxílio a ser utilizada
no momento de sua necessidade por todas as pessoas envolvidas com
o sistema, precisa, para cumprir este papel, ser elaborada ao final de
cada fase determinada pela metodologia adotada na organização para
desenvolver seu sistema, bem como necessita ser atualizada sempre
que houver uma modificação. (HOFFMANN, 2002, p. 11).
Qualquer manutenção que for realizada em um sistema de informação
necessita ser documentada e modelada, somente assim não irá prejudicar manutenções
futuras, afinal, pior do que não ter documentação de um sistema é ele estar desatualizado
no momento de uma manutenção.
IMPORTANT
E
Incidências,
erros e falhas
Identificação de
potenciais problemas
Evoluções/adaptações
tecnológicas
Identificação
automatizada de
potenciais problemas
Predictiva
Adaptativa
Preventiva
Correctiva Evolutiva
Novas funcionalidades
TÓPICO 1 | INTRODUÇÃO A UML
71
FIGURA 45 – DOCUMENTAÇÃO DE SOFTWARE
FONTE: Disponível em: <http://www.ceviu.com.br/blog/info/artigos/documentacao-de-
software-e-necessaria/>. Acesso em: 2 fev. 2015.
Com base nas citações realizadas anteriormente, é necessário que todo
sistema de informação ou software necessite de uma metodologia, que deve ser
moderna e que ofereça a documentação completa. Assim, a empresa responsável
pelo desenvolvimento do sistema deve definir a metodologia que irá adotar,
com isso buscar sempre a efetividade, permanência, segurança, entre outras
características por parte dos gestores e desenvolvedores.
4 EVOLUÇÃO
Segundo Wazlawick (2013), as Leis de Evolução de Lehman se aplicam
apenas aos sistemas de tipo E (sistemas desenvolvidos pelos processos usuais de
análise, projeto e codificação). Estabelecem que a evolução de software deste tipo
é inevitável, e não apenas resultado de uma equipe de desenvolvimento.
O autor destaca ainda que a evolução destes programas está sujeita a uma
dinâmica de autorregulação que faz com que as medidas globais de esforço e
outros atributos de processos sejam estatisticamente previsíveis.
UNIDADE 2 | UNIFIED MODELING LANGUAGE (UML)
72
Assim, a evolução dos sistemas de informação ocorre devido à grande
dinâmica dos processos empresariais, governamentais e a globalização. À medida
que estes processos evoluem precisa-se adequar os sistemas de informação à nova
realidade dos processos.
Um sistema de informação deve ser estruturado de forma que permita
acoplar novas funcionalidades ou até mesmo interagir com outros sistemas de
informação, sejam internos ou externos.
FIGURA 46 – EVOLUÇÃO
FONTE: Disponível em: <http://yedaseveral.com.br/yeda-several/?page_id=580>. Acesso em: 2
fev. 2015.
73
RESUMO DO TÓPICO 1
Neste tópico, você, acadêmico, teve a oportunidade de ampliar seus
conhecimentos acerca da notação UML, afinal foi apresentado seu histórico,
contendo sua origem e sua evolução até os dias atuais.
Partindo de seu histórico vale destacar a importância do software dentro
das organizações. Para realizar este novo desafio necessitamos do levantamento
de requisitos que atendam às necessidades específicas de cada departamento,
analisando assim qual a melhor forma de desenvolver os requisitos solicitados.
Em um mercado cada vez mais competitivo, respeitar os prazos e os
custos do desenvolvimento de um sistema faz com que a organização atinja com
maior assertividade e rapidez seus objetivos e metas.
Preservar uma boa documentação do software é um dos pré-requisitos
para a manutenção e constante evolução do sistema, afinal nem sempre uma
manutenção ou evolução são realizadas pela equipe que desenvolveu o sistema
original.
Bom estudo!
74
AUTOATIVIDADE
1 Agora, que você compreendeu a importância de modelar software, descreva
quais são os principais objetivos da modelagem que foram apresentados:
2 Utilizando-se dos fatores críticos acercado Levantamento e Análise de
requisitos, assinale V para as sentenças verdadeiras e F para as falsas.
( ) Os requisitos apresentados estão demonstrados de forma incompleta.
( ) A falta de envolvimento do usuário não ocorre, afinal, o mesmo está
presente no desenvolvimento do projeto.
( ) Dentro das organizações é possível verificar a falta de apoio por parte
dos executivos.
( ) Depois de pronto o projeto, jamais ocorrem mudanças de requisitos ou de
especificações.
Agora, assinale a alternativa que apresenta a sequência CORRETA:
a) ( ) V – F – V – F.
b) ( ) F – F – V – V.
c) ( ) V – V – F – V.
d) ( ) V – V – V – F.
3 Descreva o que você entendeu acerca da importância de prazos e custos em
um projeto.
4 Você conseguiu compreender a importância da manutenção em um sistema
de informação? Então, descreva os tipos de manutenção existentes:
5 Este termo foi adotado para justificar a guarda da documentação de um
projeto por um longo período de tempo, ou seja, é histórico por guardar todas
as modificações existentes em um sistema de informação. Do que estamos
falando?
a) ( ) Prazos e Custos.
b) ( ) Manutenção.
c) ( ) Prototipação.
d) ( ) Documentação histórica.
75
a) ( ) Prototipação.
b) ( ) Evolução.
c) ( ) Manutenção.
d) ( ) Documentação histórica.
6 Observe a figura e verifique a qual das opções ela se refere.
76
77
TÓPICO 2
FASES DO DESENVOLVIMENTO DE
UM SISTEMA UML
UNIDADE 2
1 INTRODUÇÃO
No Tópico 2 explanaremos acerca das fases de desenvolvimento de um
sistema UML, características, requisitos e comportamento encontrado em cada
uma delas.
Na análise de requisitos veremos como proceder ao levantamento de
requisitos e aos envolvidos com o projeto. Já na fase análise apresentaremos os
primeiros diagramas e as primeiras abstrações do sistema, suas funcionalidades e
processos. Ao conhecermos mais sobre o design, exploraremos suas classes, seus
atributos, métodos e nos aprofundaremos na infraestrutura onde, ao encerrarmos
esta etapa teremos os documentos do projeto em um nível de detalhe onde já
podemos disponibilizar para os programadores executarem a codificação.
E por fim, a programação, quando as análises realizadas são codificadas
em objetos sistêmicos que compõem o sistema de informação.
2 ANÁLISE DE REQUISITOS
Como visto, um pouco, no Tópico 1 desta unidade, Análise de Requisito
descreve os requisitos necessários à condução dos negócios.
Assim, é possível dizer que a fase de análise dos requisitos é responsável
pela coleta dos dados que são indispensáveis e necessários para que o usuário
do sistema possa solucionar seu problema e alcançar os objetivos desejados da
organização, para isto são realizadas inúmeras entrevistas, em que o usuário
detalha como funcionam suas atividades e quais são os processos atualmente
afins que possam ser informatizados, e por fim, os serviços necessários fornecidos
ao usuário ou cliente.
UNIDADE 2 | UNIFIED MODELING LANGUAGE (UML)
78
Nesta fase do projeto são expostas as incertezas dos usuários com relação
às potencialidades do sistema de informação. Em geral, nesta fase, os engenheiros
de software e analistas acabam sugerindo muitas características e funcionalidades
do sistema que o cliente não havia imaginado.
Por meio da figura a seguir, você pode observar os processos que ocorrem
na análise de requisitos, sendo demonstrado como primeiro passo a entrada no
processo e ao final o documento de requisitos. Vale lembrar que este documento
apresenta as informações que o usuário deseja receber do sistema depois de pronto.
FIGURA 47 – ANÁLISE DE REQUISITOS
FONTE: Disponível em: <http://slideplayer.com.br/slide/44191/>. Acesso em: 17 fev. 2015.
Após apresentar a funcionalidade da Análise de Requisitos e como ela
é elaborada, é necessário estar atento aos problemas que podem ocorrer neste
processo. Monteiro (2010) descreve estes problemas como sendo:
1. Stakeholders (pessoas envolvidas no projeto) não sabem o que querem.
2. Stakeholders expressam requisitos em sua terminologia.
3. Stakeholders diferentes podem gerar requisitos conflitantes.
4. Fatores políticos e organizacionais podem influenciar os requisitos do sistema.
5. Requisitos mudam durante o processo de análise. Stakeholders novos podem
surgir e o ambiente de trabalho muda.
Definição e
especificação
de requisitos
Documento
de requisitos
Validação
de requisitos
Coleta de
requisitos
Entendimento
do domínio
Resolução
de conflito
Classificação
Atrib.
PrioridadeEntrada do
processo
TÓPICO 2 | FASES DO DESENVOLVIMENTO DE UM SISTEMA UML
79
FIGURA 48 – POSSÍVEIS PROBLEMAS NA ELABORAÇÃO DO PROJETO
FONTE: Disponível em: <http://pt.slideshare.net/computacaodepressao/análise-de-requisitos-1
5926049>. Acesso em: 17 fev. 2015.
Esta figura demonstra o quão conflitante é o processo de análise de
requisitos, afinal inúmeros são os problemas que ocorrem diariamente no
desenvolvimento do projeto e, muitas vezes, o cliente ou usuário não sabem ao
certo o que desejam, porém o analista deve estar atento para então conseguir
capturar as informações e assim chegar às necessidades de seu cliente.
3 ANÁLISE
Na fase de análise são definidas as primeiras abstrações (classes e
objetos) e mecanismos que estarão presentes no domínio do problema (sistema
de informação que será desenvolvido). As classes são modeladas e conectadas
através de relacionamentos com outras classes, que são descritas no Diagrama de
Classe (JACOBY, 2013).
As colaborações que ocorrem entre classes também são registradas neste
diagrama de classe, para assim desenvolver e atender os "use-cases" e requisitos
modelados anteriormente, estas colaborações são criadas através de modelos
dinâmicos em UML.
UNIDADE 2 | UNIFIED MODELING LANGUAGE (UML)
80
Na análise, só serão modeladas classes que pertençam ao domínio
principal do problema do software, ou seja, classes técnicas que fazem parte da
infraestrutura necessária para suportar o sistema como classes que gerenciem
banco de dados, interface, comunicação, concorrência e outros não estarão
presentes neste diagrama.
Veja como se comporta a fase de análise no diagrama de classes. Vale
lembrar que o tema Diagrama de Classes será aprofundado na Unidade 3 deste
Caderno de Estudos.
FIGURA 49 – DIAGRAMA DE CLASSES
FONTE: Disponível em: <http://www.labin.unilasalle.edu.br/infoedu/siteinfoedu1_03/
trabalhos/sitescc/uml_final/exemplo.htm>. Acesso em: 5 fev. 2015.
Agência
Cod_Agência: String
Nome_Agência: String
Criar()
Destruir()
Histórico
Conta Corrente
Cliente
Possui
Possui
Possui
Possui
Possui
Possui Possui
Possui
1
1
1
1
1
1
1
0
*
*
*
*
*
* *
*
Operação
Aplicações Pré Fixadas
Poupança
Dependente
Data: Date
Operação: Operação
Valor: Num
Cod: String
Saldo: Num
Vetor_Aplic_PreFix: Aplic_Pre_Fixadas
Vetor Histórico: Histórico
Agência: Agência
Nome: String
CPF: String
Rua: String
Fone: String
Bairro: String
Cidade: String
CEP: String
Estado: String
Vetor Dependentes: Dependentes
Vetor Conta_Correntes: Conta_Corrente
Vetor Poupanças: Poupança
Nome: String
CPF: String
Parentesco: String
Vetor Poupanças: Poupança
Valor: Num
Data_Venc : date
Taxa: Num
Data_Venc : date
Criar()
Destruir()
Depositar()
Debitar()
Transferir()
Obter_saldo()
Aplicar_Prefix()
Criar()
Destruir()
Tirar_Extrato()
Retirar_Aplic_Prefix()
Criar()
Destruir()
Localizar()
Abrir_Conta_Corrente()
Remover_Conta_Corrente()
Adic_Dependente()
Excluir_Dependente()
Abrir_Poupança()
Fechar_Poupança()
Criar()
Destruir()
Localizar()
Abrir_Poupança()
Fechar_Poupança()
Criar()
Destruir()
Criar()
Destruir()
Criar()
Destruir()
Cod_Operação: String
Dooc_Operação: String
TÓPICO 2 | FASES DO DESENVOLVIMENTO DE UM SISTEMA UML
81
4 DESIGN (PROJETO)
Na fase de design, você, acadêmico(a), pode verificar que o resultado da
análise é expandido em soluções técnicas.
Jacoby (2013) descreve que novas classes, atributos, métodos e
funcionalidades serão adicionados a fim de prover uma infraestruturatécnica
necessária à interface do usuário e de periféricos, gerenciamento de banco de
dados, comunicação com outros sistemas, entre outros.
O autor discorre ainda que as classes do domínio do problema modeladas
na fase de análise são mescladas nessa nova infraestrutura técnica, tornando
possível alterar tanto o domínio do problema quanto a infraestrutura.
Por fim, o design resulta no detalhamento das especificações para a fase de
programação do sistema.
FIGURA 50 – PROGRAMAÇÃO DO SISTEMA
Fonte: Disponível em: <http://pt.slideshare.net/Ridlo/desenhando-componentes-de-
software-arquitetura-de-software>. Acesso em: 5 fev. 2015.
Você pode verificar na figura acima que as informações que chegam à fase
Design são recebidas da Análise de Requisitos e da Análise, assim, filtrando como
o sistema deve ser desenvolvido.
É possível perceber que no Projeto (Visão Lógica), foram desenvolvidos
diagramas de classes, diagramas de sequências, diagramas de atividades entre
outros. Todos estes diagramas você verá com maiores detalhes na Unidade 3
deste Caderno de Estudos.
UNIDADE 2 | UNIFIED MODELING LANGUAGE (UML)
82
5 PROGRAMAÇÃO
Na fase de programação as classes provenientes do design são
convertidas para o código da linguagem orientada a objetos
escolhida (a utilização de linguagens procedurais é extremamente
não recomendada). Dependendo da capacidade da linguagem usada,
essa conversão pode ser uma tarefa fácil ou muito complicada. No
momento da criação de modelos de análise e design em UML, é melhor
evitar traduzi-los mentalmente em código. (JACOBY, 2013, p. 2).
Em sentido complementar, Jacoby (2013, p. 2) descreve ainda que nas fases
anteriores, os modelos criados são o significado do entendimento e da estrutura
do sistema, então, no momento da geração do código, onde o analista conclua
antecipadamente sobre modificações em seu conteúdo, seus modelos não estarão
mais demonstrando o real perfil do sistema. “A programação é uma fase separada
e distinta onde os modelos criados são convertidos em código”.
Por fim, o sistema depois de pronto será disponibilizado para ser testado
pelo usuário final. Este é o momento de verificar se os resultados apresentados
pelo sistema estão realmente de acordo com as intenções e necessidades do
usuário final.
Após definição de cada uma das etapas de desenvolvimento de um
sistema, observe o Mapa Mental das fases da UML.
Linguagem Procedual é a linguagem de programação na qual o elemento
básico de programação é a procedure (uma sequência de instruções – rotina,
sub-rotina ou função – associadas a um nome próprio).
IMPORTANT
E
TÓPICO 2 | FASES DO DESENVOLVIMENTO DE UM SISTEMA UML
83
FI
G
U
R
A
5
1
–
M
A
P
A
M
E
N
TA
L
D
A
S
FA
SE
S
D
A
U
M
L
FO
N
T
E
:
D
is
p
o
n
ív
e
l e
m
:
<
h
tt
p
:/
/w
w
w
.d
ie
g
o
m
ac
e
d
o
.c
o
m
.b
r/
ta
g
/u
m
l?
p
ri
n
t=
p
ri
n
t-
p
ag
e
>
. A
c
e
ss
o
e
m
:
10
f
e
v.
2
0
15
.
84
RESUMO DO TÓPICO 2
Neste tópico foram abordadas as fases de desenvolvimento da UML. Com
isso você pôde conhecer qual é o comportamento da análise de requisitos, que
tem por objetivo coletar as informações das atividades desenvolvidas pelo cliente
e assim iniciar o processo de desenvolvimento do sistema de informação.
A fase de análise foi apresentada por meio de exemplos, os primeiros
diagramas e as primeiras abstrações de um sistema.
Acerca do design que tem por objetivo prover uma infraestrutura técnica
necessária: a interface do usuário e de periféricos, gerenciamento de banco de
dados, comunicação com outros sistemas, entre outros.
Finalizando as fases do desenvolvimento UML, foi apresentada a
programação, em que as análises realizadas são codificadas em objetos sistêmicos
que compõem o sistema de informação. O sistema depois de pronto será
disponibilizado para ser testado pelo usuário final, sendo este o momento de
verificar se os resultados apresentados pelo sistema estão realmente de acordo
com as intenções e necessidades do usuário final.
Bom estudo!
85
AUTOATIVIDADE
1 Descreva os problemas que podem ocorrer durante o processo de Análise
de Requisitos.
2 São definidas as primeiras abstrações (classes e objetos) e mecanismos que
estarão presentes no domínio do problema (sistema de informação que será
desenvolvido). Esta definição se refere à:
a) ( ) Prototipação.
b) ( ) Análise.
c) ( ) Análise de requisitos.
d) ( ) Programação.
3 Observe a figura a seguir e verifique a qual das alternativas ela se refere.
a) ( ) Análise de requisitos.
b) ( ) Design.
c) ( ) Programação.
d) ( ) Manutenção.
4 Com base nas informações recebidas no decorrer do tópico, relacione os
itens conforme solicitado:
I. Programação.
II. Análise de requisitos.
III. Análise.
IV. Design.
86
( ) É responsável pela coleta dos dados que são indispensáveis e necessários
para que o usuário do sistema possa solucionar seu problema e alcançar
os objetivos desejados da organização.
( ) Descreve que novas classes, atributos, métodos e funcionalidades serão
adicionados a fim de prover uma infraestrutura técnica necessária: a
interface do usuário e de periféricos, gerenciamento de banco de dados,
comunicação com outros sistemas.
( ) Só serão modeladas classes que pertençam ao domínio principal
do problema do software, ou seja, classes técnicas que fazem parte da
infraestrutura necessária para suportar o sistema como classes que
gerenciem banco de dados, interface, comunicação, concorrência e outros
não estarão presentes neste diagrama.
( ) As classes provenientes do design são convertidas para o código da
linguagem orientada a objetos escolhida.
Agora, assinale a alternativa que apresenta a sequência CORRETA:
a) ( ) II – IV – III – I.
b) ( ) I – II – III – IV.
c) ( ) III – I – IV – II.
d) ( ) IV – III – II – I.
87
TÓPICO 3
MODELOS DE
ELEMENTOS
UNIDADE 2
1 INTRODUÇÃO
Neste tópico serão apresentados os modelos de elementos que compõem
os diagramas. Estes elementos nada mais são do que as classes que definem os
atributos e os métodos de um conjunto de objetos; os objetos representam um
elemento que podemos manipular, acompanhar seu comportamento, criar ou
destruir.
Estados representam a situação em que um objeto se encontra em um
determinado momento durante o período em que este participa de um processo; os
pacotes por sua vez são utilizados para demonstrar os limites de cada subsistema
e como eles se inter-relacionam. Neste sentido, os componentes representam uma
unidade de código de software; e por fim são apresentados os relacionamentos
que ligam as classes/objetos entre si criando relações lógicas entre estas entidades.
Um elemento pode existir em diversos tipos de diagramas, mas existem
regras que definem que elementos podem ser mostrados em que tipo de diagrama
(JACOBY, 2013). Todos os modelos de elementos descritos serão definidos e
exemplificados a seguir.
2 CLASSES
Segundo Jacoby (2013), uma classe define os atributos e os métodos de
um conjunto de objetos. Assim, todos os objetos desta classe (instâncias desta
classe) compartilham o mesmo comportamento, e possuem o mesmo conjunto de
atributos (cada objeto possui seu próprio conjunto).
O autor destaca que o termo “TIPO” é por vezes usado ao invés de
CLASSE, mas é importante mencionar que estes dois termos são a mesma coisa.
Tipo é considerado um termo mais genérico.
Em outras palavras, Jacoby (2013) descreve que uma classe é a descrição
de um tipo de objeto, onde todos os objetos são instâncias de classes. Assim, a
classe descreve as propriedades e comportamentos daquele objeto. Objetos só
podem ser instanciados de classes.
88
UNIDADE 2 | UNIFIED MODELING LANGUAGE (UML)
Complementando seu pensamento, o mesmo autor discorre que
normalmente usam-se classes para classificar os objetos que identificamos no
mundo real. Tomando como exemplo Charles Darwin, que usou classes para
classificar os animais conhecidos, e combinou suas classes por herança paradescrever a "Teoria da Evolução". A técnica de herança entre classes é também
usada em orientação a objetos.
FIGURA 52 – CLASSES
FONTE: Disponível em: <http://www.linhadecodigo.com.br/artigo/776/uml-unified-
modeling-language-requisitos-classes-e-objetos.aspx>. Acesso em: 10 fev. 2015.
Identificar as classes de um sistema pode ser complicado, e deve ser feito
por experts no domínio do problema a que o software modelado se baseia.
As classes devem ser retiradas do domínio do problema e serem nomeadas pelo que elas
representam no sistema (JACOBY, 2013).
IMPORTANT
E
Name: Classes
Author: Nogueira JR
Version: 1.0
Created: 15/09/2004 22:43:49
Updated: 07/10/2004 17:22:04
id Classes
cls Cliente
responsibilities
constraints
tags
{specification}
- CLI_ID: *
- CLI_DESCR:
- Nome: volatile char [2.. 7 ordered]
+ <<property>> pNome( ) : char
Cadastro dos Clientes
{Entrada manual}
Software = Windows XP
TÓPICO 3 | MODELOS DE ELEMENTOS
89
Na figura apresentada é possível visualizar como a classe é dividida e
quais são os seus componentes.
3 OBJETOS
Segundo a definição de Jacoby (2013), um objeto é um elemento que
podemos manipular, acompanhar seu comportamento, criar, destruir etc. Um
objeto existe no mundo real. Pode ser uma parte de qualquer tipo de sistema,
por exemplo, uma máquina, uma organização ou negócio. Existem objetos que
não encontramos no mundo real, mas que podem ser vistos de derivações de
estudos da estrutura e comportamento de outros objetos do mundo real.
Já Nogueira (2005) entende que um objeto é simplesmente alguma
coisa que faz sentido no contexto de uma aplicação. Objeto é uma entidade
independente, assíncrona e concorrente, armazena dados, encapsula serviços,
troca mensagens com outros objetos, e é modelado para executar as funções
finais do sistema.
Assim, em notação UML, Jacoby (2013) descreve ainda que um objeto
é apresentado por meio de uma classe tendo seu nome destacado, e o nome
do objeto pode ser mostrado opcionalmente precedido do nome da classe,
conforme exemplo:
FIGURA 53 – NOME NA CLASSE
FONTE: Jacoby (2013)
Você irá visualizar mais a respeito de classes, em cada um dos diagramas que
serão apresentados na Unidade 3 deste Caderno de Estudos.
Nome do Objeto
Atributos
Operações
Nome: "Pablo Barros"
Idade: 20
Criar()
Destruir()
Pablo Barros: Cliente
ESTUDOS FU
TUROS
90
UNIDADE 2 | UNIFIED MODELING LANGUAGE (UML)
4 ESTADOS
De acordo com Guedes (2004, p. 132), “um Estado representa a situação em
que um objeto se encontra em um determinado momento durante o período em
que este participa de um processo”. Assim, um objeto pode passar por diversos
estados dentro de um mesmo processo.
Neste sentido, o autor descreve que um estado pode ser apresentado da
seguinte forma:
a) A espera pela ocorrência em um evento.
b) A reação a um estímulo.
c) A execução de alguma atividade.
d) A satisfação de alguma condição.
Todos os objetos possuem um estado que significa o resultado de
atividades executadas pelo objeto, e é normalmente determinada pelos valores
de seus atributos e ligações com outros objetos (JACOBY, 2013).
O autor descreve que um objeto muda de estado quando acontece algo,
o fato de acontecer alguma coisa com o objeto é chamado de evento. Através da
análise da mudança de estados dos tipos de objetos de um sistema, podemos
prever todos os possíveis comportamentos de alguns objetos de acordo com os
eventos que os mesmos possam sofrer.
Na figura a seguir, você poderá observar as três fases do estado, sendo
elas: Estado Inicial, Estado e o Estado Final, bem como os eventos que ocorrem
no decorrer do processo.
FIGURA 54 – FASES DO ESTADO
FONTE: Disponível em: <http://www.ub.edu.ar/catedras/ingenieria/ing_software/ubftecwwwdfd/
uml1/uml1.htm>. Acesso em: 10 fev. 2015.
Evento
Estado
Estado inicial Estado finalTransición
On / OffOn / Off
Fotocopiadora
Encendida
TÓPICO 3 | MODELOS DE ELEMENTOS
91
5 PACOTES
Os pacotes permitem organizar elementos em grupos e costumam ser
utilizados na modelagem de sistemas mais extensos, principalmente
quando existem vários sistemas ou subsistemas integrados. Os pacotes
são utilizados para demonstrar os limites de cada subsistema e como
eles se inter-relacionam. Sendo assim, um pacote é representado por
um retângulo contendo uma aba (GUEDES, 2004, p. 64).
Em sentido complementar, Jacoby (2013) descreve que Pacote é um
mecanismo de agrupamento, onde todos os modelos de elementos podem ser
agrupados. Em UML, um pacote é definido como: "Um mecanismo de propósito
geral para organizar elementos semanticamente relacionados em grupos."
(GALEOTE, 2010, p. 2). Todos os modelos de elementos que são ligados ou
referenciados por um pacote são chamados de "Conteúdo do pacote". Um pacote
possui vários modelos de elementos, e isto significa que estes não podem ser
incluídos em outros pacotes.
FIGURA 55 – MODELOS DE PACOTES
FONTE: Disponível em: <http://w3.ualg.pt/~mzacaria/tutorial-uml/topico-pac.html>. Acesso
em: 10 fev. 2015.
Tipo de Pacote 1 Pacote juntado
Tipo de Pacote 2 Pacote acedido
Pacote
Pacote contido Pacote importado
<<access>>
<<merge>>
<<import>>
Cada pacote é dono do seu conteúdo. Não é possível pôr a mesma classe em
dois pacotes diferentes. Contudo, ela pode ser usada em diagramas que se encontram em
diferentes pacotes (ZACARIAS, 2015).
IMPORTANT
E
92
UNIDADE 2 | UNIFIED MODELING LANGUAGE (UML)
6 COMPONENTES
Furlan (1998, p. 232) entende que “um componente representa uma
unidade de código de software (fonte, binário ou executável) e pode ser usado
para expor o compilador e dependências de runtime, incluindo sua localização
em nós”. É desenhado como um retângulo maior e dois retângulos menores que
protraem do seu lado esquerdo, conforme demonstra a figura.
FIGURA 56 – COMPONENTE
FONTE: Disponível em: <http://class-uml.blogspot.com.br/2012
/05/uml.html>. Acesso em: 17 fev. 2015.
Um componente, segundo a visão de Jacoby (2013), pode ser tanto um
código em linguagem de programação como um código executável já compilado.
Segundo Crespo (2010), um componente é uma parte física e substituível
de um sistema, que proporciona a realização de um conjunto de interfaces, como
exemplo podemos citar: executáveis, bibliotecas, tabelas, ficheiros, documentos,
entre outros. O autor complementa descrevendo que um componente representa
um empacotamento físico de elementos relacionados logicamente (normalmente
classes).
Na programação UML, Crespo (2010) destaca alguns tipos de componentes
como sendo:
FONTE: Crespo (2010)
Componente
Archivo
fuente 1
Archivo
fuente 2
Icono 1
Icono 2
Dependencia
Componente
EXE
DLL 2
TÓPICO 3 | MODELOS DE ELEMENTOS
93
Observe no exemplo a ser apresentado, como um componente se comporta
na construção de um diagrama.
FIGURA 57 – COMPONENTE NA CRIAÇÃO DE UM DIAGRAMA
FONTE: Disponível em: <http://www.ub.edu.ar/catedras/ingenieria/ing_software/
ubftecwwwdfd/uml1/uml1.htm>. Acesso em: 17 fev. 2015.
7 RELACIONAMENTOS
De acordo com Jacoby (2013), os relacionamentos ligam as classes/objetos
entre si criando relações lógicas entre estas entidades.
Os relacionamentos podem ser dos seguintes tipos:
a) Associação: É uma relação que descreve um conjunto de vínculos entre
elementos de modelo. Conceitualmente, representam relacionamentos entre os
tipos envolvidos com responsabilidades definidas através de operações de acesso
e atualização, as associações segundo Furlan (1998, p. 118-120) podem ser:
Archivo
fuente 1
Archivo
fuente 2
Icono 1
Icono 2
Dependencia
Componente
EXE
DLL 2
94
UNIDADE 2 | UNIFIED MODELING LANGUAGE (UML)
Associações unárias: Quando há um relacionamento de uma classe para
consigo própria conectando-se ambos os fins da associação a ela mesma (porém
os dois fins são distintos). Veja o exemplo:
Associação binária: Quando há duas classes envolvidas na associação de
forma direta de uma para a outra. Uma associação binária é desenhada como um
caminho sólido que conecta doissímbolos de classe, sendo que tal caminho pode
consistir em um ou mais segmentos conectados. Veja o exemplo:
Associação n-ária: É uma associação entre três ou mais classes, mas
uma única classe pode aparecer mais de uma vez. Cada instância da associação
representa n estruturas de classes respectivas. Vale destacar que as associações
ternárias ou superiores são mostradas como diamantes conectados ao símbolo
de classe através de linhas com um caminho do diamante para cada classe
participante. Veja o exemplo:
TÓPICO 3 | MODELOS DE ELEMENTOS
95
Desta forma, pode-se dizer que uma associação nada mais é do que uma
forma usada para demonstrar a dependência estrutural existente entre os objetos,
o que ocorre normalmente em classes distintas, sendo desenhada por meio de
linhas sólidas entre os pares de classes demonstrados:
Após as definições de associações, e os tipos existentes, observe a
simbologia utilizada na construção dos diagramas.
FIGURA 58 – CONSTRUÇÃO DOS DIAGRAMAS
FONTE: Disponível em: <http://www.macoratti.net/net_uml1.
htm>. Acesso em: 17 fev. 2015.
Furlan (1998, p. 120) observa ainda que “a maior parte dos detalhes
interessantes que ocorrem em uma associação é demonstrada em seus papéis”,
os quais apresentam as seguintes informações:
FONTE: Disponível em: <http://pt.slideshare.net/PauloVieiraFeitor/uml-6619738>.
Acesso em: 17 fev. 2015.
Associação
Dependência
Agregação
Composição
Herança
96
UNIDADE 2 | UNIFIED MODELING LANGUAGE (UML)
FONTE: Disponível em: <http://pt.slideshare.net/PauloVieiraFeitor/uml-6619738>. Acesso
em: 17 fev. 2015.
FONTE: Disponível em: <http://pt.slideshare.net/PauloVieiraFeitor/uml-6619738>. Acesso em:
17 fev. 2015.
FONTE: Disponível em: <http://pt.slideshare.net/PauloVieiraFeitor/uml-6619738>. Acesso em:
17 fev. 2015.
TÓPICO 3 | MODELOS DE ELEMENTOS
97
FONTE: Disponível em: <http://pt.slideshare.net/PauloVieiraFeitor/uml-6619738>.
Acesso em: 17 fev. 2015.
FONTE: Disponível em: <http://pt.slideshare.net/PauloVieiraFeitor/uml-6619738>.
Acesso em: 17 fev. 2015.
Agora, partindo deste contexto, onde foram apresentados em formas de
figura os papéis que cada um dos itens exerce dentro da associação, observe a
demonstração, a seguir, que compõe todos os itens apresentados.
98
UNIDADE 2 | UNIFIED MODELING LANGUAGE (UML)
FIGURA 59 – PAPÉIS DENTRO DA ASSOCIAÇÃO
FONTE: Furlan (1998, p. 121)
8 MECANISMOS GERAIS
A notação UML utiliza de alguns mecanismos na construção de seus
diagramas, com o intuito de tratar informações adicionais que ainda não
foram descritas. Sendo assim, observe a seguir os tipos de mecanismos gerais
existentes, onde todos serão demonstrados por meio de exemplos para facilitar
o entendimento.
Estereótipos: É considerado o núcleo do mecanismo de extensão de
UML. Normalmente são utilizados para estender (enriquecer) o significado
de um determinado elemento em um diagrama. Estes podem ser classificados
em: estereótipos gráficos (ícone que lembre o significado do conceito a ele
associado), e estereótipos de rótulo (um nome delimitado pelos símbolos << e
>>) (GALEOTE, 2010).
TÓPICO 3 | MODELOS DE ELEMENTOS
99
FIGURA 60 – ESTEREÓTIPOS
FONTE: Disponível em: <http://www.prasabermais.com/analise/aula03.pdf>. Acesso em: 17 fev. 2015.
Notas explicativas: São utilizadas para comentar ou esclarecer alguma
parte do diagrama. Estas notas podem ser descritas em texto livre, podendo
corresponder a uma expressão formal utilizando OCL (Object Constraint Language
– Linguagem de Restrição de Objetos). (GALEOTE, 2010).
FIGURA 61 – NOTAS EXPLICATIVAS
FONTE: Disponível em: <http://www.prasabermais.com/analise/aula03.pdf>. Acesso
em: 17 fev. 2015.
Etiquetas (Tags): Os elementos gráficos de um diagrama da UML possuem
propriedades predefinidas. Propriedades adicionais para elementos gráficos de
um diagrama podem ser definidas através do uso de etiquetas. Existem algumas
alternativas de notação para definição de etiquetas na UML: { tag = valor } ou {
tag1 = valor1, tag2 = valor2...} ou { tag } (GALEOTE, 2010).
100
UNIDADE 2 | UNIFIED MODELING LANGUAGE (UML)
FIGURA 62 – ETIQUETAS
FONTE: Disponível em: <http://slideplayer.com.br/slide/1669103/>. Acesso em: 17 fev. 2015.
Restrições: A todo elemento da UML está associado alguma semântica,
onde cada elemento gráfico possui um significado bem definido que, uma vez
entendido, fica implícito na utilização do elemento em algum diagrama. Sendo
assim, as restrições permitem estender ou alterar a semântica natural de um
elemento gráfico, ou seja, a restrição é igual à condição que deve ser satisfeita
(GALEOTE, 2010).
FIGURA 63 – RESTRIÇÕES
FONTE: Disponível em: <http://pt.slideshare.net/kyrios/uml-4983843>. Acesso em: 17 fev. 2015.
TÓPICO 3 | MODELOS DE ELEMENTOS
101
LEITURA COMPLEMENTAR
Conceitos de orientação a objetos e UML
O começo de tudo
A história da computação teve início na necessidade do homem em
conseguir realizar cálculos. O caminho foi longo, iniciado com o ábaco, muitos
anos antes da era cristã. A primeira máquina de calcular que apenas somava e
subtraía vem surgir apenas em 1642, desenvolvida por Blaise Pascal. Em 1694,
Gottfried Von Leibniz constrói a primeira calculadora que podia executar as quatro
operações básicas, e em 1822, o matemático inglês Charles Babbage estabelecia
os princípios do funcionamento dos computadores eletrônicos no projeto de sua
máquina diferencial, capaz de realizar os cálculos necessários para elaborar uma
tabela de logaritmos. A partir daí, outras invenções abriram caminhos para o que
temos hoje.
O marco inicial se dá com o primeiro computador eletrônico, o ENIAC
(Eletrical Numerical Integrator and Calculator), surgido em 1945, e pesando cerca de
30 toneladas. Até hoje os computadores ainda utilizam a arquitetura proposta por
Von Neumann. Em 1951, surgia o primeiro computador fabricado comercialmente:
o UNIVAC I, usado no censo americano por 12 anos seguidos.
A partir da década de 40, descobre-se a importância da computação, e
essa passa a fazer parte da nossa história. Contudo, numa primeira fase ninguém
pensava em software. Os esforços estavam voltados à evolução do hardware,
buscando-se reduzir os problemas das primeiras máquinas. Assim, da primeira
geração de computadores à válvula, passamos para a segunda geração, utilizando
transistores.
A primeira linguagem de programação surgida foi a linguagem de
máquina, na década de 50 – o Assembly. Nesse momento, a preocupação
era restrita aos comandos, nem se pensava em análise, muito menos em
modelagem de requisitos. A partir de então, surgem as linguagens de alto nível,
como Fortran, Algol e Cobol.
Um rápido aumento na complexidade das demandas por softwares e a falta
de técnicas para definição de novos sistemas culminaram em diversos problemas,
entre eles: estouro de orçamento e prazo, softwares de baixa qualidade, requisitos
não atendidos e código de manutenção difícil. Estava definida a crise de software.
A solução para contornar a crise veio com o conceito da Engenharia de
Software, em 1968. Objetivava-se trazer os princípios da Engenharia, com todo
o seu planejamento e modelagem, para se resolver os problemas da área ainda
imatura. No mesmo ano de 68, Dijkstra escreve sobre a programação estruturada;
tinha início o marco do primeiro paradigma de desenvolvimento de sistemas.
102
UNIDADE 2 | UNIFIED MODELING LANGUAGE (UML)
Mas enquanto novas linguagens surgiam – Pascal, C –, ainda não se tinha a
definição de uma metodologia de desenvolvimento de sistemas, até 1978, quando
Tom DeMarco escreve seu livro sobre análise estruturada. Contudo, a dificuldade
de manutenção dos diversos modelos gerados na fase de análise e projeto, fez
com que se percebesse, nas duas décadas seguintes, que esse paradigma ainda
não era a solução para a velha crise de software.
Naturalmente, logo se pensa que a orientação a objetos surgiu após a
análise estruturada, como uma evolução dessa metodologia, buscando-se assoluções necessárias para um projeto confiável e de manutenção fácil. É correto
imaginar que o paradigma da orientação a objetos tornou-se a solução para
acompanhar a demanda cada vez maior e frequente do mercado, mas o erro está
no posicionamento histórico do conceito de orientação a objetos, pois este surgiu
muito antes do conceito da programação estruturada.
Em 1962, Ole-Johan Dahl e Kristen Nygaard criaram uma linguagem
chamada Simula, baseada na linguagem Algol 60. O diferencial residia em seu
objetivo: permitir o projeto de simulações. Surgia a primeira linguagem orientada
a objetos, apresentando os conceitos de classe e herança. Essa foi a semente que
inspirou o desenvolvimento de uma nova linguagem, a primeira totalmente
orientada a objetos o SmallTalk. Nela, não existem tipos primitivos, tudo é
representado em forma de objeto: números, caracteres etc. Disponibilizada ao
público no início dos anos 80, SmallTalk solidificou para a comunidade os conceitos
de classe, objeto, atributo, método, encapsulamento, herança e mensagem. A
partir daí, novas linguagens surgiram, como o C++ (versão OO da linguagem
C), Object Pascal (versão OO do Pascal), Eiffel e Java (criado a partir do C++).
Conceitos fundamentais de orientação a objetos
Os conceitos da orientação a objetos surgiram da necessidade em se
enfatizar unidades discretas, e obter a reutilização de código, mantendo-se a
qualidade do software. O núcleo do pensamento OO predomina num foco sobre
os dados, em vez dos processos, compondo módulos autossuficientes – os objetos
–, encerrando em sua estrutura todo o conhecimento dos dados e dos processos
para manipulação desses dados.
O que se obtém de principal na modelagem orientada a objetos é a
possibilidade de se abstrair diretamente os conceitos do mundo real, sem
subterfúgios para se chegar à solução computacional.
Os conceitos fundamentais de orientação a objetos são o contrato que
estabelece toda e qualquer implementação que se diga OO. Sendo assim, se
um desses conceitos não for atendido, não podemos afirmar que determinada
tecnologia possa ser nomeada como orientada a objetos. Isso aconteceu com a
linguagem.
FONTE: Disponível em: <http://www.devmedia.com.br/artigo-engenharia-de-software-8-conceitos-
de-orientacao-a-objetos-e-uml/11311>. Acesso em: 17 fev. 2015.
103
RESUMO DO TÓPICO 3
Neste tópico, você, acadêmico, teve oportunidade de conhecer os modelos
de elementos que compõem os diagramas.
Vale relembrar as classes que definem os atributos e os métodos de um
conjunto de objetos; os objetos, por sua vez, representam os elementos que
podemos controlar na composição dos diversos tipos de diagramas.
Neste sentido, os estados dos objetos representam a situação em que se
encontram em um determinado momento durante o período em que participam
de um processo; com relação aos pacotes salientamos que são utilizados para
demonstrar os limites de cada subsistema e como eles se inter-relacionam.
Os componentes representam uma unidade de código de software; e os
diferentes tipos de relacionamentos que ligam as classes/objetos entre si criando
relações lógicas entre estas entidades.
Para finalizar destacamos os diversos mecanismos gerais existentes na
composição dos diagramas. São eles: Estereótipos, Notas Explicativas, Etiquetas
e Restrições.
Neste momento, você está apto a desenvolver as autoatividades deste
tópico.
Bom estudo!
104
AUTOATIVIDADE
1 Define os atributos e os métodos de um conjunto de objetos. Esta definição
se refere à qual das alternativas a seguir?
a) ( ) Objetos.
b) ( ) Classes.
c) ( ) Pacotes.
d) ( ) Estados.
2 Descreva o que você entende por objeto e exemplifique.
3 Descreva as quatro formas em que os Estados são apresentados:
4 Verifique a figura a seguir e veja a qual das alternativas ela se refere.
a) ( ) Associação Ternária.
b) ( ) Associação Binária.
c) ( ) Generalização.
d) ( ) Multiplicidade.
5 Com relação aos mecanismos gerais apresentados na notação UML,
relacione os itens a seguir:
I. Estereótipos.
II. Notas explicativas.
III. Etiquetas.
IV. Restrições.
( ) Representam os elementos gráficos de um diagrama da UML, possuem
propriedades pré-definidas.
105
( ) Normalmente são utilizados para estender (enriquecer) o significado de
um determinado elemento em um diagrama.
( ) São utilizadas para comentar ou esclarecer alguma parte do diagrama.
( ) A todo elemento da UML está associado alguma semântica, onde cada
elemento gráfico possui um significado bem definido que, uma vez entendido,
fica implícito na utilização do elemento em algum diagrama.
Agora, assinale a alternativa que apresenta a sequência CORRETA:
a) ( ) III – I – II – IV.
b) ( ) I – III – IV – II.
c) ( ) II – IV – I – III.
d) ( ) IV – II – III – I.
106
107
UNIDADE 3
DIAGRAMAS
OBJETIVOS DE APRENDIZAGEM
PLANO DE ESTUDOS
A partir desta unidade você será capaz de:
• conhecer as particularidades do Diagrama de Casos de Uso;
• compreender o funcionamento do Diagrama de Classes;
• conhecer sobre o Diagrama de Sequência;
• conhecer a respeito dos demais diagramas existentes para a Programação
Orientada a Objetos.
Esta unidade de ensino está dividida em quatro tópicos, sendo que no final
de cada um deles, você encontrará atividades que contribuirão para a apro-
priação dos conteúdos.
TÓPICO 1 – DIAGRAMAS DE CASO DE USO
TÓPICO 2 – DIAGRAMA DE CLASSES
TÓPICO 3 – DIAGRAMAS DE SEQUÊNCIA
TÓPICO 4 – DEMAIS DIAGRAMAS EXISTENTES
108
109
TÓPICO 1
DIAGRAMAS DE CASOS
DE USO
UNIDADE 3
1 INTRODUÇÃO
Este diagrama tem por objetivo apresentar uma visão externa e geral das
funções e serviços que o sistema deverá oferecer aos usuários, sem se preocupar
em como estes serão implementados.
É o mais abstrato e flexível de todos os diagramas da UML. Costuma ser
utilizado, principalmente, no início da modelagem do sistema, principalmente
nas etapas de Levantamento e Análise de Requisitos, embora possa ser consultado
e alterado durante todo o processo de desenvolvimento.
Vale destacar que “é bastante útil e recomendável que um diagrama de
Casos de Uso seja apresentado aos clientes juntamente com um protótipo o que
permitirá que um complemente o outro”. (GUEDES 2007, p. 45).
2 ATORES
De acordo com Guedes (2004, p. 44), “os atores representam os papéis
desempenhados pelos diversos usuários que poderão utilizar de alguma maneira
os serviços e funções do sistema”. Em outras palavras, o autor descreve que ator
é toda pessoa que interage com o sistema indiferente do serviço ou da função
exercida.
Vale destacar que “um ator pode desempenhar muitos casos de uso; um
caso de uso pode ter reciprocamente vários atores desempenhando-o”. (FOWLER
e SCOTT, 2000, p. 52). Observe a figura a seguir e compreenda a função do ator
no processo.
UNIDADE 3 | DIAGRAMAS
110
FIGURA 64 – SIMBOLOGIA ATOR
FONTE: Disponível em: <http://www.purainfo.com.br/
artigos/o-que-e-uml/>. Acesso em: 12 fev. 2015.
FIGURA 65 – ATOR EM UM CASO DE USO
FONTE: Disponível em: <https://infohades.wordpress.com/2009/12/09/diagrama-de-casos-
de-uso/>. Acesso em: 12 fev. 2015.
Ator
Recepcionista
Funcionário
do Estoque
Funcionário
do Marketing
Funcionário
da Limpeza
Cliente
Gerenciamento
Promoções
Gerenciamento
Hospedagem
Gerenciamento
Associados
Gerenciamento
Cliente
Gerenciamento
Estoque
Disponibilidade
de Quartos
TÓPICO 1 | DIAGRAMAS DE CASOS DE USO
111
Na figura apresentada, você, acadêmico, pode verificar que a mesma é
composta por cinco atores (Recepcionista, Funcionário do Estoque, Funcionário
de Marketing, Funcionário da Limpeza e por fim o Cliente). Neste contexto, cada
um exerce sua função dentro do sistema com as suas especificidades.
Vale destacar, neste momento, algumas características específicas de atores:
determina papéis que são exercidos por pessoas; é um sistema de computação;
pode ser considerado software, hardware, alguns dispositivos elétricos e até mesmo
mecânicos.
3 CASO DE USO
Caso de Uso, segundo Guedes(2004, p. 46), “referem-se aos serviços,
tarefas ou funções que podem ser utilizadas de alguma maneira pelos usuários
do sistema, como emitir um relatório ou cadastrar a venda de algum produto”.
Observe a Figura 63 que demonstra esta afirmação.
Já Furlan (1998, p. 170), define caso de uso como um “conjunto de
sequências de ações que um sistema desempenha para produzir um resultado de
valor a um ator específico”.
Caro acadêmico(a)! Verifique a figura a seguir e observe como o diagrama
inicia sua composição, ou seja, demonstra quem é o ator, qual a interação e por
fim o sistema que é o Caso de Uso.
FIGURA 66 – SIMBOLOGIA CASO DE USO
FONTE: Disponível em: <http://www.purainfo.com.br/artigos/
o-que-e-uml/>. Acesso em: 12 fev. 2015.
FIGURA 67 – INTERAÇÃO ATOR E CASO DE USO
FONTE: Disponível em: <http://pt.slideshare.net/mjovinski/revisao-prova-1bimestre-3-
periodouniao>. Acesso em: 12 fev. 2015.
Manter Clientes
Caso de Uso
Sistema
Interação
Ator
UNIDADE 3 | DIAGRAMAS
112
Veja agora, uma figura que demonstra como ocorre este processo de
interação entre Ator e Caso de Uso em um diagrama.
FIGURA 68 – EXEMPLO DE CASOS DE USO
FONTE: Disponível em: <https://code.google.com/p/scmotel/downloads/detail?name=Diagrama%20
d>. Acesso em: 12 fev. 2015.
Analisando as definições apresentadas, observe que a figura é composta
por três atores, sendo: cliente, atendente e a camareira, cada um destes atores
realiza determinadas funções, tarefas ou serviços. No caso da camareira, sua
função, ou seu caso de uso é conferir e realizar o lançamento do consumo, já o
atendente por sua vez, exerce as funções ou caso de uso de escolher acomodação,
solicitar fechamento de conta, conferir consumo, conferência, fazer reserva,
entre outras.
Seu principal objetivo é ser de fácil compreensão para os usuários que
estão iniciando na informática, auxiliar na tarefa de análise, delimita o sistema,
entre outros.
Agora, faça uma análise das informações recebidas até o momento. É
possível perceber que um caso de uso possui um ator que inicia, ou seja, gera
o estímulo inicial para os demais atores que possam participar desse processo.
Escolher
Acomodação
Solicitar
Fechamento
da Conta
Conferência
Pagar
Fazer Reserva
Confirmar
Consumo
Lançar
Consumo
Cliente
Atendente
Camareira
TÓPICO 1 | DIAGRAMAS DE CASOS DE USO
113
4 DOCUMENTAÇÃO DE CASOS DE USO
Com uma explicação bem simples, Guedes (2004, p. 47) descreve que:
A documentação de Caso de Uso costuma descrever por meio de uma
linguagem bastante simples, a função em linhas gerais do Caso de
Uso, quais Atores interagem com o mesmo, quais etapas devem ser
executadas pelo Ator e pelo sistema para que o Caso de Uso execute
sua função, quais parâmetros devem ser fornecidos e quais restrições
e validações o Caso de Uso deve possuir.
FIGURA 69 – DOCUMENTAÇÃO DE CASO DE USO
FONTE: Disponível em: <http://www.purainfo.com.br/artigos/o-que-e-uml/>. Acesso em: 12 fev. 2015.
Assim, ao analisar o exemplo de Documentação de Caso de Uso, você
pode verificar quais as funções que serão exercidas pelos atores, quais os atores
que irão compor este diagrama, quais os dados que devem ser levantados, qual a
prioridade do sistema, enfim, apresentar a documentação de tudo que consta no
diagrama para que todos possam compreender, se necessário.
Não existe um modelo padrão de documentação, porém é imprescindível que
constem todas as informações necessárias no diagrama de Caso de Uso.
IMPORTANT
E
UNIDADE 3 | DIAGRAMAS
114
5 ASSOCIAÇÕES
Como o próprio nome já diz, representam as associações existentes
entre os atores e os casos de uso que compõem o diagrama. De acordo com as
informações descritas por Guedes (2004, p. 49),
uma associação entre um Ator e um Caso de Uso demonstra que o Ator
utiliza-se, de alguma maneira, da função do sistema representada pelo
Caso de Uso em questão, seja requisitando a execução daquela função,
seja recebendo o resultado produzido por ela a pedido de outro Ator.
Observe o exemplo apresentado.
FIGURA 70 – ASSOCIAÇÃO
FONTE: O autor
Observe que a associação existente entre o Ator e o Caso de Uso é
representada por uma linha reta, em muitos casos podem apresentar setas,
demonstrando assim a direção do diagrama.
Na continuidade deste tópico, serão apresentados os relacionamentos
existentes entre o Ator e o Caso de Uso, sendo: Inclusão, Extensão e Generalização,
os quais serão abordados na sequência.
6 INCLUSÃO
Segundo Fowler e Scott (2000, p. 53), “a associação de Inclusão ocorre
quando há uma parte do comportamento que é semelhante em mais de um caso
de uso e você não quer ficar copiando a descrição deste comportamento”.
Pedir menu
Cliente
TÓPICO 1 | DIAGRAMAS DE CASOS DE USO
115
FIGURA 71 – SIMBOLOGIA INCLUSÃO
FONTE: Disponível em: <http://www.purainfo.com.br/artigos/o-que-
e-uml/>. Acesso em: 13 fev. 2015.
Agora, observe um exemplo que demonstra a forma de utilização desta
associação.
FIGURA 72 – INCLUSÃO
FONTE: Disponível em: <http://siuvv.rodrigoneto.com/doku.php?id=si_mat_p5_analise_
resumo>. Acesso em: 13 fev. 2015.
No caso da figura apresentada, houve a inclusão por três vezes, afinal,
todas as funções requerem a mesma solicitação Fornecer Identificação, assim,
esta rotina foi colocada em um caso de uso específico e todos os demais casos
de uso podem utilizar-se deste serviço, evitando assim descrever esta rotina de
passos em vários casos de uso.
7 EXTENSÃO
<<include>>
Obter Extrato
Realizar Saque
Realizar
Transferência
Fornecer
Identificação
Cliente
<<include>>
<<include>>
<<include>>
Este tipo de associação, chamado de Extensão, é utilizado para descrever
cenários opcionais de um Caso de Uso. “Os Casos de Uso estendidos descrevem
cenários que somente ocorrerão em uma situação específica, se uma determinada
condição for satisfeita”. (GUEDES, 2004, p. 52).
UNIDADE 3 | DIAGRAMAS
116
Fowler e Scott (2000, p. 54) afirmam que por meio desta construção, “o
caso de uso estendido pode acrescentar comportamentos para o caso de uso-
base, mas este tipo de caso deve declarar certos ‘pontos de extensão’, e o caso de
extensão pode acrescentar comportamento adicional somente naqueles pontos de
extensão”, veja o exemplo.
FIGURA 73 – SIMBOLOGIA EXTENSÃO
FONTE: Disponível em: <http://www.purainfo.com.br/artigos/o-que-e-
uml/>. Acesso em: 13 fev. 2015.
Agora, observe um exemplo que demonstra a forma de utilização desta
associação.
FIGURA 74 – EXEMPLO DE EXTENSÃO
FONTE: Disponível em: <http://www.macoratti.net/11/09/net_ioop.htm>. Acesso em: 17
fev. 2015.
Observe um exemplo que demonstra a interação entre os casos de uso e a
utilização das associações inclusão e extensão.
<<extends>>
<<extends>>
<<extends>>
Editar Documento
Escritor
Substituir Texto
Corrigir
Ortografia
TÓPICO 1 | DIAGRAMAS DE CASOS DE USO
117
FIGURA 75 – ASSOCIAÇÃO INCLUSÃO / EXTENSÃO
FONTE: Disponível em: <http://wthreex.com/rup/portugues/process/modguide/md_bucm.
htm>. Acesso em: 17 fev. 2015.
8 ESPECIALIZAÇÃO/ GENERALIZAÇÃO
De uma forma geral, Angelantonio Jr (2013) descreve que a palavra
generalização possui o conceito de agrupar, associar indivíduos que possuem
atributos comuns, onde suas diferenças são desprezadas.
Em Especialização/Generalização Guedes (2004, p. 50) descreve que este
tipo de relacionamento é uma forma de Associação entre Casos de Uso na qual
existem dois ou mais Casos de Uso com características semelhantes, apresentando
pequenas diferenças entre si.
Vale lembrar que quando esta situação ocorre, costuma-se definir um Caso
de Uso Geral que descreve as características compartilhadas por todos os Casos
de Uso em questão e então relacioná-los com os outros Casos de Uso envolvidos,
cuja documentação conterá somente as características específicas de cada um.
Passageiro
Guia Turístico Check-In de Grupo
Através de Check-In
<<estender>>
<<incluir>>
<<incluir>>
Check-In
Individual
Administração
de Bagagens
UNIDADE 3 | DIAGRAMAS
118
FIGURA 76 – SIMBOLOGIADE GENERALIZAÇÃO
FONTE: Disponível em: <http://www.purainfo.com.br/artigos/o-que-e-uml/>.
Acesso em: 17 fev. 2015.
FIGURA 77 – ESPECIALIZAÇÃO/ GENERALIZAÇÃO
FONTE: Disponível em: <http://www.wthreex.com/rup/portugues/process/modguide/
md_ucgen.htm>. Acesso em: 17 fev. 2015.
Observe o exemplo apresentado, as setas que demonstram a especialização/
generalização são apresentas no sentido do Caso de Uso especializado para o
Caso de Uso Geral, ou seja, tanto o Pedido por Telefone como o Pedido pela
Internet são demonstrados como especialização/generalização do Caso de Uso –
Fazer Pedido.
Fazer Pedido
Cliente Cliente de Internet
Pedido pela InternetPedido por Telefone
TÓPICO 1 | DIAGRAMAS DE CASOS DE USO
119
FIGURA 78 – ESPECIALIZAÇÃO/GENERALIZAÇÃO DO CASO DE USO
FONTE: Disponível em: <http://jkolb.com.br/especializacaogeneralizacao-
classes/>. Acesso em: 17 fev. 2015.
O mesmo ocorre com o exemplo de Caso de Uso Geral Pessoa, tanto Física
como Jurídica são especialização de Pessoa.
9 EXEMPLOS DE DIAGRAMA DE CASOS DE USO
1. CONTROLE DE TAREFAS
Arnaldo deseja escrever uma aplicação de controle de tarefas para
colocar em seu Smartphone. As especificações da aplicação são as seguintes:
O cadastro de cada tarefa contém o número da prioridade, representado
por um valor real. Isso permite entrar com intervalos intermediários.
Além da prioridade, o cadastro deve conter: o nome da tarefa, a data
limite de execução (se houver), o percentual já concluído e o detalhamento
da tarefa. Para cada tarefa há uma lista de itens que descrevem sua execução.
Para cada item de execução, cadastram-se:
• O percentual correspondente
• A descrição da execução
• A data da execução (quando for concluída) Quando uma tarefa receber
100% de execução, esta deve ser movida automaticamente para a lista de
tarefas concluídas, podendo ser apagada, se for o caso (MELO, 2006, p. 25).
Pessoa Física Pessoa Jurídica
Pessoa
UNIDADE 3 | DIAGRAMAS
120
1. LIGAÇÕES TELEFÔNICAS VIA MODEM
Bruna resolveu desenvolver uma aplicação para controlar as ligações
telefônicas de sua casa, a fim de checar se o valor que paga mensalmente
está correto. Assim, sempre que desejar, poderá listar as ligações efetuadas
num determinado período, contabilizando o valor a pagar. Para que isso
seja possível, toda ligação será feita pelo computador. A cada solicitação de
ligação, a aplicação deverá registrar: a data da ligação, a hora da ligação,
quantidade de minutos gastos (que deve ser registrado no momento que
a ligação for encerrada), o número de pulsos (que deve ser calculado pela
aplicação) e o telefone para onde se discou. A aplicação permitirá o controle
de uma agenda de telefones, com número do telefone e o nome da pessoa de
contato. O usuário poderá escolher, no momento da ligação, se deseja um
dos registros da agenda ou se digitará diretamente o número do telefone.
A forma de cálculo dos pulsos considera os seguintes critérios:
• A ligação ao ser completada já conta um pulso. A partir daí, a cada 4
minutos de conversação concluída, cobra-se mais 1 pulso.
• Cada pulso custa R$ 0.08 para ligações locais.
• Os finais de semana possuem uma promoção: cada ligação contabiliza
somente 1 pulso, independente do número de minutos de conversação.
Pessoa
<<extends>>
<<extends>>
Manter Tarefa
Manter Itens
da Tarefa
Verificar
Conclusão da
Tarefa
TÓPICO 1 | DIAGRAMAS DE CASOS DE USO
121
FONTE: Disponível em: <http://ricardosantos.net/arquivos/UML1.pdf>. Acesso em: 17 fev. 2015
Pessoa
include
include
Listar ligações
de um período
Manter agenda
de telefone
Efetuar ligação
telefônica
Calcular
pulsos
Cadastrar valores
variáveis para
regra de cálculo
Resolução:
122
RESUMO DO TÓPICO 1
Neste tópico foram apresentas características de um dos diagramas mais
utilizados da notação UML.
Estudamos os seus principais componentes, quando de sua utilização e
estruturação.
Vimos que este diagrama tem por objetivo apresentar uma visão geral das
funções e serviços do sistema que será desenvolvido.
Foram apresentados alguns exemplos, onde por meio deles você pode
ter uma noção de sua construção e ao mesmo tempo aproveitá-los para o
desenvolvimento de suas autoatividades.
Bom estudo!
123
Com base nas informações recebidas no decorrer deste tópico, desenhe o
diagrama de Caso de Uso, para os exercícios a seguir:
1. OGO DE FORCA
Cristina quer fazer um jogo da forca em computador para os seus filhos e
sobrinhos. Os requisitos para o jogo estão a seguir:
• O jogo consiste em se tentar acertar as letras de uma palavra escondida. Se
o jogador errar a letra, surge mais um pedaço de um boneco que ao final irá
para a forca.
• As palavras ou frases para cada rodada são obtidas de um banco de palavras
e frases, que o próprio jogador pode incrementar.
• Cada palavra ou frase pertence a um tema.
• A cada rodada, a aplicação sorteia se mostrará uma, duas ou três palavras,
ou uma frase e escolhe aleatoriamente o tema e as palavras (ou frases).
• A palavra (ou frase) é exibida, escondida e cada letra acertada desvenda sua
posição correspondente.
• Letras erradas são colocadas num quadro e um dos pedaços do boneco
aparece.
• O nome do jogador é guardado com seus pontos para fazer parte do quadro
de maiores escores. Quando ele acerta a palavra, ganha 100 pontos e, para a
letra que ficou encoberta, somam-se mais 15 pontos. MELO (2006, p. 43).
2. CLUBE DA LEITURA
Gustavo tem uma coleção grande de revistas em quadrinhos. Por isso, resolveu
emprestá-la para os amigos. Assim foi criado o Clube da Leitura. Mas para
não perder nenhuma revista, seu pai lhe fez uma aplicação que cadastra as
revistas e controla o empréstimo.
Para cada revista, cadastram-se: o tipo de coleção, o número da edição, o ano
da revista e a caixa onde está guardada. Cada caixa tem uma cor, uma etiqueta
e um número.
Para cada empréstimo cadastram-se: o amiguinho que pegou a revista, qual
foi a revista, a data do empréstimo e a data de devolução. Cada criança só
pode pegar uma revista por empréstimo.
O cadastro do amiguinho consiste de: nome, nome do responsável, telefone e
de onde é o amigo. MELO (2006, p. 48).
3. Condomínio
Marina é síndica do prédio onde mora. A fim de melhor gerenciar o
condomínio, ela encomendou uma aplicação a um amigo.
A aplicação deve atender aos seguintes requisitos:
AUTOATIVIDADE
124
1º Para um apartamento devem-se cadastrar: seu número de porta, a
quantidade de quartos, o tipo de ocupação (proprietário, inquilino ou vazio),
o nome do proprietário e o telefone do proprietário. Um proprietário pode ter
mais de um apartamento no prédio.
2º Mensalmente devem ser lançadas as despesas para o condomínio do
mês, além das despesas específicas de um apartamento ou um grupo de
apartamentos, como por exemplo: a taxa de salão de festas.
3º O condomínio é calculado por tipo de apartamento (de acordo com o
número de quartos). Para chegar ao valor pago pelas despesas, têm-se os
seguintes passos:
a) Verificar o somatório de quartos de todo o prédio.
Ex.: apto 101 (2 quartos); 102 (3 quartos); 201 (2 quartos); 202 (3 quartos) = total
de quartos = 10
b) Dividir o valor da despesa (que pode ser fixo, como fundo de reserva; ou
variável, como água) pelo somatório de quartos e multiplicar o resultado pelo
número de quartos do apartamento.
Ex.: água - 200,00
Apto 101 200,00/10x2= 40,00
102 200,00/10x3= 60,00
201 200,00/10x2= 40,00
202 0,00/10x3= 60,00
4º Para cada item do condomínio cadastra-se a referência (ex.: mar/05 -
referente ao mês da conta; 1/3 - fator de parcelamento).
5º O condomínio é pago diretamente com a Síndica. Se for pago com atraso,
cobra-se multa de 2%. O condômino pode optar em pagar a multa no mês
seguinte. Nesse caso, o percentual passa para 5% e é lançada como despesa
do próximo condomínio.
Completa-se, então, para o cadastro de cada condomínio de apartamento, a
data do pagamento e o valor pago.
125
TÓPICO 2
DIAGRAMA DE CLASSES
UNIDADE 3
1 INTRODUÇÃOEste diagrama apresenta uma visão de como as classes serão organizadas
e preocupa-se em definir a sua estrutura lógica.
O diagrama de Classes é composto pelas classes que formam o sistema
e suas associações ou relacionamentos. Neste diagrama temos a abstração das
classes com seus atributos e métodos. “O diagrama de classes serve ainda como
base para a construção da maioria dos outros diagramas da linguagem UML”.
(GUEDES, 2007, p. 45).
2 CLASSES, ATRIBUTOS E MÉTODOS
Com relação às Classes, podemos considerá-las como todo e qualquer
conjunto de objetos que possuem as mesmas definições tanto para os atributos
quanto para os métodos, ou seja, possuem características e comportamentos
comuns (FARINELLI, 2007).
Santos (2009), em seu estudo, descreve que classe é um conjunto de
objetos com propriedades e comportamentos semelhantes e com relacionamentos
comuns com outros objetos. Desta forma, as classes são as partes mais importantes
de qualquer sistema orientado a objetos. Usam-se as classes para capturar o
vocabulário do sistema que está em desenvolvimento. Essas classes podem
incluir abstrações que são parte do domínio do problema, assim como as classes
que fazem uma implementação. Podemos usar ainda as classes para representar
itens de software, de hardware e até itens que sejam somente conceituais. Exemplo:
A classe Pessoa deverá ter atributos e métodos comuns.
126
UNIDADE 3 | DIAGRAMAS
FIGURA 79 – CLASSE
FONTE: Disponível em: <http://pt.slideshare.net/Ridlo/uml-1858376>. Acesso em: 17 fev. 2015.
Para uma melhor compreensão, observe este exemplo da Classe Pessoa,
utilizando a notação UML. Lembre-se de que esta é uma Classe Concreta.
FIGURA 80 – CLASSE PESSOA
FONTE: Disponível em: <http://pt.slideshare.net/Ridlo/uml-1858376>. Acesso em: 17 fev. 2015
Para determinar o nome da Classe utilize sempre um substantivo, afinal é
considerado o identificador desta classe: Pessoa, Produto, Carro, entre outros.
IMPORTANT
E
Pessoa
Nome
Idade
GetNome
GetIdade
Nome da Classe
Atributos
Métodos
TÓPICO 2 | DIAGRAMA DE CLASSES
127
Agora que você compreendeu o significado da Classe, vamos iniciar
nossos estudos acerca dos componentes desta classe, ou seja, você sabe o que é
MÉTODO?
Métodos são procedimentos ou funções que realizam as ações próprias
do objeto. Assim, os métodos são as ações que um objeto pode realizar. Tudo
que o objeto faz é realizado através de seus métodos, afinal é por meio destes
métodos que um objeto se manifesta e até mesmo interage com os outros objetos
(FARINELLI, 2007). Em outras palavras, métodos nada mais são do que os
componentes de um objeto, ou as funções que o mesmo exerce.
Desta forma, agora que você já sabe seu conceito, demonstramos como
ocorre a declaração por meio da UML.
• Modificador de acesso – public, private
• Tipo de Retorno – void, int, double etc.
• Nome que indica o método
• Parênteses – apresenta a lista de argumentos
• { } – descreve o corpo do método
FONTE: Disponível em: <http://slideplayer.com.br/slide/397636/. Acesso em: 17 fev. 2015.
Agora, verifique o exemplo para uma completa compreensão destes itens:
FONTE: Disponível em: <http://pt.slideshare.net/Ridlo/uml-1858376>.
128
UNIDADE 3 | DIAGRAMAS
Exemplo de Método
FONTE: Disponível em: <http://pt.slideshare.net/ludimila_monjardim/poo-03fundamentos-
java>. Acesso em: 17 fev. 2015.
Agora, chegou o momento de finalizar este item. Assim verifique como
procedemos em relação ao Atributo. Você sabe o que é um Atributo?
Atributo na visão de Guedes (2004) representa as características de uma
classe, ou seja, as peculiaridades que costumam variar de objeto para objeto,
como a altura em um objeto da classe Pessoa ou a Cor em um objeto da classe
Carros e que permitem diferenciar um objeto de outro da mesma classe devido a
essas variações.
É importante destacar que os atributos de um objeto sofrem alterações de
valor por meio de estímulos internos ou externos, por exemplo: o endereço de sua
residência pode sofrer alterações, uma vez que o indivíduo more de aluguel, ou
até mesmo por ter adquirido um novo lar.
De acordo com Correia e Tafner (2001, p. 16), “cada objeto é responsável
pela mudança de seu próprio atributo e mais nenhum outro”.
Assim, você, acadêmico, pode observar que existe certa independência de
cada objeto com relação aos outros, desta forma permite-se certa liberdade em
suas modificações, sem medo de interferir internamente nos outros objetos.
Os métodos, por sua vez, são procedimentos ou funções que realizam as
ações próprias do objeto. Assim, os métodos são as ações que um objeto pode
realizar. Tudo que o objeto faz é realizado através de seus métodos, afinal é por
meio destes métodos que um objeto se manifesta e até mesmo interage com os
outros objetos (FARINELLI, 2007).
TÓPICO 2 | DIAGRAMA DE CLASSES
129
Segundo Santos (2009), os atributos são pertencentes à classe, eles podem
ser do tipo primitivo ou referência (objetos), e seus modificadores podem ser:
public, private, protected ou default. Vale destacar que o ciclo de vida destes atributos
está vinculado ao ciclo de vida da classe Variáveis Locais, as quais são definidas
dentro dos métodos. Elas têm um ciclo de vida vinculado ao ciclo dos métodos,
também chamadas de Variáveis Temporárias.
FIGURA 81 – MÉTODO
FONTE: Disponível em: <http://pt.slideshare.net/Ridlo/uml-1858376>. Acesso em: 17 fev. 2015.
3 ABSTRAÇÃO
Segundo Ambler (1998, p. 6), “o mundo é um lugar complexo”. Para
que consigamos lidar com esta complexidade, formamos generalizações, ou
abstrações das coisas existentes nele.
public class Disciplina {
private int cargaHoraria;
private String nome;
public Disciplina(String nome, int
cargaHoraria){
this .nome = nome;
this .cargaHoraria =
calcCargaHoraria(cargaHoraria);
}
public String getNome( ){
return nome;
}
public int getCargaHoraria( ){
return CargaHoraria;
}
public int calcCargaHoraria(int
qdeHoras)}
int horasPlanejamento = (int)
( qdeHoras * 0,1);
return CargaHoraria =
horasPlanejamento + qdeHoras;
}
}
Atributos
Modificador
Variáveis
temporárias
130
UNIDADE 3 | DIAGRAMAS
Possuímos o recurso de abstração como forma de entender problemas
tidos como complexos. Assim, diante de um problema complexo,
procura-se dividi-lo em problemas menores, e feito isso, resolvemos
cada um deles até encontrar a solução do problema inteiro. [...]
O uso da abstração permite também que determinadas partes do
problema ganhem maior ou menor peso, assim, detalhes podem ser
desconsiderados em determinados momentos para que outros sejam
ressaltados. (FARINELLI, 2007, p. 16).
FIGURA 82 – ABSTRAÇÃO
FONTE: Disponível em: <http://pt.slideshare.net/Ridlo/uml-1858376>. Acesso em: 17 fev. 2015.
4 ENCAPSULAMENTO
Para que você, acadêmico, compreenda a definição de Encapsulamento,
Farinelli (2007), em seu estudo, descreve que encapsulamento é o princípio de
projeto pelo qual cada componente de um programa deve agregar toda informação
relevante para sua manipulação como uma unidade (uma cápsula).
Neste momento, vale destacar que o mais importante é que ocorra
interação entre dois objetos, porém é necessário que cada um saiba da totalidade
de operações disponíveis pelo seguinte objeto, somente assim poderá enviar e
receber as informações necessárias, ou possa ordenar a realização de determinados
procedimentos. Para uma melhor compreensão deste assunto, peço que você
observe a Figura 83.
TÓPICO 2 | DIAGRAMA DE CLASSES
131
FIGURA 83 – ENCAPSULAMENTO
FONTE: Disponível em: <http://java-famesul.blogspot.com.br/2010/09/encapsulamento.html>.
Acesso em: 17 fev. 2015.
Verifique agora como fica a Classe Pessoa utilizando o encapsulamento.
Pessoa.java
public class Pessoa{
private String nome;
private String sobrenome;
private String dataNasc;
private String rg;
private String[] telefones;
public String getNome(){
return nome;
}
Operações/métodos/interfacepública
Dados/Atributos/propriedades
privada
Classe Empregado e método
getSalario
O atributo salario
O atributo salario somente poderá ter
um valor atribuído ou alterado,
através de método público.
Através do método getSalario, que
tem modificador public, podemos
manipular ou recuperar o valor do
atributo salario.
public class Empregado {
public Empregado( ){
public double getsalario( ){
salario=0,00;
return this.salario;
}
}
}
private double salario;
132
UNIDADE 3 | DIAGRAMAS
public void setNome(String n){
nome = n;
}
public String getSobrenome(){
return sobrenome;
}
public void setSobrenome(String s){
sobrenome = s;
}
public String getDataNasc(){
return dataNasc;
}
public void setDataNasc(String d){
dataNasc = d;
}
public String getRg(){
return rg;
}
public void setRg(String r){
r = rg;
}
public String getTelefones(){
return telefones;
}
public void setTelefones(String[] telefones){
telefones[] = telefones;
}
}
FONTE: Disponível em: <http://www.devmedia.com.br/classes-abstratas-e-encapsulamento/7515>.
Acesso em: 17 fev. 2015.
TÓPICO 2 | DIAGRAMA DE CLASSES
133
4.1 HIERARQUIA DAS CLASSES
Conforme o Dicionário da Língua Portuguesa Aurélio (2015), hierarquia
significa: Classificação ou ordenação segundo determinados critérios; Classe;
Categoria; entre outras definições.
Assim, nos exemplos apresentados até agora, você poderá verificar que
representam duas classes distintas, cada uma com suas características, suas
especificidades, porém na hierarquia das classes, ambos pertencem à mesma
classe, a dos Mamíferos. Observe esta representação na Figura 84.
FIGURA 84 – HIERARQUIA DAS CLASSES
FONTE: Disponível em: <http://pt.slideshare.net/Ridlo/uml-1858376>. Acesso em: 17 fev. 2015.
Segundo Farinelli (2007), as classes são definições de como os objetos
devem ser e não existem na realidade, sendo assim, somente os objetos tem
existência.
Para finalizar o pensamento acerca da hierarquia das classes, vale destacar
que são chamadas de “ancestrais” as classes de que as demais dependem e
“descendentes” as classes originadas a partir de outra.
5 HERANÇA
Segundo Guedes (2004, p. 41), o conceito de Herança trabalha com o
conceito de superclasses e subclasses. Uma superclasse, também chamada de
classe-mãe, é uma classe que possui classes derivadas a partir dela, chamadas
de subclasses, também conhecidas como classes-filha. As subclasses, ao serem
derivadas a partir de uma superclasse, herdam suas características, ou seja,
seus atributos e métodos.
SuperClasse
SubClasses
Pessoa
Terceiro
Professor
Autônomo Professor
Pessoal
Operacional
Pessoal
Administrativo
Aluno Funcionário
134
UNIDADE 3 | DIAGRAMAS
Já Santos (2009) descreve que herança é o mecanismo pelo qual
elementos mais específicos incorporam a estrutura e o comportamento de
elementos mais gerais. Assim, uma classe derivada herda a estrutura de
dados e métodos de sua classe “base”, mas pode seletivamente adicionar
novos métodos, estender a estrutura de dados, redefinir a implementação de
métodos já existentes.
Em outras palavras, herança é o que se herda, um bom exemplo é a
herança hereditária, ou seja, a filha herda características tanto da mãe quanto
do pai. A vantagem de utilização da herança é simples, ao cadastrar uma
classe com atributos e métodos definidos, derivando uma subclasse a partir
da classe já criada, não há necessidade de cadastrar os atributos e os métodos
novamente, a subclasse herda automaticamente, permitindo assim a utilização
de um código já pronto.
Uma subclasse herda atributos e comportamento de sua classe imediatamente
superior à superclasse, e também possui atributos e operações específicas dela mesma.
(SANTOS, 2009).
IMPORTANT
E
TÓPICO 2 | DIAGRAMA DE CLASSES
135
FIGURA 85 – EXEMPLO DE HERANÇA (IMPLEMENTAÇÃO – PESSOA, ALUNO, TERCEIRO,
FUNCIONÁRIO)
FONTE: Disponível em: <http://java-famesul.blogspot.com.br/2010/09/heranca.html>. Acesso
em: 15 fev. 2015.
5.1 HERANÇA MÚLTIPLA
No caso da Herança Múltipla, ela é assim denominada pelo fato de herdar
suas características ou ações, ou seja, seus atributos e seus métodos de duas ou
mais superclasses. No exemplo apresentado na Figura 86, você pode observar
que a classe Gerente-Vendas, herda características tanto da superclasse Vendedor
quanto da superclasse Gerente, criando assim uma nova classe.
O diferencial da herança múltipla está no fato da nova classe herdar as
características de duas superclasses, porém nada impede que tenha atributos
próprios.
public abstract class Pessoa {
protected String idPessoa;
protected int idade;
protected String nome;
public Pessoa(String nome)
{
this.nome = nome;
}
public abstract String getNome( );
public void setidPessoa( )
{ }
public abstract int getIdade( );
public void setIdade(int idade)
{ }
}
Professor
Autônomo
Pessoal
Operacional
public class Terceiro extends Pessoa{
private int codigoTerceiro;
public Terceiro(String nome)
{
super(nome);
}
public int getIdade( )
{
return ( );
}
public String getNome( )
{
return " ":
};
}
public class Funcionario extends Pessoa{
private int codigofuncionario;
public Funcionario(String nome)
{
super(nome);
}
public int getIdade( )
{
return ( );
}
public String getNome( )
{
return " ":
};
}
public class Aluno extends Pessoa{
public Aluno(String nome)
{
super(nome);
}
public int getIdade( )
{
return ( );
}
public String getNome( )
{
return " ":
};
}
Professor PessoalAdministrativo
136
UNIDADE 3 | DIAGRAMAS
FIGURA 86 – HERANÇA MÚLTIPLA
FONTE: Disponível em: <http://www.devmedia.com.br/heranca-teoria-e-pratica/5274>. Acesso
em: 15 fev. 2015.
Observe outro exemplo:
Exemplo> Implementação da classe Pessoa, Pessoa Física e a Pessoa
Jurídica e a interface Mamífero.
FIGURA 87 – IMPLEMENTAÇÃO DE CLASSES
FONTE: O Autor
Pessoa
Empregado
Vendedor Gerente
Gerente - Vendas
Estudante
public abstract class Pessoa {
protected String idPessoa;
protected int idade;
protected String nome;
public Pessoa(String nome)
{
this.nome = nome;
}
public abstract String getNome( );
public abstract int getIdade( );
public void setIdade(int idade){ }
}
public interface Mamifero {
final int qdeOlhos=2;
public int getQdepernas( );
}
public class PessoaFisicaI extends Pessoa{
implements Mamifero;
public PessoaFisica(String nome)
{
super(nome);
}
public int getQdepernas( ){
return 2;}
public String getNome( ){
return " ";}
public int getIdade( ){
return 0:}
}
public class PessoaJuridicaI extends Pessoa{
{
public PessoaJuridica(String nome)
{
super(nome);
}
public int getIdade( )
{
return ( );
}
public String getNome( )
{
return " ";
}:
}
implements extends
extends
TÓPICO 2 | DIAGRAMA DE CLASSES
137
6 CLASSE ASSOCIATIVA
Segundo Guedes (2004, p. 83), “classes associativas nada mais são do
que as classes produzidas quando da ocorrência de associações que possuem
multiplicidade muitos (*) em todas as suas extremidades”.
O autor descreve ainda que estas classes associativas são necessárias nesses
casos porque não existe um repositório que possa armazenar as informações
produzidas pelas associações já que todas as classes envolvidas apresentam
multiplicidade e isto obriga que seu atributo-chave seja transmitido às outras
classes envolvidas e como todas possuem a mesma multiplicidade, nenhuma
delas pode receber os atributos das outras, assim é preciso criar uma classe
associativa para armazenar os atributos transmitidos pela associação, o que não
impede que a classe associativa possua atributos próprios, além dos recebidos.
Em outras palavras, este tipo de classe pode armazenar as informações
produzidas por ela ou produzidaspelas classes nas quais possui associação, pode
também receber atributos das classes associativas, porém pode possuir atributos
próprios.
Veja na tabela, a seguir, as instruções para utilização das multiplicidades
das classes associativas.
• Herança – Permite que tiremos vantagem das similaridades entre as classes
representando relacionamentos do tipo “é” ou “é semelhante”.
• Superclasse – Quando a classe “B” herda as características da classe “A” dizemos que “A” é
uma superclasse de “B”.
• Subclasse – Quando a classe “B” herda características da classe “A” dizemos que “B” é uma
subclasse de “A”.
• Herança Simples – Quando a classe herda características de uma única classe dizemos
que ocorre uma herança simples.
• Herança Múltipla – Quando uma classe herda características de mais de uma classe
dizemos que ocorre uma herança múltipla. Repare que nem todas linguagens Orientadas a
Objeto suportam herança múltipla. (AMBLER, 1998, p. 9).
IMPORTANT
E
138
UNIDADE 3 | DIAGRAMAS
TABELA 1 – MULTIPLICIDADE DAS CLASSES ASSOCIATIVAS
FONTE: Disponível em: <http://slideplayer.com.br/slide/364427/>. Acesso em: 15 fev. 2015.
Agora, veja dois exemplos de como as classes associativas são apresentadas
dentro do processo de Diagrama de Classes.
FIGURA 88 – DIAGRAMA DE CLASSES 1
FONTE: Disponível em: <http://hugohabbema.blogspot.com.br/2009/08/o-diagrama-de-
classes.html>. Acesso em: 12 fev. 2015.
FIGURA 89 – DIAGRAMA DE CLASSES 2
FONTE: Disponível em: <http://jkolb.com.br/classe-associativa/>. Acesso em: 12 fev. 2015.
Multiplicidade Significado
0..1 No mínimo zero e no máximo um. Indica que os objetos das
classes não precisam obrigatóriamente estar relacionados mas,
se houver, apenas uma instância da classe se relaciona.
1..1 Um e somente um. Indica que apenas um objeto da classe se
relaciona com a outra classe.
0..* No mínimo nenhum e no máximo múitos. Indica que pode ou
não haver instâncias da classe participante do relacionamento.
* Muitos. Indica que muitos objetos da classe estão envolvidos.
1..* No mínimo um e no máximo muitos. Indica que há pelo menos
um objeto envolvido no relacionamento, podendo haver muitos.
3..5 No mínimo três e no máximo cinco.
Aluno
- nome: chair
-dtNascimento: char
Turma
- nome: chair
-dtNascimento: char
AlunoTurma
- sala : int
Aluno
1..* 1..*
Turma
Artigo
- TitArtigo: Character
-dtNascimento: char
*Registrar ( ): void
*Consultar ( ): void
Autor
- NomeAutor: Character
- EndAutor: Character
- TelAutor: Character
- EmailAutor: Character
*Registrar ( ): integer
*Consultar ( ): integer
Escreve
1..* 1..*
Escreve
TÓPICO 2 | DIAGRAMA DE CLASSES
139
7 RESTRIÇÃO
FIGURA 90 – RESTRIÇÕES
FONTE: Disponível em: <http://slideplayer.com.br/slide/364427/>. Acesso em: 12 fev. 2015.
8 PERSISTÊNCIA
Novamente há necessidade de recorrer ao dicionário da Língua Portuguesa
Aurélio (2015) e verificar a definição de persistência, que pode ser encontrada
como: Ação ou efeito de persistir; Qualidade do que dura; que persiste.
Já com relação à persistência de um objeto na programação orientada a
objeto, este se refere ao tempo em que um objeto se mantém na memória, seja ela
a memória principal (RAM) ou auxiliar (Meio magnético).
Para que um objeto se torne persistente, o mesmo deve ser salvo em algum
meio de armazenamento (disco rígido). Quando se refere a salvar um objeto, usa-
se o termo gravar, em mídia qualquer, o valor que estes atributos possuem e as
informações que são necessárias para a manutenção deste objeto com os demais.
Vale destacar que dados persistentes consistem nos bancos de dados
compartilhados, acessados e atualizados através de transações. Por exemplo,
banco de dados pessoais, banco de dados de inventário e banco de dados de
vendedores, todos contêm dados persistentes.
“Restrições constituem-se em informações extras que definem condições a
serem validadas durante a implementação dos relacionamentos entre as classes”.
(GUEDES, 2004, p. 84). Na verdade, as restrições podem ser utilizadas na maioria
dos diagramas UML, no entanto, são mais comumente encontradas no Diagrama
de Classes.
Observe que as restrições são apresentadas por textos que se encontram
entre chaves no Diagrama de Classes, veja o exemplo.
Artigo
- attribute0: int
- attribute1: int
+ operation0( ): void
+ operation1( ): void
Autor
- attribute2: int
- attribute3: int
+ operation2( ): void
+ operation3( ): void
1..* 1..*
Escreve
{O autor deve ser brasileiro}
140
UNIDADE 3 | DIAGRAMAS
Os dados podem ser Persistentes ou Transientes.
Dados Persistentes são armazenados fora do contexto do programa,
existem mesmo quando o programa for fechado e podem ser
recuperados a qualquer momento. Dados Transientes são dados
que são válidos apenas dentro do programa ou transação. Quando
o programa é fechado ou a transação termina os dados se perdem
(LARMAN, 2004, p. 522).
9 EXEMPLOS DE DIAGRAMAS DE CLASSES
1º Exemplo – Diagrama de Classe – Consultório Médico
FONTE: Disponível em: <http://www.macoratti.net/net_uml1.htm>. Acesso em: 12 fev. 2015.
nome
rg
endereço
telefone
data de nascimento
profissão
medida preventiva
tipo de exame
VerificarPascienteCadastrado( )
AdicionarPaciente( )
ObterPaciente( )
ObterConsulta( )
AdicionarConsulta( )
LocalizarPaciente( )
CadastrarPaciente( )
Paciente
marcada
em
consulta
0..n
0..n 0..n 0..1 1..n
1
é formada por
realiza
Agenda
ano
AbrirAgenda( )
ResgatarAgendaDia( )
ResgatarAgenda2Dia( )
ResgatarAgendaSemana( )
Serviço
descrição
preço
RegistrarServiço( )
RecuperarServiço( )
Consulta
histórico
RegistrarConsulta( )
RecuperarHistoricoConsulta( )
Horário
data
hora
ObterHorariosDisponiveis( )
AlterarDisponibilidadeHorario( )
Limpeza/Restauração
material usado
dente tratado
Exame
TÓPICO 2 | DIAGRAMA DE CLASSES
141
2º Exemplo – Diagrama de Classes – Estoque
FONTE: Disponível em: <http://www.dee.ufma.br/pub/UML/Livraria/DiClaEstoque.html>.
Acesso em: 12 fev. 2015.
3º Exemplo – Programa Videolocadora
O Programa Original
• O programa é simples: ele calcula e emite um extrato de um cliente numa
videolocadora.
• Vamos executar o programa para ver uma saída possível:
C:\...\locadora-v1>java Locadora
Registro de Aluguéis de Juliana
O Exorcista 3.5
Men in Black 2.0
Jurassic Park III 9.0
Planeta dos Macacos 12.0
Pateta no Planeta dos Macacos 12.0
O Rei Leão 42.0
Valor total devido: 80.5
Você acumulou 8 pontos de alugador frequente
Eis o diagrama UML das classes principais
142
UNIDADE 3 | DIAGRAMAS
• A classe Fita é usada apenas para conter os atributos (locadora-v1\Fita.java)
public class Fita {
public static final int NORMAL = 0;
public static final int LANÇAMENTO = 1;
public static final int INFANTIL = 2;
private String título;
private int códigoDePreço;
public Fita(String título, int códigoDePreço) {
this.título = título;
this.códigoDePreço = códigoDePreço;
}
public String getTítulo() {
return título;
}
public int getCódigoDePreço() {
return códigoDePreço;
}
TÓPICO 2 | DIAGRAMA DE CLASSES
143
public void setCódigoDePreço(int códigoDePreço) {
this.códigoDePreço = códigoDePreço;
}
}
• A classe Aluguel representa o aluguel de uma fita por certo número de dias
(locadora-v1\Aluguel.java)
public class Aluguel {
private Fita fita;
private int diasAlugada;
public Aluguel(Fita fita, int diasAlugada) {
this.fita = fita;
this.diasAlugada = diasAlugada;
}
public Fita getFita() {
return fita;
}
public int getDiasAlugada() {
return diasAlugada;
}
}
• A classe Cliente representa um freguês da locadora de vídeo (locadora-v1\
Cliente.java)
import java.util.*;
public class Cliente {
144
UNIDADE 3 | DIAGRAMAS
private String nome;
private Collection fitasAlugadas = new Vector();
public Cliente(String nome) {
this.nome = nome;
}
public String getNome() {
return nome;
}
public void adicionaAluguel(Aluguelaluguel) {
fitasAlugadas.add(aluguel);
}
public String extrato() {
final String fimDeLinha = System.getProperty("line.separator");
double valorTotal = 0.0;
int pontosDeAlugadorFrequente = 0;
Iterator alugueis = fitasAlugadas.iterator();
String resultado = "Registro de Alugueis de " + getNome() + fimDeLinha;
while(alugueis.hasNext()) {
double valorCorrente = 0.0;
Aluguel cada = (Aluguel)alugueis.next();
// determina valores para cada linha
switch(cada.getFita().getCódigoDePreço()) {
case Fita.NORMAL:
valorCorrente += 2;
TÓPICO 2 | DIAGRAMA DE CLASSES
145
if(cada.getDiasAlugada() > 2) {
valorCorrente += (cada.getDiasAlugada() - 2) * 1.5;
}
break;
case Fita.LANÇAMENTO:
valorCorrente += cada.getDiasAlugada() * 3;
break;
case Fita.INFANTIL:
valorCorrente += 1.5;
if(cada.getDiasAlugada() > 3) {
valorCorrente += (cada.getDiasAlugada() - 3) * 1.5;
}
break;
} //switch
// trata de pontos de alugador frequente
pontosDeAlugadorFrequente++;
// adiciona bônus para aluguel de um lançamento por pelo menos 2 dias
if(cada.getFita().getCódigoDePreço() == Fita.LANÇAMENTO &&
cada.getDiasAlugada() > 1) {
pontosDeAlugadorFrequente++;
}
// mostra valores para este aluguel
resultado += "\t" + cada.getFita().getTítulo() + "\t" + valorCorrente +
fimDeLinha;
valorTotal += valorCorrente;
} // while
// adiciona rodapé
resultado += "Valor total devido: " + valorTotal + fimDeLinha;
146
UNIDADE 3 | DIAGRAMAS
• Finalmente, a classe Locadora exercita o programa:
public class Locadora {
public static void main(String[] args) {
Cliente c1 = new Cliente("Juliana");
c1.adicionaAluguel(new Aluguel(new Fita("O Exorcista ", Fita.
NORMAL), 3));
c1.adicionaAluguel(new Aluguel(new Fita("Men in Black ", Fita.
NORMAL), 2));
c1.adicionaAluguel(new Aluguel(new Fita("Jurassic Park III ", Fita.
LANÇAMENTO), 3));
c1.adicionaAluguel(new Aluguel(new Fita("Planeta dos Macacos ",
Fita.LANÇAMENTO), 4));
c1.adicionaAluguel(new Aluguel(new Fita("Pateta no Planeta dos
Macacos ", Fita.INFANTIL), 10));
c1.adicionaAluguel(new Aluguel(new Fita("O Rei Leao ", Fita.
INFANTIL), 30));
resultado += "Você acumulou " + pontosDeAlugadorFrequente +
" pontos de alugador frequente";
return resultado;
}
}
TÓPICO 2 | DIAGRAMA DE CLASSES
147
System.out.println(c1.extrato());
}
}
FONTE: Disponível em: <http://walfredo.dsc.ufcg.edu.br/cursos/2003/progII20031/aulas/design.
htm>. Acesso em: 12 fev. 2015.
148
RESUMO DO TÓPICO 2
Ao término deste tópico, você, acadêmico(a), teve a oportunidade de
conhecer os principais conceitos envolvidos na Orientação a Objetos.
Neste momento, você está ciente das definições e diferenças entre Atributos
e Métodos; afinal Atributos se referem às características apresentadas pelo Objeto
e os Métodos se referem a Ações realizadas por este Objeto. Teve conhecimento
acerca das Classes dos Objetos.
Foram destacadas também as formas pelas quais os Objetos herdam, tanto
os Atributos como os Métodos de suas Classes Superiores, porém é importante
lembrar que cada objeto pode possuir Atributos ou Métodos próprios.
Bom estudo!
149
AUTOATIVIDADE
1 É o princípio de projeto pelo qual cada componente de um programa deve
agregar toda informação relevante para sua manipulação como uma unidade.
Identifique a alternativa CORRETA:
a) ( ) Abstração.
b) ( ) Classe Pura.
c) ( ) Encapsulamento.
d) ( ) Objeto.
2 Com relação a Atributos e Métodos, descreva com suas palavras a diferença
existente entre ambos.
3 Entre as alternativas a seguir, identifique os Atributos utilizando a letra A e
os Métodos dos objetos utilizando a letra M:
Descrição Assinale (A / M) Descrição Assinale (A / M)
Um nome Cor dos olhos
Latir Correr em círculos
Comer Beber
Uma idade Cor dos Pelos
Sentar Peso
Comprimento
dos Pelos
Dormir
4 Com base nas informações recebidas no decorrer deste tópico, desenhe o
diagrama de Classe Completo, para os exercícios a seguir:
a) Jogo da Forca
Cristina quer fazer um jogo da forca em computador para os seus filhos e
sobrinhos. Os requisitos para o jogo estão a seguir:
• O jogo consiste em se tentar acertar as letras de uma palavra escondida. Se
o jogador errar a letra, surge mais um pedaço de um boneco que ao final irá
para a forca.
• As palavras ou frases para cada rodada são obtidas de um banco de palavras
e frases, que o próprio jogador pode incrementar.
• Cada palavra ou frase pertence a um tema.
• A cada rodada, a aplicação sorteia se mostrará uma, duas ou três palavras,
ou uma frase e escolhe aleatoriamente o tema e as palavras (ou frases).
• A palavra (ou frase) é exibida escondida e cada letra acertada desvenda sua
posição correspondente.
150
• Letras erradas são colocadas num quadro e um dos pedaços do boneco
aparece.
• O nome do jogador é guardado com seus pontos para fazer parte do quadro
de maiores escores. Quando ele acerta a palavra, ganha 100 pontos e, para
letra que ficou encoberta, somam-se mais 15 pontos. MELO (2006, p. 43).
b) Clube de Leitura
Gustavo tem uma coleção grande de revistas em quadrinhos. Por isso,
resolveu emprestar para os amigos. Assim foi criado o Clube da Leitura. Mas
para não perder nenhuma revista, seu pai lhe fez uma aplicação que cadastra
as revistas e controla o empréstimo.
Para cada revista, cadastram-se: o tipo de coleção, o número da edição, o ano
da revista e a caixa onde está guardada. Cada caixa tem uma cor, uma etiqueta
e um número.
Para cada empréstimo cadastram-se: o amiguinho que pegou a revista, qual
foi a revista, a data do empréstimo e a data de devolução. Cada criança só
pode pegar uma revista por empréstimo.
O cadastro do amiguinho consiste de: nome, nome do responsável, telefone e
de onde é o amigo MELO (2006, p. 48).
c) Pediatra
Dra. Janete é Pediatra e tem três consultórios em bairros distintos, onde atende
em horários diferentes. Ana, sua secretária, trabalha nos três consultórios.
Para que a marcação de consultas seja centralizada, Ana tem que carregar as
três agendas de um lado para outro.
Dra. Janete contratou um analista “freelancer” para lhe desenvolver um sistema
que controle a marcação de consultas e a ficha dos pacientes.
Para os pacientes, é preciso controlar: nome, endereço, telefones de contato,
data de nascimento, data da primeira consulta, e-mail, se é particular ou
conveniado a plano de saúde. No caso de ser conveniado, registrar qual é o
plano de saúde. Para cada plano de saúde credenciado é preciso controlar o
limite de consultas no mês, por paciente.
Dra. Janete atende no consultório da Ilha às segundas e sextas-feiras, de 9h às
18h. Na Tijuca, ela atende terça e quarta de 10h às 18h. Na quinta, ela atende
em Bonsucesso, de 10h às 18h. O intervalo das consultas é de trinta minutos. O
horário de almoço é sempre de 12h30 às 13h30. Só são permitidos três encaixes
por dia. Para clientes novos, Ana anota o nome do cliente e o seu telefone.
É preciso identificar se uma consulta é de revisão, como por exemplo, para
entrega de exames. Nesse caso, ela não é cobrada.
A marcação de consultas deve considerar uma data futura limite. (MELO,
2006, p. 52).
151
TÓPICO 3
DIAGRAMA DE SEQUÊNCIA
UNIDADE 3
1 INTRODUÇÃO
O diagrama de sequência tem como propósito determinar a sequência que
os eventos devem ter ao se executar um processo, verificando quais condições
devem ser satisfeitas, quais métodos serão disparados e as mensagens que são
enviadas. Assim, determinar a ordem em que os eventos ocorrem na execução do
sistema.
“O diagrama de sequência baseia-se no Diagrama de Caso de Uso,
normalmente existem diversos diagramas de sequênciaem um projeto, um para
cada processo do sistema”. Furlan (1998, p. 104).
2 ATORES
Conforme já visto anteriormente, em Diagrama de Caso de Uso, ator
é toda pessoa que interage com o sistema indiferente do serviço ou da função
exercida. Vale lembrar que segundo Fowler e Scott (2000, p. 52) “um ator pode
desempenhar muitos casos de uso; um caso de uso pode ter reciprocamente
vários atores desempenhando-o”.
FIGURA 91 – EXEMPLO SIMBOLOGIA ATOR
FONTE: Disponível em: <http://pt.slideshare.net/CursoSENAC/anlise-orien
tada-a-objetos-diagrama-de-sequencia>. Acesso em: 12 fev. 2015.
Cliente
UNIDADE 3 | DIAGRAMAS
152
3 OBJETOS
Segundo Guedes (2004, p. 105), “os objetos deste diagrama representam
as instâncias das classes envolvidas no processo ilustrado pelo Diagrama de
Sequência”. Estes objetos por sua vez são apresentados como retângulos contendo
um texto que identifica primeiramente o nome do objeto, em minúscula, e depois
o nome da classe, com letras iniciais maiúsculas, a que o objeto pertence.
FIGURA 92 – OBJETOS NO DIAGRAMA
FONTE: Disponível em: <http://pt.slideshare.net/CursoSENAC/anlise-orientada-
a-objetos-diagrama-de-sequencia>. Acesso em: 12 fev. 2015.
4 LINHA DE VIDA
A Linha de Vida demonstra o objeto durante o tempo em que ele existiu
enquanto houve o processo. As Linhas de Vida são representadas por linhas finas
verticais tracejadas partindo do retângulo que representa o objeto. A linha de
vida é interrompida com um X quando o objeto é destruído (OLIVEIRA, 2015).
Vale destacar que o objeto pode ser criado durante o processo, ele não
preciso existir desde o início do processo. Observe a figura.
: ContaCorrente : Cliente
TÓPICO 3 | DIAGRAMA DE SEQUÊNCIA
153
FIGURA 93a – DESENVOLVENDO OBJETO
FONTE: Disponível em: <https://msdn.microsoft.com/pt-br/library/dd409376.aspx>. Acesso em:
12 fev. 2015.
5 FOCO DE CONTROLE OU ATIVAÇÃO
Segundo Guedes (2004, p. 107), “foco de controle ou ativação indica
os períodos em que um determinado objeto está participando ativamente do
processo, ou seja, identifica os momentos em que um objeto está executando um
ou mais métodos utilizados em um processo específico”.
Os focos de controle ou a ativação, como são conhecidos, são representados
por uma linha mais grossa, demonstrado junto com a linha de vida.
Observe novamente a Figura Desenvolvendo Objetos.
Customer Restaurant
Bank
Linha de
Vida
Dinner Now
System
[until complete] add Order Item
Confirm Order
Confirm Order
Send Order
OK
OK
Confirmed
Deliver Food
Payment detail
Loop
Process Payment
UNIDADE 3 | DIAGRAMAS
154
FIGURA 93b – DESENVOLVENDO OBJETO
FONTE: Disponível em: <https://msdn.microsoft.com/pt-br/library/dd409376.aspx>. Acesso em: 12 fev. 2015.
6 MENSAGENS OU ESTÍMULOS
Este item é de fácil compreensão, afinal, as mensagens ou estímulos são
utilizados para demonstrar a ocorrência de eventos, que normalmente forçam
a chamada de um método em algum dos objetos envolvidos no processo
(OLIVEIRA, 2015).
Dentro do processo, as mensagens ou estímulos são representados por uma
seta, desta forma indicam que enviou a mensagem e na sequência quem a recebeu.
FIGURA 94 – MENSAGENS OU ESTÍMULOS
FONTE: Disponível em: <http://slideplayer.com.br/slide/1255493/>. Acesso
em: 15 fev. 2015.
Customer Restaurant
Bank
Linha de
Vida
Dinner Now
System
[until complete] add Order Item
Confirm Order
Confirm Order
Send Order
OK
OK
Confirmed
Deliver Food
Payment detail
Loop
Process Payment
Foco de
controle ou
ativação
Controlador
Congresso
ConsTema ( )
: Tema
TÓPICO 3 | DIAGRAMA DE SEQUÊNCIA
155
De acordo com Guedes (2004, p. 108), estas mensagens podem ser
disparadas da seguinte forma:
• Entre um ator e outro ator.
• Entre um ator e um objeto.
• Entre um objeto e um objeto.
• Entre um objeto e um ator.
Assim, sua representação dentro do processo ocorre por meio de uma
seta indicando a direção, ou seja, quem recebe a mensagem e quem enviou a
mensagem, desta forma, ligando os dois componentes envolvidos. Vale destacar
que estas mensagens aparecem sempre na horizontal, entre a linha de vida e o
foco de controle ou ativação, observe nas próximas figuras como as mensagens
podem ser representadas dentro do diagrama de sequência.
FONTE: Disponível em: <http://www.theclub.com.br/restrito/revistas/201308/umld1308.aspx>.
Acesso em: 13 fev. 2015.
msgSincrona(parametro)
msgAssincrona
<<create>>
new( ) Objeto: nomeClasse
Representação da mensagem do tipo Call
Representação da mensagem do tipo Send
Representação da mensagem do tipo Create
msgAutoDelegacao( )
Representação da mensagem do tipo Call de auto delegação
retorno
Representação da mensagem do tipo Return
<<destroy>>
kill( )
Representação da mensagem do tipo Destroy
UNIDADE 3 | DIAGRAMAS
156
Agora, observe um exemplo no qual estas representações de mensagem
estão envolvidas no processo.
FIGURA 95 – MENSAGENS NO PROCESSO
FONTE: Disponível em: <http://www.theclub.com.br/restrito/revistas/201308/umld1308.aspx>.
Acesso em: 13 fev. 2015.
7 MENSAGENS DE RETORNO
Mensagem de retorno por sua vez, nada mais é do que o retorno recebido
pela mensagem que foi enviada, ou seja, a resposta pelo estímulo disparado, este
retorno pode ser com uma mensagem específica, ou simplesmente um OK, ou
NOK que representa a negação, observe a figura:
:Usuario
informaDados("Login", "Senha")
[usuarioOk = = True] : new( )
<<create>>
<<destroy>>
kill( )
<<boundary>>
: telaLogin
<<entity>>
: usuarios
<<boundary>>
: telaPrincipal
usuarioOk:=consultaUsuario("Login", "Senha")
TÓPICO 3 | DIAGRAMA DE SEQUÊNCIA
157
FIGURA 96 – MENSAGEM DE RETORNO
FONTE: Disponível em: <http://pt.slideshare.net/CursoSENAC/anlise-orientada-a-
objetos-diagrama-de-sequencia>. Acesso em: 17 fev. 2015.
8 AUTOCHAMADAS OU AUTODELEGAÇÕES
Como o próprio nome já diz, são as mensagens que o objeto envia para si
mesmo, ou seja, são mensagens que partem da linha de vida do objeto e atingem
a linha de vida do próprio objeto conforme demonstrado a seguir:
FIGURA 97 – AUTOCHAMADAS
FONTE: Disponível em: <http://sistemas.riopomba.ifsudestemg.edu.br/dcc/materiais/475302279_
DIAGRAMA%20DE%20SEQ%C3%9C%C3%8ANCIA.pdf>. Acesso em: 17 fev. 2015.
: ContaCorrente : Cliente
1: atualizaCliente( )
Cliente Atualizado OK
Mensagem
de retorno
autor1 : Autor
Validar CPF : ValCPF ( )
UNIDADE 3 | DIAGRAMAS
158
9 CONDIÇÕES OU CONDIÇÕES DE GUARDA
Este item indica que uma mensagem só poderá ser enviada a um objeto se
uma determinada condição for verdadeira. “As condições de guarda são descritas
normalmente em colchetes na mensagem, mas podem também ser representadas
por meio de restrições”. (GUEDES, 2004, p. 112).
FIGURA 98 – CONDIÇÕES
FONTE: Disponível em: <http://jkolb.com.br/condicoes-ou-condicoes-de-guarda/>. Acesso em:
17 fev. 2015.
1 : [Se necessário] Atualizar cliente: Gravar ( )
conta1 : Conta Comum fisica1 : Física
TÓPICO 3 | DIAGRAMA DE SEQUÊNCIA
159
10 EXEMPLOS DE DIAGRAMAS DE SEQUÊNCIA
1º Exemplo:
FONTE: Disponível em: <https://code.google.com/p/pcds-2007-1/downloads/detail?name=
DiagramaDeSequencia-CadastroDeUsuario.v2.jpg>. Acesso em: 17 fev. 2015.
2º Exemplo: Processo de Abertura de Conta
FONTE: Disponível em: <http://slideplayer.com.br/slide/391466/>. Acesso em: 17 fev. 2015.
<<jsp>>
: TelaUsuario
: UsuarioAction : Usuario : UsuarioDAO
1: [Adicioinar ou Atualizar] exec( )
1.2: [Se retornou null] new( )
2.1: delete(id:int) : void
3.1: findAll( ) : List
1.3: set*( )
Retorna null se não existe
Retorna objeto salvo
Retorna objeto salvo
Retorna Lista de objetos
Retorna sucesso
2: [Excluir] exec ( )
3: [Listar] exec ( )
1.1: findByLoging(login: String) : Usuario
1.4: save(entity:BaseEntity) : BaseEntity
Retorna Lista de objetos encontrados
:Cliente :Banco
1: Solicita ( )
{Abertura da Conta}
2: Consultar Cliente( )
6: Abrir Conta: Abertura( )
4: Validar CPF: ValCPF( )
7: Registrar Histórico: Gravar( )
Histórico registrado com sucesso
8:
{Fornecer valor de
deposito e senha}[Se existir] Dados do Cliente
Cliente atualizado
5: Pedido aprovado( )
hist: Históricoconta1: Conta Comumfisica1: fisica
3: [Se necessário] Atualizar Gravar( )
UNIDADE 3 | DIAGRAMAS
160
3º Exemplo: Processo emitir relatório de convênio
FONTE: Disponível em: <http://spammichelangelo.googlecode.com/svn/trunk/SisPAM/Arquitetura/
Diagramas/diagramas%20de%20sequencia/>. Acesso em: 17 fev. 2015.
4º Exemplo: Processo Emitir Receita
FONTE: Disponível em: <http://spammichelangelo.googlecode.com/svn/trunk/SisPAM/Arquitetura/
Diagramas/diagramas%20de%20sequencia/>. Acesso em: 17 fev. 2015.
:Funcionario :ConvenioAction :ConvenioFacade dao : Convenio
1: InformaDadosConsulta( ) 1.1: submeteDados( ) 1.1.1: dadosObrigatorios( )
1.1.3: verificarConvenios( )
retornaConvenios
retornaRelatorioConvenios
dao : Log
1.1.4: gravaLogSeguranca( )
<<create>>
1.1.2: dadosInvalidos( )
Se os dados
obrigatorios não forma
preenchidos ou são
dados invalidos retorna
mensagem de erro.
Se os existirem
dados retornar
mensagem de erro.
:médico :ReceitaAction
2: selecionaEmissaoReceita( )
2.1: EmissaoReceita( )
receitaEmitidaSucesso
receitaEmitidaSucesso
3: informaDadosReceita( ) 3.1: submeteDadosReceita( )
solicitaDadosReceita
:ReceitaFacade dao : Paciente
1: consultaPaciente( )
1.1: consultaPaciente( )
retornaDadosPaciente
1.1.1: dadosObrigatorios( )
3.1.3: emiteReceita( )
3.1.4: gravaLogSeguranca( )
<<create>>
<<create>>
Se paciente não
existir retornar
mensagem de erro.
Se os dados
obrigatorios não forma
preenchidos ou são
dados invalidos retorna
mensagem de erro.
dao : Log
dao : HistoricoProntuario
1.1.2: dadosInvalidos( )
1.1.3: verificaExistencia( )
retornaDadosPaciente
3.1.1: dadosObrigatorios( )
3.1.2: dadosInvalidos( )
TÓPICO 3 | DIAGRAMA DE SEQUÊNCIA
161
5º Exemplo: Processo Manter Agendamento Consulta
FONTE: Disponível em: <http://spammichelangelo.googlecode.com/svn/trunk/SisPAM/Arquitetura/
Diagramas/diagramas%20de%20sequencia/>. Acesso em: 17 fev. 2015.
Agora que você pode verificar por meio de alguns exemplos como
funciona o Diagrama de Sequência, vamos treinar um pouco:
1. Construa um Diagrama de Sequência para abrir uma conta, conforme
a descrição a seguir:
O cliente que deseja abrir uma conta no banco encaminha um
pedido de abertura de conta, com a documentação necessária. O funcionário
do banco irá consultar o cadastro do cliente por meio do seu CPF, para
determinar se o solicitante já se encontra cadastrado. Se o cliente já estiver
cadastrado, a consulta retornará as informações do cliente, caso contrário
retornará um valor significando que o cliente ainda não possui cadastro
na instituição. Em seguida, o cadastro do cliente poderá ser atualizado,
caso necessário, podendo gerar uma nova instância da classe Cliente, se o
solicitante ainda não estiver registrado, ou simplesmente atualizar os dados
do mesmo, se houver necessidade de alguma atualização.
Antes de finalizar a atualização do cliente, algumas inconsistências
devem ser levadas a efeito, uma delas é o disparo do método para validação
do CPF pelo próprio objeto da classe Cliente. Após o término da atualização,
o objeto da classe cliente retornará algum sinal para o funcionário do banco,
para indicar que o cliente foi atualizado com sucesso ou se ocorreu algum
erro.
O banco então irá informar ao cliente se o seu pedido foi ou não
aprovado. Em caso de aprovação, o cliente irá fornecer o valor inicial
necessário para a abertura da conta e escolherá a senha. O funcionário irá
disparar o método de abertura na classe ContaComum, ou seja, criará um
novo objeto ContaComum.
:Funcionario :AgendamentoAction facade : Agendamento dao : Agendamento
1: consultaAgendamentos( )
<<exibeAgendamentos>>
<<retornaAgendamentos>>
1.1: consulta( )
1.1.1: verificarExistencia( )
Se não houver
agendamento retornar
mensagem de erro.
UNIDADE 3 | DIAGRAMAS
162
Após ter sido criado pela chamada do método abertura, o objeto de
ContaComum irá disparar o método gravar para gerar uma nova instância
da classe Histórico, registrando o movimento gerado pela abertura da
conta, pois, para abrir uma conta, a instituição exige que o cliente deposite
algum valor na mesma. O método gravar retornará um sinal indicando que
o movimento foi registrado com sucesso e o método abertura disparado
na classe ContaComum, por sua vez, retornará o número da conta gerado,
indicando que a conta foi criada com sucesso e finalizando o processo de
abertura de conta.
Resolução:
2. Construa um Diagrama de Sequência encerrar uma conta, conforme a
descrição abaixo:
Primeiramente um cliente se encaminha ao caixa do banco,
representado pelo ator Funcionário e solicita o encerramento de uma
determinada conta comum. O caixa então irá verificar se a conta informada
realmente existe e se a senha informada é verdadeira, por meio do disparo
do método consulta. Caso a conta realmente exista, o próprio método irá
chamar o método de validação de senha para verificar se a senha informada
pelo usuário está correta. Em caso positivo, será verificado o saldo da conta.
Se o saldo retornado for positivo, então o caixa irá retirar o
dinheiro da conta, o saque efetuado deverá ser registrado no histórico das
movimentações. Em seguida o objeto de ContaComum retornará o valor
do saldo para o atendente que deverá ser igual a zero se o método for
executado com sucesso.
Finalmente, o atendente irá chamar o método encerramento para
fechar a conta do cliente no objeto de ContaComum. Antes de concluir
a execução, esse método pode, caso a conta a ser encerrada seja a única
c1:Cliente g1:Gerente
1: Solicita abertura
de Conta( )
2: [se pedido aprovado]
Fornece o valor inicial( )
2.2: abertura de conta
concluida( )
1.1: consulta cliente: consCliente(cpf long)
1.2: [se necessario] gravarDados( )
2.1: valCpf(cpf long)
<<create>>
2.1.1: gravar(c1:ContaComum,
valordouble)
Historico gravado com sucesso
[se encontrar] Exibe dados do cliente
Cliente atualizado
<<create>>
2.1: abertura(valor double, tipoint, senha: String)
Informa número da conta gerada
h1: Histórico
c1: Conta
Comum
f1: Fisica
TÓPICO 3 | DIAGRAMA DE SEQUÊNCIA
163
possuída pelo cliente, atualizar o cadastro do mesmo, definindo o seu status
como inativo, por meio do método gravar no objeto de Física.
Caso tenha sido possível atualizar a instância da classe Física, então
o método gravar retornará um valor indicando que o cliente foi atualizado.
A conta retornará um valor que instruirá o software mostrar ao atendente
a mensagem: “Conta Encerrada com Sucesso”, finalizando o processo de
encerramento de conta.
Resolução:
FONTE: Disponível em: <http://vqv.com.br/lucelia/projSistemas/ExerciciosDiagramaDeSequencia03.
pdf>. Acesso em: 17 fev. 2015.
c1:Cliente g1:Gerente
1: Solicita encerramento
de Conta( )
1.1: consulta(numConta:Long)
1.1.1: [se encontrar] vaiSenha(senha String)
1.1.1.1: [se senha válida] verSaldo( )
1.2.1: registrar histórico gravar( )
2.1: [se conta única] Atualizar status do cliente gravar( )
Cliente atualizado
Histórico registrado com sucesso
1.2: efetuarSaque(se saldo positivo)
2: Encerrar conta encerramento( )
Conta encerrada com sucesso
saldo
saldo zerado
3: Conta encerrada( )
h1: Históricoc1: Conta Comum f1: Fisica
164
RESUMO DO TÓPICO 3
Ao término deste tópico, você teve a oportunidade de conhecer acerca do
Diagrama de Sequência, sua influência no desenvolvimento do sistema, como
acontece sua interação com atores, objetos e quais estímulos estes sofrem.
Assim, determinar a ordem em que os eventos ocorrem na execução do
sistema.
Neste momento, você está ciente que este diagrama se baseia no Diagrama
de Caso de Uso, das definições, métodos de controle e estímulos.
Bom estudo!
165
AUTOATIVIDADE
1 (Eletrobras) Observe o diagrama de sequência mostrado a seguir.
Observe as seguintes assertivas sobre o diagrama de sequência dado:
l - Os nomes dos objetos participantes da sequência são: TFRMEMPRESTIMO,TCNTEMPRESTIJMO e LEITOR.
II - ObterCodLeitor é um serviço de cntEmprestimo.
III - ObterCodLeitor é executado antes de MostraNomeLeitor.
Agora, assinale a alternativa que apresenta a resposta CORRETA:
a) ( ) Somente a l está correta.
b) ( ) Somente a II está correta.
c) ( ) Somente a III está correta.
d) ( ) As alternativas l e II estão corretas.
2 Faça um Diagrama de Sequência para representar um cliente que efetua
uma retirada de R$ 50,00 em um caixa automático. A retirada deve ser
debitada na conta corrente do cliente.
3 Complete o exercício anterior para permitir saques somente quando há
saldo na conta corrente e se o valor do saque for inferior a R$ 1.000,00.
cntEmprestimo
: TCNTEMPRESTIMO
Create
ObterCodLeitor
MostraNomeLeitor
NomeLeitor(cod : string)
frmEmprestimo
: TFRMEMPRESTIMO
leitor
:LEITOR
166
167
TÓPICO 4
DEMAIS DIAGRAMAS
EXISTENTES
UNIDADE 3
1 INTRODUÇÃO
Neste tópico abordaremos os diagramas que são opcionais no
desenvolvimento UML, no entanto, não menos importantes, pois havendo a
necessidade geram documentação importante ao desenvolvimento do sistema.
São estes:
Diagrama de serviços.
Diagrama de colaboração.
Diagrama de atividades.
Diagrama de estados.
2 DIAGRAMAS DE SERVIÇOS
Uma definição de simples compreensão para diagramas de serviços: é a
apresentação em forma de uma figura, um mapa, um fluxograma, entre outros,
que representa com precisão o sistema de serviço.
Tem a funcionalidade de formatar ou reformatar as etapas envolvidas no
desenvolvimento do serviço. Observe sua funcionalidade por meio das figuras a
seguir.
UNIDADE 3 | DIAGRAMAS
168
FIGURA 99 – RECEBIMENTO DE MERCADORIAS 1
FONTE: Disponível em: <http://www.doceshop.com.br/blog/como-fazer-diagrama-ser-
produtivo-reduzir-custos/>. Acesso em: 17 fev. 2015.
Administração
envia
Problemas Possíveis
N.F 2ª Via
N.F 1ª Via
Pedido de
Material
Produto faltando;
Produto errado;
Caixas abertas ou
estragadas
Produto a mais
ou sem prazo
de validade
Produto a mais
ou sem prazo
de validade
Processo de
reposição e
estocagem
Envia N.Fs
e Pedido de
Material para
balcão
OK?
Arquiva
Analisa Pedido
de Material
para esperar
fornecedor
Recebe
Caminhão do
Fornecedor e
pega as N.Fs
N.F 2ª Via
N.F 1ª Via
Anexa ao
respectivo
Pedido do
Material
Pedido do
Material
N.F 2ª Via
N.F 1ª Via
Pedido do
Material
Oferta local
para descarregar
Material
Verifica se N.Fs
e materiais
conferem
Não
Sim
TÓPICO 4 | DEMAIS DIAGRAMAS EXISTENTES
169
FIGURA 100 – RECEBIMENTO DE MERCADORIAS 2
FONTE: Disponível em: <http://www.okconcursos.com.br/apostilas/apostila-gratis/111-
administracao-geral/1151-gestao-de-qualidade#.VOD2WfnF91Y>. Acesso em: 17 fev. 2015.
3 DIAGRAMA DE COLABORAÇÃO
INÍCIO
CLIENTE
Entra no
restaurante e pede
uma mesa
CLIENTE
Aguarda Mesa
CLIENTE
Analiza o cardápio
e faz o pedido
MAITRE
Registra e
encaminha o
pedido
Mesa
disponível?
RECEPCIONISTA
Encaminha o
cliente à mesa
RECEPCIONISTA
Entrega senha e
encaminha cliente
ao bar
RECEPCIONISTA
Mesa é
disponibilizada
SIM
NÃO
Segundo Guedes (2004, p. 122)
Diagrama de Colaboração (Diagrama de Comunicação na UML2)
é muito semelhante ao Diagrama de Sequência apresentado
anteriormente, porém esses diagramas diferenciam-se principalmente
porque o Diagrama de Sequência concentra-se na sequência temporal
em que os eventos ocorrem e as mensagens são chamadas, enquanto o
Diagrama de Colaboração preocupa-se com a organização estrutural
dos objetos, em como os objetos estão vinculados e as mensagens que
estes trocam entre si.
UNIDADE 3 | DIAGRAMAS
170
Já Figueiredo (2014), em seu estudo que Diagrama de Colaboração, se
preocupa e define a estrutura de como os objetos estão vinculados, idênticos ao
Diagrama de Classes, e indicam quais as mensagens que são trocadas entre os
objetos como no Diagrama de Sequência.
Veja os exemplos:
1. Diagrama de Colaboração Pesquisar Vendas
FONTE: Disponível em: <http://www.macoratti.net/Cursos/vbn_ado/vbn_cur1.htm>. Acesso
em: 17 fev. 2015.
2. Este Diagrama de Comunicação demonstra a troca de mensagens existentes
entre timer, a bomba d’água e o tambor.
Usuário
2. Informa tipo
data
1. Solicita tipo data
3. Buscar data (data)
Interface
Pesquisar
<<fronteira>>
Pesquisar
<<controle>>
BD
Tabela
Item locação
4. Apresentar
informações
4. Retornar
informações
TÓPICO 4 | DEMAIS DIAGRAMAS EXISTENTES
171
FONTE: Disponível em: <http://www.macoratti.net/net_uml3.htm>. Acesso em: 17 fev. 2015.
3. Diagrama de colaboração que descreve parte do fluxo de eventos do caso de
uso Recebimento de Item de Depósito no Sistema de Máquina de Reciclagem.
FONTE: Disponível em: <http://www.wthreex.com/rup/portugues/process/modguide/md_coldm.
htm>. Acesso em: 17 fev. 2015.
1 :TempoMolho( )
2 :EnviarAgua( )
3 :ArmazenarAgua( )
: Tambor
: Timer
: Bomba
D'água
Cliente
1: insert item ( )
5: finish( )
11: getPaperAmount ( )
8: print( )
Painel do Cliente
Impressora de Recibos
Dispositivo
de Alarme
Tipo do Item
de Depósito
Lista de Itens
de Depósito
Receptor do
Item de Depósito
2: newItem( )
6: printReceipt( )
3: newItem( )
7: getItems( )
9: initAll( )
4: incr( )
10: init( )
12: alarme( )
UNIDADE 3 | DIAGRAMAS
172
4 DIAGRAMA DE ATIVIDADES
Diagrama de Atividades é o diagrama com maior ênfase ao nível de
algoritmo da UML e provavelmente o mais detalhista.
Apresenta muitas semelhanças com os antigos fluxogramas utilizados
para desenvolver a lógica de programação e determinar o fluxo
de controle de um algoritmo, sendo inclusive comum encontrar
Diagramas de Atividades utilizando pseudocódigos ou mesmo
linguagens de programação, como C ou Pascal (GUEDES, 2004, p. 152).
O autor descreve ainda que este diagrama preocupa-se em descrever
os passos a serem percorridos para a conclusão de um método ou algoritmo
específico e não de um processo completo como é o caso dos Diagramas de
Sequência e Colaboração, ou seja, este diagrama concentra-se na representação
do fluxo de controle de uma atividade.
Neste Diagrama é possível verificar a existência de três estados obrigatórios,
sendo: Estado Inicial, Estado Final e o Estado de Ação.
O Diagrama de Atividades descreve a sequência de atividades, com
suporte para comportamento condicional e paralelo. Um diagrama
de atividades é uma variante de um diagrama de estados no qual a
maioria, se não todos, dos estados é estado de atividade. Portanto,
muito da terminologia segue a mesma terminologia de diagrama de
estados. FONTE: Disponível em: <http://www.trabalhosfeitos.com/
ensaios/Informatica-Diagrama-De-Atividades/69370.html>. Acesso
em: 24 fev. 2015.
Observe os exemplos:
TÓPICO 4 | DEMAIS DIAGRAMAS EXISTENTES
173
1. Retirando dinheiro de um caixa eletrônico (para cartões de crédito).
FONTE: Disponível em: <http://www.dsc.ufcg.edu.br/~jacques/cursos/map/html/uml/diagramas/
atividades/diag_atividades.htm>. Acesso em: 17 fev. 2015.
2. Diagrama de Atividades do Processo de Solicitação de Serviços à Divisão de
Desenvolvimento.
FONTE: Disponível em: <http://www.ufpi.br/nti/index/pagina/id/4689>. Acesso em: 17 fev. 2015.
swimiane
AMT Machine BankCustomer
activity
join
merge
branch
[valid PIN] [invalid PIN]
[balance < amount][balance >= amount]
guard
expression
fork
insert card
Enter amount
Take money from slot
Take card
Eject card
Show balance
Debit account
Authorize
Check account balance
end
Enter pin
start
Cliente - Administração
Superior
Divisão de
Desenvolvimento
Chefe de Divisão de Desenvolvi-
mento ou Coordenador de Sistemas
Solicitar
serviço
Priorizar
serviços
Homologar
serviços
entregue
Foi encontrado algum
problema após
homologação? Sim
Sim
Sim
Não
Não
Não
Avaliar
serviço
Executar
serviço
Verificar
serviço
executada
Foi encontrado
algum problema
após verificação?
Corrigir
problemas
encontrados
Serviço é
legítimo?
UNIDADE 3 | DIAGRAMAS
174
5 DIAGRAMAS DE ESTADOS
Este tipo de diagrama “é uma técnica conhecidapara descrever o
comportamento de um sistema. Eles descrevem todos os estados possíveis em que
um objeto particular pode estar e como o estado do objeto muda como resultado
de eventos que atingem”. (FOWLER e SCOTT, 2000, p. 113). Na maioria das
técnicas de OO, os diagramas de estados são projetados para uma classe única
para mostrar o comportamento ao longo do tempo de vida de um único objeto.
Já Ramos (2013) descreve que um diagrama de estados (statechart),
também conhecido por diagrama de transição de estado ou por máquina de
estados, permite modelar o comportamento interno de um determinado objeto,
subsistema ou sistema global.
Veja o exemplo:
1º Exemplo
FONTE: Disponível em: <http://www.univasf.edu.br/~ricardo.aramos/disciplinas/ES_II_2013_1/
UML_Aula3.pdf>. Acesso em: 17 fev. 2015.
TÓPICO 4 | DEMAIS DIAGRAMAS EXISTENTES
175
2º Exemplo: Diagrama de estado para o objeto Login.
Modelagem do sistema de login. Para que o usuário seja autenticado, ele
deve fornecer dois valores: SSN (Social Security Number) e o PIN (Personal ID
Number). Após a submissão é feita uma validação.
FONTE: Disponível em: <http://www.dsc.ufcg.edu.br/~jacques/cursos/map/html/uml/diagramas/
estado/diag_estados.htm>. Acesso em: 17 fev. 2015.
3º Exemplo: Um sistema de leilão.
Para que um lance seja efetuado com sucesso, a oferta tem que ser válida
e o cliente tem que ter crédito suficiente.
FONTE: Disponível em: <http://www.dsc.ufcg.edu.br/~jacques/cursos/map/html/uml/diagramas/
estado/diag_estados.htm>. Acesso em: 17 fev. 2015.
Rejecting
Validating
Cancel/Quit
[not valid]/Display error message
[valid]/Start transaction do/validate SSNand PIN
final state
action
activityguardevent
submit
Press key[key!= shift-tab]/Display dot
Press tab OR move cursor to PIN
field/Cursor to PINPress shift-tab OR move cursor
to SSN field/Cursor to SSN
Press key[key!= tab]/Display key
Getting PIN
Getting SSN
/Cursor to SSN
initial state
Retry/Clear SSN, PIN entries
submit
transition
state
Auction
[reject, unwilling to rebid]
[reject, continue]
[bid offered]
[authorized]
thread
fork
Authorizing Credit
[not authorized]
composite state
Bidding
substate
join
[accept]Getting Bid Evaluating Accepting
Cancelled
Rejected
Checking OK
Purchased
UNIDADE 3 | DIAGRAMAS
176
Símbolo Designação Descrição Utilização
Ator Uma entidade (pessoas ou
sistemas externos) que intera-
ge com o sistema a modelar.
Diagramas de
casos de utiliza-
ção, de classes,
de sequência e
de colaboração.
Use case Uma sequência de acções
executadas pelo sistema de
forma a obter um resultado
visível para um ator
Diagramas de
casos de utiliza-
ção.
<<texto>> Estereótipo Os estereótipos permitem a
classificação de elementos.
Por exemplo, as classes que
representam janelas da apli-
cação podem ser classificadas
com o estereótipo <<form>>*.
Todos os diagra-
mas.
Associação Representa uma associação
ou relação entre dois elemen-
tos num diagrama.
Todos os diagra-
mas.
Relação
“uses”
Tipo especial de relação que
indica que um caso de utiliza-
ção usa obrigatoriamente as
funcionalidades de um outro
caso de utilização
Diagramas de
casos de utiliza-
ção.
Relação “ex-
tends”
Tipo especial de relação que
indica que um caso de utiliza-
ção pode opcionalmente es-
tender as funcionalidades de
um outro caso de utilização
Diagramas de
casos de utiliza-
ção.
ELEMENTOS GRÁFICOS DA NOTAÇÃO UML
Existem símbolos que auxiliam no processo de desenvolvimento, os mesmos
possuem certa semelhança com os símbolos utilizados nos fluxogramas, porém
de fácil compreensão, tendo como principal diferença a utilização sistemática do
princípio de abstração em um contexto limitado, de um método apenas, e não de
todo o objeto, conforme descrito por Correia e Tafner (2001, p. 26).
A notação mais utilizada para criação de fluxos em Análise Orientada a
Objetos é a UML figura 19, que apresenta uma legenda dos elementos gráficos
utilizados nos diagramas UML.
Figura 1 – Tabela de Elementos Gráficos da Notação UML
LEITURA COMPLEMENTAR
Utilizador
*uses*
<<extends>>
Introduzir Facturas
TÓPICO 4 | DEMAIS DIAGRAMAS EXISTENTES
177
Símbolo Designação Descrição Utilização
Package Unidade lógica de agrupa-
mento de elementos para
simplificar a leitura de um
diagrama.
Cada elemento num modelo
pertence apenas a um “packa-
ge”. Adicionalmente, os no-
mes dos elementos devem ser
únicops em cada “package”.
Todos os diagra-
mas.
Comentário
ou nota
Comentários textuais e/ou
gráficos que se podem adicio-
nar aos elementos de um dia-
grama para explicar/detalhar
certos aspectos que possam
ser dúbios.
Todos os diagra-
mas.
Classe
Uma classe é uma descrição
de um conjunto de objectos
que partilham os mesmos
atributos, operações, relações
e semântica. São uma forma
de representar os diferentes
conceitos existentes num sis-
tema/problema.
Diagramas de
classes.
Classe abs-
tracta
Um tipo especial de classe que
não possui objectos, servindo
normalmente como base para
especialização de outras classes.
Denotada pelo nome em itálico.
Diagramas de
classes.
Objecto Uma instância específica de
uma classe. Corresponde à
atribuição de valores concre-
tos aos atributos da classe.
Denotada pelo nome subli-
nhado.
Diagramas de
classes.
Associação
unidireccio-
nal
Uma relação navegável entre
dois elementos mas apenas
num sentido (ex., composição
de classes).
Todos os diagra-
mas.
Generaliza-
ção
Uma relação que indica a espe-
cialização (herança) de um ele-
mento a partir de outro. Isto é,
o elemento apontado pela seta
é um caso mais geral do outro
elemento. Denota uma relação
“é um” ou “do tipo”.
Diagramas de
classes e de ca-
sos de utiliza-
ção.
Formulários
Pessoa
-nome: String
+falar( )
Pessoa
-nome: String
+falar( )
indivíduo : Pessoa
nome : String =
Paulo Sousa
UNIDADE 3 | DIAGRAMAS
178
Símbolo Designação Descrição Utilização
Dependência Uma relação que indica a
existência de uma depen-
dência entre dois elementos
de tal forma que uma altera-
ção num dos elementos pode
afectar o outro .
Diagramas de
classes, casos de
utilização e de
instalação.
Associação
n-ária
Uma associação entre n ele-
mentos.
Diagramas de
classes.
Agregação Uma relação de agregação
entre elementos. É uma re-
lação “todo/parte” onde um
elemento é composto por vá-
rios outros elementos.
Diagramas de
classes.
Classe de
associação
Uma associação com as carac-
terísticas de (e representada
por) uma classe.
Diagramas de
classes.
Restrição Uma restrição é um mecanis-
mo que permite a criação de
condições e restrições boo-
leanas a aplicar a um ou mais
elementos (ex., associações).
Todos os diagra-
mas.
“Interface” Este estereotipo não deve ser
confundido com interface
com utilizador. Interface re-
presenta uma “vista” sobre as
operações de uma classe.
Diagramas de
classes.
Interface Uma interface é uma colecção
de especificações de operações
para definir um serviço sem
ditar a sua implementação.
Diagramas de
instalação.
“Utility” Este estereotipo representa
um agrupamento de opera-
ções e atributos que não per-
tencem a nenhuma classe do
problema (ex., funções de bi-
blioteca)
Diagrama de
classes.
Estado Representa o estado de um
objecto durante o seu tempo
de vida, enquanto espera por
um evento ou efectua alguma
acção.
Diagramas de
estado.
parentesco
- grau
<<interface>>
IConsultas
+obterNome( ) : String
<<untility>>
Matemática
+PI : double = 3,14159
+pow( ) : double
.
{OR}
.
em espera
IConsultas
TÓPICO 4 | DEMAIS DIAGRAMAS EXISTENTES
179
Símbolo Designação Descrição Utilização
Estado inicial O estado inicial de um dia-
grama de estados, onde se
inicia a execução da máquina
de estados.
Diagramas de
estado.
Estado final O estado final de um diagra-
ma de estados, onde a execu-
ção da máquina de estados
finaliza.
Diagramas de
estado.
Actividade Representa uma actividade
que o objecto efectua.
Diagrama de ac-
tividades.
Transição Indicauma transição entre
dois estados devido à ocor-
rência de determindas condi-
ções ou eventos.
Diagramas de
estado e de acti-
vidade.
Decisão Elemento que permite tomar
uma decisão entre dois ou
mais fluxos alternativos.
Diagramas de
estado e de acti-
vidade
Bifurcação ou
confluência
Permite a divisão ou reagru-
pamento de fluxos de controlo
Diagramas de
estados e de ac-
tividades
Nodo Representa um elemento físi-
co na instalação do sistema.
Normalmente com capacida-
de de processamento.
Diagramas de
instalação.
Instância de
um nodo
Representa um dispositivo con-
creto da rede (ex., o computador
do gabinete 23).
Denotado pelo nome sublinhado.
Diagramas de
instalação.
Componente Um componente é uma parte fí-
sica do sistema que corresponde
à realização de um conjunto de
interfaces e/ou classes.
Diagramas de
instalação.
“boundary” Tipo de classe de análise usa-
da para modelar as interac-
ções entre um sistema e os
seus actores.
Representam normalmente,
janelas de aplicação, APIs, etc.
Diagramas de
classes de aná-
lise.
“control” Tipo de classe de análise usa-
da para encapsular modelar o flu-
xo de controlo para um dado caso
de utilização.
Representam coordenação e se-
quenciamento de outros objectos.
Diagramas de
classes de aná-
lise.
validar
PC
GAB033
acesso a dados
UNIDADE 3 | DIAGRAMAS
180
Símbolo Designação Descrição Utilização
“entity” Tipo de classe de análise usa-
da para modelar informação
com grande duração (possi-
velmente persistente)
Diagramas de
classes de aná-
lise.
Linha tem-
poral
Representa a linha temporal
da existência de um objecto.
Ao longo da linha serão re-
presentadas as activações do
objecto bem como as mensa-
gens recebidas e enviadas.
Diagramas de
sequência.
Mensagem
síncrona
Mensagem trocada entre dois
objectos que vai activar o ob-
jecto chamado. Pelo facto de
ser uma mensagem síncrona,
o objecto chamador fica à es-
pera que o objecto chamado
termine o processamento an-
tes de continuar.
Corresponde normalmente à
invocação de uma operação
do objecto chamado.
Diagramas de
sequência.
Mensagem
assíncrona
O assincronismo permite que
a mensagem seja enviada ao
objecto chamado, e que o ob-
jecto chamador continue ime-
diatamente a sua execução
(i.e., sem esperar pela respos-
ta)
Diagramas de
sequência.
Chamada de
procedimen-
to
Indicação explícita da invoca-
ção de um método no objecto
chamado.
Diagramas de
sequência.
Mensagem
de retorno
Indica o retorno de uma men-
sagem. É omitida nas mensa-
gens síncronas.
Ativação Indica um tempo de proces-
samento num objecto.
Diagramas de
sequência.
cliente
Objecto
Mensagem
Mensagem
Mensagem
Mensagem
FONTE: Disponível em: <http://www.dei.isep.ipp.pt/~psousa/aulas/EINF/guiaUML.htm>. Acesso
em: 17 fev. 2015.
Como usar os símbolos
Os símbolos são utilizados para desenhar um esboço do sistema, uma
espécie de fluxograma, porém menos complexo. É importante observar a linguagem
TÓPICO 4 | DEMAIS DIAGRAMAS EXISTENTES
181
utilizada dentro dos símbolos, deve conter um único verbo, normalmente utiliza-
se os verbos no infinitivo, por exemplo: receber, abrir, imprimir, consultar, entre
outros.
Para melhor compreensão, observe a figura 2, a mesma demonstra a
utilização dos símbolos na criação de um diagrama, o qual demonstra o método
Modificar-Salário deve-se proceder da seguinte forma: o método Modificar_
Salário recebe um parâmetro que se refere ao percentual de aumento e aplica o
mesmo sobre o atributo salário, conforme demonstra a figura.
Figura 2 – Digrama de Método Modificar Salário.
FONTE: O Autor
Auxiliando você no entendimento deste tópico segue mais um exemplo
de diagrama, conforme demonstra a figura 3.
Receber o valor em VALPER
Retornar
Operação |legal
Sim
Não
Retornar
Operação Bem Sucedida
Salário = Salário* (1+(VALPER/100))
VALPER < 0 ?
UNIDADE 3 | DIAGRAMAS
182
Figura 3 – Outro exemplo
FONTE: Disponível em: <http://www.unifal-mg.edu.br/nti/solicitacao-de-suporte>. Acesso em:
17 fev. 2015.
Cliente
início Execução Finalização
Atendimento
Solicita suporte via
requisição web
Dar retorno ao
cliente
Encaminhar Solicitação
ao setor responsável*
OU
Executa atendimento
símples
Atendimento Geral - Triagem
* Esse passo inicia um novo fluxo no setor que recebe a requisição.
Registrar Solicitação
183
RESUMO DO TÓPICO 4
Neste tópico, você teve a oportunidade de conhecer acerca dos diagramas
que são opcionais no desenvolvimento UML, mas não menos importantes, pois
havendo a necessidade geram documentação importante ao desenvolvimento do
sistema.
Para finalizar este tópico foram apresentados exemplos dos diagramas
(Serviços, Colaboração, Atividades, Estados).
Neste Momento você está apto a realizar as autoatividades deste tópico.
Bom estudo!
184
AUTOATIVIDADE
1 Com base nas informações a seguir, você deve desenvolver os seguintes
diagramas:
• Diagrama de Classes.
• Diagrama de Caso de Uso.
• Descrição dos Casos de Uso – Abrir Conta.
• Descrição dos Casos de Uso – Fechar Conta.
• Diagramas de Sequência.
• Diagrama de Estados.
SISTEMA DE CONTROLE DE RESTAURANTE:
a) Primeiramente, elabore um diagrama de classes e um de casos de uso para
o sistema de controle de Restaurante, cujos requisitos estão descritos a seguir.
Descreva os casos de uso Abrir Conta e Fechar Conta, seguindo os itens de
descrição de casos de uso, e em seguida, elabore os diagramas de sequência
correspondentes:
• Garçons são cadastrados por um dos gerentes, que pode ser o proprietário
ou não, com nome, identidade, matrícula, endereço e telefone.
• Quando uma conta é aberta pelo Caixa, deve ser registrada a mesa, o garçom
que está atendendo, a data e o horário de abertura da conta.
• Durante a noite, produtos do cardápio são solicitados pelos clientes e
associados à sua conta pelo próprio Garçom através de um PalmTop, cada
produto em uma determinada quantidade, gerando um item da conta.
• A cada item associado à Conta enquanto ela está aberta, seu total vai sendo
calculado.
• O Cliente pode cancelar uma Conta, solicitando ao Garçom, mas somente se
ainda não tiver itens cadastrados.
• Quando do Cancelamento. Um aviso deve ser emitido ao Gerente.
• Produtos do cardápio são organizados por categorias de produtos, como
Bebidas, Petiscos, Carnes, Aves, Massas e Sobremesas.
• Produtos possuem um preço e um código.
• Quando do fechamento de uma conta pelo Garçom, a pedido do Cliente, o
sistema deve registrar a data e o horário do fechamento e calcular o seu valor
total, imprimindo a correspondente nota fiscal.
• Ao final de cada semana, as comissões dos garçons devem ser calculadas
com base no somatório das contas que cada um atendeu na semana.
• O percentual aplicado para cálculo das comissões pode variar de tempos em
tempos, devendo ser mantido pelo sistema.
• Deve ser extraído também um relatório de ocupação semanal das mesas,
indicando, por mesa, as faixas de horário de ocupação por data.
185
• Gerentes também devem ser cadastrados pelo proprietário do restaurante
com nome, endereço, telefone e CPF.
• Proprietários executam todas as funções de Gerentes, além de cadastrar os
Gerentes.
b) Elabore o diagrama de estados para o objeto Conta.
186
187
REFERÊNCIAS
AMBLER, Scott W. Análise e projeto orientados a objeto: seu guia para
desenvolver sistemas robustos com tecnologia de objetos. Rio de Janeiro:
Editora IBPI Press, 1998.
ANGELANTONIO Jr., Roberto de. Trabalhando com generalização e
especialização de dados. 2003. Disponível em: <http://www.devmedia.com.
br/trabalhando-com-generalizacao-e-especializacao-de-dados-revista-sql-
magazine-103/25665>. Acesso em: 17 fev. 2015.
ANGELANTONIO Jr., Roberto de. Trabalhando com generalização e
especialização de dados - Revista SQL Magazine 103. Disponível em: <http://
www.devmedia.com.br/trabalhando-com-generalizacao-e-especializacao-de-
dados-revista-sql-magazine-103/25665>. Acesso em: 23 dez. 2014.
ARAÚJO, Marcelo C. Análise orientada a objetos.Engenharia de Software
Magazine. São Paulo, Ano: 01 – Edição 02, p. 46-52, 22 e 23 de maio 2009.
BARCELLOS, Monalessa Perini. Planejamento de custos em ambientes de
desenvolvimento de software orientados à organização. Tese, Universidade
Federal do Rio de Janeiro. Jun. 2013.
CAMARINI, Bruno. Prototipação e sua importância no desenvolvimento de
software. Disponível em: <http://www.dextra.com.br/prototipacao-e-sua-
importancia-no-desenvolvimento-de-software/ >. Acesso em: 2 fev. 2015.
CORREIA, Carlos Henrique; TAFNER, Malcon Anderson. Análise orientada a
objetos. Florianópolis: Editora Visual Books, 2001.
DAVID, Marcio Frayze. Programação orientada a objetos: uma introdução. 2007.
Disponível em: <http://www.hardware.com.br/artigos/programacao-orientada-
objetos/>. Acesso em: 22 dez. 2014.
DICIONÁRIO AURÉLIO. Disponível em: <http://www.dicionariodoaurelio.
com/ > Acesso em: 26 fev. 2015.
FARINELLI, Fernanda. Conceitos básicos de programação orientada a objetos.
2007. Disponível em: <http://sistemas.riopomba.ifsudestemg.edu.br/dcc/
materiais/1662272077_POO.pdf>. Acesso em: 22 dez. 2014.
FIGUEIREDO, Eduardo. Diagrama de colaboração. 2014. Disponível em:
<http://homepages.dcc.ufmg.br/~figueiredo/disciplinas/aulas/uml-diagrama-
colaboracao_v01.pdf>. Acesso em: 17 fev. 2015.
188
FOWLER, Martins; SCOTT, Kendall. UML Essencial – Um breve guia para a
linguagem-padrão de modelagem de objetos. Porto Alegre: Editora Bookman,
2000.
FURLAN, Jose Davi. Modelagem de objetos através da UML. São Paulo: Editora
Makron Book, 1998.
GALEOTE, Sidney. Mecanismos gerais da UML. Disponível em: <http://www.
prasabermais.com/analise/aula03.pdf >. Acesso em: 17 fev. 2015.
GUEDES, Gilleanes T. A. UML Uma abordagem prática. São Paulo: Editora
Novatec. 2004.
GUEDES, Gilleanes T. A. UML 2 – guia prático. 2 ed. São Paulo: Editora
Novatec, 2007.
HOFFMANN, Elisabeth. Elaboração e armazenamento de documentação de
sistemas informatizados. Disponível em: <http://celepar7cta.pr.gov.br/portfolio.
nsf/0/48758ba6fd138b9403256be50047aabd/$FILE/Monografia_v_final.pdf >
Acesso em: 2 fev. 2015.
JACOBY, Luciano. UML – Linguagem de Modelagem Unificada. Disponível em:
<http://www.ebah.com.br/content/ABAAAArqkAA/apostila-uml>. Acesso em:
17 fev. 2015.
LARMAN, Craig. Utilizando UML e padrões: uma introdução à análise e ao
projeto orientados a objetos e ao Processo Unificado. Porto Alegre, Editora
Bookman, 2004.
LIMA, Adilson da Silva. UML 2.0 – Do requisito à solução. 1 ed. São Paulo:
Editora Érica, 2005.
MELO, Ana Cristina. Exercitando modelagem em UML – 51 exercícios
resolvidos. Rio de Janeiro: Editora Brasport Livros e Multimídia, 2006.
MONTEIRO, Alexandre. Análise e validação dos requisitos. Disponível em:
<http://slideplayer.com.br/slide/44191/> Acesso em: 17 fev. 2015.
NOGUEIRA, Admilson. UML – Introdução e histórico. Disponível em: <http://
www.linhadecodigo.com.br/artigo/763/uml-unified-modeling-language-
introducao-e-historico.aspx> Acesso em: 17 fev. 2015.
OLIVEIRA, Antônio Ricardo de; FERNANDES, Leila Maria Pereira; TAVEIRA,
Gilda Aché. SENAC – modelagem de dados. Rio de Janeiro. Editora: Senac
Nacional 2000.
189
OLIVEIRA, Lucélia. Diagrama de sequência. Disponível em: <http://sistemas.
riopomba.ifsudestemg.edu.br/dcc/materiais/475302279_DIAGRAMA%20DE%20
SEQ%C3%9C%C3%8ANCIA.pdf > Acesso em: 17 fev. 2015.
PONTUSCHKA, Maurício Nacib. Modelagem de software orientada a objetos.
Disponível em: <http://www.pucsp.br/~tuska/2012/MSOO/antigas/Aula02.ppt>.
Acesso em: 17 fev. 2015.
RAMOS, Ricardo Argenton. UML – Diagrama de Estado. 2013. Disponível em:
<http://www.univasf.edu.br/~ricardo.aramos/disciplinas/ES_II_2013_1/UML_
Aula3.pdf>. Acesso em: 17 fev. 2015.
REBOUÇAS, Pedro Emiliano de Oliveira. Mapeamento do processo unificado
em relação ao
cmmi buscando compatibilidade com o mps.br focado na gerência de
requisitos. 2007. Disponível em: <http://www.flf.edu.br/revista-flf/monografias-
computacao/monografia_pedro_reboucas.pdf> Acesso em: 8 fev. 2015.
SANTOS, Rildo F. Linguagem de modelagem unificada – UML. 2009.
Disponível em: <http://pt.slideshare.net/Ridlo/uml-1858376 > Acesso em: 17 fev.
2015.
SENE, Rafael Peria de. RUP - primeiros passos. Disponível em: <http://www.
tiespecialistas.com.br/2011/02/rup-primeiros-passos/>. Acesso em: 8 fev. 2015.
SPÍNOLA, Rodrigo. Manutenção de software: Definições e Dificuldades.
Disponível em: <http://www.devmedia.com.br/manutencao-de-software-
definicoes-e-dificuldades-artigo-revista-sql-magazine-86/20402>. Acesso em: 17
fev. 2015.
WAZLAWICK, Raul Sidnei. Engenharia de software: conceitos e práticas. São
Paulo. Editora Campus, 2013.