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.

Iniciando em Ruby

Fazia um bom tempo em que eu não ficava empolgado com uma nova teconlogia, até que de tanto escutar rumores fui procurar a respeito do tal Ruby, linguagem dinâmica, baseada no SmallTalk (Assim como tudo que é orientado a objetos no “mundo” :D).

Antes de botar a mão na massa ouvi todos os episódios publicados na época (até o 39) do Rails PodCast Brasil com Carlos Brando e Fabio Akita indicado por um colega de trabalho, gostei muito do PodCast, pela profundidade nos temas abordados e da imparcialidade, digo isso que por já ter escutado alguns podcast que defendiam uma certa plataforma de desenvolvimento e o foca era na nada mais na menos que propaganda deles mesmo para a “fornecedora da plataforma”.

O primeiro tutorial “Micro-Tutorial de Ruby” do Akita onde escrevi as primeiras linhas em ruby, tive problemas ao instalar o irb pois o link apontava para um instalador corrompido, foi resolvido.

Até aí tava tranquilo, tudo bem… mais quando eu vi o Screencast para iniciantes em Rails(Programando um Blog em 15 minutos) minha cabeça explodiu, fiquei correndo de um lado para outro igual ao jacaré do pica-pau, sem pensar já li o “Aprendendo Ruby on Rails”. Li a versão em PDF, mais esses é um livro que desejo comprar como forma de gratidão ao autor, existe uma vasta quantidade de material de estudo e referência on-line. Pena que algumas lojas virtuais os livros de ruby são classificados como livros de Java.

Pra mim é um novo paradigma de desenvolvimento, uma nova sintax, uma nova plataforma, muito atraente, acho interessante usar ferramentas leves e nem por isso improdutiva para trabalhar e estudar, em fim muita coisa nova.

Uma boa desculpa para reinvetar a roda

No meu post e ilustração de estréia venho falar de algo que eu como programador “as vezes” me pego pensando sobre, que é uma boa desculpa para reinventar a roda.
Quem foi que nunca quis fazer uma agenda de contatos, ou mesmo um magnífico software para locadora, controle de estoque, calculadora, e outros mais, mesmo conhecendo um equivalente.
Minha Melhor Justificativa é que uso a construção de tais softwares para me acostumar com conceito, ou seja, se não sou acostumado a usar um agenda eletrônica, faço uma bem simples para que eu possa ir me acostumando com a idéia, e depois uso outro que tem disponível como Google Calendar e outros softwares que tem o mesmo intuíto.
Bom foi um post curtinho e simples, mais serve para eu ir me acostumando com idéia.