AULA 4 – PROGRAMAÇÃO ORIENTADA À OBJETOS

Olhando o programa desenvolvido na última aula sobre memória temporal eu achei que ficou um pouco confuso para ser compreendido.

Naquela  aula propusemos um exercício simples que mostra como fazer para registrar em memória um evento qualquer e esse evento provocar um efeito que deve acontecer em um tempo futuro. Fizemos este tipo de memória no projeto de separação de caixas pretas e brancas na esteira de transporte. Veja o vídeo.

Porém, o exercício proposto era bem mais simples e serviria para o leitor conseguir reproduzir este efeito usando somente uma placa Arduino Uno, um LED e uma tecla. Conforme o vídeo.

Mesmo sendo um programa muito simples, eu achei que ele poderia ser melhor escrito se usássemos uma técnica muito comum em programação de alto nível: programação orientada à objetos.

A intenção desta aula não é explicar toda a teoria por trás deste assunto. Até porque isso exigiria um curso inteiro para abordar todas suas nuances.

Não, não vamos esgotar o assunto e talvez o leitor já tenha tido oportunidade de aprender sobre isso. Minha intenção é dar a oportunidade ao leitor de fazer uso desta técnica de programação de forma prática e assim aprender sobre sua utilidade.

 

QUAL A DIFERENÇA ENTRE CLASSE E OBJETO?

 

A programação orientada à objetos se caracteriza principalmente pelo uso de classes e objetos.

Na aula sobre variáveis, vimos alguns tipos pré-definidos de variáveis que a linguagem de programação do Arduino possui.

A ideia por traz da programação orientada a objetos é criar nossos próprios tipos de variáveis chamadas de classes. Depois que definimos o nome e a estrutura de nossa nova classe, podemos criar instâncias (objetos) da classe criada. Portanto cada objeto é um elemento que usaremos no programa cujo comportamento é definido pela classe.

É como se a classe fosse um carimbo e os objetos fossem as impressões que fazemos no papel usando este carimbo. Todas as impressões são únicas, porém são todas idênticas.

objects

Como vemos na figura acima, podemos ter vários objetos oriundos da mesma classe. Podemos ter inclusive um arranjo (array) de objetos. Usaremos um arranjo desses em nosso exemplo.

 

Onde podemos usar classes?

 

Primeiramente para podermos usar classes em um programa, a linguagem original deste programa deve dar suporte a classes e objetos.

A linguagem do Arduino é C++ que tem suporte a classes e objetos.

E quando é vantagem usar classes no seu programa?

É vantagem usar classes e objetos quando temos em nosso programa algumas estruturas em forma de árvores que se repetem algumas vezes.

Veja o exemplo de um programa que necessita registrar os alunos de uma sala de aula. Para cada aluno temos que definir seu nome, idade e as notas de 4 bimestres.

objects2

Se fôssemos criar variáveis para registrar cada uma destas características de cada aluno, o programa iria ficar muito confuso e difícil de fazer manutenção do mesmo.

Com programação orientada a objetos podemos criar uma classe chamada classeAluno que possui todas estas características: nome, idade etc.

Quando vamos registrar um novo aluno podemos criar instâncias novas para a classe aluno, por exemplo:

classeAluno  aluno1;

classeAluno  aluno2;

classeAluno  aluno3;

E em seguida definimos suas características:

Aluno1.nome= “Joao Paulo”;

Aluno2.idade= 23;

E assim por diante.

 

Transformando o shift de memória em uma classe

 

Como já disse o programa de memória temporal (shift) que fizemos na última aula poderia ser escrito com classes e objetos.

Para isso eu encapsulei as funções que manipulavam as memorias shift no programa anterior para dentro de uma classe chamada memoriaShift.

E criamos um arranjo (array) de objetos que possuem as funções da classe memoriaShift:

#define SAIDALED 9

#define NUMEROSHIFTS 3

memoriaShift memShiftArray[NUMEROSHIFTS] =     {        memoriaShift(SAIDALED),

memoriaShift(SAIDALED),

memoriaShift(SAIDALED)};

Para cada objeto criado temos que inicializá-lo com o número do pino onde estará ligado o LED usando a constante SAIDALED.

A classe memoriaShift possui 2 funções:

setaEvento ( ) – esta função tem que ser chamada quando ocorre o evento que inicia a contagem de tempo.

Update( ) – esta função tem que ser chamada a cada execução do loop do programa para que o contador de tempo seja atualizado corretamente.

A classe memoriaShift está definida em um arquivo separado do arquivo principal do programa chamado shift.h e para ser utilizado no programa ele deve ser incluído com a instrução:

#include  “shift.h”

Assim podemos utilizar esta classe em outros programas sem a necessidade de ter que ficar digitando sua definição.

O leitor pode baixar os arquivos no link abaixo e testar.

Você terá simplesmente que compilar os arquivos do jeito que estão e carregar na placa Arduino com a mesma montagem da última aula.

Você verá que o funcionamento é o mesmo daquele que fizemos sem classes e objetos.

BAIXAR ARQUIVOS

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s