Programar em C++/Introdução

De Wikibooks

Tabela de conteúdo

[editar] Pensando no código

Considerando o conjunto de operações e eventos que nosso programa deve executar temos diversas maneiras de criar o código, porém o mais difícil é criar um código eficiente, rápido e compacto. Na verdade, diversos fatores podem interferir nestes aspectos da programação, entre eles, a escolha do compilador, o método de estruturar o código, a orientação do mesmo, etc... Em termos gerais, um código torna-se mais próximo do ideal a medida que suas partes tornam-se mais simples de se analisar e quando todos os processos estão bem definidos e especializados. Quando temos um código que contém muito mais excessões do que regras, este precisa de uma reestruturação.

Podemos definir C++ como um "superset", ou seja, um conjunto a mais de funcionalidades para a linguagem C, isto é o que enxergam os que já tem um conhecimento da linguagem C, mas ela é muito mais que isto, podemos mudar completamente a forma de criar o programa quando usamos os recursos avançados da linguagem, as estruturas de decisões if-else e switch, podem ser simplificadas e a organização do código pode ser bem mais globalizada e genérica, possibilitando a reutilização do código em diversas situações diferentes.

Vejamos como as funcionalidades da linguagem C++ podem ajudar a redefinir os meios de programação que aprendemos com o bom e velho estilo C.

[editar] Dois modos de programar

Conhecendo o modo de programar que as linguagens oferecem desde os primórdios da computação, podemos observar o primeiro modo de programar como o mais usual e bem mais difundido, este modo é conhecido como modelo estruturado sequencial, em síntese refere-se a forma de programar onde uma instrução segue a outra numa seqüência que inicia e termina em um fluxo parcialmente "previsível". O modelo de programação sequenciado é bem simples de implementar, porém aumenta a complexidade para tarefas mais bem trabalhadas e sofisticadas, isto ocorre devido a estrutura do modelo, que exige rotinas cada vez mais extensas, não raramente é possível encontrar rotinas que, em alguns casos, tornam-se comparáveis a programas completos, usando como referênica o número de linhas de instruções.

A programação estruturada ainda pode ser classificada em dois modos de programar: um orientado a procedimentos e outro orientado a objetos... O que significa isso? A orientação define o modo de abordar o problema para tentar solucioná-lo:

  • O modelo de orientação a procedimentos se preocupa em fornecer meios para resolver o problema sem contabilizar, a princípio, os dados que serão usados durante o processo.
  • O modelo de orientaçào a objetos se preocupa com os elementos que são necessários para a solução de um problema, sob este ângulo, os dados são os elementos principais na análise do problema.


Este livro traz uma visão dos problemas sob a óptica da orientação a objetos, enquanto que o livro: Programar em C traz a análise sob a óptica da orientação a procedimentos.

[editar] Um pouco sobre orientação a objetos

Wikipedia
A Wikipédia tem mais sobre este assunto:
Orientação a objetos

A Programação Orientada a Objetos é um paradigma de programação que visa organização, produtividade e sustentabilidade.

A apresentação dos conceitos de orientação a objetos é bastante abrangente, o que implica na abordagem de diversos aspectos, como modelagem, estudo de performance de modelos, aplicabilidade de técnicas, estruturação de objetos, otimização, manutenção do código, entre outros, Por estes motivos nosso objetivo aqui não é apresentar a orientação a objetos em sua totalidade. Para um estudo mais detalhado do tema sugerimos o livro POO com este objetivo. O objetivo aqui é apresentar como a orientação a objetos se aplica na linguagem C++, porém os conceitos aqui apresentados devem ser suficientes para a estruturação de programas de bom nível.


Todas as linguagens orientadas a objectos contêm os princípios de:

  • Encapsulamento
É um mecanismo para esconder os detalhes envolvidos no processamento de uma ação. Por exemplo, quando usamos um telefone, não precisamos lidar diretamente com o circuito interno; a interface do telefone cuida desse problema.
  • Polimorfismo
Isso permite o uso de uma única interface ― uma única forma de uso ― para objetos de tipos diferentes; em particular, a mesma interface para objetos de uma classe e objetos de classes derivadas dessa.
  • Herança
Como o nome sugere, isso permite que uma classe herde de outra suas características, podendo também introduzir suas próprias ou alterar as características herdadas. O uso de herança acaba poupando trabalho e melhorando a organização do código.

[editar] Paradigmas da Programação:

Desde o início da programação, já passamos pelos seguintes paradigmas:

  • Não estruturada - exemplos: COBOL, FORTRAN, BASIC (anos 50-60)
  • Procedimental ou Procedural - exemplos: C, Pascal (anos 70)
  • Modular - exemplo: Modula II (anos 80)
  • Abstracção de tipos de dados - exemplo: Ada (anos 80)
  • Programação Orientada a Objectos - exemplos: C++, Java (anos 80-90)

[editar] Objetos

Objeto é, genericamente, uma entidade de armazenamento e manipulação de dados, o mesmo deve ser criado para processar os dados que armazena e recebe, sendo sensível a entradas do programa principal para fornecer as saídas esperadas pelo mesmo.

Da mesma forma que podemos usar tipos de dados nativos da linguagem podemos criar nossos tipos de dados. Na linguagem C podemos criar tipos de dados compostos que chamamos de estruturas, estes são criados com a palavra chave struct, C++ possibilita o uso de estruturas de dados e introduz um novo tipo chamado de classe. Classe, como o nome sugere, refere-se a um conjunto de características dadas a um grupo de "indivíduos", ou seja, grupo de objetos, por este motivo classe é a definição de tipo de objeto. Classes de objetos são criadas através da palavra chave class.

O pocesso de criação de um objeto segue a seqüência:

  • Definir os dados e procedimentos que a classe deve conter;
  • Criar a classe de objetos;
  • Declarar (instanciar) o objeto.

A definição de uma classe de objetos deve ser feita de forma a tornar, preferencialmente, todos os dados protegidos de interferências de códigos externos a o objeto. Um objeto deve ser uma parte do código do programa com uma certa autonomia, o objeto deve ter controle sobre seus dados e ser capaz de prover os dados e eventos, dentro de seu escopo de responsabilidades, necessários para o funcionamento adequado do sistema.

Ferramentas pessoais
Criar um livro
  • Adicionar página wiki
  • Ajuda de colecções