![]() |
António Roberto Software |
|
Linguagens de Programação
2
|
3º ano da
Licenciatura em Informática de Gestão
|
Aula de 19 de Novembro de 2003 Solução da versão 2 e versão 3 dos exercícios WinTelemovel
![]()
- A classe Telemovel está desenhada para se servir de um objecto da classe genérica Tarifario.
- A seguinte linha exemplifica o cálculo do custo de uma chamada:
- m_Tarifario.CustoChamada(...);
Um objecto da classe Telemovel utilizará sempre um objecto instanciado de uma classe mais específica da família Tarifario, como por exemplo a classe Smile.
O método CustoChamada invocado não será o da classe genérica Tarifario, mas sim o da classe específica Smile
WinTelemovel versão 3
- As regras de carregamento dos telemóveis variam de tarifário para tarifário.
As regras de carregamento definem os valores mínimos de carregamento e os prazos de carregamento.
Na classe abstracta Tarifario foi adicionada a propriedade PrazoCarregamento e o método abstracto Carregar.
- O método Carregar é redefinido em cada classe derivada, de acordo com as regras específicas de cada tarifário
O método Carregar valida os valores do carregamento e altera os prazos de carregamento
Na classe Telemovel foi adicionado um método Carregar
public void Carregar ( double ValorCarregamento )
{
try
{
m_Tarifario.Carregar(ValorCarregamento) //Código genérico
m_Saldo = m_Saldo + ValorCarregamento;
if ( SaldoReposto != null ) SaldoReposto();
}
catch ( Exception ex )
{
// Redisparo da excepção para ser tratada no cliente
throw ex;
}
}No método Ligar da classe Telemovel é testado se o Prazo de Carregamento foi ultrapassado:
if ( DateTime.Now > m_Tarifario.PrazoCarregamento )
throw new InvalidOperationException("Prazo Excedido");
Demonstração da Extensibilidade da Arquitectura da Solução WinTelemovel
Uma vez que a dependência da classe Telemovel em relação à família de classes Tarifario é genérica, não é necessário alterar a classe Telemovel para adicionar novos tarifários à aplicação.
Para tal, basta derivar uma nova classe de Tarifario e acrescentar umas linhas de código no cliente CliTelemovel
Demonstração com a adição do tarifário Boomerang MegaTotal
|
Nome da Solução |
Tipo |
Código Fonte |
|
WinTelemovel |
Windows Application |
WinTelemovel (versão3.2) |