Técnica de Desenvolvimento de Aplicativos - 26/03/2007

26 de Março de 2007 @ 23:12 - Joao Ortiz
Arquivado sob Sem Categoria | Link desta publicação | Enviar por e-mail

Programa Estacionamento

Caros Alunos,

Espero que a postagem de nossas aulas, esteja sendo de grande utilidade a vocês no auxílio à programação e na solução de dúvidas.

Vamos a nossa segunda aula.

Na aula de hoje, trabalhamos com alteração dinâmica das propriedades dos objetos. Desenvolvemos então, uma aplicação que controla a entrada e saída de veículos de um estacionamento. Para melhor entendimento, vamos a parte contextual de nosso programa.

- Um programa que administre a entrada e saída de veículos controlado apenas por 2 botões: “+” (Adicionar Veículo), “-” Remover Veículo. O sistema tem, inicialmente, seus controles bloqueados e estes só são ativados por um botão “Abrir Estacionamento”. A ativação consiste em desbloquear os botões “+” e “-”, permitindo que carros entrem e saiam do estacionamento.
Algumas informações devem estar disponíveis em tela, como o número de vagas disponíveis e o número de vagas ocupadas.
Temos ainda um botão “Fechar Estacionamento”, que desativa todos os controles, e deixa o programa em seu estado inicial, estando apenas ativado o botão “Abrir Estacionamento”.

Importante:

  • O estacionamento tem vaga para 500 carros.
  • Ao adicionar um novo carro, deve-se verificar se há vagas disponíveis.
  • Ao retirar um carro, deve-se certificar se existem carros no estacionamento.
  • O estacionamento não é 24h, portanto não se pode fechá-lo, com carros em seu interior.

Vamos então à tela do nosso aplicativo:

Interface da aplicação

Por enquanto estamos apenas trabalhando com os objetos mais simples do Visual Basic: Labels, TextBox, CommandButton.
Então vamos nessa!
Monte a sua interface baseada na IHM descrita acima não esquecendo sempre de alterar as propriedades necessárias ou desejadas.
As palavras coloridas em torno da figura, são os nomes de cada objeto. Observe que não atribuímos nomes a todos os objetos do formulário, mas somente aos que iremos usar na programação. Sintam-se livres para nomear os objetos e desenvolver a interface ok?!

E agora? Por onde começamos?
Vamos reler alguns pontos do contexto do aplicativo.

“O sistema tem, inicialmente, seus controles bloqueados e estes só são ativados por um botão ‘Abrir Estacionamento’.”

“Inicialmente” - Essa é uma palavra-chave para sabermos por onde começar. Temos então que desativar os objetos quando o programa for carregado.
Já tem idéia em qual objeto iremos programar?

Temos que utilizar o evento Load do Formulário. Vamos começar?

A propriedade que define se o objeto está ativo é a propriedade Enabled. Recebe um valor booleano True ou False. True, define que o objeto está ativado e False, desativa o objeto.

Private Sub Form_Load()

cmdClose.Enabled = False
txtOcupadas.Enabled = False
txtDisp.Enabled = False
cmdAdd.Enabled = False
cmdRem.Enabled = False

End Sub

Controles desativados, ao iniciar nosso programa, a interface é vista dessa forma:

Interface

Partindo para o próximo passo, e ainda utilizando a idéia anterior, temos:

“O sistema tem, inicialmente, seus controles bloqueados e estes só são ativados por um botão ‘Abrir Estacionamento’.”

Temos então que dar ação ao botão Abrir Estacionamento, este que será responsável por ativar os demais controles.
Além de ativar os controles, vamos aperfeiçoar o nosso programa, e preencher automaticamente as Caixas de Texto “Vagas Ocupadas” e “Vagas Disponíveis” com seus valores iniciais: 0 e 500, respectivamente.

Private Sub cmdOpen_Click()
cmdClose.Enabled = True
cmdAdd.Enabled = True
cmdRem.Enabled = True
cmdOpen.Enabled = False

txtOcupadas.Text = 0
txtDisp.Text = 500
End Sub

Enfim, terminamos a primeira parte de nosso programa. A segunda etapa é dar ação aos botões “+” e “-”, mas antes disso, precisamos saber ao certo, a real utilidade desses botões e algumas regras. Voltamos ao contexto:

“Algumas informações devem estar disponíveis em tela, como o número de vagas disponíveis e o número de vagas ocupadas. (…) O estacionamento tem vaga para 500 carros. Ao adicionar um novo carro, deve-se verificar se há vagas disponíveis. Ao retirar um carro, deve-se certificar se existem carros no estacionamento.”

Informações disponíveis em tela: Entenderam o porquê que iniciamos as caixas com valores 0 e 500? A idéia é atualizar os valores desses campos em tempo real, quando um carro chegar, ou sair do estacionamento.
Porém, há alguma limitações: Para adicionar um novo carro, é necessário verificar se o estacionamento não está lotado. Em outras palavras, só é possível adicionar um novo carro, SE O NÚMERO DE VAGAS OCUPADAS FOR INFERIOR A 500.

É aí então que entra a nossa famos estrutura de decisão if. Observe a idéia abaixo:

Se vagasOcupadas >= 500 então
exibir “Não há mais vagas disponíveis!”
Se não
vagasOcupadas = vagasOcupadas + 1
vagasDisponiveis = vagasDisponiveis - 1
Fim se

Entenderam mais ou menos a lógica? Vamos então às ações do botão cmdAdd:

Private Sub cmdAdd_Click()

If txtOcupadas.Text >= 500 Then
MsgBox “Não há mais vagas disponíveis!”, vbCritical, “Ortiz Park”
Exit Sub
Else
txtOcupadas.Text = txtOcupadas.Text + 1
txtDisp.Text = txtDisp.Text - 1
End If

End Sub

Explicação:

Analisando a codificação acima, verificamos se o número de vagas ocupadas é igual ou superior a 500. Caso isso seja verdadeiro, mandamos a mensagem na tela: “Não há mais vagas disponíveis!”. (Nenhuma dúvida em relação à msgbox não é?).
Um novo comando aparece nesse bloco: EXIT SUB. Esse comando, ao ser executado, faz com que a sequência da rotina pertencente ao evento atual, deixe de ser executada. Utilizando a linguagem de nosso programa, dizemos que ele manda a mensagem na tela, e não faz mais nada.

E se o número de vagas for inferior a 500? (Ou seja, caso contrário - ELSE)
Então poderemos adicionar um veículo ao estacionamento sem problemas, somando 1, ao valor encontrado em vagas ocupadas, e subtraindo 1 das vagas disponíveis. É isso que fizemos nessas linhas de código:

txtOcupadas.Text = txtOcupadas.Text + 1
txtDisp.Text = txtDisp.Text - 1

Partimos então agora, para a programação no Botão CmdRem, responsável por tirar veículos do estacionamento.
Se pararmos pra pensar, da mesma forma que não podemos adicionar um carro ao estacionamento lotado, também não podemos tirar o carro de um estacionamento vazio. Se você acha q também teremos uma estrutura de decisão IF nessa rotina, está totalmente correto. Vamos então à lógica:

Se vagasOcupadas <= 0 então
exibir "Não há mais carros no estacionamento!"
Se não
vagasOcupadas = vagasOcupadas - 1
vagasDisponiveis = vagasDisponiveis + 1

Fim se

Passando a lógica para a programação do botão "Remover", temos:

Private Sub cmdRem_Click()

If txtOcupadas.Text <= 0 Then
MsgBox "Não há mais carros no estacionamento!", vbCritical, "Ortiz Park"
Exit Sub
Else
txtOcupadas.Text = txtOcupadas.Text - 1
txtDisp.Text = txtDisp.Text + 1
End If

End Sub

Observe a imagem abaixo e veja como ficou. Analise os valores das caixas de texto txtOcupadas e txtDisp.

Interfaces

Terminamos? Não, mas estamos quase lá. Basta agora fazermos as ações do botão “Fechar Estacionamento”.
A idéia é fazer com que, ao clicar nesse botão, o programa volte ao seu estado inicial, com os campos desativados, afinal, podemos dizer que é um botão de fechamento e “travamento” do aplicativo.
A codificação utilizada é parecida com a rotina Form_load, porém apagar os valores contidos nas caixas de texto ok?
Mais um detalhe:

  • O estacionamento não é 24h, portanto não se pode fechá-lo, com carros em seu interior.

Sendo assim, não podemos fechar o estacionamento com carros em seu interior. Se você acha que teremos que usar outra estrutura de decisão IF, acertou de novo. Nesse caso é simples:

Private Sub cmdClose_Click()

If txtOcupadas.Text > 0 Then
MsgBox “Ainda existem carros no estacionamento!”, vbCritical, “Ortiz Park”
Exit Sub
Else
txtOcupadas.Text = “”
txtDisp.Text = “”
cmdClose.Enabled = False
txtOcupadas.Enabled = False
txtDisp.Enabled = False
cmdAdd.Enabled = False
cmdRem.Enabled = False
cmdOpen.Enabled = True
End If

End Sub

Agora sim, finalmente terminamos o nosso aplicativo. Observe que já se trata de uma aplicação funcional, e pode, de certa forma, ser aplicada a algum ambiente. É assim que iremos trabalhar em nossa disciplina, criando aplicativos funcionais.

Qualquer dúvida, não hesitem em questionar! Até a próxima aula.

Um grande abraço a todos!

Ainda sem comentários »

RSS de comentários deste artigo. URI para link desta publicação:

Deixe um comentário

Você deve estar conectado para postar um comentário.


Hits para esta publicação: 571

Educandário Santa Rita de Cássia | http://blog.santarita.g12.br