segunda-feira, 3 de junho de 2013

Modulo 11

Programação orientada a objectos avançados


Criar uma nova classe
  1. No menu Project , clique em Add Class.Na caixa de diálogo Add New Item , digite class1.vb na caixa de texto nome e, em seguida, clique em Abrir.

    Observação No Visual Studio 2005, clique em Adicionar.Examine o código para a nova classe na janela de visualização de código.
Definir campos e construtoresAdicione dois campos particulares à classe class1 da seguinte forma:
2.  Private Name As String
3.  Private Stadium As String
                                Adicionar dois campos particulares mais e fornecer valores de campo inicial da seguinte maneira:
5.  Private Wins As Integer = 0
6.  Private Defeats As Integer = 0
                                Adicione um construtor público para a classe inicializar o nome da equipe e o Estádio:
8.  Public Sub New(ByVal Nm As String, ByVal St As String)
9.     Name = Nm
10.   Stadium = 
St
11.End Sub



Propriedades

O modo mais simples de adicionar uma propriedade a uma classe é criando uma variável dentro da classe e declarando-a como pública. Exemplo: Public variável as string. Desta forma poderemos atribuir valores à variável em qualquer parte do código da aplicação. Mas este não é o modo mais correto e usual de se criar uma propriedade. Costumamos querer que as propriedades de nossos objetos sejam acessadas de modo controlado pelo próprio objeto. Isto é, queremos poder definir, por exemplo, que uma propriedade é somente para leitura ou ter a garantia de que os valores atribuídos a ela se situam dentro de uma determinada faixa. A forma que usamos para conseguir isto e a criação dos procedimentos de propriedade. Procedimentos de propriedade são procedimentos usados para se ter acesso ao valor de uma variável interna à classe usada para guardar o valor de uma propriedade. Os procedimentos de propriedade se dividem em dois tipos: procedimentos de leitura do valor da propriedade e procedimentos de atribuição de valor à propriedade. Nos procedimentos de leitura inserimos o código que retorna o valor da variável usada para guardar o valor da propriedade no interior da classe. Nos procedimentos de atribuição de valor inserimos o código responsável pela atribuição de valor e - se for o caso - validação do valor que se está tentando atribuir à propriedade. Caso queiramos que uma propriedade seja apenas de leitura, não criaremos procedimentos de atribuição de valores a ela. Qualquer tentativa de atribuir valor a uma propriedade que não tenha uma procedimento para atribuição gerará uma erro.
A criação dos procedimentos de propriedades seguem determinadas regras. Os procedimentos usados para retornar o valor da propriedade têm o seu nome composto pela palavra Get seguida de um caracter de sublinhado ( _ ) e pelo nome da propriedade. Estes procedimentos retornam um valor do tipo de dados da variável que armazena o valor da propriedade. Os procedimentos de atribuição têm seus nomes formados pela palavra Let ou Set seguida de um caractere de sublinhado ( _ ) e do nome da propriedade. Estes procedimentos recebem como argumento o novo valor que se quer atribuir à propriedade. A seguir exibimos a sintaxe de criação desses procedimentos.


Métodos

Os métodos nada mais são do que os procedimentos e funções públicos de uma classe. Para chamar um método de fora do código da classe, basta usar o nome do objeto seguido de um ponto e do nome do método. Exemplo: Form1.Show; esta instrução faz com que o método Show do objeto Form1 seja executado.
Os métodos de uma classe têm acesso às variáveis privadas da classe.

Eventos
Como já foi dito acima, eventos são procedimentos chamados por um objeto em um outro objeto que o contém como resposta a um acontecimento que lhe ocorre. Os eventos podem ser disparados pelo próprio objeto em alguma parte do seu código utilizando-se da instrução RaiseEvent. Pode-se também utilizar o artifício de criar um método só para disparar um evento dentro do objeto. Um método assim seria chamado de fora do objeto para disparar o evento no seu interior.
Para definir um evento dentro de uma classe não se cria um procedimento de evento dentro do módulo da classe. O que se faz é usar a instrução Event para atribuir um nome ao evento e definir sua lista de argumentos, ou seja, as informações que serão passadas ao procedimento de tratamento do evento. Este procedimento sim será codificado dentro do objeto que contenha o objeto disparador do evento caso se queira tratar o evento. Veja como é a sintaxe da instrução Event.


sexta-feira, 5 de abril de 2013

Modulo 10

Programação Orientada a Objectos


Código respectivo ao botão calcular média
Private Sub cmdMedia_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdMedia.Click
        Dim notaM, soma As Integer
        Dim nome As String
        '----------Nomes--------'
        Nomes(0) = Textnome1.Text
        Nomes(1) = Textnome2.Text
        Nomes(2) = Textnome3.Text
        Nomes(3) = Textnome4.Text
        Nomes(4) = Textnome5.Text
        '----------Notas---------'
        Notas(0) = Textvalor1.Text
        Notas(1) = Textvalor2.Text
        Notas(2) = Textvalor3.Text
        Notas(3) = Textvalor4.Text
        Notas(4) = Textvalor5.Text
        '--------Média-----------'
        For cont = 0 To 4
            soma = soma + Notas(cont)
        Next
        lbMedia.Text = soma / 5
        notaM = Notas(0)
        nome = Nomes(0)
        '---------Melhor Nota---------'
        For cont = 1 To 4
            If Notas(cont) > notaM Then
                notaM = Notas(cont)
                nome = Nomes(cont)
            End If
        Next
        '-----------------------------------------Mensagem----------------------------------------'
        MsgBox("O " & nome & " teve a melhor nota: " & notaM, MsgBoxStyle.Information, "Nota Maior")
        
    End Sub
End Class
 Download do Programa Vectores

sexta-feira, 1 de março de 2013

Modulo 9

Introdução de Programação  Orientada a Objectos

Funcionamento do Programa

Modulo 8

     

Modulo 7


Ficheiros


Program Veiculo;Type Estacionamento = record
marca:string;


matricula:string;

tipo: string[20];
tempo: integer;
end;
Var fich: file of Estacionamento;
auto: Estacionamento;
escolha1: integer;
escolha:char;
valor:real;
Procedure criar;
begin
Assign(fich,'Automoveis.txt');
Rewrite(fich);
Close(fich);
end;
Procedure ler;
begin
Reset(fich);
seek(fich, filesize(fich));
Write('Introduza a marca do ve¡culo');
Readln(auto.marca);
Write('Introduza a matr¡cula');
readln(auto.matricula);
Write('Introduza o tempo de estacionamento');
Readln(auto.tempo);
Writeln('Introduza o tipo de veiculo');
readln(auto.tipo);
write(fich,auto);
Close(fich);
end;
Procedure Apresentar;
Var apre:string;
maior, soma:integer;
media:real;

begin
reset(fich);
while not eof(fich) do
begin
read(fich,auto);
write('Marca:',auto.marca);
write('Matricula:',auto.matricula);
write('Tempo de estacionamento:',auto.tempo);
write('Tipo de veiculo:',auto.tipo);
end;
write('Tempo m‚dio=',soma/filesize(fich));
maior:=0;
while not eof (fich) do
begin
if (auto.tempo>maior) then
begin
maior:=auto.tempo;
apre:=auto.matricula;
end;
end;
write('A matricula',apre,' foi quem esteve mais tempo no parque');
close(fich);
end;
Procedure Limpar;
begin
Assign(fich,'Automoveis.txt');
Rewrite(fich);
Close(fich);
end;
Procedure Alterar;
var escolha:char;
mat:string;
begin
write('Pretende alterar algum dado? 
(S/N)');
readln(escolha);
if (escolha='s') then
begin
reset(fich);
read(fich,auto);
while not eof (fich) do
begin
write('Introduza a matr¡cula cujo vai ser alterada');
read(mat);
if mat=auto.matricula then
begin
write('Pretende alterar a matricula? (S/N)');
readln(escolha);
if (escolha='s') then
begin
write('Matricula:');
readln(auto.matricula);
end;
write('Alterar Marca? 
(s/N)');
readln(escolha);
if (escolha='s') then
begin
write('Marca:');
readln(auto.marca);
end;
write('Alterar tempo de estacionamento? (S/N)');
readln(escolha);
if (escolha='s') then
begin
write('Tempo de estacionamento:');
readln(auto.tempo);
end;
write('Alterar tipo? (S/N)');
readln(escolha);
if (escolha='s') then
begin
write('Tipo de veiculo:');
readln(auto.tipo);
end;
end;
end;
end;
write(fich,auto);
close(fich);
end;
Procedure valor_pago;
var mt, lg, ps:real;
begin
reset(fich);
while not eof (fich) do
begin
read(fich,auto);
write('Matricula:',auto.matricula);
write('Tipo:',auto.tipo);
write('Marca:',auto.marca);
write('Tempo:',auto.tempo);
If auto.tipo='moto' then
valor:= 0.04*auto.tempo*1.2;
If auto.tipo='pesado' then
valor:= 0.08*auto.tempo*1.2;
If auto.tipo='ligeiro' then
valor:= 0.1*auto.tempo*1.2;
Writeln(auto.matricula,' ',auto.tempo,' ',valor);
end;
end;
Begin //Programa Principal
repeat
writeln('1 - Para criar');
writeln('2 - Para ler');
writeln('3 - Para apresentar');
writeln('4 - Para Alterar');
writeln('5 - Para o valor pago');
writeln('6 - Para limpar');
writeln('7 - Para sair');
readln(escolha);
case escolha1 of
1:criar;
2:ler;
3:apresentar;
4:alterar;
5:valor_pago;
6:limpar;
end;
until (escolha1=7);
End.

Contador de visitas