 |
António Roberto
Software |
|
|
Linguagens
de Programação 1
|
2º
ano da Licenciatura em Informática de Gestão
|
Aulas de 29 de
Novembro e 2 de Dezembro de 2002
Descrição da
solução
do exercício das aulas
anteriores
-
Implementação
da classe Parque com um array
- utilização
de um array para registar a data e a hora de cada entrada no parque
private
DateTime[] Entradas;

- criação do array no construtor, com a
dimensão da Lotação do parque
- Entradas =
new
DateTime[Lotacao];

Tipos Valor e
Tipos Referência
(Value Type
and Reference Type)
- os tipos int,
bool, double são
exemplos de tipos valor
- Ex:
int i;

- os tipos array,
string são exemplos de tipos referência
- os tipos criados por nós até agora nas
aulas - Aluno, Conta, Parque - são tipos referência, porque foram criados com a palavra
class. Ex:
- Parque Parq;
- Parq = new
Parque(15);

- podemos criar tipos valor utilizando em
vez de class a palavra struct. Se
o tipo Parque tivesse sido implementado com
struct Parque:
- Parque Parq;
- Parq = new
Parque(15);

DateTime
é um tipo valor
- significa que os elementos do array
Entradas não são referências mas sim valores do tipo DateTime
- os elementos são inicializados com o valor
DateTime.MinValue (01-01-0001 0:00:00)
public bool Entrar (
out string
Talao )
- regista-se a data e a hora de entrada no
primeiro elemento livre do array
- Entradas[IdxElementoLivre]=
DateTime.Now;
- encapsula-se no Talao o índice onde foi registada a entrada
- Talao = IdxElementoLivre.ToString()
;
public bool Sair
( string Talao ,
out
double ValorPagar )
- desencapsula-se do Talao o índice do elemento onde está registada a hora de
entrada
- IdxEntrada = Convert.ToInt32(Talao);
calcula o tempo de estacionamento
- TempoParqueamento =
DateTime.Now.Subtract( Entradas[IdxEntrada]);
- TempoParquemento é do tipo TimeSpan

calcula o valor a pagar
- // Simulamos uma hora em 6 segundos
ValorPagar = ( TempoParqueamento.Seconds/6) *PrecoHora;
indica que o elemento do array está livre
- Entradas[IdxEntrada]= RegistoLivre;
public
string Ocupacao
{
get
{
// Sem o cast para double, faz a
divisão inteira de dois números inteiros
return
string.Format("{0:P1}", (double)
NrCarros/ Lotacao);
}
}
Solução para
download na página das aulas anteriores