MÓDULO 12
    Fundamentos   Avançados
          de Programação
       Orientada por Objectos
                           Apresentação

   Pretende-se leccionar fundamentos de programação avançados
    tidos para que se possa desenvolver aplicações mais complexas.
FUNDAMENTOS AVANÇADOS DE
PROGRAMAÇÃO ORIENTADA POR
OBJECTOS
 1.
   Procedimentos e Funções
  Passagem de parâmetros por Referência
   e por Valor;
  Procedimentos e funções recursivas;


 2.
   Sintaxe de Tabelas/Arrays
  Unidimensionais
  Multidimensionais
  Dinâmicas
FUNDAMENTOS AVANÇADOS DE
PROGRAMAÇÃO ORIENTADA POR
OBJECTOS

 3.
   Classes
  Conceitos Gerais
  Criação de classes
  Reutilização de Objectos


 4.
   Módulos
  Noção de Módulo
  Utilização de Módulos
FUNDAMENTOS AVANÇADOS DE
PROGRAMAÇÃO ORIENTADA POR
OBJECTOS


 5.
   Ficheiros
  Leitura e Escrita de ficheiros
   sequenciais
  Ficheiros de Acesso Aleatório
FUNDAMENTOS AVANÇADOS DE
PROGRAMAÇÃO ORIENTADA POR
OBJECTOS


                  2. Objectivos de Aprendizagem

   Definir e utilizar Procedimentos e Funções
   “Utilizar parâmetros globais e locais”
   Criar e utilizar tabelas em programação
   Definir o n.º de elementos de uma tabela em tempo de execução
   Criar e utilizar correctamente classes
   Saber como e porque se reutilizam objectos
   Utilizar módulos
   Aceder a ficheiros
FUNDAMENTOS AVANÇADOS DE
PROGRAMAÇÃO ORIENTADA POR
OBJECTOS
   Introdução

 Variáveis
 Variáveis, são espaços que reservamos em
  memória para guardar determinados valores
  durante a execução de uma determinada tarefa
  ou programa.
FUNDAMENTOS AVANÇADOS DE
PROGRAMAÇÃO ORIENTADA POR
OBJECTOS
AMBITO      DECLARAÇÃO                       Somente onde é
                                             declarada

Procedure   Private, em procedure, Sub, ou   Somente onde é
            Function                         declarada

Module      Private, na secção de            Em cada
            declarações de um Form, ou       procedimento do
            modulo (.frm, ou .bas)           Form ou Modulo

Global      Public, na secção de             Em toda a aplicação
            declarações de um Modulo
            (.bas)
FUNDAMENTOS AVANÇADOS DE
PROGRAMAÇÃO ORIENTADA POR
OBJECTOS
   1. Procedimentos e Funções
     1.1 Procedimentos - “O Conceito”
     Os procedimentos constituem a base de toda e
      qualquer linguagem de programação, uma vez que,
      para além de permitirem uma conveniente separação
      e agrupamento do código-fonte segundo a sua
      finalidade, dão a possibilidade ao programador de
      escrever o código apenas uma vez, pois os
      procedimentos podem ser invocados a partir de outros
      procedimentos, módulos de programação e projectos
      diferentes, permitindo uma reutilização inteligente
      do código-fonte.
FUNDAMENTOS AVANÇADOS DE
PROGRAMAÇÃO ORIENTADA POR
OBJECTOS
   Tipos de Procedimentos
Tipo     Descrição
Gerais   São procedimentos definidos pelo programador, que
         consistem num conjunto de instruções executadas
         sequencialmente com o objectivo de desempenhar uma
         tarefa específica. Este tipo de procedimentos pode aceitar
         argumentos mas não retorna qualquer valor.

De       A declaração deste tipo de procedimentos está a cargo
evento   única e exclusivamente do editor de código. Escolher o
         objecto e estar “atento” à “operação” a executar.
De       São procedimentos definidos pelo programador que podem
função   executar tarefas e/ou retornar um valor para o
         procedimento que os invocaram.
FUNDAMENTOS AVANÇADOS DE
PROGRAMAÇÃO ORIENTADA POR
OBJECTOS
  Procedimentos        Gerais
      Estes podem ser de dois tipos:
         A- Não utiliza argumentos

         B – Utiliza argumentos

      Nota: Nenhum retorna valores


   Sintaxe Tipo A:                Exemplo Tipo A:
   Sub procedimento()
      [Instrução 1]               Sub Colocar_texto()
      [Instrução 2]                 Buttom1.text= “ola!”
      […]                         End Sub
      [Instrução n]
   End sub
FUNDAMENTOS AVANÇADOS DE
PROGRAMAÇÃO ORIENTADA POR
OBJECTOS
                       Sintaxe Tipo B
Sub Procedimento(argumento 1 [, argumento 2][,…][, argumento n])
    [Instrução 1]
    [Instrução 2]
    […]
    [Instrução n]
End sub
                           Exemplo
Sub inicio()
   Dim texto_a_enviar As String
   Texto_a_enviar = “Ola!”
   Colocar_texto(texto_a_enviar)
End Sub

Sub Colocar_texto(texto As String)
   Buttom1.Text= texto
End Sub
FUNDAMENTOS AVANÇADOS DE
PROGRAMAÇÃO ORIENTADA POR
OBJECTOS
   Procedimentos de evento: a escrita deste tipo de
    procedimentos é semelhante à dos procedimentos gerais,
    exceptuando a utilização do modificador Private – a
    chamada directa a procedimentos de evento é feita pelo
    próprio objecto quando reconhece a actividade para a qual
    foi programado.
   Sintaxe
     Private Sub Objecto_evento(ByVal sender As
      System.Object, ByVal e As system.EventArgs) Handles
      Objecto.Evento
        [Instrução 1]

        [Instrução 2]

        […]

        [Instrução n]

     End sub
FUNDAMENTOS AVANÇADOS DE
PROGRAMAÇÃO ORIENTADA POR
OBJECTOS
   Procedimentos de Função
     Embora    o objectivo dos procedimentos de função
      possa não retornar um valor, são geralmente
      utilizados para esse efeito, pois, na prática, utilizam-
      se procedimentos gerais quando o objectivo é apenas
      realizar uma tarefa (baseada ou não em parâmetros).
         Tipo          Utiliza          Retorna um
                       Argumentos?      Valor?
         A             NÃO              SIM
         B             SIM              Sim

      Esta categoria de Funções/Procedimentos é
    iniciada pela palavra Function e terminada por
                     End Function
FUNDAMENTOS AVANÇADOS DE
PROGRAMAÇÃO ORIENTADA POR
OBJECTOS
Sintaxe
Function Função (Lista de argumentos) As Tipo de Dados
    [Instrução 1]
    [Instrução 2]
    […]
    [Instrução n]
    Return Valor
End Function

Função - corresponde ao nome atribuído pelo programador à
função;
<Lista de Argumentos> - contém os parâmetros que a função
recebe (se os houver), bem como os respectivos tipos de
dados.
Tipo de Dados – indica o tipo de informação que a função vai
retornar;
Valor – é o valor retornado pela função
FUNDAMENTOS AVANÇADOS DE
PROGRAMAÇÃO ORIENTADA POR
OBJECTOS
 Exemplo (procedimento de função sem argumentos - Tipo A )
 Function Contar() As Integer
     Dim controlos As Integer
     Controlos = Me.Controlos.Count
     Return controlos

   End Function
           (chamada a um procedimento de função sem argumentos)
   Private Sub Buttom1_Click […]
       Buttom1.Text = Contar() ‘chamada da função sem argumentos
   End Sub
 Exemplo (procedimento de função com argumentos - Tipo B)
 Function Completo(nome As String, apelido As
  String) As String
   Dim nome_completo As String
   nome_completo= apelido & “ , “ & nome
   Return nome_completo
 End Function
        (chamada a um procedimento de função com argumentos)
   Private Sub Buttom1_Click […]
     Buttom1.Text    = Completo (“Henrique”, “Loureiro”)
   End Sub
FUNDAMENTOS AVANÇADOS DE
PROGRAMAÇÃO ORIENTADA POR
OBJECTOS
 Objecto_Evento corresponde ao nome do
  procedimento de evento formado pelo par
  Objecto/Acção separados por um underscore
 ByVal indica que os valores dos argumentos não
  podem ser alterados
 Sender é uma palavra-chave que indica que o
  procedimento está relacionado com um objecto.
 e – Corresponde ao conjunto de argumentos
  específicos para o evento;
 Handles indica que o procedimento se trata de
  um procedimento de evento a ser reconhecido
  pelo objecto em particular.
FUNDAMENTOS AVANÇADOS DE
PROGRAMAÇÃO ORIENTADA POR
OBJECTOS
   Parâmetros por Valor ou por Referência
   O padrão é o Visual Basic passar todos os parâmetros por referência ( ByRef ), ou seja, ao invés de
    passar o valor actual do argumento ele passa um endereço de 32 bits onde o valor esta armazenado.
    Desta forma se ocorrer qualquer alteração no valor do parâmetro isto será reflectido no valor
    original do mesmo.
   Para passar um parâmetro por valor usamos a palavra ByVal precedendo o parâmetro, com isto
    estamos passando uma cópia do valor do parâmetro e não o seu endereço de localização.
   Nota: Ao passar uma string por valor esta passa o endereço do primeiro byte de dados da string . Se
    passar uma string por referência estará a passar o endereço de memória onde outro endereço esta
    armazenado , neste caso o primeiro byte de dados da string.

                                        A ter em conta:
   As strings sempre são passadas por Valor ( ByVal ). Porém a função API poderá alterar o conteúdo
    da variável string.
   As estruturas definidas pelo usuário são sempre passadas por referência ( ByRef )
   Os Vectores ( Arrays ) sempre são passados ByRef quando passados por inteiro para a função API.
   Os valores numéricos podem ser passados por Valor ou por Referência dependendo da função
FUNDAMENTOS AVANÇADOS DE
PROGRAMAÇÃO ORIENTADA POR
OBJECTOS
 Procedimentos e Funções Recursivas
 Conceito

 Um procedimento ou função diz-se recursivo
  quando é definido em termos de si próprio, isto é,
  quando se invoca a si próprio, directa ou
  indirectamente (por intermédio de outros
  procedimentos/funções).
 Tipicamente a solução de um problema repetitivo
  pode ser resolvido de uma forma iterativa
  utilizando estruturas de controlo de ciclos
  (estruturas repetitivas), ou de forma recursiva
  utilizando a invocação sucessiva da solução.
FUNDAMENTOS AVANÇADOS DE
PROGRAMAÇÃO ORIENTADA POR
OBJECTOS
 VANTAGENS E DESVANTAGENS
 Existem algumas vantagens e desvantagens na
  utilização de métodos baseados na recursividade:
 Vantagens:
    A   utilização de uma função recursiva pode simplificar
      a solução de alguns problemas;
     Pode-se obter um código mais conciso e eficaz nessas
      situações;
     Uma solução recursiva pode, por outro lado, eliminar
      a necessidade de manter o controlo manual sobre
      uma série de variáveis normalmente associadas aos
      métodos alternativos à recursividade.
FUNDAMENTOS AVANÇADOS DE
PROGRAMAÇÃO ORIENTADA POR
OBJECTOS
   Desvantagens:

     As funções recursivas são geralmente mais lentas e
      ocupam mais memória do que as funções iterativas
      equivalentes, uma vez que são feitas muitas
      chamadas consecutivas;

     Um   erro de implementação pode levar ao
      esgotamento dos recursos associados à pilha (stack
      overflow) que gere a chamada a funções. Isto é, caso
      não seja indicada nenhuma condição de paragem, ou
      essa condição foi definida de forma errada e nunca
      será satisfeita, então o processo recursivo não terá
      fim.
FUNDAMENTOS AVANÇADOS DE
PROGRAMAÇÃO ORIENTADA POR
OBJECTOS
A  recursividade permite
 implementar algoritmos que
 decompõem o problema a resolver
 numa sucessão de problemas cada
 vez mais simples com a mesma
 estrutura do problema original. A
 recursividade permite decompor um
 problema em problemas mais
 pequenos que têm a particularidade
 de serem exactamente do mesmo
 tipo do problema original.
FUNDAMENTOS AVANÇADOS DE
PROGRAMAÇÃO ORIENTADA POR
OBJECTOS
   Funções Recursivas
     Uma  função recursiva é uma função que se refere a si
      própria. A ideia consiste em utilizar a própria função
      que estamos a definir na sua definição.
     Em todas as funções recursivas existe:
       Um passo básico (ou mais) cujo resultado é imediatamente
        conhecido.
       Um passo recursivo em que se tenta resolver um sub-

        problema do problema inicial.
FUNDAMENTOS AVANÇADOS DE
PROGRAMAÇÃO ORIENTADA POR
OBJECTOS
   “Aplicação Factorial” - Exemplo
     Esta  função pode ser definida recursivamente em
      função de um caso elementar e de uma forma geral:
     0! = 1     (por definição, caso mais simples)
     n! = n * (n - 1)! para n>0        (formula recursiva)

   Função FACTORIAL(num: inteiro): inteiro
       var temp: inteiro
       Se num = 0 Então temp  1
       Senão temp  num * FACTORIAL(num – 1)

        factorial  temp

FUNDAMENTOS AVANÇADOS DE
PROGRAMAÇÃO ORIENTADA POR
OBJECTOS


 Private   Function Fact(num As
  Integer)
  If num = 0 Then
      Fact = 1
      Else
          Fact = num * Fact(num - 1)
  End If
  End Function
FUNDAMENTOS AVANÇADOS DE
PROGRAMAÇÃO ORIENTADA POR
OBJECTOS
 Tabelas/ Array
 As variáveis do tipo Array, ao contrário das
  escalares – que armazenam um valor de cada vez
  – representam matrizes ou conjuntos de dados
  alojados em posições ou índices bem definidos.
     Todos  os elementos de um array são do mesmo
      tipo de dados
   O comprimento de um array concebe o seu
    número de elementos em função de um limite
    inferior(considerado 0) e de um limite superior a
    definir. Quando ao seu tamanho, os arrays
    dividem-se em duas categorias – os de e os de
    comprimento variável.
FUNDAMENTOS AVANÇADOS DE
PROGRAMAÇÃO ORIENTADA POR
OBJECTOS
 Arrays de comprimento FIXO
 Representam matrizes com um numero de
  elementos constante, pela atribuição de índices
  (limites). O limite inferior de um array é igual a
  zero; o limite superior é incluído entre parênteses
  curvos.
 SINTAXE
     Dim   array(limite superior) As Tipo de Dados
   Exemplos:
     Dim alunos(7) As String ‘Matriz de 8 elementos
     Alunos(3) =“Ana”
     Alunos(0)=“Ronaldinho”
FUNDAMENTOS AVANÇADOS DE
PROGRAMAÇÃO ORIENTADA POR
OBJECTOS
 Arrays de Comprimento Variáveis – (Tabelas
  Dinâmicas)
 São matrizes cujos limites não são especificados
  aquando da sua declaração. O programador pode,
  desta forma, alterar o tamanho do array
  enquanto o código está a ser executado. A palavra
  chave ReDim permite o redimensionamento do
  array em qualquer ponto do programa.
 SINTAXE
     Dim   array() As Tipo de Dados
FUNDAMENTOS AVANÇADOS DE
PROGRAMAÇÃO ORIENTADA POR
OBJECTOS
   Exemplos:

 Dim  dias() As Date
 Dias(0)= #1/1/1999#
 ReDim dias(3)
 Dias(2)= #1/1/1999#
 ReDim dias(1) ‘O conteúdo de índice
  2 é eliminado
FUNDAMENTOS AVANÇADOS DE
PROGRAMAÇÃO ORIENTADA POR
OBJECTOS
   Arrays Unidimensionais
     Uma   matrix unidimensional é composta apenas por
      um eixo, segundo um perfil linear. Todos os
      elementos apresentados ao longo deste tópico fizeram
      referência a arrays Unidimencionais.

   Arrays Multidimensionais
     As matrizes mais utilizadas são as matrizes
      bidimensionais; a utilização de mais de duas
      dimensões está presente, na maior parte dos casos,
      em projectos muito específicos, como na concepção de
      aplicações de engenharia, design e multimédia.
FUNDAMENTOS AVANÇADOS DE
PROGRAMAÇÃO ORIENTADA POR
OBJECTOS
 Nota: O número máximo de dimensões suportado
  por uma variável do tipo array é de 32.
 Sintaxe – Declaração de Arrays Multimensionais

 Dim array(dimensão1, dimensão2[,…][,dimensão
  n]) As Tipo de Dados
 Exemplos práticos

 Dim ficha(9,3) As String

 Ficha(3,2)=“10 de Janeiro”

 Ficha(0,1)=“Ana Lopes”

 Ficha(2,7)=“Luis Jardel” –ERRO no 2º limite
  Superior
FUNDAMENTOS AVANÇADOS DE
PROGRAMAÇÃO ORIENTADA POR
OBJECTOS
 4 – Módulos
 Noção de Módulo e Procedimentos
     No  contexto da programação, os Procedimentos
      (vulgarmente conhecidos por rotinas) consistem num
      agrupado de linhas de código(instruções) que seguem
      uma sequência lógica, com Principio, Meio e Fim, cujo
      objectivo é desempenhar uma tarefa específica. A um
      conjunto de procedimentos dá-se o nome de Módulo.
     Um programa pode ter um nº distinto de módulos e
      procedimentos.
     Ao nível do código, o início de um módulo de
      programação é marcada pela palavra chave Module e
      o seu fim pela instrução End Module
FUNDAMENTOS AVANÇADOS DE
PROGRAMAÇÃO ORIENTADA POR
OBJECTOS
 Sintaxe (Criação de Módulos)
 Module Nome
     [Procedimento 1]
     [Procedimento 1]
     […]
     [Procedimento 1]
   End Module
     Aqui, Nome é o identificador único do módulo no
      projecto em que se insere, e que é atribuído pelo
      programador.
FUNDAMENTOS AVANÇADOS DE
PROGRAMAÇÃO ORIENTADA POR
OBJECTOS
   Criação de Módulos
     Podemos   aceder a um módulo acedendo ao respectivo
      ficheiro no Soluction Explorer e também podemos
      adicionar módulos ao projecto.
     Para criar mais módulos:
       Escolha a opção de Adicionar Modulo do Menu Projecto
       Surge uma caixa de dialogo Adicionar Novo Item. Aqui

        poderá escolher o item Modulo, atribuir um nome e clicar
        em Adicionar para terminar o processo de inserção.
   Gravação de Módulos
    O  módulo é gravado através do processo
      normal(fazendo clique no botão Guardar da barra de
      ferramentas Standard ou escolhendo a opção
      Guardar do menu ficheiro.
FUNDAMENTOS AVANÇADOS DE
PROGRAMAÇÃO ORIENTADA POR
OBJECTOS
   Apagar Módulos
    A  remoção de módulos é feita exactamente da mesma
      forma como a remoção de qualquer outro item
      presente no Solution Explorer. Assim, bastará
      seleccionar o módulo a eliminar e pressionar a tecla
      Apagar.
FUNDAMENTOS AVANÇADOS DE
PROGRAMAÇÃO ORIENTADA POR
OBJECTOS

3.
  Classes
 Conceitos Gerais
       Uma classe é simplesmente uma representação de um tipo
        de objecto; pense como uma estrutura que descreve o
        objecto.
       O bloco de construção básico de software OO – a fabrica dos

        Objectos.
       Uma classe define um “tipo de dados”. Em ciência da

        computação, um tipo consiste de um conjunto de estados
        possíveis (propriedades) e um conjunto de operações
        (métodos) que realizam a transição entre os estados do tipo.
FUNDAMENTOS AVANÇADOS DE
PROGRAMAÇÃO ORIENTADA POR
OBJECTOS

 Criação  de classes
 Ir ao gerênciador de Soluções-
  > adicionar -> Classe
 Exemplo Prático
   As classes têm propriedades
    (publicas ou privadas) e métodos.
          "Property Get" para retornar um valor e o "Property Set"
           para atribuir um valor à propriedade
FUNDAMENTOS AVANÇADOS DE
PROGRAMAÇÃO ORIENTADA POR
OBJECTOS

 Reutilização    de Objectos
   A produtividade do
    desenvolvimento de sistemas
    orientados a objectos é visível e
    bastante perceptível principalmente
    quando fazemos uso da reutilização.
    Esta, na prática da OO, é muito
    mais do que simplesmente copiar
    funções, ou mesmo utilizar
    módulos.
FUNDAMENTOS AVANÇADOS DE
PROGRAMAÇÃO ORIENTADA POR
OBJECTOS
 A  reutilização de objectos é, de facto, a utilização de
   objectos já utilizados em sistemas anteriores em
   novos projectos sem modificar as suas estruturas
   internas, ou mesmo sem a necessidade de fazer
   modificações no sistema para acomodar esses novos
   códigos.
  A reutilização de objectos já encapsulados pode somar
   força quando vamos projectar um novo sistema de
   informações. Podemos durante um novo projecto
   identificar quais são os objectos necessários e incluir
   esses objectos já implementados noutros projectos.
  Se já estiverem implementados, estes podem ser
   incluídos no novo sem a necessidade e custo de
   implementação.
FUNDAMENTOS AVANÇADOS DE
PROGRAMAÇÃO ORIENTADA POR
OBJECTOS
 Outra opção também pode ser a transformação de
  objectos semelhantes, ou seja, objectos já
  implementados cujas características são bastante
  semelhantes aos objectos necessários, podem,
  com pequenas modificações, serem úteis ao novo
  sistema.
 Outra forma de reutilização pode surgir
  utilizando a propriedade da herança entre
  objectos, ou seja, caso surja a necessidade de
  criar um novo objecto cuja ideia esteja baseada
  num objecto já existente, podemos criar novos
  objectos com as características dos objectos já
  desenvolvidos. Isto diminui sensivelmente o custo
  de desenvolvimento de novos sistemas
FUNDAMENTOS AVANÇADOS DE
PROGRAMAÇÃO ORIENTADA POR
OBJECTOS
   Exemplo Prático

   Aula
FUNDAMENTOS AVANÇADOS DE
PROGRAMAÇÃO ORIENTADA POR
OBJECTOS



5.Ficheiros
 Leitura e Escrita de ficheiros
  sequenciais
 Ficheiros de Acesso Aleatório
FUNDAMENTOS AVANÇADOS DE
PROGRAMAÇÃO ORIENTADA POR
OBJECTOS
   O que é um Ficheiro?

   Uma colecção de dados ou informação representada
    por um nome, armazenados em dispositivos;

   Existem vários tipos de ficheiros.

   Basicamente dividem-se entre Ficheiros de Texto e os
    Ficheiros de dados ou ficheiros definidos pelos
    utilizadores;
FUNDAMENTOS AVANÇADOS DE
PROGRAMAÇÃO ORIENTADA POR
OBJECTOS
   Ficheiros de Texto

   Aqui a informação é totalmente armazenada em formato de
    caracteres ASCII. Podem ser criados, consultados,
    modificados no Sistema Operativo ou no editor de texto
    fora do programa que os usa.

   O acesso aos dados é do tipo sequencial ou seja, a
    leitura dos dados não pode ser iniciado num ponto qualquer
    escolhido pelo utilizador, mas sempre o início e percorrer
    todos os elementos até chegar ao ponto pretendido.
FUNDAMENTOS AVANÇADOS DE
PROGRAMAÇÃO ORIENTADA POR
OBJECTOS
   Ficheiros definidos pelo utilizador.

   Estes agrupam dados simples ou estruturados, no formato
    binário, não legíveis nem manipuláveis fora do programa
    em que foram criados. São ficheiros de tipos definidos pelo
    programador.

   Podemos ter ficheiros de números inteiros ou reais,
    matrizes, registos, etc....

   Em particular, os ficheiros de registos permitem manipular
    dados num formato bem estruturado para trabalho com
    informação externa. O acesso aos dados pode ser feito de
    forma aleatória ou seja por escolha da posição
    pretendida (directa).
FUNDAMENTOS AVANÇADOS DE
PROGRAMAÇÃO ORIENTADA POR
OBJECTOS
   Operações Principais no trabalho com ficheiros são:

    Declaração de tipos e variáveis de ficheiros;
    Associação de uma variável de ficheiro com o nome externo
    de ficheiro;
    Criação de novos ficheiros ou reescrita total de um ficheiro
    já existente;
    Escrita de informação num ficheiro;
    Abertura de um ficheiro para leitura;
    Procura de dados num ficheiro;
    Fecho de um ficheiro aberto.
FUNDAMENTOS AVANÇADOS DE
PROGRAMAÇÃO ORIENTADA POR
OBJECTOS


              Tipo de Dados – Estruturas

   Além dos tipos de dados básicos disponíveis no
    Visual Basic, o programador também pode criar
    estruturas de dados particulares e especificas.

   Um exemplo típico é criar estruturas
    semelhantes a um registo de itens num arquivo,
    ou criar variáveis que servirão de padrão no
    programa.
FUNDAMENTOS AVANÇADOS DE
PROGRAMAÇÃO ORIENTADA POR
OBJECTOS

Exemplo de uma estrutura:

Structure fichaAluno
    <VBFixedString(30)> Dim nome As String
    <VBFixedString(30)> Dim local As String
    Dim ano As Integer
End Structure
FUNDAMENTOS AVANÇADOS DE
PROGRAMAÇÃO ORIENTADA POR
OBJECTOS
   Declaração de uma variável (registo) de um tipo
    definido pelo utilizador:
    Dim nome-da-variável As tipo-definido-pelo-
      programador

   Utilizar uma variável de um tipo definido pelo
    utilizador (registo):
       nome-da-variável.campo (utilizar o . para aceder a
    um determinado campo do registo)
FUNDAMENTOS AVANÇADOS DE
PROGRAMAÇÃO ORIENTADA POR
OBJECTOS


   Exemplo prático das operações básicas para acesso a
    ficheiros em modo Sequencial e Aleatório:

   1) Escolher o nome do ficheiro;
     Exemplo:     “c:teste.txt”
              Nota: Inclusão do caminho ou “path” do ficheiro.


   2) Escolher um número de referência;
              1, 2, 3,… para referenciar o ficheiro
FUNDAMENTOS AVANÇADOS DE
PROGRAMAÇÃO ORIENTADA POR
OBJECTOS
   3) Abrir o ficheiro com “FileOpen” para escrita:




Membro     Descrição
Append     Abrir o ficheiro para acrescentar. Por defeito.

Input      Abrir ficheiro para acesso de leitura.

Output     Abrir ficheiro para acesso de gravação.
Binary     Abrir ficheiro em modo binário.
Random     Abrir ficheiro acesso aleatório.
FUNDAMENTOS AVANÇADOS DE
PROGRAMAÇÃO ORIENTADA POR
OBJECTOS
   4) Escrever no ficheiro – “FilePut”:


       Nota: Numero de referência do ficheiro, nome da estrutura e
        elementos membros da estrutura.

   5) Ler do Ficheiro – “FileGet”


   6) Fechar o ficheiro – “FileClose”
         FileClose(1)
         Número de referência da estrutura
FUNDAMENTOS AVANÇADOS DE
PROGRAMAÇÃO ORIENTADA POR
OBJECTOS
   Notas a ter em conta

   O FileOpen é só valido com o OpenMode – Binary
    e Random.

   No Visual Basic 2008 o FileOpen em Binary tem
    alguns problemas na codificação em Binário

   Recomenda-se sempre o uso do OpenMode em
    Random (Ficheiros de Acesso Aleatório)
FUNDAMENTOS AVANÇADOS DE
PROGRAMAÇÃO ORIENTADA POR
OBJECTOS

Ficheiros         de Acesso Aleatório
   Ficheiros de acesso aleatório contém apenas
    dados de um mesmo tipo definido pelo
    programador, designados por registos (records).
    Os registos são numerados (1, 2, …) e podem ser
    referenciados pelo seu número.

   Sintaxe para abertura de um ficheiro de acesso
    aleatório:
FUNDAMENTOS AVANÇADOS DE
PROGRAMAÇÃO ORIENTADA POR
OBJECTOS
   Exemplo prático Testes

   Exercício de Aplicação – Ficheiro Turma
     Com   base no exemplo prático apresentado, realiza um
      pequeno projecto em Visual Basic que grave num
      ficheiro “turma.txt” os dados: nome, numero e nota.

     Utiliza   o acesso aleatório.

     Chama     a esse projecto - FicheiroTurma

Linguagens de programação 12º M12

  • 1.
    MÓDULO 12 Fundamentos Avançados de Programação Orientada por Objectos Apresentação  Pretende-se leccionar fundamentos de programação avançados tidos para que se possa desenvolver aplicações mais complexas.
  • 2.
    FUNDAMENTOS AVANÇADOS DE PROGRAMAÇÃOORIENTADA POR OBJECTOS  1. Procedimentos e Funções Passagem de parâmetros por Referência e por Valor; Procedimentos e funções recursivas;  2. Sintaxe de Tabelas/Arrays Unidimensionais Multidimensionais Dinâmicas
  • 3.
    FUNDAMENTOS AVANÇADOS DE PROGRAMAÇÃOORIENTADA POR OBJECTOS  3. Classes Conceitos Gerais Criação de classes Reutilização de Objectos  4. Módulos Noção de Módulo Utilização de Módulos
  • 4.
    FUNDAMENTOS AVANÇADOS DE PROGRAMAÇÃOORIENTADA POR OBJECTOS  5. Ficheiros Leitura e Escrita de ficheiros sequenciais Ficheiros de Acesso Aleatório
  • 5.
    FUNDAMENTOS AVANÇADOS DE PROGRAMAÇÃOORIENTADA POR OBJECTOS 2. Objectivos de Aprendizagem  Definir e utilizar Procedimentos e Funções  “Utilizar parâmetros globais e locais”  Criar e utilizar tabelas em programação  Definir o n.º de elementos de uma tabela em tempo de execução  Criar e utilizar correctamente classes  Saber como e porque se reutilizam objectos  Utilizar módulos  Aceder a ficheiros
  • 6.
    FUNDAMENTOS AVANÇADOS DE PROGRAMAÇÃOORIENTADA POR OBJECTOS  Introdução  Variáveis  Variáveis, são espaços que reservamos em memória para guardar determinados valores durante a execução de uma determinada tarefa ou programa.
  • 7.
    FUNDAMENTOS AVANÇADOS DE PROGRAMAÇÃOORIENTADA POR OBJECTOS AMBITO DECLARAÇÃO Somente onde é declarada Procedure Private, em procedure, Sub, ou Somente onde é Function declarada Module Private, na secção de Em cada declarações de um Form, ou procedimento do modulo (.frm, ou .bas) Form ou Modulo Global Public, na secção de Em toda a aplicação declarações de um Modulo (.bas)
  • 8.
    FUNDAMENTOS AVANÇADOS DE PROGRAMAÇÃOORIENTADA POR OBJECTOS  1. Procedimentos e Funções  1.1 Procedimentos - “O Conceito”  Os procedimentos constituem a base de toda e qualquer linguagem de programação, uma vez que, para além de permitirem uma conveniente separação e agrupamento do código-fonte segundo a sua finalidade, dão a possibilidade ao programador de escrever o código apenas uma vez, pois os procedimentos podem ser invocados a partir de outros procedimentos, módulos de programação e projectos diferentes, permitindo uma reutilização inteligente do código-fonte.
  • 9.
    FUNDAMENTOS AVANÇADOS DE PROGRAMAÇÃOORIENTADA POR OBJECTOS  Tipos de Procedimentos Tipo Descrição Gerais São procedimentos definidos pelo programador, que consistem num conjunto de instruções executadas sequencialmente com o objectivo de desempenhar uma tarefa específica. Este tipo de procedimentos pode aceitar argumentos mas não retorna qualquer valor. De A declaração deste tipo de procedimentos está a cargo evento única e exclusivamente do editor de código. Escolher o objecto e estar “atento” à “operação” a executar. De São procedimentos definidos pelo programador que podem função executar tarefas e/ou retornar um valor para o procedimento que os invocaram.
  • 10.
    FUNDAMENTOS AVANÇADOS DE PROGRAMAÇÃOORIENTADA POR OBJECTOS  Procedimentos Gerais  Estes podem ser de dois tipos:  A- Não utiliza argumentos  B – Utiliza argumentos  Nota: Nenhum retorna valores Sintaxe Tipo A: Exemplo Tipo A: Sub procedimento() [Instrução 1] Sub Colocar_texto() [Instrução 2] Buttom1.text= “ola!” […] End Sub [Instrução n] End sub
  • 11.
    FUNDAMENTOS AVANÇADOS DE PROGRAMAÇÃOORIENTADA POR OBJECTOS Sintaxe Tipo B Sub Procedimento(argumento 1 [, argumento 2][,…][, argumento n]) [Instrução 1] [Instrução 2] […] [Instrução n] End sub Exemplo Sub inicio() Dim texto_a_enviar As String Texto_a_enviar = “Ola!” Colocar_texto(texto_a_enviar) End Sub Sub Colocar_texto(texto As String) Buttom1.Text= texto End Sub
  • 12.
    FUNDAMENTOS AVANÇADOS DE PROGRAMAÇÃOORIENTADA POR OBJECTOS  Procedimentos de evento: a escrita deste tipo de procedimentos é semelhante à dos procedimentos gerais, exceptuando a utilização do modificador Private – a chamada directa a procedimentos de evento é feita pelo próprio objecto quando reconhece a actividade para a qual foi programado.  Sintaxe  Private Sub Objecto_evento(ByVal sender As System.Object, ByVal e As system.EventArgs) Handles Objecto.Evento  [Instrução 1]  [Instrução 2]  […]  [Instrução n]  End sub
  • 13.
    FUNDAMENTOS AVANÇADOS DE PROGRAMAÇÃOORIENTADA POR OBJECTOS  Procedimentos de Função  Embora o objectivo dos procedimentos de função possa não retornar um valor, são geralmente utilizados para esse efeito, pois, na prática, utilizam- se procedimentos gerais quando o objectivo é apenas realizar uma tarefa (baseada ou não em parâmetros). Tipo Utiliza Retorna um Argumentos? Valor? A NÃO SIM B SIM Sim  Esta categoria de Funções/Procedimentos é iniciada pela palavra Function e terminada por End Function
  • 14.
    FUNDAMENTOS AVANÇADOS DE PROGRAMAÇÃOORIENTADA POR OBJECTOS Sintaxe Function Função (Lista de argumentos) As Tipo de Dados [Instrução 1] [Instrução 2] […] [Instrução n] Return Valor End Function Função - corresponde ao nome atribuído pelo programador à função; <Lista de Argumentos> - contém os parâmetros que a função recebe (se os houver), bem como os respectivos tipos de dados. Tipo de Dados – indica o tipo de informação que a função vai retornar; Valor – é o valor retornado pela função
  • 15.
    FUNDAMENTOS AVANÇADOS DE PROGRAMAÇÃOORIENTADA POR OBJECTOS  Exemplo (procedimento de função sem argumentos - Tipo A )  Function Contar() As Integer  Dim controlos As Integer  Controlos = Me.Controlos.Count  Return controlos  End Function (chamada a um procedimento de função sem argumentos)  Private Sub Buttom1_Click […]  Buttom1.Text = Contar() ‘chamada da função sem argumentos  End Sub
  • 16.
     Exemplo (procedimentode função com argumentos - Tipo B)  Function Completo(nome As String, apelido As String) As String  Dim nome_completo As String  nome_completo= apelido & “ , “ & nome  Return nome_completo  End Function (chamada a um procedimento de função com argumentos)  Private Sub Buttom1_Click […]  Buttom1.Text = Completo (“Henrique”, “Loureiro”)  End Sub
  • 17.
    FUNDAMENTOS AVANÇADOS DE PROGRAMAÇÃOORIENTADA POR OBJECTOS  Objecto_Evento corresponde ao nome do procedimento de evento formado pelo par Objecto/Acção separados por um underscore  ByVal indica que os valores dos argumentos não podem ser alterados  Sender é uma palavra-chave que indica que o procedimento está relacionado com um objecto.  e – Corresponde ao conjunto de argumentos específicos para o evento;  Handles indica que o procedimento se trata de um procedimento de evento a ser reconhecido pelo objecto em particular.
  • 18.
    FUNDAMENTOS AVANÇADOS DE PROGRAMAÇÃOORIENTADA POR OBJECTOS  Parâmetros por Valor ou por Referência  O padrão é o Visual Basic passar todos os parâmetros por referência ( ByRef ), ou seja, ao invés de passar o valor actual do argumento ele passa um endereço de 32 bits onde o valor esta armazenado. Desta forma se ocorrer qualquer alteração no valor do parâmetro isto será reflectido no valor original do mesmo.  Para passar um parâmetro por valor usamos a palavra ByVal precedendo o parâmetro, com isto estamos passando uma cópia do valor do parâmetro e não o seu endereço de localização.  Nota: Ao passar uma string por valor esta passa o endereço do primeiro byte de dados da string . Se passar uma string por referência estará a passar o endereço de memória onde outro endereço esta armazenado , neste caso o primeiro byte de dados da string. A ter em conta:  As strings sempre são passadas por Valor ( ByVal ). Porém a função API poderá alterar o conteúdo da variável string.  As estruturas definidas pelo usuário são sempre passadas por referência ( ByRef )  Os Vectores ( Arrays ) sempre são passados ByRef quando passados por inteiro para a função API.  Os valores numéricos podem ser passados por Valor ou por Referência dependendo da função
  • 19.
    FUNDAMENTOS AVANÇADOS DE PROGRAMAÇÃOORIENTADA POR OBJECTOS  Procedimentos e Funções Recursivas  Conceito  Um procedimento ou função diz-se recursivo quando é definido em termos de si próprio, isto é, quando se invoca a si próprio, directa ou indirectamente (por intermédio de outros procedimentos/funções).  Tipicamente a solução de um problema repetitivo pode ser resolvido de uma forma iterativa utilizando estruturas de controlo de ciclos (estruturas repetitivas), ou de forma recursiva utilizando a invocação sucessiva da solução.
  • 20.
    FUNDAMENTOS AVANÇADOS DE PROGRAMAÇÃOORIENTADA POR OBJECTOS  VANTAGENS E DESVANTAGENS  Existem algumas vantagens e desvantagens na utilização de métodos baseados na recursividade:  Vantagens: A utilização de uma função recursiva pode simplificar a solução de alguns problemas;  Pode-se obter um código mais conciso e eficaz nessas situações;  Uma solução recursiva pode, por outro lado, eliminar a necessidade de manter o controlo manual sobre uma série de variáveis normalmente associadas aos métodos alternativos à recursividade.
  • 21.
    FUNDAMENTOS AVANÇADOS DE PROGRAMAÇÃOORIENTADA POR OBJECTOS  Desvantagens:  As funções recursivas são geralmente mais lentas e ocupam mais memória do que as funções iterativas equivalentes, uma vez que são feitas muitas chamadas consecutivas;  Um erro de implementação pode levar ao esgotamento dos recursos associados à pilha (stack overflow) que gere a chamada a funções. Isto é, caso não seja indicada nenhuma condição de paragem, ou essa condição foi definida de forma errada e nunca será satisfeita, então o processo recursivo não terá fim.
  • 22.
    FUNDAMENTOS AVANÇADOS DE PROGRAMAÇÃOORIENTADA POR OBJECTOS A recursividade permite implementar algoritmos que decompõem o problema a resolver numa sucessão de problemas cada vez mais simples com a mesma estrutura do problema original. A recursividade permite decompor um problema em problemas mais pequenos que têm a particularidade de serem exactamente do mesmo tipo do problema original.
  • 23.
    FUNDAMENTOS AVANÇADOS DE PROGRAMAÇÃOORIENTADA POR OBJECTOS  Funções Recursivas  Uma função recursiva é uma função que se refere a si própria. A ideia consiste em utilizar a própria função que estamos a definir na sua definição.  Em todas as funções recursivas existe:  Um passo básico (ou mais) cujo resultado é imediatamente conhecido.  Um passo recursivo em que se tenta resolver um sub- problema do problema inicial.
  • 24.
    FUNDAMENTOS AVANÇADOS DE PROGRAMAÇÃOORIENTADA POR OBJECTOS  “Aplicação Factorial” - Exemplo  Esta função pode ser definida recursivamente em função de um caso elementar e de uma forma geral:  0! = 1 (por definição, caso mais simples)  n! = n * (n - 1)! para n>0 (formula recursiva)  Função FACTORIAL(num: inteiro): inteiro var temp: inteiro Se num = 0 Então temp  1 Senão temp  num * FACTORIAL(num – 1) factorial  temp 
  • 25.
    FUNDAMENTOS AVANÇADOS DE PROGRAMAÇÃOORIENTADA POR OBJECTOS Private Function Fact(num As Integer) If num = 0 Then     Fact = 1     Else         Fact = num * Fact(num - 1) End If End Function
  • 26.
    FUNDAMENTOS AVANÇADOS DE PROGRAMAÇÃOORIENTADA POR OBJECTOS  Tabelas/ Array  As variáveis do tipo Array, ao contrário das escalares – que armazenam um valor de cada vez – representam matrizes ou conjuntos de dados alojados em posições ou índices bem definidos.  Todos os elementos de um array são do mesmo tipo de dados  O comprimento de um array concebe o seu número de elementos em função de um limite inferior(considerado 0) e de um limite superior a definir. Quando ao seu tamanho, os arrays dividem-se em duas categorias – os de e os de comprimento variável.
  • 27.
    FUNDAMENTOS AVANÇADOS DE PROGRAMAÇÃOORIENTADA POR OBJECTOS  Arrays de comprimento FIXO  Representam matrizes com um numero de elementos constante, pela atribuição de índices (limites). O limite inferior de um array é igual a zero; o limite superior é incluído entre parênteses curvos.  SINTAXE  Dim array(limite superior) As Tipo de Dados  Exemplos:  Dim alunos(7) As String ‘Matriz de 8 elementos  Alunos(3) =“Ana”  Alunos(0)=“Ronaldinho”
  • 28.
    FUNDAMENTOS AVANÇADOS DE PROGRAMAÇÃOORIENTADA POR OBJECTOS  Arrays de Comprimento Variáveis – (Tabelas Dinâmicas)  São matrizes cujos limites não são especificados aquando da sua declaração. O programador pode, desta forma, alterar o tamanho do array enquanto o código está a ser executado. A palavra chave ReDim permite o redimensionamento do array em qualquer ponto do programa.  SINTAXE  Dim array() As Tipo de Dados
  • 29.
    FUNDAMENTOS AVANÇADOS DE PROGRAMAÇÃOORIENTADA POR OBJECTOS  Exemplos:  Dim dias() As Date  Dias(0)= #1/1/1999#  ReDim dias(3)  Dias(2)= #1/1/1999#  ReDim dias(1) ‘O conteúdo de índice 2 é eliminado
  • 30.
    FUNDAMENTOS AVANÇADOS DE PROGRAMAÇÃOORIENTADA POR OBJECTOS  Arrays Unidimensionais  Uma matrix unidimensional é composta apenas por um eixo, segundo um perfil linear. Todos os elementos apresentados ao longo deste tópico fizeram referência a arrays Unidimencionais.  Arrays Multidimensionais  As matrizes mais utilizadas são as matrizes bidimensionais; a utilização de mais de duas dimensões está presente, na maior parte dos casos, em projectos muito específicos, como na concepção de aplicações de engenharia, design e multimédia.
  • 31.
    FUNDAMENTOS AVANÇADOS DE PROGRAMAÇÃOORIENTADA POR OBJECTOS  Nota: O número máximo de dimensões suportado por uma variável do tipo array é de 32.  Sintaxe – Declaração de Arrays Multimensionais  Dim array(dimensão1, dimensão2[,…][,dimensão n]) As Tipo de Dados  Exemplos práticos  Dim ficha(9,3) As String  Ficha(3,2)=“10 de Janeiro”  Ficha(0,1)=“Ana Lopes”  Ficha(2,7)=“Luis Jardel” –ERRO no 2º limite Superior
  • 32.
    FUNDAMENTOS AVANÇADOS DE PROGRAMAÇÃOORIENTADA POR OBJECTOS  4 – Módulos  Noção de Módulo e Procedimentos  No contexto da programação, os Procedimentos (vulgarmente conhecidos por rotinas) consistem num agrupado de linhas de código(instruções) que seguem uma sequência lógica, com Principio, Meio e Fim, cujo objectivo é desempenhar uma tarefa específica. A um conjunto de procedimentos dá-se o nome de Módulo.  Um programa pode ter um nº distinto de módulos e procedimentos.  Ao nível do código, o início de um módulo de programação é marcada pela palavra chave Module e o seu fim pela instrução End Module
  • 33.
    FUNDAMENTOS AVANÇADOS DE PROGRAMAÇÃOORIENTADA POR OBJECTOS  Sintaxe (Criação de Módulos)  Module Nome  [Procedimento 1]  [Procedimento 1]  […]  [Procedimento 1]  End Module  Aqui, Nome é o identificador único do módulo no projecto em que se insere, e que é atribuído pelo programador.
  • 34.
    FUNDAMENTOS AVANÇADOS DE PROGRAMAÇÃOORIENTADA POR OBJECTOS  Criação de Módulos  Podemos aceder a um módulo acedendo ao respectivo ficheiro no Soluction Explorer e também podemos adicionar módulos ao projecto.  Para criar mais módulos:  Escolha a opção de Adicionar Modulo do Menu Projecto  Surge uma caixa de dialogo Adicionar Novo Item. Aqui poderá escolher o item Modulo, atribuir um nome e clicar em Adicionar para terminar o processo de inserção.  Gravação de Módulos O módulo é gravado através do processo normal(fazendo clique no botão Guardar da barra de ferramentas Standard ou escolhendo a opção Guardar do menu ficheiro.
  • 35.
    FUNDAMENTOS AVANÇADOS DE PROGRAMAÇÃOORIENTADA POR OBJECTOS  Apagar Módulos A remoção de módulos é feita exactamente da mesma forma como a remoção de qualquer outro item presente no Solution Explorer. Assim, bastará seleccionar o módulo a eliminar e pressionar a tecla Apagar.
  • 36.
    FUNDAMENTOS AVANÇADOS DE PROGRAMAÇÃOORIENTADA POR OBJECTOS 3. Classes Conceitos Gerais  Uma classe é simplesmente uma representação de um tipo de objecto; pense como uma estrutura que descreve o objecto.  O bloco de construção básico de software OO – a fabrica dos Objectos.  Uma classe define um “tipo de dados”. Em ciência da computação, um tipo consiste de um conjunto de estados possíveis (propriedades) e um conjunto de operações (métodos) que realizam a transição entre os estados do tipo.
  • 37.
    FUNDAMENTOS AVANÇADOS DE PROGRAMAÇÃOORIENTADA POR OBJECTOS Criação de classes Ir ao gerênciador de Soluções- > adicionar -> Classe Exemplo Prático As classes têm propriedades (publicas ou privadas) e métodos.  "Property Get" para retornar um valor e o "Property Set" para atribuir um valor à propriedade
  • 38.
    FUNDAMENTOS AVANÇADOS DE PROGRAMAÇÃOORIENTADA POR OBJECTOS Reutilização de Objectos A produtividade do desenvolvimento de sistemas orientados a objectos é visível e bastante perceptível principalmente quando fazemos uso da reutilização. Esta, na prática da OO, é muito mais do que simplesmente copiar funções, ou mesmo utilizar módulos.
  • 39.
    FUNDAMENTOS AVANÇADOS DE PROGRAMAÇÃOORIENTADA POR OBJECTOS A reutilização de objectos é, de facto, a utilização de objectos já utilizados em sistemas anteriores em novos projectos sem modificar as suas estruturas internas, ou mesmo sem a necessidade de fazer modificações no sistema para acomodar esses novos códigos.  A reutilização de objectos já encapsulados pode somar força quando vamos projectar um novo sistema de informações. Podemos durante um novo projecto identificar quais são os objectos necessários e incluir esses objectos já implementados noutros projectos.  Se já estiverem implementados, estes podem ser incluídos no novo sem a necessidade e custo de implementação.
  • 40.
    FUNDAMENTOS AVANÇADOS DE PROGRAMAÇÃOORIENTADA POR OBJECTOS  Outra opção também pode ser a transformação de objectos semelhantes, ou seja, objectos já implementados cujas características são bastante semelhantes aos objectos necessários, podem, com pequenas modificações, serem úteis ao novo sistema.  Outra forma de reutilização pode surgir utilizando a propriedade da herança entre objectos, ou seja, caso surja a necessidade de criar um novo objecto cuja ideia esteja baseada num objecto já existente, podemos criar novos objectos com as características dos objectos já desenvolvidos. Isto diminui sensivelmente o custo de desenvolvimento de novos sistemas
  • 41.
    FUNDAMENTOS AVANÇADOS DE PROGRAMAÇÃOORIENTADA POR OBJECTOS  Exemplo Prático  Aula
  • 42.
    FUNDAMENTOS AVANÇADOS DE PROGRAMAÇÃOORIENTADA POR OBJECTOS 5.Ficheiros Leitura e Escrita de ficheiros sequenciais Ficheiros de Acesso Aleatório
  • 43.
    FUNDAMENTOS AVANÇADOS DE PROGRAMAÇÃOORIENTADA POR OBJECTOS  O que é um Ficheiro?  Uma colecção de dados ou informação representada por um nome, armazenados em dispositivos;  Existem vários tipos de ficheiros.  Basicamente dividem-se entre Ficheiros de Texto e os Ficheiros de dados ou ficheiros definidos pelos utilizadores;
  • 44.
    FUNDAMENTOS AVANÇADOS DE PROGRAMAÇÃOORIENTADA POR OBJECTOS  Ficheiros de Texto  Aqui a informação é totalmente armazenada em formato de caracteres ASCII. Podem ser criados, consultados, modificados no Sistema Operativo ou no editor de texto fora do programa que os usa.  O acesso aos dados é do tipo sequencial ou seja, a leitura dos dados não pode ser iniciado num ponto qualquer escolhido pelo utilizador, mas sempre o início e percorrer todos os elementos até chegar ao ponto pretendido.
  • 45.
    FUNDAMENTOS AVANÇADOS DE PROGRAMAÇÃOORIENTADA POR OBJECTOS  Ficheiros definidos pelo utilizador.  Estes agrupam dados simples ou estruturados, no formato binário, não legíveis nem manipuláveis fora do programa em que foram criados. São ficheiros de tipos definidos pelo programador.  Podemos ter ficheiros de números inteiros ou reais, matrizes, registos, etc....  Em particular, os ficheiros de registos permitem manipular dados num formato bem estruturado para trabalho com informação externa. O acesso aos dados pode ser feito de forma aleatória ou seja por escolha da posição pretendida (directa).
  • 46.
    FUNDAMENTOS AVANÇADOS DE PROGRAMAÇÃOORIENTADA POR OBJECTOS  Operações Principais no trabalho com ficheiros são:  Declaração de tipos e variáveis de ficheiros;  Associação de uma variável de ficheiro com o nome externo de ficheiro;  Criação de novos ficheiros ou reescrita total de um ficheiro já existente;  Escrita de informação num ficheiro;  Abertura de um ficheiro para leitura;  Procura de dados num ficheiro;  Fecho de um ficheiro aberto.
  • 47.
    FUNDAMENTOS AVANÇADOS DE PROGRAMAÇÃOORIENTADA POR OBJECTOS  Tipo de Dados – Estruturas  Além dos tipos de dados básicos disponíveis no Visual Basic, o programador também pode criar estruturas de dados particulares e especificas.  Um exemplo típico é criar estruturas semelhantes a um registo de itens num arquivo, ou criar variáveis que servirão de padrão no programa.
  • 48.
    FUNDAMENTOS AVANÇADOS DE PROGRAMAÇÃOORIENTADA POR OBJECTOS Exemplo de uma estrutura: Structure fichaAluno <VBFixedString(30)> Dim nome As String <VBFixedString(30)> Dim local As String Dim ano As Integer End Structure
  • 49.
    FUNDAMENTOS AVANÇADOS DE PROGRAMAÇÃOORIENTADA POR OBJECTOS  Declaração de uma variável (registo) de um tipo definido pelo utilizador: Dim nome-da-variável As tipo-definido-pelo- programador  Utilizar uma variável de um tipo definido pelo utilizador (registo):  nome-da-variável.campo (utilizar o . para aceder a um determinado campo do registo)
  • 50.
    FUNDAMENTOS AVANÇADOS DE PROGRAMAÇÃOORIENTADA POR OBJECTOS  Exemplo prático das operações básicas para acesso a ficheiros em modo Sequencial e Aleatório:  1) Escolher o nome do ficheiro;  Exemplo: “c:teste.txt”  Nota: Inclusão do caminho ou “path” do ficheiro.  2) Escolher um número de referência;  1, 2, 3,… para referenciar o ficheiro
  • 51.
    FUNDAMENTOS AVANÇADOS DE PROGRAMAÇÃOORIENTADA POR OBJECTOS  3) Abrir o ficheiro com “FileOpen” para escrita: Membro Descrição Append Abrir o ficheiro para acrescentar. Por defeito. Input Abrir ficheiro para acesso de leitura. Output Abrir ficheiro para acesso de gravação. Binary Abrir ficheiro em modo binário. Random Abrir ficheiro acesso aleatório.
  • 52.
    FUNDAMENTOS AVANÇADOS DE PROGRAMAÇÃOORIENTADA POR OBJECTOS  4) Escrever no ficheiro – “FilePut”:  Nota: Numero de referência do ficheiro, nome da estrutura e elementos membros da estrutura.  5) Ler do Ficheiro – “FileGet”  6) Fechar o ficheiro – “FileClose”  FileClose(1)  Número de referência da estrutura
  • 53.
    FUNDAMENTOS AVANÇADOS DE PROGRAMAÇÃOORIENTADA POR OBJECTOS  Notas a ter em conta  O FileOpen é só valido com o OpenMode – Binary e Random.  No Visual Basic 2008 o FileOpen em Binary tem alguns problemas na codificação em Binário  Recomenda-se sempre o uso do OpenMode em Random (Ficheiros de Acesso Aleatório)
  • 54.
    FUNDAMENTOS AVANÇADOS DE PROGRAMAÇÃOORIENTADA POR OBJECTOS Ficheiros de Acesso Aleatório  Ficheiros de acesso aleatório contém apenas dados de um mesmo tipo definido pelo programador, designados por registos (records). Os registos são numerados (1, 2, …) e podem ser referenciados pelo seu número.  Sintaxe para abertura de um ficheiro de acesso aleatório:
  • 55.
    FUNDAMENTOS AVANÇADOS DE PROGRAMAÇÃOORIENTADA POR OBJECTOS  Exemplo prático Testes  Exercício de Aplicação – Ficheiro Turma  Com base no exemplo prático apresentado, realiza um pequeno projecto em Visual Basic que grave num ficheiro “turma.txt” os dados: nome, numero e nota.  Utiliza o acesso aleatório.  Chama a esse projecto - FicheiroTurma