Variáveis, Escopo e Modificadores de acesso

Nessa postagem tem um título bastante abrangente, pois bem, procurarei esclarecer e fazer comparações de como funcionam as Variáveis, Escopo e conseqüentemente os Modificadores de acesso em diversas linguagens e plataformas, desmitificando assim alguns “falsos cognatos”.

Variáveis

Uma variável é um espaço rotulado por um identificador (geralmente segue a regra de nomeação para todos os identificadores) para armazenamento de valores de acordo com o tipo definido. O espaço em memória a ser reservado depende do tipo e que foi definido, basicamente tais tipos podem ser divididos em Tipos Primitivos ou Tipos Referência.

Tipos primitivos

São tipos de variáveis com tanho e formatos fixos, em linguagens orientadas a objetos esses tipos não existem ou mesmo são encapsulados por uma classe que o representa. Um tipo primitivo pode ser um valor numérico inteiro de ponto flutuante ou um valor literal. Cada plataforma ou linguagem tem suas restrições e definições sobre como e quais serão eles.

Tipos Referência

Diferente dos tipos primitivos os tipos de referência fazem uma referência a um objeto em memória dessa forma várias variáveis podem fazer referência a um único objeto em memória. Os valores não são fixos, no entanto hipoteticamente pode supor se os atributos de uma classe forem de tipos primitivos o espaço armazenado será o suficiente para os atributos acomodar todos os atributos.

Geralmente quando se declara uma variável, é necessário informar um identificador e o seu tipo, porém algumas linguagens não permitem ou mesmo não exigem que seja informado um tipo.

Vejamos algumas formas de declaração de variáveis:

  • No Visual Basic
Dim nomeIdentificador As Tipo

Onde a palavra reservada
Dim (de dimensão) é seguida por um nome para o identificador, opcionalmente pode se usar a palavra reservada As para informar o tipo. Se um identificador novo é encontrado no código com um valor a ele sendo atribuído, o compilador cria automaticamente uma nova variável. Para forçar que todas as variáveis sejam declaradas é necessário informar em cada início de arquivo de código fonte a palavra reservada Option Explicit.

  • Nas linguagens baseadas na Linguagem C (C++, Java, C# .NET, etc.)

String nomeIdentificador = "Valor Inicial;"

String é um tipo para exemplificar (representa uma cadeia de caracteres) um nome para um identificador e opcionalmente pode se atribuir um valor inicial como no exemplo especificado, a cadeia de caracteres “Valor Inicial” e por fim “;” para finalizar a expressão.

Escopo

O escopo diz respeito a visibilidade de um identificador, basicamente pode se dizer que um identificador é visível no bloco que foi declarado, porém em alguns casos isso pode não ficar bem claro, se deseja modificar a visibilidade de um identificador é necessário utilizar um modificador de acesso que seja adequado a visibilidade desejada, como descrito no tópico a seguir.

Modificadores de acesso

Os modificadores de acesso servem para alterar a visibilidade de um identificador e são utilizados em varios contextos diferentes.
Em algumas plataformas de linguagens como C, Visual Basic 6 existe as variáveis Globais que são vistas por todo o programa.
No Visual Basic 6 era necessário utilizar a palavra chave Global. O que é um problema ter a visibilidade em todo o programa pois se torna muito complexo fazer o controle de quem modifica o valor da variável.
Com a criação dos espaços de nomes (namespace) ou Pacotes (Packages) em Java, todos os identificadores fazem parte de uma hierarquia.

Os modificadores acesso mais comuns são o private ( privado ) e public (público) que são utilizados tanto em membros da classe como também na própria classe.

Com o modificador de acesso private o idenficiador é visto somente dentro do bloque em que é declarado, no entanto, o público permite o acesso em qualquer lugar.

Existem outros modificadores que não são tão comuns como os descritos acima, são eles, o protected( protegido) que tem o comportamento semelhante do private porém ainda tem visibilidade para as classes que o herdam.

Outros que são específicos de plataforma são o “friend” do Visual Basic 6 que permite que somente seja acessível de dentro da DLL ou EXE em que é declarado, funcionamente análogo ao “internal” do C# .NET, que restringe a visiblidade ao Assembly em que é declarado, esse também é o modificador padrão quando não é informado na declaração. Já no Java a visibilidade é para o pacote, ou seja não é necessário estar no mesmo “jar” a visiblidade é definida pela organização lógica.

Publicado por

Sebastião Relson

Programador multi-versátil, técnico em Redes (2004) e Bacharel em Ciências da Computação (2008). Na Tribo do C.I. atua na retaguarda do site além da edição do podcast, com poucos textos publicados, veja mais no "quem somos" do site.