Arquivos-fonte
Parte da seção Programação Orientada a Objetos do Journey de C da Coddy. Lição 3 de 61.
Até agora, colocamos declarações de funções em arquivos de cabeçalho, mas o código real das funções (a definição) ficou no arquivo principal. A próxima etapa da programação modular é mover essas definições para seus próprios arquivos de origem (arquivos .c).
Isso cria uma estrutura organizada em três partes: o cabeçalho declara funções, um arquivo-fonte separado as define e main simplesmente as usa. Veja como fica:
// math_utils.h
#ifndef MATH_UTILS_H
#define MATH_UTILS_H
int add(int a, int b);
#endif
// math_utils.c
#include "math_utils.h"
int add(int a, int b) {
return a + b;
}
// main.c
#include <stdio.h>
#include "math_utils.h"
int main() {
printf("%d\n", add(5, 3));
return 0;
}
Observe que math_utils.c inclui seu próprio arquivo de cabeçalho. Isso garante que a definição da função corresponda à declaração; se elas não corresponderem, o compilador detectará o erro. O arquivo principal só precisa incluir o arquivo de cabeçalho para usar a função; não precisa saber como add funciona internamente.
Essa separação mantém os detalhes da implementação ocultos e permite modificar a lógica das funções sem tocar nos arquivos que usam essas funções.
Desafio
FácilVamos criar um utilitário matemático simples, organizando seu código na estrutura adequada de três arquivos: um cabeçalho para declarações, um arquivo-fonte para implementações e um arquivo principal que os utiliza.
Você criará três arquivos:
math_ops.h: seu arquivo de cabeçalho, contendo as declarações de duas operações:multiplyesubtract. Ambas as funções recebem dois números inteiros e retornam um número inteiro. Não se esqueça de incluir proteções de cabeçalho usando o símboloMATH_OPS_H.math_ops.c: seu arquivo-fonte, contendo as implementações demultiplyesubtract. Este arquivo deve incluir seu próprio cabeçalho para garantir que as declarações correspondam às definições.main.c: seu arquivo principal, que inclui o cabeçalho e usa ambas as funções para realizar cálculos.
A função multiply deve retornar o produto de dois números inteiros, e subtract deve retornar o primeiro número inteiro menos o segundo.
Você receberá dois valores inteiros de entrada: a e b.
Na sua função principal, imprima os resultados das duas operações em linhas separadas:
Product: {result of multiply}
Difference: {result of subtract}Por exemplo, com as entradas 8 e 3, a saída seria:
Product: 24
Difference: 5Experimente você mesmo
#include <stdio.h>
#include "math_ops.h"
int main() {
int a, b;
scanf("%d", &a);
scanf("%d", &b);
// TODO: Chame a função multiply com a e b e armazene o resultado
// TODO: Chame a função subtract com a e b e armazene o resultado
// TODO: Imprima os resultados no formato:
// Produto: {resultado de multiply}
// Diferença: {resultado de subtract}
return 0;
}
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Programação Orientada a Objetos
1Fundamentos da Programação Modular
Arquivos de cabeçalhoProteções de inclusãoArquivos-fonteFunções estáticasRevisão: calculadora modular4Encapsulamento
Conceito de ponteiros opacosDefinindo structs opacasGetters e settersValidação em settersRevisão: caixa secreta2Objetos e métodos
Structs como objetosO ponteiro 'Self'Correção de constPonteiro vs. valorMétodos auxiliaresRevisão: Gerenciador de pontos5Projeto: Conta Bancária Simples
Configuração do ProjetoImplementação da Conta3Ciclo de vida do objeto
Padrão de construtorPadrão de destrutorInicialização da pilhaCópia profundaRevisão: wrapper de String6Herança por composição
Incorporação de structRegra do primeiro membroAcessando membros do tipo paiUpcastingRevisão: hierarquia de formas9Projeto: Desenhador de Formas
Visão geral do projetoImplementação do círculoImplementação do retânguloUso polimórficoContêiner de formasPratique por conta própria: Compilador de C online