terça-feira, 11 de junho de 2013

os construtores tem a mesma função que as variáveis , fazem as mesma operações   para os objectos.
 O construtor é uma rotina que é invocada quando uma instância de uma classe é criada.  esta rotina precisa ter o nome New para identificar o construtor.

aqui fica o exemplo :

Public Class Aluno
   ......
   Public Sub New()
        _Datamatricula = DateTime.Now
   End Sub

End Class

este construtor esta na forma mais simples .
os construtores podem também utilizar parâmetros

exemplo:

Public Class Aluno
   ......
   Public Sub New(ByVal Nome As String , ByVal DataNascimento As String ,ByVal DataMatricula As Date)
       _Nome = Nome
       _Datamatricula = DataMatricula
       _DataNascimento = DataNascimento
   End Sub

End Class  


ainda podias criar mais construtores com os mesmo campos que nao havia problema o que tinha que mudar era os parâmetros de cada um deles 

exemplo:

Public Class Aluno
   ......
   Public Sub New()
       _Datamatricula = DateTime.Now
   End Sub

   Public Sub New(ByVal Nome As String , ByVal DataNascimento As Date ,ByVal DataMatricula As Date)
       _Nome = Nome
       _Datamatricula = DataMatricula
       _DataNascimento = DataNascimento
   End Sub

   Public Sub New(ByVal Nome As String , ByVal Idade As Date )
       _Nome = Nome
       _DataNascimento = (DateTime.Now - Idade)
   End Sub

   Public Sub New(ByVal Nome As String , ByVal Endereco As String)
       _Nome = Nome
       _Endereco = Endereco
   End Sub

End Class
feito isto so falta configurar o programa em si tendo em conta as class e os menus criados

com este trabalho fiquei a entender melhor as varias formas de criar class e as interligar no mesmo programa 

depois disso feito podemos declarar class derivadas da principal (neste caso funcionários) 





















feito isto podemos editar o form e fazer os menus
em primeiro lugar criamos uma class no visual basic




 em seguida declaramos todas as variáveis da class principal e as suas propriedades  

modulo 11 ( introduçao)

neste modulo abordamos a criaçao de class , class derivadas e class com construtores

sexta-feira, 1 de março de 2013


Program Fila;
Type TipoNo=record
       info:string;
       prox:^TipoNo;
   end;
Var Fr_Fila:^TipoNo;
       Cd_Fila:^TipoNo;
       Px:^TipoNo;
       op:char;

Procedure inserir;
Begin
  new(Px);
  write('Introduza o nome a inserir!');
  read(Px^.info);
  Px^.prox:=nil;
  if (Fr_Fila=nil) then
   Fr_fila:=px;
  else
   Cd_fila^.prox:=px;
   Cd_fila:=Px;
End;

Procedure percorrer;
Begin
  Px:=Fr_fila;
  if (Px=nil) then
   writeln('Dado encontrado: ',Px^.info);
   Px:=Px^.prox;
  end;

Procedure remover;
Begin
  if Fr_fila=nil then
   writeln('Fila Vazia');
  else
   begin
    Px:=Fr_fila;
    writeln('Elemento removido: ',Px^.info);
    Fr_fila:=Fr_fila^.prox;
   end;
  if Fr_fila=nil then
   Cd_fila:=nil;
  dispose(Px);
 end;
End;

Begin
  Fr_fila:=nil;
  Cd_fila:=nil;
  repeat
  writeln('******Menu*******');
  writeln('1 - Novo dado'); 
  writeln('2 - Mostrar dados');
  writeln('3 - Apagar dado');
  writeln('0 - Sair');
  read(escolha);
  case escolha of
   '1':inserir;
   '2':percorrer;
   '3':remover;
   '0':writeln('Fechar Programa');
  end;
 until(escolha='0');
End.

Program Hospital;
type hosp=record
        ndoente:integer;
        nome:string;
 morada:string;
 estado:string;
 nss:string;
        tconsulta:string;
        data:string;
        reforma:string;
end;
var fich: file of hosp;
 a,op:integer;
 dat:string;
        paciente:hosp;
        custo:real;
procedure criar_ficheiro;
begin
 assign(fich,'Hospital.dat');
 rewrite(fich);
        close(fich);
end;
procedure dados;
begin
 reset(fich);
 seek(fich, filesize(fich));
 write('N. do paciente (4 digitos) -->');
 Readln(paciente.ndoente);
        write('Nome do paciente   -->');
 Readln(paciente.nome);
 Write('Morada             -->');
 readln(paciente.morada);
        Repeat
                writeln('Qual o estado civil?');
                writeln('1-Casado');
                writeln('2-Solteiro');
                writeln('3-Viuvo');
                writeln('4-Divorciado');
                Readln(a);
                If a=1 Then paciente.estado:='Casado';
                If a=2 Then paciente.estado:='Solteiro';
                If a=3 Then paciente.estado:='Vi£vo';
                If a=4 Then paciente.estado:='Divorciado';
        until ((a=1) or (a=2) or (a=3) or (a=4));
        write('Numero da Seguran‡a Social (4 digitos) -->');
 Readln(paciente.nss);
        Repeat
                writeln('Qual o tipo de consulta?');
                writeln('1-Urgencia');
                writeln('2-Marcada');
                Readln(a);
                If a=1 Then paciente.tconsulta:='Urgencia';
                If a=2 Then paciente.tconsulta:='Marcada';
        until ((a=1) or (a=2));
        write('Data da consulta -->');
 Readln(paciente.data);
        Repeat
                writeln('Reformado?');
                writeln('1-Sim');
                writeln(,'2-NÆo');
                Readln(a);
                If a=1 Then paciente.reforma:='Sim';
                If a=2 Then paciente.reforma:='NÆo';
        until ((a=1) or (a=2));
 write(fich,paciente);
 close(fich);
end;
procedure listar;
begin
 reset(fich);
        If filesize(fich)=0 then
        Write('NÆo h  consultas marcadas')
        Else
        Begin
        Writeln('N de SS', '==','Nome','==','Morada','==','Estado','==','Tipo de Consulta','==',Data');
        while not eof (fich) do
  begin
   read(fich,paciente);
          Writeln(paciente.nss,'          ',paciente.nome,'     ',paciente.morada,'        ',paciente.estado, '       ',paciente.tconsulta,'       ',paciente.data);
                 end;
 close(fich);
        end;
end;
Procedure consultar;
begin
 write('Introduza a data -->');
 read(dat);
        reset(fich);
        Writeln('N de SS', '==','Nome','==','Morada','==','Estado','==','Tipo de Consulta','==','Data');
        while not eof (fich) do
  begin
   read(fich,paciente);
                        if paciente.data=dat then
          Writeln(paciente.nss,'          ',paciente.nome,'     ',paciente.morada,'        ',paciente.estado, '       ',paciente.tconsulta,'        ',paciente.data);
                 end;

end;
procedure relatorio;
begin
 reset(fich);
        Writeln('N§ de SS','-----------------','Nome','-----------------','Total a Pagar');
        While not eof (fich) do
        begin
        read(fich, paciente);
        custo:=0;
 if paciente.estado='Casado' then custo:=custo+10;
        if paciente.estado='Solteiro' then custo:=custo+12;
        if paciente.estado='Vi£vo' then custo:=custo+5;
        if paciente.estado='Divorciado' then custo:=custo+5;
        if paciente.tconsulta='Urgencia' then custo:=custo+2;
        if paciente.reforma='Sim' then custo:=custo*0.8;
        Writeln(paciente.nss,'                     ',paciente.nome,'                  ',custo:4:2,'euros');
 end;
        close(fich);
end;
procedure apagar;
 begin
  rewrite(fich);
 end;
Begin
    repeat
                Writeln;
                Writeln;
  writeln('# Escolha uma das opcoes:                                                     #');
      Writeln('#             1-Criar ficheiro                                                #');
      Writeln('#             2-Introduzir dados das consultas                                #');
      writeln('#             3-Apresentar todas as consultas marcadas                        #');
      writeln('#             4-Apresentar as consultas marcadas para um determinado dia      #');
      writeln('#             5-Relat¢rio de custos das consultas                             #');
                Writeln('#             6-Apagar os pacientes da lista de consultas                     #');
      writeln('#             7-Sair                                                          #');
          readln(op);
      case op of
       1:criar_ficheiro;
       2:dados;
       3:listar;
       4:consultar;
       5:relatorio;
       6:apagar;
      end;
 until(op=7);
 End.