Revisão: Gerenciador de pontos
Parte da seção Programação Orientada a Objetos do Journey de C da Coddy. Lição 11 de 61.
Desafio
FácilVamos criar um módulo Point completo que gerencia uma coordenada 2D. Este desafio de revisão reúne tudo o que você aprendeu sobre tratar structs como objetos: usar ponteiros para modificar o estado e ponteiros const para operações somente de leitura.
Você criará três arquivos:
point.h: Declare uma structPointcom dois membros inteiros:xey. Declare também duas funções que atuam como métodos:point_move: recebe um ponteiro para Point junto com dois inteiros (dxedy) e desloca a posição do ponto adicionando esses valores axeypoint_print: recebe um ponteiroconstpara Point e exibe suas coordenadas (essa função não deve modificar o ponto)
POINT_H.point.c: Implemente as duas funções. Pense com cuidado em qual função precisa de um ponteiro comum (para modificar o ponto) e qual usa um ponteiroconst(para ler com segurança, sem modificar).main.c: Crie um Point, mova-o e exiba sua posição em diferentes etapas.
Você receberá quatro valores inteiros como entrada: o x inicial, o y inicial, o valor de dx (quantidade a mover horizontalmente) e o valor de dy (quantidade a mover verticalmente).
No arquivo principal, inicialize um Point com as coordenadas iniciais, imprima sua posição inicial, mova-o pelas quantidades fornecidas e, em seguida, imprima sua nova posição.
A função point_print deve produzir a saída neste formato:
Point: ({x}, {y})Por exemplo, com as entradas 3, 5, 2 e -1, a saída seria:
Point: (3, 5)
Point: (5, 4)Experimente você mesmo
#include <stdio.h>
#include "point.h"
int main() {
// Leia os valores de entrada
int x, y, dx, dy;
scanf("%d", &x);
scanf("%d", &y);
scanf("%d", &dx);
scanf("%d", &dy);
// TODO: Crie um Point com as coordenadas iniciais (x, y)
// TODO: Imprima a posição inicial usando point_print
// TODO: Mova o ponto por (dx, dy) usando point_move
// TODO: Imprima a nova posição usando point_print
return 0;
}
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