From:                              owner-einf@dei.isep.ipp.pt on behalf of Paulo Gandra de Sousa [psousa@dei.isep.ipp.pt]

Sent:                               quinta-feira, 10 de Maio de 2007 17:36

To:                                   einf@dei.isep.ipp.pt

Subject:                          [einf] material didático #6

 

Boa tarde,

Nesta sessão vamos continuar a nossa incursão pela aplicação exemplo “PoEAA workbench” e olhar para a implementação dos padrões Domain Model + Active Record e Domain Model + Data Mapper

·       DM + AR

·       DM + DM

·       Download do código fonte da aplicação

Esta aplicação pode ter diversas melhorias para resolver alguns problemas comuns nas aplicações empresariais, nomeadamente:

1.      tratamento de concorrência

2.      suporte a múltiplas BD

3.      extensibilidade/flexibilidade

Podem consultar a resolução do exercico #4 em http://www.dei.isep.ipp.pt/~psousa/aulas/EINF/WinShopTM_TDG_full.zip

Exercício #5 : pretende-se a criação de um componente para gestão de entidades e moradas. como requisito foi especificado que uma entidade pode ter mais que uma morada e que as moradas são conceitos autónomos podendo não estar associadas a nenhuma entidade. o sistema deve permitir gerir entidades do tipo indivíduo ou organização (ex., empresa).
Definiu-se a seguinte
interface de negócio para o componente (esta interface corresponde aos requisitos da aplicação; os métodos a criar nas diversas classes que implementar no seu domain model devem dar resposta a esses requisitos, mas esta interface não é vinculativa):

        interface IEntityManagement

        {

                // funcionalidades básicas

                int AddPerson(PersonData p);

                int AddOrganization(OrganizationData o);

                EntityData GetEntity(int key);

                IList<PersonData> GetPersons(string nameFilter);

                IList<OrganizationData> GetOrganizations(string nameFilter);

                int AddAddress(AddressData a, int? keyToEntity);

                AddressData GetAddress(int key);       

                IList<AddressData> GetAddressesForEntity(int keyEntity);

                void AttachAddressToEntity(int keyAddress, int keyEntity, bool isPrimary);

               

                // pontos de contactos

                int AttachContactPointToEntity(int keyEntity, ContactPointData c, ContactPreferenceData pref);

                int SetContactPreference(int keyEntity, int keyContactPoint, ContactPreferenceData pref);

                IList<ContactPointData> GetContactPointsForEntity(int keyEntity);

                IList<ContactPointData> GetContactPointsAccordingToPreference(int keyEntity, DayOfWeek p1, TimeOfDay p2);

                // outras funcionalidades

                EntityData GetEntity(string nif);

                IList<EntityData> GetEntities(string nameFilter);

                IList<AddressData> GetAddresses(string streetFilter, string localFilter);

                void SetPrimaryAddress(int keyEntity, int keyAddress);         

        }

1.      implemente as funcionalidades básicas do sistema usando os padrões Domain Model e Active Record. pode usar como base o seguinte projecto e base de dados.

2.      bónus: estenda o sistema por forma a suportar múltiplos pontos de contacto (ex., telefone casa, telefone emprego, telemóvel, correio electrónico) para uma entidade.

3.      bónus: implemente as restantes funcionalidades

Relembro que podem (devem) tirar dúvidas sobre a matéria e os exercicios utilizando o email einf@dei.isep.ipp.pt ou psousa@dei.isep.ipp.pt

Cumprimentos,

Paulo Gandra de Sousa