Вы находитесь на странице: 1из 13

Projeto Locadora de Vdeo Passatempo

Documento de Especificao de Projeto


1. Introduo
Este documento contm a Especificao de Projeto para o sistema da vdeo-locadora Passatempo. Esta atividade foi desenvolvida em duas etapas principais, a primeira focando na arquitetura do sistema, produzindo diagramas de pacotes e os respectivos diagramas de classes para os componentes identificados, a segunda tratando do projeto detalhado das classes identificadas anteriormente (projeto de operaes e estruturas de dados internas). A seo 2 discute a plataforma de implementao considerada. Na seo 3, apresentada a arquitetura do sistema, na forma de Diagramas de Pacotes. As sees 4, 5, e 6 apresentam os Diagramas de Classes para cada um dos subsistemas identificados, organizados por esteretipos, quando necessrio. Para as Componentes de Gerncia de Dados, so apresentados, ainda, os Diagramas Relacionais correspondentes, tendo em vista o uso de bancos de dados relacionais para a persistncia de objetos. Finalmente, a seo 7 apresenta o projeto detalhado.

2. A Plataforma de Implementao
O sistema proposto ser implementado usando a linguagem de programao Java, que possui mecanismo de herana simples apenas. Alm disso, a persistncia dos objetos ser feita em um banco de dados relacional.

3. Arquitetura do Sistema
A organizao de classes em pacotes deve ser o ponto de partida para a definio da arquitetura do sistema, j que um meio de estabelecer nveis de abstrao para o modelo. Esses nveis de abstrao podem ser organizados em camadas e, assim, tratados separadamente durante a fase de projeto. A organizao de classes em pacotes til tambm para permitir a produo de componentes para reuso. Neste trabalho, foram utilizadas duas formas complementares de agrupamento de classes em pacotes: primeiramente pelo domnio do problema, aproveitando os subsistemas definidos na fase de anlise, e depois por esteretipos, tendo sido utilizados os esteretipos propostos por Coad e Yourdon [Coad93]. Sendo assim, o diagrama de pacotes de nvel mais alto, mostrado na figura 3.1, praticamente o mesmo da fase de anlise, exceto pela introduo do pacote Utilitario, que trata classes reutilizveis em outros contextos. O diagrama da figura 3.1 mostra as dependncias entre os subsistemas, indicando que os pacotes AtendimentoCliente e ControleAcervo solicitam servios ao pacote Utilitario. Mantendo a coerncia com o diagrama da fase de anlise, o pacote AtendimentoCliente solicita servios do pacote ControleAcervo.

Os pacotes AtendimentoCliente e ControleAcervo foram decompostos em outros pacotes segundo os esteretipos, dando origem a novos diagramas de pacotes, a serem discutidos nas prximas sees.

Atendimento Cliente

Controle Acervo

Utilitario

Figura 3.1 Diagrama de Pacotes

4. O Pacote Controle de Acervo


Este pacote foi decomposto no diagrama de pacotes da figura 4.1, agora tomando por base os esteretipos.

UtilitarioPessoa (from Utilitario)

GT_ControleAcervo

DP_Controle Acervo

IU_Controle Acervo

GD_Controle Acervo

UtilitarioInterfaceGrafica (from Utilitario)

Figura 4.1 Diagrama de Pacotes do Pacote ControleAcervo.

4.1 Pacote DP_ControleAcervo A figura 4.2 apresenta o Diagrama de Classes referente Componente do Domnio do Problema do pacote ControleAcervo.

P a is
(fro m Uti l i ta ri o P e sso a )

+ nac ionalidad e 0.. * D ireto r nome : S tr in g P es s oaJuridic a


(fro m Uti l i ta ri o P e sso a )

0.. * Tit ulo nom e : S trin g ano : Int eger 0. .* s ino ps e : S tring nom eO rig inal : S trin g 0. .* obt er() obt erF it aD is p onivel() obt erV alorLoc ac a o() obt erR es ervaD aV e z () 0.. * obt erN om e() 1 1.. * C la s s e d es c ric a o : S t rin g p rec o : C u rrenc y p raz o : Integ er o bterP rec o ()

D is trib uido r

0. .*

0. .*

0 .. * A t or nom e : S tring

C at egoria nom e : S tring

0.. * F i ta num S e ri e : Int eger dtA q uis ic ao : D ate es t ado : S tring dis po nivel() obt er() obt erLoc ac a oP endente() obt erTitulo () atr ib uir E s tad o() c ri ar ()

Figura 4.2 Diagrama de Classes do Pacote DP_ControleAcervo. importante realar que as alteraes introduzidas em relao ao modelo de anlise dizem respeito a requisitos no funcionais importantes para o sistema, tais como: Facilidade de Uso: para apoiar a construo de interfaces amigveis, foram criadas as classes Ator, Diretor, Categoria e Pais.

Reusabilidade: visando construir classes reutilizveis em domnios diversos, optou-se por desenvolver uma hierarquia de Pessoa (pacote UtilitarioPessoa), na qual foi inserida a classe Distribuidor.

4.2 Pacote IU_ControleAcervo Neste trabalho no ser apresentada a Componente de Interface com o Usurio do pacote ControleAcervo. 4.3 Pacote GT_ControleAcervo A figura 4.3 apresenta o Diagrama de Classes referente Componente de Gerncia de Tarefas do pacote ControleAcervo.
A p lC a da s tra rP a is in c lu irN o vo P a is () altera rD ad o s P ais () c o ns u ltarP a is () ex c luirP a is () 0.. 1 A p lC a d a s trarF ita in c lu irN ova F it a() a lte ra rD a d o s F ita () c o n s u lta rF i ta () e x c lu irF ita() 0.. 1 1 A plC o n tro leA c e rvo 1 inc luirN o vo Titu lo () altera rD ad os Titu lo () 0 . .1 c o ns u lta rTitu lo () ex c lu irTitu lo() inc luirN o vo A to r() altera rD ad os A t o r() c o ns u lta rA to r() ex c lu irA tor() inc luirN o vo D iret or() altera rD ad os D ire to r() c o ns u lta rD ire t or() ex c lu irD iret or() 1 1 1 0 ..1 A p lC ad as t rar D is t rib ui dor inc lu irN ovo D is tribu id or() alte ra rD ad os D is trib u id o r() c o n s u lta rD is tribu id or() ex c lu irD is trib u id or()

1 A p lC on trola rTitu lo

0. .1 0 .. 1 Ap lC ad a st ra r C la s s e in c luirN o va C las s e () a lte ra rD a d o s C la s s e () c o n s u ltarC la s s e () e x c lu irC las s e() A p lC a da s trarC a te g oria inc lu irN ova C a te go ria() alte ra rD ad os C a te g oria () c o n s u lta rC at e go ria() ex c lu irC a te g o ria()

Figura 4.3 Diagrama de Classes do Pacote GT_ControleAcervo. A classe AplCadastrarTitulo trata do caso de uso Cadastrar Ttulo e dos casos de uso fortemente relacionados a ele, a saber: Cadastrar Ator e Cadastrar Diretor. Estes casos de uso foram agrupados em uma nica classe de aplicao, devido ao fato de, ao se cadastrar um ttulo, poder se querer cadastrar novas informaes de atores e diretores.

AplControleAcervo, que d forma aplicao Controle de Acervo

As demais classes lidam com seus respectivos casos de uso, exceto a classe como um executvel.

4.4 Pacote GD_ControleAcervo A persistncia dos objetos deste sistema ser realizada em um banco de dados relacional. Assim, interessante procurar minimizar os impactos da tecnologia de bancos de dados sobre o sistema. Optou-se, portanto, por trabalhar com classes-sombra responsveis pela interao direta com o banco relacional e, conseqentemente, com conhecimento de cdigo SQL. Para tal, foi utilizada a infra-estrutura genrica de persistncia apresentada na seo 6.4. Em tal infra-estrutura, cada classe a ser persistida tem uma correspondente classesombra, responsvel pela interao com a base de dados relacional, como mostra a figura 4.4.

ClasseBaseSombra
(from UtilitarioGerenciaDados)

CategoriaPersistente

FitaPersistente

AtorPersistente

PaisPersistente

DiretorPersistente

TituloPersistente

DistribuidorPersistente

ClassePersistente

Figura 4.4 Diagrama de Classes do Pacote GD_ControleAcervo. Uma caracterstica marcante desta abordagem a necessidade de se estabelecer identificadores nicos para os objetos (IDOs) a serem persistidos. Usando a infra-estrutura proposta em (COSTA, 2000), todas as classes cujos objetos tm de ser persistentes passam a herdar de ClasseBasePersistente, responsvel pelos IDOs, ou seja, todas as classes do pacote DP_ControleAcervo passaram a herdar de ClasseBasePersistente. Alm disso, foi necessrio construir um Diagrama Relacional, mapeando as classes e objetos em tabelas e linhas. O Diagrama Relacional para o pacote ControleAcervo apresentado na figura 4.5. Nesta figura, as chaves primrias aparecem na parte superior e as chaves transpostas so os primeiros itens da parte inferior. importante realar que, no mapeamento da hierarquia de herana Pessoa, PessoaJuridica e Distribuidor, optou-se por criar apenas tabelas para classes concretas, no caso, Distribuidor. Sendo assim, todas as relaes e os atributos das superclasses foram mapeados na tabela correspondente classe concreta Distribuidor. Esta deciso decorre de, neste sistema, no haver processamento sobre as superclasses, mas apenas na subclasse concreta.

Fita idoFita: Long Integer idoTitulo: Integer numSerie: Long Integer dtAquisicao: Date/Time estado: Text(20) Ator idoAtor: Integer nome: Text(20)

Titulo idoTitulo: Integer idoClasse: Integer idoCategoria: Integer idoDistribuidor: Integer nome: Text(20) nomeOriginal: Text(20) sinopse: Memo ano: Integer

Categoria idoCategoria: Integer nome: Text(20) TituloDiretor idoTitulo: Integer idoDiretor: Integer Classe idoClasse: Integer descricao: Text(20) preco: Currency prazo: Integer TituloNacionalidade idoTitulo: Integer idoPais: Integer Pais idoPais: Integer nome: Text(20) sigla: Text(3) Diretor idoDiretor: Integer nome: Text(20)

TituloAtor idoAtor: Integer idoTitulo: Integer

Distribuidor idoDistribuidor: Integer idoBairro: Integer razaoSocial: Text(20) cnpj: Long Integer pessoaContato: Text(20) rua: Text(40) numero: Text(10) complemento: Text(10) cep: Integer

Bairro idoBairro: Integer idoCidade: Integer nome: Text(20)

Cidade idoCidade: Integer idoEstado: Integer nome: Text(20)

Estado idoEstado: Integer nome: Text(20) sigla: Text(2)

Figura 4.5 Diagrama Relacional do Pacote GD_ControleAcervo.

5. O Pacote Atendimento a Cliente


Este pacote foi decomposto no diagrama de pacotes da figura 5.1, agora tomando por base os esteretipos.
UtilitarioPessoa (from Utilitario) GT_AtendimentoCliente

UtilitarioBanco (from Utilitario)

DP_Atendimento Cliente

IU_Atendimento Cliente

GD_Atendimento Cliente

UtilitarioInterfaceGrafica (from Utilitario)

Figura 5.1 Diagrama de Pacotes do Pacote AtendimentoCliente. 5.1 Pacote DP_AtendimentoCliente A figura 5.2 apresenta o Diagrama de Classes referente Componente do Domnio do Problema do pacote AtendimentoCliente.

A n a v e g a b i l id a d e d e cl ie n te p a r a lo c a o d a r-se - a p e n a s p a r a a s lo c a e s p e n d e n te s

L o c a ca o d tL o ca c a o : D a te d t D e v o l u c a o P re v i st a : D a t e d tD e v o l u c a o E fe ti v a : D a te v a l o rC o b ra d o : C u rre n c y e st a d o : S t ri n g

P a g a m e n to d a ta : D a te v a l o r : C u rre n c y

0 ..2

0 ..* C li e n te n u m I n sc ri c a o : I n t e g e r n o m e : S t ri n g 1 d t N a sc i m e n t o : D a t e se x o : C h a r o b t e r() e m D e b i t o () o b t e rN u m I n sc ri c a o () 1

0 . .* 1 . c a l c u l a rD t D e v o l u c a o P re v i .st*a () c a l c u l a rV a l o r() Cheque c a l c u l a rM u l t a () ( f r o m U t ilit a r io B a n c o ) 0 ..* e m A t ra so () c ri a r() a t ri b u i rD t D e v o l u c a o P re v i st a () 1 a t ri b u i rV a l o rC o b ra d o () F i ta p e n d e n t e () ( f r o m D P _ C o n t r o le A c e r v o ) o b t e rC l i e n t e () c a l c u l a rV a l o rA S e rP a g o () e x i st e P a g a m e n t o () A n a v e g a b i l i d a d e d e fi ta 0 ..* a t ri b u i rD t D e v o l u c a o E f e t i v ap() ra l o c a o d a r-se - a a p e n a s p a ra a s l o c a e s p e n d e n te s 0 ..* R e se rv a d a ta : D a t e h o ra : L o n g 0 . .* e st a d o : S t ri n g p en d e n te ( ) o b te rD a t a Ho ra ( ) a t rib u i rE s t a d o () o b t e rC l i e n t e () 1 1 T i tu lo
( f r o m D P _ C o n t r o le A c e r v o )

S oc io l o c a l T ra b a l h o : S t ri n g i d e n t i d a d e : S t ri n g o b t e rN o m e () c a l c u l a rI d a d e () 0 . .1 1 Cpf
( f r o m U t ilit a r io P e s s o a )

0 ..3

D e p e n d e n te

1 0 ..1 1 E n d e re c o
( f r o m U t ilit a r io P e s s o a )

Figura 5.2 Diagrama de Classes do Pacote DP_AtendimentoCliente.

5.2 Pacote IU_AtendimentoCliente A figura 5.3 apresenta o Diagrama de Classes (parcial) referente Componente de Interface com o Usurio do pacote AtendimentoCliente. A classe JanCadastro est definida no pacote UtilitarioInterfaceGrafica, que visa a padronizao e o reuso de classes de interface.
J a n C a d a s t ro
(fro m U ti l i t a ri o I n te rf a c e G ra fi c a )

J a n E fe t u a rN o va L oc a c a o

J a n E fe t u a rD e vo lu c a o

Figura 5.3 Diagrama de Classes do Pacote IU_AtendimentoCliente. 5.3 Pacote GT_AtendimentoCliente A figura 5.4 apresenta o Diagrama de Classes referente Componente de Gerncia de Tarefas do pacote AtendimentoCliente.
AplCadastrarCliente inscreverNovoSocio() incluirDependente() alterarDadosCliente() consultarCliente() excluirCliente() 0..1 1 0..1 AplControlarLocacao janLocacao : JanEfetuarLocacao janDevolucao : JanEfetuarDevolucao locacao : Locacao fita : Fita 1 efetuarNovaLocacao() alterarDadosLocacao() consultarLocacao() cancelarLocacao() efetuarDevolucao() efetuarPagamento() alterarDadosPagamento() consultarPagamento() cancelarPagamento() 0..1 AplConsultarTitulo consultarTituloPorNome() consultarTituloPorAtor() consultarTituloPorDiretor() consultarTituloPorNacionalidade() cansultarTituloPorNomeOriginal() 0..1 AplConsultaCliente 1

AplAtendimentoCliente 1 0..1 AplEfetuarReserva efetuarNovaReserva() alterarDadosReserva() consultarReserva() cancelarReserva() cancelarReservaAutomaticamente() notificarCliente()

Figura 5.4 Diagrama de Classes do Pacote GT_AtendimentoCliente.

A classe AplLocacao trata de todos os casos de uso envolvidos diretamente com uma locao, a saber: Efetuar Locao, Efetuar Devoluo e Efetuar Pagamento. As demais classes lidam com seus respectivos casos de uso, exceto a classe AplAtendimentoCliente, que d forma a uma aplicao executvel. Vale ressaltar que uma aplicao de consulta a ttulo pode existir isoladamente da aplicao de atendimento a cliente e por isso foi isolada por uma cardinalidade 0..1. 5.4 Pacote GD_AtendimentoCliente Conforme discutido na seo 4.4, a persistncia dos objetos deste sistema ser realizada em um banco de dados relacional e, para apoiar o projeto da Componente de Gerncia de Dados, foi utilizada a infra-estrutura genrica de persistncia apresentada na seo 6.4. Em tal infra-estrutura, cada classe a ser persistida tem uma correspondente classesombra, responsvel pela interao com a base de dados relacional, como mostra a figura 5.4.
C la s s e B a s e S o m b ra
(f ro m U t i l i t a ri o G e re n c i a D a d o s)

C lie n t e P e rs is t e n t e

L o c a c a o P e rs is t e n t e

R e s e rv a P e rs is t e n te

S oc i o P e rs is t e n te D e p e n de n t e P e rs is t e n t eP a g a m e n t o P e rs is t e n t e

Figura 5.4 Diagrama de Classes do Pacote GD_ControleAcervo. Vale lembrar que todas as classes cujos objetos tm de ser persistentes tem de herdar de ClasseBasePersistente, responsvel pelos IDOs, ou seja, todas as classes do pacote DP_AtendimentoCliente passaram a herdar de ClasseBasePersistente. Alm disso, foi necessrio construir um Diagrama Relacional, mapeando as classes e objetos em tabelas e linhas. O Diagrama Relacional para o pacote AtendimentoCliente apresentado na figura 5.5. Nesta figura, as chaves primrias aparecem na parte superior e as chaves transpostas so os primeiros itens da parte inferior. importante realar que, no mapeamento da hierarquia de herana Cliente, Socio e Dependente, optou-se por criar uma tabela para cada classe na hierarquia, com exceo da classe Dependente. Esta deciso decorre de, neste sistema, haver muito processamento sobre a superclasse Cliente, o que inviabilizaria uma estratgia de tabelas para classes concretas. Alm disso, como a subclasse Socio apresenta muitos atributos distintos, uma soluo de uma nica tabela para toda a hierarquia provocaria muito desperdcio de espao no banco de dados. Entretanto, como a tabela Dependente s teria a sua chave primria e a chave

transposta de seu scio, optou-se por incorporar seus atributos tabela Cliente, no tendo, portanto, uma tabela Dependente.
Cliente idoCliente: Long Integer Socio idoCliente: Long Integer idoBairro: Long Integer localtrabalho: Text(20) identidade: Text(20) cpf: Long Integer rua: Text(40) numero: Text(10) complemento: Text(10) Reserva idoReserva: Text(20) Bairro idoBairro: Long Integer idoTitulo: Long Integer idoCliente: Long Integer dataHora: Date/Time estado: Text(20) idoSocio: Long Integer numInscricao: Long Integer nome: Text(20) dtNascimento: Date/Time sexo: Text(1) Pagamento idoPagamento: Long Integer data: Date/Time valor: Currency

Cheque idoCheque: Long Integer Locacao idoLocacao: Long Integer idoPagamentoLocacao: Long Integer idoFita: Long Integer idoCliente: Long Integer idoPagamentoDevolucao: Long Integer dtLocacao: Date/Time dtDevolucaoPrevista: Date/Time dtDevolucaoEfetiva: Date/Time valorCobrado: Currency estado: Text(20) idoAgencia: Long Integer idoPagamento: Long Integer

Agencia idoAgencia: Long Integer idoBanco: Long Integer

Titulo idoTitulo: Long Integer

Fita idoFita: Long Integer

Banco idoBanco: Long Integer

Figura 5.5 Diagrama Relacional do Pacote GD_AtendimentoCliente.

6. O Pacote Utilitrio
Este pacote contm diversos outros pacotes de utilitrios, tratados a seguir. 6.1 Pacote UtilitarioBanco Este pacote contm classes para tratar aspectos gerais de manipulao de cheques, comuns a vrios sistemas, como mostra o diagrama da figura 6.1.

B anc o nom e : S tring num ero : Integer 0..* 1

A genc ia nom e : S tring num ero : Integer 1 0..*

C heque c onta : S tring num ero : S tring valor : Currenc y

Figura 6.1 O Pacote UtilitarioBanco. 6.2 Pacote UtilitarioPessoa

Este pacote contm classes para tratar aspectos gerais de pessoas fsicas e jurdicas, comuns a vrios sistemas, como mostra o diagrama da figura 6.2.
E nderec o P es s oa telefone : String 0. .1 0..1 rua : String n umer o : Int eger c ompl em ento : S tr in g 0..* CE P : Int eger 1 B airro nom e : S tring 0..* 1 Cidade nom e : S tring P es s oaJuridic a raz aoS oc ial : S tring pes s oaContato : S tring P es s oaF is ic a nom e : S tring dtN as c im ento : D ate identida de : S tring s ex o : Char 0..* 0..1 E s tado nom e : S tring s igla : S tring 0..1 1 Cpf num ero : Integer digito : Integer validar() 0. .1 P ais nom e : S tring s igla : S tr in g 0. .*

0..1 1 C npj num ero : Integer digito : Integer validar()

Figura 6.2 O Pacote UtilitarioPessoa. 6.3 Pacote UtilitarioInterfacesGraficas Este pacote contm classes para tratar aspectos gerais de interfaces grficas, comuns a vrios sistemas, como mostra o diagrama da figura 6.3.
F ram e J anela bs i c a do Java

JanCadas tro

Figura 6.3 O Pacote UtilitarioInterfacesGraficas.

6.4 Pacote UtilitarioGerenciaDados Este pacote contm classes para tratar aspectos gerais da gerncia de dados, comuns a vrios sistemas, como mostra o diagrama da figura 6.4.
F abr ic aObj eto Clas s eB as eP ers is tenc ia ido : Integer prox im oH igh : Integer prox im oLow : Integer obt erN ovo Ido() obterH igh()

Cl as seB as eS om bra ex pres s ao : S tring ex pres s aoA tualiz a : S tring c riterio : S tring tabela : S tring ordem : S tring m ontaE x pres s aoS alvar() m ontaE x pres s aoRec uperar() m ontaE x pres s aoRem over() m ontaE x pres s aoIns erir()

Figura 6.4 O Pacote UtilitarioGerenciaDados.

7. Projeto de Objetos
Uma vez definidas as classes de cada uma das componentes, deve-se desenvolver um projeto detalhado dos atributos, das associaes e das operaes que compem cada classe, e uma especificao das mensagens que conectam as classes com seus colaboradores. A seguir, apresentado o projeto detalhado da classe Locacao. A figura 7.1 mostra a interface da classe (suas caractersticas pblicas) e seus atributos, operaes e associaes (mapeadas na forma de variveis) privados. O projeto algortmico do mtodo calcularValorASerPago apresentado a seguir:
calcularValorASerPago() { Currency se (no valorCobrado; } valor = 0; locacao.existePagamento) ento valor = valor + se (locacao.emAtraso) ento valor = locacao.calcularMulta;

retornar valor;

Loc ac ao c liente : Cliente fita : F ita dtLo c ac ao : D ate dtDevoluc a oPr evis t a : D ate dtDevoluc a oEfet iva : D ate val orCobr ado : Cur ren c y es ta do : S tr ing pagam entoL oc ac ao : P agam ento pagam entoDevoluc ao : P agam ento c alc ularDtDevoluc aoP revis ta() : Date c alc ular V alo r() : F l oat criar (c l iente : Cl ie nte, fit a : F i ta, da ta : Dat e) atr ib uir DtDevol uc aoP revis ta(data : Date) atr ib uir V alor Cobrado( val o r : Curr enc y) emA t ras o( ) : B oole an pendente() : B oolean obte rCli ente() : Cliente c alc ularM ulta() : Currenc y ex is teP agam entoLoc ac a o() : B oolean c alc ular V alo rA S erP ago() : Cur re nc y

Figura 7.1 A classe Locacao.

Вам также может понравиться