Você está na página 1de 42

UNIDADE 6

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?

Universidade do Sul de Santa Catarina

Para incio de estudo


Voc j estudou um dos aspectos mais fortes do projeto, que so os casos de uso. Eles permitem aos atores a visualizao de resultados esperados, relatrios e processamentos. De qualquer maneira, a possibilidade da existncia dessa colaborao depende de aspectos estticos e dinmicos do sistema. Entre objetos do sistema, o aspecto dinmico est fortemente ligado troca de mensagens, enquanto o aspecto esttico mostra como o sistema est estruturado internamente e passa por trs nveis de abstrao: o primeiro deles, o modelo de classe de domnio, representa a classe de domnio sem se preocupar com detalhes sobre a tecnologia; o segundo nvel o modelo da classe de especificao que acrescenta detalhes relacionados soluo do software escolhida pelo modelo do domnio; o terceiro nvel, o modelo de classe de implementao uma extenso do modelo de especificao. Ocorre neste nvel a implementao em alguma linguagem de programao. Para voc entender a utilizao desses nveis de abstrao, necessrio conhecer conceitos e relacionamentos vinculados ao modelo de classes. O modelo de classes um dos modelos mais ricos em termos de notao e concentra o cerne esttico de todo o projeto. Ento, que tal escalar o mundo conceitual das classes?

146

Metodologias e Projetos de Software

Seo 1 O que so objetos e classes de objetos?


De acordo com Pdua (2001), as entidades de domnio so representadas na modelagem orientada a objetos por objetos. O objeto representa uma entidade que pode ser fsica ou de software. Na realidade, um objeto sempre descrito por meio do estado, do comportamento e da identidade.

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

Universidade do Sul de Santa Catarina

Os objetos tambm so chamados de instncia.

Voc pode dizer tambm que um objeto uma pessoa, um lugar ou um sistema, como mostra a figura a seguir.

Figura 6.1 Exemplos de objetos Fonte: Elaborao da autora (2010).

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.

Figura 6.2 Classe Clientes Fonte: Elaborao da autora (2010).

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

Metodologias e Projetos de Software

Figura 6.3 Notao da classe Fonte: Elaborao da autora (2008).

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

Universidade do Sul de Santa Catarina

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

Figura 6.4 Classe Cliente Fonte: Elaborao da autora (2008).

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

Metodologias e Projetos de Software

Quais seriam os atributos para a classe Filmes? Voc poderia ter nesse caso:

Nome_; Cdigo_; Diretor_; Durao_; Ator_Principal1; Ator_Principal2; Tipo_; Idiomas_.

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

Universidade do Sul de Santa Catarina

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 -

Cpias Data_Compra: date Nmero: int Status: int

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

Figura 6.6 Abstraes das classes Fonte: Elaborao da autora (2008).

152

Metodologias e Projetos de Software

Seo 2 Quais so as responsabilidades das classes?


Uma responsabilidade um contrato ou obrigaes de uma determinada classe, ou seja, representam o conhecimento e as aes que possibilitam que as classes cumpram seu papel nos casos de uso (PDUA, 2001). Por exemplo: uma classe Cliente responsvel pelo conhecimento sobre os dados pessoais (cdigo, nome, endereo etc.) do cliente, alm de ser responsvel por incluir, excluir e consultar os dados do cliente. Mas definir as classes existentes em um futuro sistema e suas responsabilidades no uma tarefa fcil. O mais adequado voc procurar o apoio de mtodos reconhecidos que procuram facilitar sua realizao. Para isso, existem dois mtodos popularizados para essa etapa, que so: os cartes CRC e a anlise dos casos de uso. a) Os cartes Classes Responsabilidades e Colaboraes (CRC) O uso dos cartes CRC identifica as responsabilidades dos atributos e das operaes apoiando a identificao de classes ou de candidatos s classes. Cada ficha corresponde a uma classe, contm o nome da classe e duas colunas com descrio de suas responsabilidades e colaboraes. As colaboraes representam outras classes que interagem com a classe descrita para o cumprimento de suas responsabilidades. O uso do carto CRC realizado com o envolvimento de toda a equipe. Para isso, uma sesso organizada. Para realizar a sesso:

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

Universidade do Sul de Santa Catarina

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

Quadro 6.1 - Exemplo de um carto CRC Fonte: Elaborao da autora (2008).

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

Metodologias e Projetos de Software

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

Universidade do Sul de Santa Catarina

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:

Figura 6.7 Classes candidatas Fonte: Elaborao da autora (2008).

156

Metodologias e Projetos de Software

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.

Coad e Yourdon (1992) tambm sugerem alguns indicadores:

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

Universidade do Sul de Santa Catarina

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:

Cdigo_Convnio; Nome_Convnio; Telefone_Convnio; Caractersticas_Convnio; Status_Convnio.

Se voc listar os possveis atributos da classe Mdico:


Nome_Mdico; CRM_Mdico; Endereo_Mdico; Telefone_Mdico; Celular_Mdico; Especialidades_Mdico; Horrio_Mdico.

158

Metodologias e Projetos de Software

Seo 3 Como ocorrem os relacionamentos entre objetos?


Um relacionamento representa a interao entre as classes e os objetos, ele apoia o refinamento das classes. Existem diferentes tipos de relacionamentos possveis entre as classes identificadas. Os mais importantes so as associaes, as dependncias e as generalizaes.

Figura 6.8 Relacionamento entre objetos Fonte: Adaptado de Booch (2000).

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

Universidade do Sul de Santa Catarina

Funcionamento

Projeto

Paciente

Ficha_Mdica

Figura 6.9 Relacionamento de associao entre as classes Fonte: Elaborao da autora (2008).

O que multiplicidade dentro desse tipo de relacionamento?

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

Veja alguns exemplos de multiplicidade:

160

Metodologias e Projetos de Software

Um paciente possui nenhum ou vrios agendamentos.


Paciente Agenda

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

Universidade do Sul de Santa Catarina

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).

Figura 6.10 Multiplicidade Fonte: Adaptado de Pdua (2001).

Como nomear uma associao?

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

Figura 6.11 Nomeando uma associao Fonte: Elaborao da autora (2008).

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

Metodologias e Projetos de Software

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.

Figura 6.12 Papis em uma associao Fonte: Elaborao da autora (2008).

O que significa agregao para o relacionamento de associao?

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

Universidade do Sul de Santa Catarina

Figura 6.13 Agregao Fonte: Booch (2000).

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.

Figura 6.14 Composio Fonte: Elaborao da autora (2008).

164

Metodologias e Projetos de Software

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.

Figura 6.15 Relacionamentos entre classes Fonte: Elaborao da autora (2008).

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

Universidade do Sul de Santa Catarina

O que so classes associativas?

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.

Figura 6.16 Classe associativa Fonte: Pdua (2001).

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

Metodologias e Projetos de Software

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.

Bezerra (2002) indica situaes que levam a um relacionamento de dependncia, como:

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.

Figura 6.17 Dependncia Fonte: Elaborao da autora (2008).

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

Universidade do Sul de Santa Catarina

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

Metodologias e Projetos de Software

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

Figura 6.18 Relacionamento de herana Fonte: Elaborao da autora (2008).

Unidade 6

169

Universidade do Sul de Santa Catarina

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

Metodologias e Projetos de Software

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.

Observe o possvel diagrama de classes para esse exemplo:


cd Data Model - banco Pessoa endereo: char estado_civil: int nome: char rendimento: double telefone: char tippes: boolean tem 1..* Conta Agncia: int Data_Abertura: date Nmero: int Saldo: double Senha: int Tipo: int registra 0..* -

Mov imento data_mov: date histrico: int nro_conta: int valor: double

Fsica CID: char CPF: long -

Jurdica CNPJ: long -

Poupana Nro_sorteio: int Rendimento: double -

Conta_Corrente limite: double Nro_ext_mes: int Nro_saques_mes: int TxJuro: float

Figura 6.20 Diagrama de classes sistema caixa eletrnico Fonte: Elaborao da autora (2008).

Unidade 6

171

Universidade do Sul de Santa Catarina

Seo 4 Como ocorre a diviso das classes do modelo de anlise?


A diviso, ou categorizao, das classes est fortemente relacionada com as futuras mudanas no sistema. Com a diviso das classes a partir de suas responsabilidades, no momento em que forem necessrias alteraes no sistema, estas passam a ser pontuais. As classes do modelo de anlise podem ser divididas em trs camadas: a) classes de Fronteira; b) classes de Entidade; c) classes de Controle. Conhea a partir de agora as caractersticas de cada uma dessas camadas de classes. a) Classes de fronteira Tratam da comunicao com o ambiente do produto, modelando as interfaces do produto com usurios e outros sistemas (entrada e sada de dados).
Cada formulrio usado pelo programa um objeto criado por uma classe de fronteira, que faz a interface entre um ator e o sistema, uma para cada formulrio, relatrio ou interface com outro sistema.

172

Metodologias e Projetos de Software

Segundo Bezerra (2002), as classes de fronteira tm tipicamente as seguintes responsabilidades:

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

Universidade do Sul de Santa Catarina

Figura 6.21 Diagrama de classes Persistente Fonte: Figueira (2005).

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;

coordenar a criao de associaes entre classes de Entidade.


174

Metodologias e Projetos de Software

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.

A representao das classes na UML se d pela seguinte notao:

Figura 6.22 Esteretipos da classe Fonte: Elaborao da autora (2008).

Unidade 6

175

Universidade do Sul de Santa Catarina

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).

O que fazer ento depois de realizada a etapa de identificao das classes?

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

Metodologias e Projetos de Software

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.

Figura 6.23 Pacotes lgicos Fonte: Elaborao da autora (2008).

importante ressaltar que o pacote deve ter um nome nico e textual.

Seo 5 O que diagrama de objetos?


Os diagramas de objetos so como uma fotografia de um sistema orientado a objetos em execuo.
O diagrama de objetos um complemento do diagrama de classes, pois fornece uma viso dos valores armazenados pelos objetos de um diagrama de classes em um determinado momento da execuo de um processo de software (GUEDES, 2006).

Unidade 6

177

Universidade do Sul de Santa Catarina

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.

Figura 6.24 Diagrama de objetos Fonte: Adaptado de Bezerra (2000).

Qual a nomenclatura a ser utilizada na especificao de um diagrama de objetos?

178

Metodologias e Projetos de Software

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.

Figura 6.25 Nomenclatura de atributos Fonte: Elaborao da autora (2008).

Unidade 6

179

Universidade do Sul de Santa Catarina

Sobre a figura 6.25, acompanhe:


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.

Figura 6.26 Exemplo de operao Fonte: Elaborao da autora (2008).

180

Metodologias e Projetos de Software

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

Universidade do Sul de Santa Catarina

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

Metodologias e Projetos de Software

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

Universidade do Sul de Santa Catarina

Empresa : Clnica Bem-Estar


1) Funo: fomos contratados para analisar seu processo atual e verificar como expandir suas operaes e melhorar seu nvel de servio. Histrico: A clnica, fundada h 5 anos, atua no atendimento clnico peditrico. A clnica possui 34 mdicos cadastrados em diferentes especialidades como: cardiologia, clnica geral, dermatologia etc. Todos os mdicos utilizam internet e e-mail. A faixa etria predominante de 30, 35, 40, 42, 44 e 48 anos. Todos os mdicos so aptos do ponto de vista fsico. O paciente pode ser atendido de forma particular ou por convnios. Os convnios atendidos so o Bruxtr, Vpfzm e UIOlk. Cada mdico faz 3 plantes semanais de 4 horas seguidas; as consultas possuem um intervalo de 30 minutos. Existe a possibilidade de a consulta ser de retorno, nesse caso so apenas 15 minutos. A clnica 24 horas. Cada mdico possui uma agenda preta onde so marcadas as consultas. Na marcao da consulta colocado o nome do paciente, horrio e convnio. Trabalham h 3 anos na clnica com planilhas Excel. A clnica possui 2 atendentes que so responsveis por preencher o cadastro inicial do paciente, que contm nome, endereo, telefone, data de nascimento, convnio. O mdico, ao atender o paciente, preenche sua ficha manualmente, informando peso, altura, idade, motivo da consulta, queixa principal, doenas anteriores, diagnstico, prescrio. A prescrio pode ser a solicitao de exames ou medicamentos com posologia. A clnica possui de 700 a 800 fichas, sendo que cerca de 600 so de atendimento por convnio. O gerente da clnica est ansioso, pois no consegue controlar questes relacionadas ao nmero de pacientes atendidos por convnio e particular, mdicos mais procurados e picos de movimento. Volume de atendimentos: 56 por dia. Outra questo de interesse manter um controle de laboratrios conveniados, pois o mdico poderia indicar o laboratrio j no momento da prescrio.

184

Metodologias e Projetos de Software

Unidade 6

185

Universidade do Sul de Santa Catarina

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

Você também pode gostar