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:
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