Aprendedo C - Parte 1

Esta é uma série de artigos que vamos apresentar para que você aprenda a linguagem C. Neste primeiro vamos iniciar com a teoria do C. O que são classes, objetos, métodos, etc.

Por | @oficinadanet Programação

Esta é uma série de artigos que vamos apresentar para que você aprenda a linguagem C. Neste primeiro vamos iniciar com a teoria do C. O que são classes, objetos, métodos, etc.

Classes e Objetos


Uma classe é um tipo definido pelo programador que contém o molde, a especificação para os objetos, tal como o tipo inteiro contém o molde para as variáveis declaradas como inteiros. A classe envolve e/ou associa, funções e dados, controlando o acesso a estes, defini-la implica especificar os seus atributos ( dados ) e suas funções membro ( código ).

ex.: Um programa que utiliza uma interface controladora de um motor elétrico definiria a classe motor. Os atributos desta classe seriam: temperatura, velocidade, tensão aplicada. Estes seriam representados na classe por tipos como float ou long . As funções membro desta classe seriam funções para alterar a velocidade, ler a temperatura, etc.

Especificar uma Classe


Vamos supor um programa que controla um motor elétrico através de uma saída serie. A velocidade do motor é proporcional à tensão aplicada, e esta proporcional aos bits que vão para saída serie que passam por um conversor digital analógico ( DAC ).

Vamos abstrair de todos estes detalhes por enquanto e modelar somente a interface do motor como uma classe, a pergunta é que funções e que dados membro deve ter nossa classe, e que argumentos e valores de retorno devem ter essas funções membro:

Representação da velocidade
A velocidade do motor será representada por um atributo, inteiro (int). Usaremos o número de bits que precisarmos, caso o valor de bits necessário não possa ser fornecido pelo tipo , usaremos então o tipo long , isto depende do conversor digital analógico utilizado e do compilador.

Representação da saída série
O motor precisa conhecer a saída serie, a sua ligação com o "motor do mundo real". Vamos supor uma representação em hexadecimal do atributo endereço de porta serie, um possível nome para o atributo: enderecomotor.

Alteração do valor da velocidade
Internamente o utilizador da classe motor pode desejar alterar a velocidade, cria-se então a função :
void altera_velocidade(int novav);

O valor de retorno da função é void ( valor vazio ), poderia ser criado um valor de retorno (int) que indicasse se o valor de velocidade era permitido e foi alterado ou não era permitido e portanto não foi alterado.

Métodos ou Funções Membro


O C permite que se acrescentem funções de manipulação da struct na declaração, juntando tudo numa só entidade que é uma classe. Essas funções membro podem ter sua declaração ( cabeçalho ) e implementação ( código ) dentro da struct ou só o cabeçalho ( assinatura ) na struct e a implementação, código, fora. Este exemplo apresenta a primeira versão, o próximo a segunda versão ( implementação fora da classe ). Essas funções compõem a interface da classe. A terminologia usada para designá-las é bastante variada: funções membro, métodos, etc. Quando uma função membro é chamada, diz - se que o objeto está a receber uma mensagem ( para executar uma ação ). Um programa simples para testes sobre funções membro seria o seguinte:

Exemplo 1:
#include 

Resultado do programa:
0
1

Comentários: O programa define um objeto que serve como contador, a implementação representa a contagem no atributo num que é um número inteiro. As funções membro são simples:
incrementa adiciona um ao contador em qualquer estado e comeca inicializa a contagem a zero.

Sintaxe: A sintaxe para declaração de funções membro dentro de uma classe é a mesma sintaxe de declaração de funções comuns: tipoderetorno nomedafuncao(lista_de_argumentos) { /*codigo */ }. A diferença é que como a função membro está definida na classe, ela ganha acesso directo aos dados membros, sem precisar usar o "ponto", exemplo um_objeto.dadomembro;. Lembre-se que as chamadas de funções membro já se referem a um objeto específico, embora elas sejam definidas de uma forma geral para toda a classe.

A sintaxe de chamada ou acesso à funções membro é semelhante a sintaxe de acesso aos dados membro com exceção dos parênteses que contém a lista de argumentos da função, mesmo que a lista seja vazia eles devem estar presentes: umcontador.incrementa();. Primeiro insere-se o nome do objeto e depois a chamada da função, estes são separados por um ponto. Cuidado para não esquecer os parênteses nas chamadas de funções membro em programas futuros, este é um erro bastante comum.

Exemplo 2 :
#include 

Resultado do programa:
Raio:10
X:0
Y:0
Raio:10
X:1
Y:1
Raio:10
X:100
Y:1

Comentários: A função membro move altera as coordenadas do objeto. O objeto tem as coordenadas x e y somadas com os argumentos dessa função membro. Nota que esta função membro representa uma maneira mais segura, clara, elegante de alterar as coordenadas do objeto do que acessá-las diretamente da seguinte forma: ac.x =dx;. ac.y =dy;. Lembre-se que ac.x =dx é uma abreviação para ac.x=ac.x dx; .

Como funcionam no compilador as chamadas de funções membro:
É possível imaginar que as definições de funções membro ocupam um grande espaço na representação interna dos objetos, mas lembre-se que elas são todas iguais para uma classe, então basta manter para cada classe uma tabela de funções membro que é consultada no momento da chamada . Os objetos só precisam ter uma referência para esta tabela.

Esta é a primeira parte, na próxima semana teremos a 2 parte da série.

Mais sobre: c, c++
Share Tweet
DESTAQUESMais compartilhados
Comentários