Documente Academic
Documente Profesional
Documente Cultură
PARTE I – Estruturado 3
Introdução 3
Criação da Interface 3
Programando 4
Criação da Classe 5
Criação da Interface 7
Criação da Classe 7
Entendendo a modificação 10
2
PARTE I – Estruturado
Introdução
Este laboratório tem como objetivo construir um simples sistema de
gerenciamento de porta, de forma estruturada, que será convertido para
POO posteriormente.
Criação da Interface
Para criar a interface deste exercício, primeiramente adicione as seguintes
imagens ao projeto:
É possível adicionar alguns arquivos externos ao projeto para facilitar o seu uso.
São os Resources. Para adicionar um, dê um duplo clique em “Properties” no
Solution Explorer. Depois que aparecerem as propriedades do seu projeto,
clique na aba Resources, à esquerda e adicione as imagens (Fig 2):
Agora as imagens fazem parte do seu projeto. Para acessá-las, basta acessar
o namespace GerenciamentoDePortas.Properties.Resources e todos os
resources que você acabou de adicionar estarão lá em forma de imagem.
Para facilitar o acesso, importe o namespace
GerenciamentoDePortas.Properties, assim o acesso ficará mais fácil.
3
Fig 3 – Interface do projeto
1. picPorta – PictureBox
a. Image: GerenciamentoDePortas.Properties.Resources.opened
b. SizeMode: StretchImage
Programando
Para gerenciar o estado da porta, crie duas variáveis: “aberta” e “trancada”
do tipo Bool. A porta deverá iniciar aberta e destrancada. Ou seja, no evento
Load do formulário, sete a variável “aberta” como True e a “trancada” como
False.
4
}
Introdução
Este laboratório pretende melhorar o exercício da porta começado
anteriormente, convertendo-o de uma forma simples para OO. A interface
será a mesma.
Criação da Classe
Essa versão do sistema terá apenas uma classe: Porta. A classe Porta será
responsável por gerenciar a porta, contendo as variáveis “aberta” e
“trancada” dentro dela, expondo somente os métodos Abrir(), Fechar(),
Trancar() e Destrancar().
5
referência. No construtor da classe Porta, é necessário instanciar o objeto
_controleImagem com esse controle passado por referência.
Nota (1) – Aqui você está criando um objeto da classe Porta. Você está
CRIANDO, mas NÃO está INSTANCIANDO.
Nota (2) – Agora sim você está INSTANCIANDO o objeto criado. Como a
classe Porta exige obrigatoriamente um objeto do tipo PictureBox, você deve
passar a PictureBox que está utilizando para mostrar as imagens.
6
PARTE III – Herança
Introdução
Este laboratório pretende melhorar o exercício da porta começado
anteriormente, colocando em prática os conhecimentos de herança. Será
feito o gerenciamento de uma porta e de uma porta de cofre ao mesmo
tempo. A peculiaridade da porta de cofre é que ela já começa fechada, e
para destrancá-la, é necessária uma senha.
Criação da Interface
A interface é parecida com a do exercício anterior, mas serão criados alguns
outros controles para gerenciar a porta de cofre (Fig 5).
Criação da Classe
Como descrito na introdução, agora criaremos uma porta de cofre. No mundo
real, uma porta de cofre tem todas as características de uma porta comum. A
única diferença é que para destrancá-la, é necessário ter a mesma senha que
foi inserida na tranca quando o cofre foi criado. Então a melhor forma de criar
uma classe PortaDeCofre seria herdando da classe Porta.
7
Fig 6 – Diagrama de Classe
8
Crie um campo privado para guardar a senha passada no construtor. Como a
porta do cofre já começa fechada e trancada, indique isso também no
construtor. Se não conseguir, altere a visibilidade dos campos “aberta” e
“trancada” na classe Porta para que sejam visíveis em todas as classes filhas.
this.Destrancar("");
9
PARTE IV – Tratando Exceções
Introdução
Este laboratório será a versão final do gerenciador de portas. Ele mostrará
como implementar o tratamento de erros e como criar erros personalizados.
Entendendo a modificação
A evolução desta etapa será criar erros personalizados para melhorar a
interface com o usuário. Parece ser estranho, mas no Visual Studio 2005 é muito
simples e útil.
Você pode fazer uma exceção personalizada também. Para fazê-la, crie uma
nova classe com o nome PortaAbertaException e faça a herança de
Exception. Agora crie um construtor que chame o construtor da classe base,
passando simplesmente a mensagem de erro como parâmetro (algo como “A
porta já está aberta”).
Pronto. A sua exceção personalizada está criada. Para dispará-la faça assim
em alguma outra classe:
10
Fig 7 – Mensagem de erro
try
{
throw new PortaAbertaException();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
11
else if (this._trancada)
throw new PortaTrancadaException();
//O resto do código...
}
MessageBox.Show(ex.Message);
}
}
Agora é possível mostrar ao usuário quando a ação desejada não ocorreu e o
porquê disso. Crie as seguintes classes: (todas elas serão filhas da classe
Exception e serão as exceções personalizadas do sistema)
1. Classe PortaFechadaException
2. Classe PortaAbertaException
3. Classe PortaTrancadaException
4. Classe PortaDestrancadaException
5. Classe PortaSenhaInvalidaException
12