Escolar Documentos
Profissional Documentos
Cultura Documentos
Modelagem de classes
Objetivos de aprendizagem
Identificar o papel do diagrama de classes no processo de anlise. Conhecer e reconhecer termos tcnicos, conceitos e relacionamentos utilizados durante a construo do diagrama de classes. Identificar as possveis classes de um projeto. Utilizar o diagrama de classe com a notao UML na construo de um modelo de projeto.
Sees de estudo
Seo 1 Seo 2 Seo 3 Seo 4 Seo 5 O que so objetos e classes de objetos? Quais so as responsabilidades das classes? Como ocorrem os relacionamentos entre objetos? Como ocorre a diviso das classes do modelo de anlise? O que diagrama de objetos?
146
A identidade uma propriedade que ir distingui-lo dos demais. O estado de um objeto compreende caractersticas herdadas ou distintas que contribuem para que se torne nico. O comportamento de um objeto define como se daro sua ao e reao a estmulos em termos de mudanas de estados e mensagens.
Classe Cliente Identidade Cliente Estado Nome Cdigo Endereo Telefone Permisso Comportamento: Adicionar Cliente( ) Excluir Cliente( ) Consultar Cliente( )
Unidade 6
147
Voc pode dizer tambm que um objeto uma pessoa, um lugar ou um sistema, como mostra a figura a seguir.
O que so classes?
Um objeto sempre uma instncia de uma classe. Quando voc fala de uma classe, est falando tambm de seus objetos.
Segundo Furlan (1998), classe a representao de um conjunto de coisas reais ou abstratas que so reconhecidas como sendo do mesmo tipo por compartilhar as mesmas caractersticas de atributos, operaes, relaes e semntica. Booch (2000) define classe como um conjunto de objetos que compartilham estrutura e comportamento comuns.
Conforme voc pode observar na figura 6.2, Luis, Ana, Bruno e Carla so objetos ou instncias da classe. Mas qual a notao utilizada para identificar uma classe? A classe representada por um retngulo dividido em trs compartimentos que contm o nome da classe, os atributos e as operaes.
148
O que so atributos?
O atributo a descrio dos dados armazenados pelos objetos de uma classe. O atributo de uma classe est associado a um conjunto de valores que o atributo pode assumir. Est correto afirmar que os atributos no tm comportamento. Cada valor de um atributo particular para um dado objeto. Uma classe pode ter qualquer nmero de atributos ou nenhum atributo. Os atributos so sempre individuais e cada objeto da classe possui seus prprios atributos. Recordando do projeto da videolocadora, voc pode definir as classes? possvel detectar imediatamente trs classes nesse projeto:
Classe Cliente (dados e mtodos do cliente); Classe Filmes (dados e mtodos dos filmes); Classe Locao (dados e mtodos sobre a locao).
O que so operaes?
Unidade 6
149
As operaes implementam servios que podem ser solicitados por algum objeto da classe para modificar o comportamento, ou seja, todos os objetos da classe vo compartilhar essas operaes. As operaes so executadas quando um objeto recebe uma mensagem de outro objeto. Entretanto, existem situaes em que uma classe pode no ter nenhuma operao ou mesmo ter vrias operaes.
bairro
Observe que:
para nomear a classe, voc deve escolher um substantivo, por exemplo: fornecedor, produtos, cliente; para nomear uma operao, faa uso de um verbo ou de um verbo mais um substantivo. A escolha do nome da operao deve possuir um nome que indique o resultado da operao (Cancelar_Fornecedor) acrescentando-se os parnteses ( ) ao final do nome da operao; para nomear atributos, utilize substantivos simples ou verbos substantivados. Se voc for construir uma classe para um sistema de controle de estoque chamada Produtos, os atributos da classe Produto podem ser cdigo, descrio_Produto ou unidade; para os trs casos, ao atribuir nomes, utilize uma definio concisa e clara, no dando margem a interpretaes errneas.
150
Quais seriam os atributos para a classe Filmes? Voc poderia ter nesse caso:
Agora tente imaginar as possveis operaes: Incluir_Filme; Excluir_Filme; Consultar_Filme; Listar_Filme. Observe algumas classes que fariam parte do domnio do sistema da videolocadora.
Unidade 6
151
cd Data Model Cliente Bairro: char Cdigo: int Endereo: char Nome: char Telefone: int Locao Data_Devoluo: date Data_Locao: date Valor: float Item_Locao
Filmes Ator_Principal1: char Ator_Principal2: char Cdigo: int Diretor: char Durao: int Estilo: char Idioma: char Ttulo: char -
Figura 6.5 Possveis classes do sistema de videolocadora Fonte: Elaborao da autora (2008).
A notao de classes apresenta trs compartimentos, porm as classes podem ser apresentadas em diferentes nveis de abstrao, como apresentado na seguinte figura.
Cliente
Cdigo Nome Endereo CGC Limite_Crdito Calcular_Limite( ) Emitir_Relatrio( )
Cliente
Cdigo Nome Endereo CGC Limite_Crdito
Cliente
152
o primeiro passo a escolha do grupo de pessoas que representar um cenrio, ou seja, exatamente o cenrio do domnio do problema;
Unidade 6
153
Para cada classe de objeto identificada dentro do cenrio, criado um carto CRC.
na segunda etapa, cada participante associado a uma classe. Assim, cada pessoa passa a pertencer quela classe e todo o cenrio ser encenado pelos participantes. Aos poucos cada carto preenchido com as responsabilidades e os colaboradores. Durante a sesso pela explorao dos cenrios, comum que novos cartes sejam criados pela descoberta de novas classes. Observe o carto CRC criado a partir do seguinte cenrio: O balconista faz a abertura da venda. O balconista registra os itens de venda podendo inserir novos itens, exclu-los e edit-los. O sistema totaliza a venda para o cliente. O sistema calcula os impostos sobre a venda. O balconista encerra a venda.
Nome da Classe: Venda Responsabilidades Inserir/excluir item de venda Editar item de venda Totalizar venda Calcular impostos Colaboraes Item de venda Estoque Mercadoria Mercadoria
Voc pode documentar as responsabilidades no prprio diagrama de classes. Neste caso, insira a descrio na forma de texto no final da caixa da classe, ou seja, na notao grfica voc tem mais um compartimento logo abaixo das operaes.
154
b) Anlise dos casos de uso Se voc optar por utilizar a anlise de casos de uso para identificar as classes candidatas e suas responsabilidades, importante analisar os casos de uso e todos os seus fluxos (principais e alternativos). Mas como funciona esse mtodo? Bom, a partir da anlise so identificados os substantivos existentes nos casos de uso e os sinnimos so eliminados. Muitas vezes, um substantivo pode ser um ator, o qual deve ser eliminado. Assim, os nomes que permaneceram so as classes candidatas. Observe o exemplo a seguir:
Pdua (2001) mostra a anlise de um estudo de caso para um sistema de vendas de uma pequena mercearia. Ao analisar o estudo de caso procurando as classes candidatas, os atores so selecionados em itlico, o sistema aparece em negrito e os substantivos em sublinhado. O balconista faz a abertura da venda. O balconista registra os itens vendidos informando cdigo do produto e quantidade do item. O sistema totaliza a venda para o cliente. O balconista encerra a venda. O sistema emite o ticket para o cliente. O balconista registra a forma de pagamento. O sistema faz a baixa no estoque das mercadorias vendidas.
Unidade 6
155
Ao analisar o caso de uso, voc deduz a possvel lista de classes candidatas, operaes e atributos:
Classe Candidata Abertura Venda Item vendido Cdigo do produto Quantidade Cliente da mercearia Ticket Forma de pagamento Baixa Estoque Mercadoria Quadro 6.2 Exemplo lista de classes Fonte: Elaborao da autora (2008). Anlise Operao Provvel classe Provvel classe melhor item de venda Atributo do item da venda Atributo do item da venda Entidade fora do escopo do produto Relatrio Atributo da venda Operao Possvel classe Possvel classe
Observe que o item abertura pode ser descrito como uma operao, assim como venda passa a ser uma possvel classe. J cdigo do produto tem as caractersticas de um atributo. Note que j possvel identificar inclusive a qual classe o atributo pertence, como no caso da quantidade. A partir da identificao possvel determinar no exemplo as classes candidatas do sistema de controle de mercearia:
156
Apesar da possibilidade de utilizar essas tcnicas, o grande universo de informaes do domnio do problema muitas vezes dificulta a identificao. Existem algumas dicas que podem ser utilizadas para descobrir as classes de um domnio de aplicao observando os seguintes elementos:
informaes que devem ser armazenadas, transformadas, analisadas ou manipuladas de alguma forma; outros sistemas e terminadores externos que se comunicam ou interagem com o sistema em questo, atentando para as informaes que esto sendo trocadas; dispositivos fsicos com os quais o sistema em estudo ter de interagir, sem considerar a tecnologia para implementar o sistema em si; modelos, bibliotecas de classe e componentes gerados em projetos anteriores.
coisas que so parte do domnio de informao do problema; ocorrncias ou eventos que precisam ser registrados e lembrados pelo sistema; papis desempenhados pelas diferentes pessoas que interagem direta ou indiretamente com o sistema; locais fsicos ou geogrficos e lugares que estabelecem o contexto do problema; unidades organizacionais (departamentos, divises etc.) que possam ser relevantes para o sistema.
Lembra-se do projeto da Clnica Bem-Estar visto na unidade 2, atividade 3, de autoavaliao? Que tal definir as possveis classes candidatas?
Unidade 6
157
Classe Paciente; Classe Mdico; Classe Convnio; Classe Laboratrio; Classe Agenda; Classe Ficha_Mdica.
Agora quais os atributos que voc considera pertinentes para a classe Convnio? Voc pode listar para a classe convnio atributos como:
158
Conhea ento, a partir de agora, as principais caractersticas sobre os tipos mais comuns de relacionamentos entre objetos. a) Relacionamento de associao Segundo Furlan (1998), associao uma relao que descreve um conjunto de vnculos entre elementos de modelo: quando duas classes ou mesmo uma classe, consigo prpria, apresenta interdependncia; ou quando uma determinada instncia de uma das classes origina ou se associa a uma ou mais instncias da outra classe, voc pode dizer que se tem um relacionamento de associao.
Unidade 6
159
Funcionamento
Projeto
Paciente
Ficha_Mdica
Figura 6.9 Relacionamento de associao entre as classes Fonte: Elaborao da autora (2008).
Quando se menciona associaes, possvel representar a quantidade de objetos aos quais o outro objeto est associado. Um exemplo prtico: um projeto existe sem que seja alocado um funcionrio para esse projeto? Quantos projetos podem ser alocados para cada funcionrio? Quantos funcionrios podem ser alocados para cada projeto? Na notao UML, isso chamado de multiplicidade. Alguns autores tambm utilizam o termo cardinalidade. Mas como represent-lo em um diagrama? Observe ento a tabela a seguir que apresenta essa simbologia:
Nome Apenas um Zero ou muitos Um ou muitos Zero ou um Intervalo especfico Quadro 6.3 Simbologia UML Fonte: Elaborao da autora (2008). Simbologia 1 0..* 1..* 0..1 1i..1s
160
Paciente de transporte, Agenda Em uma empresa um motorista dirige apenas um caminho, e cada caminho pode ser dirigido por apenas um motorista. Paciente Agenda
No terceiro exemplo, um funcionrio deve estar locado a 1..* 1,..* um ou mais projetos. E cada projeto tem pelo menos um funcionrio alocado.
1..* 1,..*
1..*
1,..*
Imagine um projeto para uma mercearia em que se pretende controlar os fornecedores, seus produtos e os pedidos de compra de produtos. Imediatamente voc identifica pelo menos trs classes candidatas:
Classe Fornecedor (que vai armazenar dados como endereo, nome, telefone etc.); Classe Produtos (que deve armazenar dados como cdigo, descrio, unidade etc.); Classe Item de Compra (que deve armazenar preo, quantidade comprada etc.).
Voc tem a classe Fornecedor, que pode ter de 0 a n produtos (ou seja, o fornecedor oferece mercearia vrios produtos para compra; veja o exemplo de uma revenda de bebidas que possui diferentes tipos de refrigerante e cerveja). Os produtos, por sua vez, podem ter de 0 a n fornecedores (posso ter mais de um fornecedor para o mesmo refrigerante).
Unidade 6
161
Cada item de compra pode ter apenas um fornecedor, mas cada fornecedor pode ter de 0 a n itens de compra (no momento da compra vou ter um fornecedor apenas para aquele determinado item para aquela determinada nota fiscal).
H vrias maneiras de nomear associaes. No entanto, voc deve escolher o nome pensando na descrio da natureza do relacionamento. Prefira o uso de um verbo ou uma frase verbal. Alm de indicar um nome, voc pode ainda indicar a direo da leitura da associao inserindo um tringulo de orientao.
Paciente Solicita Agenda
Alm desses recursos, observe que a classe, ao participar de uma associao, recebe um papel especfico que utilizado em um dos lados de uma associao com a finalidade de indicar qual o papel que a classe a seu lado apresenta para a classe do lado oposto.
162
Um papel define o propsito ou a capacidade de uma classe. Utilize substantivos para indicar os papis (BEZERRA, 2002).
Na figura 6.12, h a classe Pessoa desempenhando o papel de funcionrio na associao com a classe Banco, que desempenha o papel de empregador.
A agregao um caso particular da associao. A agregao indica que uma das classes do relacionamento uma parte ou est contida em outra classe (GUEDES, 2006). Mas as duas classes esto no mesmo nvel, ou seja, no existe uma classe mais importante do que a outra na associao.
As palavras-chave usadas para identificar uma agregao so: consiste em, contm ou parte de. Outra dica importante que as partes no morrem obrigatoriamente com o todo, e uma mesma parte pode estar em mais de um todo. Graficamente voc vai representar a associao de agregao por uma linha e um diamante aberto na extremidade.
Observe o exemplo de uma transportadora. Pode-se dizer que a empresa tem departamento, e a transportadora contm caminhes.
Unidade 6
163
A composio um tipo especial de agregao em que a multiplicidade do lado todo sempre 1. As partes vivem e morrem obrigatoriamente com o todo. Uma mesma parte no pode estar em mais de um todo. Os objetos da classe Parte no existem de forma independente da classe Todo. A composio, segundo Rumbaugh (1994), um tipo forte de associao em que um objeto agregado composto de vrios objetos componentes.
164
Na representao das classes, de acordo com a figura 6.14, a associao de composio exprime que o Item de Pedido no existe sem o Pedido, ou seja , o Item de Pedido no existe de forma independente no sistema. As classes Motor e Bateria nesse exemplo no existem de forma independente da classe Veculo. Elas fazem parte do todo Veculo. A figura 6.15 um exemplo de classes para um sistema de controle de turmas em uma universidade. Nesse exemplo, a universidade oferece cursos aos alunos. Os cursos, por sua vez, oferecem disciplinas ministradas por professores aos alunos matriculados.
As classes Universidade e Cursos possuem um relacionamento de composio, ou seja, a classe Curso no existe sem a classe Universidade. Se a classe Universidade for extinta, automaticamente a classe Cursos deixa de existir. J as classes Aluno e Professor apresentam um relacionamento de agregao, pois fazem parte de outra classe. A classe Aluno est contida na classe Universidade e a classe Cursos contm a classe Professor.
Unidade 6
165
Para Bezerra (2002), as classes associativas esto ligadas a associaes e no a outras classes. Simplificando, existem situaes na anlise em que atributos e operaes so partes do relacionamento como um todo e no de cada uma das classes envolvidas. Nesse caso, em vez de se associarem esses atributos/ operaes a um participante, criada uma classe associativa que absorve esses atributos/operaes.
No exemplo ilustrado na figura 6.16, voc v uma situao em que uma pessoa trabalha em vrias empresas e uma empresa tem vrios empregados. Os atributos salrio e dataContrataao no pertencem classe Empresa nem classe Pessoa (que mantm dados cadastrais do empregado). Neste caso, uma classe associativa Emprego foi criada para comportar esses atributos para cada par (empregado/empregador).
166
b) Relacionamento de dependncia A dependncia indica a ocorrncia de um relacionamento entre dois ou mais elementos, no qual uma classe Cliente dependente de algum servio da classe Fornecedora.
Quando voc precisar indicar que um item depende de outro, utilize o relacionamento de dependncia.
dependncia por atributo a classe A possui um atributo cujo tipo B; dependncia por varivel global a classe A utiliza uma varivel global cujo tipo B; dependncia por varivel local A possui alguma operao cuja implementao utiliza uma varivel local do tipo B; dependncia por parmetro A possui pelo menos uma operao que possui pelo menos um parmetro cujo tipo B.
Para que as operaes da classe Filme sejam executadas, a existncia da classe Canal fundamental, pois existe uma dependncia de parmetros entre as classes.
Unidade 6
167
c) Relacionamento de generalizao A generalizao um relacionamento entre itens gerais (superclasses) e tipos mais especficos desses itens (as subclasses). A subclasse herda as propriedades da superclasse, principalmente atributos e operaes. Um relacionamento de especializao/generalizao indica que objetos do elemento especializado (subclasse) podem substituir os objetos do elemento generalizado (superclasse). A subclasse tem todos os atributos e as operaes da superclasse, porm pode ter outros atributos e operaes.
Imagine a seguinte situao: voc tem uma classe em seu sistema chamada Funcionrios. Essa classe possui atributos como nome, endereo, entre outras informaes. Existe, no entanto, um tipo de funcionrio chamado motorista. Esse funcionrio possui atributos especficos como itinerrio e horrio das rotas. Os motoristas fazem parte da classe Funcionrios, mas por suas caractersticas especficas formam outra classe. Neste caso, a classe Motorista herda as caractersticas da classe Funcionrio.
Segundo Guedes (2006), a generalizao, tambm conhecida como herana, pode ser simples ou mltipla.
Herana simples A subclasse herda estrutura e ou comportamento de uma nica superclasse. Herana mltipla A subclasse herda a estrutura e o comportamento de mais de uma superclasse.
Mas talvez voc esteja se questionando: o que uma subclasse pode herdar de uma superclasse?
A subclasse pode herdar atributos, operaes e relacionamentos. Alm das caractersticas herdadas, a subclasse possui atributos, operaes ou relacionamentos adicionais.
168
Na figura 6.18, a classe Imvel possui atributos e operaes comuns, como rea, endereo e IPTU. Mas Apartamento possui caractersticas especficas, como valor do condomnio e fundo de reserva. O mesmo acontece com a classe Casa. Assim, as subclasses possuem todas as caractersticas da superclasse, e, alm disso, possuem caractersticas especficas de cada subclasse. As subclasses so especializaes da superclasse Imvel.
cd Data Model Casa num_andares: int Tipo_Construo: char Apartamento fundo_reserva: float num_apto: char valor_condomnio: double
Imv el rea: double Bairro: char cod_proprietrio: int cdigo: int descrio: char dormitrios: int Endereo: char IPTU: float valor: int
Unidade 6
169
Agora, relembrando o sistema da videolocadora, observe os relacionamentos entre as classes candidatas propostas:
cd Data Model Cliente Bairro: char Cdigo: int Endereo: char Nome: char Telefone: int Locao Faz 1..* Data_Devoluo: date Data_Locao: date Valor: float 1..* Contm
Item_Locao
0..* Compe Filmes Ator_Principal1: char Ator_Principal2: char Cdigo: int Diretor: char Durao: int Estilo: char Idioma: char Ttulo: char Cpias 1..* Data_Compra: date Nmero: int Status: int
Possuem
Figura 6.19 Diagrama de classes sistema videolocadora Fonte: Elaborao da autora (2008).
170
Lembra-se do exemplo sobre o sistema bancrio? Imagine uma situao em que voc convidado a desenvolver um projeto para um caixa eletrnico bancrio. O projeto prev o atendimento dos seguintes requisitos funcionais:
O sistema deve permitir ao cliente a emisso de saldo somente da conta corrente. O sistema deve permitir ao cliente a emisso de extrato somente da conta corrente. O sistema deve permitir a atualizao dos dados cadastrais do cliente. O sistema deve permitir o saque em dinheiro no caixa eletrnico. O sistema deve permitir a consulta a toda a movimentao financeira do cliente (conta corrente, poupana e aplicaes) no caixa eletrnico. O acesso s funcionalidades do sistema deve ser possvel somente aps a verificao da conta e senha do cliente ou gerente.
Mov imento data_mov: date histrico: int nro_conta: int valor: double
Figura 6.20 Diagrama de classes sistema caixa eletrnico Fonte: Elaborao da autora (2008).
Unidade 6
171
172
notificar as classes de controle sobre eventos gerados externamente ao sistema; notificar atores do resultado da interao entre os objetos internos.
So alguns exemplos de classes de fronteira: Formulrio Cadastro Cliente, Formulrio Cadastro DVDs e Formulrio Movimentao DVDs. b) Classes de entidade Modelam informaes persistentes do sistema, normalmente independentes da aplicao ou das entidades do mundo real. As classes de entidade criam objetos que gerenciam dados. Assim, voc pode v-los de forma correspondente ao banco de dados. Um ator no tem acesso a uma classe Entidade e a comunicao ocorre por meio de outros objetos. Exemplos de classes de entidade: Cliente, Filmes, Locao, Cpias. As classes de entidades armazenam as informaes mantidas pelo sistema. Tambm importante para o projeto uma definio da performance esperada no acesso aos objetos da classe.
Lembra-se do estudo de caso apresentado no artigo A importncia de utilizar UML para modelar sistemas: estudo de caso, estudado na unidade 5? Ele se encontra na midiateca. Esse estudo discorre sobre um sistema de vendas de CDs musicais pela internet. A figura 6.21 mostra as classes persistentes encontradas para esse projeto.
Unidade 6
173
c) Classes de controle Objetos de controle so pontes de comunicao entre objetos de fronteira e objetos de entidade. Essas classes so responsveis por controlar a lgica de execuo correspondente ao caso de uso. Voc pode dizer que elas representam a lgica do caso de uso, requisitam e consultam informaes das classes de entidade e de interface e no gerenciam dados nem tm sada visvel. Bezerra (2002) define algumas responsabilidades para as classes de controle:
As classes de controle atuam entre as classes de interface e as de negcio, isto , uma para cada caso de uso.
realizar monitoraes respondendo a eventos gerados pelas classes de fronteira; coordenar a realizao do caso de uso por meio de mensagens das classes de entidade e de fronteira; assegurar que as regras de negcio do caso de uso esto sendo seguidas;
So exemplos de classes de controle: Controlador Cliente, Controlador Entrada DVDs, Controlador Sada DVDs, Controlador Atrasos. O uso da classe de controle opcional em um sistema. Voc deve avaliar claramente. O objetivo da classe de controle comportar a lgica e as regras de negcio complexas. Isso significa que aes como incluso, alterao, consultas de cadastros podem tranquilamente ser implementadas em uma classe de fronteira.
Voc se lembra do software de declarao do imposto de renda disponibilizado pelo governo federal? As interfaces do sistema com o usurio podem ser descritas pelas classes de Fronteira (tela de cadastro, de registro de bens, entre outras), os dados existentes sobre o trabalhador, rendas, despesas e bens so descritos pelas classes de entidade e o clculo do imposto de renda ser descrito na classe de controle.
Lembre-se de que os casos de uso complexo devem ser escritos em classes de Controle.
Unidade 6
175
Voc deve estar se perguntando: por que uma classe de entidade no deve cuidar de aspectos relacionados s entradas e sadas? Por que sugerido o uso de uma classe de fronteira? Imagine que no sistema de videolocadora a aplicao foi desenvolvida para desktop, mas agora o cliente deseja que o software rode na internet (o que significa uma interface bastante diferente). Bem, se o projeto foi constitudo considerando as trs classes de Domnio, a equipe de desenvolvimento deve apenas reconstruir as classes de Fronteira, na qual temos as telas do sistema. Isso contribui para a eficincia da manuteno do produto. Para o sistema de videolocadora, voc pode ter algumas classes candidatas:
classes de entidade: Filme, Cliente, Locao, Cpias; classes de fronteira: interface para o cadastro do Cliente (Form_Cliente), interface para o cadastro do Filme (Form_Filme), interface para o movimento da locao (Form_Locao) so alguns exemplos; classes de controle: o cadastro do cliente pode ter uma classe de controle para implementao de mtodos (Ctrl _Cliente) assim como o movimento da locao (Ctrl_ Locao).
Finalizada a etapa de identificao das classes de controle, fronteira e entidades, voc pode organizar essas classes em pacotes lgicos.
Pacotes lgicos so agrupamentos de elementos de um modelo. O uso de pacotes agrupa classes que possuem um critrio comum, facilitando a comunicao.
176
Quando uma coleo de classes colabora entre si para realizar um conjunto coeso de responsabilidades, ela pode ser vista como um subsistema. De acordo com Pressman (2002), quando visto de fora, um subsistema pode ser tratado como uma caixa-preta que contm um conjunto de responsabilidades e suas prprias colaboraes.
Unidade 6
177
Em alguns livros, voc vai encontrar o nome diagrama de instncias como sinnimo de diagrama de objetos.
Quando fazer uso desse diagrama? Esse diagrama pode ser bastante til quando voc estiver modelando uma estrutura de dados complexa. O diagrama de objetos representado por um retngulo com dois compartimentos. Na parte superior, voc identifica o objeto (sublinhado). Na parte inferior, voc referencia os atributos com seus valores. Analise a figura a seguir. Note que na parte superior esto as trs classes associadas: Pedido, itemPedido e Produtos. A instncia Pedido est associada a duas instncias do itemPedido, que consequentemente est ligada a uma instncia do Produto.
178
Existem duas possibilidades: os atributos e as operaes. a) Atributos Os atributos foram apresentados at o momento utilizando-se apenas o nome, mas com certeza em seu projeto voc ter de explicit-los de forma mais detalhada. A sintaxe a ser apresentada :
[1] visibilidade nome:tipo=valor inicial
A visibilidade refere-se ao nvel de acesso: quantos atributos de um objeto estaro visveis a outros objetos. Pode ser:
+ Pblica Todos tm acesso, podendo ser utilizado por operaes declaradas dentro de outras classes. # Protegida Pode ser acessado apenas por operaes dentro da prpria classe, pelas classes da hierarquia e pelas classes do pacote. Privada S pode ser acessado por operaes dentro da prpria classe.
O uso das propriedades de visibilidade apoia um dos conceitos da orientao a objetos: o encapsulamento. Assim, voc s deixa visvel atributos realmente necessrios aos demais objetos enquanto outros atributos tornam-se invisveis.
Unidade 6
179
Nome Identificador do atributo. Tipo O tipo depende da linguagem de programao. Mas comum o uso de uma tipologia abstrata em que so definidos os tipos como inteiro, real, caractere, string, float, data ou outra classe. Valor Inicial Voc pode informar um valor inicial para um atributo. Quando o objeto da classe for instanciado, ele pegar o valor automaticamente (veja limiteCredito).
b) Operaes As operaes representam o conjunto de funcionalidades da classe. Para cada operao, especifica-se sua assinatura:
Nome Identificador para o mtodo. Tipo Quando o mtodo tem um valor de retorno, o tipo desse valor. Lista de argumentos Quando o mtodo recebe parmetros para sua execuo, o tipo e um identificador para cada parmetro. In parmetro de entrada; out para um parmetro de sada; e inout para parmetros de entrada que podem ser modificados. Visibilidade Utiliza-se dos mesmos recursos usados para os atributos, definindo o quo visvel uma operao a partir de objetos de outras classes.
180
Sntese
Agora que voc j estudou a modelagem de classes, aproveite para praticar os conhecimentos conquistados nesta unidade realizando as atividades propostas a seguir. Nesta unidade, voc aprendeu que um objeto algo que tem estado, comportamento e identidade. Uma classe uma definio abstrata de um conjunto de objetos que compartilham uma estrutura e um comportamento comuns todo sistema, porm, engloba muitos objetos que cooperam entre si para produzir a funcionalidade desejada. A produo das funcionalidades s possvel pela existncia de diferentes tipos de relacionamentos, como a associao, a dependncia e a generalizao. Entre as caractersticas do relacionamento de associao, a multiplicidade uma das mais importantes. A multiplicidade indica o nmero de instncias que participam dessa associao. Voc tambm viu que as operaes determinam como um objeto age e reage s mensagens que ele recebe e que possvel agrupar esses objetos e classes em pacotes lgicos, criando uma viso mais clara do sistema. Voc tambm estudou a importncia de modelar o sistema em diferentes camadas, como as camadas de Controle, Fronteira e Persistente. Essa modelagem cuidadosa facilita futuras manutenes no seu projeto. Em resumo, esta unidade englobou conceitos e abstraes relacionadas aos aspectos estticos do sistema. Mas, para o bom andamento do projeto, necessrio ter uma viso dinmica desses objetos.
Unidade 6
181
Atividades de autoavaliao
Leia com ateno os enunciados e realize as questes propostas. 1) Assinale a afirmativa correta. a) ( ) Uma classe um conjunto de objetos, que, por sua vez, so identificados por comportamento e estado e nem sempre so nicos. Uma classe um conjunto de objetos que compartilham caractersticas de atributos, operaes, relaes e semntica. possvel dizer que so exemplos de classes em um sistema Universitrio: Professor, Aluno, Nome Aluno. possvel dizer que so exemplos de instncias de uma classe Professor: Joo da Silva, Ana Luiza.
b) ( ) c) ( ) d) ( )
2) Relacione a primeira coluna com a segunda, indicando a camada mais adequada para cada ocorrncia. A. Classe de Ccontrole B. Classe Persistente C. Classe de Fronteira ( ) ( ) ( ) ( ) ( ) ( ) Mensagens de erro para o usurio. Clculo da folha de pagamento. Cria ou destri um objeto (exclui produto). Dados do produto. Telas de consulta de produtos. Dados do cliente.
182
3) Relacione a primeira coluna com a segunda, indicando as caractersticas dos diferentes relacionamentos: A. Associao B. Associao ternria C. Agregao D. Herana E. Dependncia F. Associao recursiva G. Classes associativas a) ( ) As classes esto ligadas a associaes e no a outras classes. b) ( ) Neste relacionamento, ocorre a associao de trs classes ao mesmo tempo. c) ( ) Uma das classes do relacionamento uma parte da classe ou est contida em outra classe. d) ( ) Este relacionamento possvel entre dois ou mais elementos em que uma classe Cliente dependente de algum servio da classe Fornecedora. e) ( ) Neste caso, os objetos da prpria classe esto se relacionando. f) ( ) Quando ocorre este tipo de relacionamento, a subclasse herda as propriedades da superclasse, principalmente atributos e operaes. g) ( ) Ocorre quando duas classes ou mesmo uma classe, consigo prpria, apresenta interdependncia.
4) Com base no texto a seguir relacionado Clnica Bem-Estar: a) Identifique as classes persistentes (nome e descrio da classe): b) A partir dessa identificao, construa o diagrama de classes Persistentes, apontando os relacionamentos existentes entre as classes.
Unidade 6
183
184
Unidade 6
185
Saiba mais
Para aprofundar as questes abordadas nesta unidade, voc poder pesquisar: BEZERRA, E. Princpios de anlise e projeto de sistemas com UML. So Paulo: Campus, 2002. (Ler captulos 5, 6 e 8.) BOOCH, G. ; RUMBAUGH, J. ; JACOBSON, I. UML: guia do usurio. So Paulo: Campus, 2000. (Ler captulos 8 e 9.) PAULA FILHO, Wilson de Pdua. Engenharia de software. So Paulo: Campus, 2001. (Ler captulo 4.) Voc encontra uma boa leitura sobre modelagem de chaves no captulo 4 do livro UML: uma abordagem prtica, de Gilleanes T. A. Guedes.
186