Programação (III) - Programação Orientada a Objetos (POO)

Este é o terceiro artigo da série sobre programação e vamos falar aqui sobre POO, que não é a melhor coisa do mundo, mas é o melhor que já vi para a programação nestes meus 25 anos no ramo.

[ Hits: 49.138 ]

Por: Edvaldo Silva de Almeida Júnior em 04/07/2008 | Blog: http://emeraldframework.net


Classe



Como seria definida a nossa classe "objetos de sentar" em C++?

Para começar vamos dar a ela um nome adequado, para evitar qualquer confusão de nomenclatura com a palavra objeto. Nós iremos chamá-la de Sentável, já que se pode sentar em qualquer objeto pertencente a essa classe.

Sua definição, armazenada num arquivo chamado sentavel.h, seria a seguinte:

/*
/ sentavel.h
/
/ Define a classe Sentavel, que abstrai o conceito
/ de objeto no qual se pode sentar
/
/ Autor: Ed Lonewolf
/
/ Copie, use e depois crie. Explore e depois melhore.
/
*/


#ifndef __SENTAVEL_H__
#define __SENTAVEL_H__

class Sentavel {

      public:

   // Construtor

   Sentavel( int, int );

   // Destrutor

   ~Sentavel();

   // Métodos essenciais

   void sentar( void );
        void levantar( void );

      private:

   // Propriedades

   int qntAssentos;
        int qntSentantes;
        int qntSuportes;

   // Métodos de acesso

   void set_assentos( int );
        int get_assentos( void );

   void set_sentantes( int );
        int get_sentantes( void );

   void set_suportes( int );
        int get_suportes( void );


      protected:

};

#endif

A declaração de uma classe começa com a palavra reservada class, seguida do nome da classe, nesse caso Sentável. Notem que não usei o acento agudo na definição da classe. O compilador iria reclamar do caracter estranho, que só seria aceitável dentro de uma string (cadeia de caracteres entre aspas).

Os itens definidos com () no final são chamados de métodos. São implementados, como veremos na próxima seção, como blocos de comandos. Algo muito parecido com as procedures e functions que vimos no artigo anterior.

Assim, Sentavel, ~Sentavel, sentar, levantar, set_assentos, get_assentos, set_suportes e get_suportes são métodos.

Os itens definidos como variáveis são as propriedades (ou campos, como muitos os chamam) da classe. São valores que definem as características da classe.

Assim, qntAssentos e qntSuportes são propriedades.

Note que eu usei as palavras public, private e protected na definição da classe. Peço um pouco de sua paciência, pois só vamos discutí-las mais adiante quando falarmos de herança.

Como estamos exemplificando em C++, segui o padrão ao colocar essa definição em um arquivo de cabeçalho (header, com a extensão .h). Quando falamos na implementação da classe Sentável nós discutiremos essa técnica, que é uma herança da linguagem C.

Assim, a definição de uma classe não traz em si muita coisa. E é para ser assim mesmo. Ela é só uma definição de como a classe é, ou seja, de suas propriedades e métodos. A codificação vem depois.

Há quem ache isso "burocrático". Em geral os programadores gostam logo de sentar e codificar. Mas o fato de ter de definir as classes antes de codificá-las força o desenvolvimento de um bom hábito: o de planejar antes de codificar. Não vou discutir isso aqui, pois o tema já foi tratado no primeiro artigo dessa série.

OBSERVAÇÃO:

Junto com POO estou tentando mostrar também algumas boas práticas de programação, como a de documentar e comentar o código. Já vi bons programadores encrencados por causa da ausência de comentários. Os preguiçosos dizem que dá trabalho fazer isso, mas eu sei (por experiência própria) que dá muito mais trabalho tentar lembrar como foi que se raciocinou naquele programa depois de três anos, na hora de dar manutenção. No decorrer dessa série teremos um artigo sobre DOCUMENTAÇÃO DE SISTEMAS, que vai abranger um pouco de UML, uma ferramenta livre de modelagem UML (umbrello) e uma ferramenta livre de documentação (doxygen).

Página anterior     Próxima página

Páginas do artigo
   1. O Gênesis
   2. Um pouco de Filosofia
   3. POO
   4. Classe
   5. Implementação
   6. Revisando a implementação
   7. Escopo e Encapsulamento
   8. Instância (Objetos, finalmente!)
   9. Herança
   10. Polimorfismo
   11. Referências e conclusão
Outros artigos deste autor

Instalando o Dynebolic sem instalador

Instalando Slackware "na marra"

Afinal, qual a melhor distribuição?

Programação (I) - Planejamento e Otimização

Software Livre e o Código de Defesa do Consumidor

Leitura recomendada

A Origem dos Nomes

Geração de arquivos PDF no Linux

5 coisas que todo aluno de Sistemas de Informação deveria saber (e fazer)...

Embutindo legenda e fazendo autoração de um vídeo para DVD

Recuperando imagem ISO com falha usando JIGDO

  
Comentários
[1] Comentário enviado por gabriel.av em 05/07/2008 - 20:30h

Olha eu achei isso muito importante flw

[2] Comentário enviado por ssdeassis em 05/07/2008 - 21:56h

esperei muito pela terceira parte do artigo continua muito bom como os dois primeiros tenho aprendido muito com a sua série de artigos. Agora vamos ao proximo. Meus parabems.

[3] Comentário enviado por k4mus em 05/07/2008 - 22:37h

Parabens Amigo!!

..vc conseguiu explicar a POO de uma forma agradavel e simples de entender.

Parabens!

[4] Comentário enviado por f_Candido em 06/07/2008 - 14:46h

Muito bom. Parabéns. Bem Simples e Direto.

Abraços


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts