Recapitulação: Point Manager
Parte da seção Object Oriented Programming do Journey de C da Coddy — lição 11 de 61.
Desafio
FácilVamos construir um módulo Point completo que gerencia uma coordenada 2D. Este desafio de recapitulação reúne tudo o que você aprendeu sobre tratar structs como objetos — usando ponteiros para modificar o estado e ponteiros const para operações de apenas leitura.
Você criará três arquivos:
point.h: Declare uma structPointcom dois membros inteiros:xey. Também declare 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 (esta função não deve modificar o ponto)
POINT_H.point.c: Implemente ambas as funções. Pense cuidadosamente sobre qual função precisa de um ponteiro regular (para modificar o ponto) e qual usa um ponteiroconst(para ler com segurança sem modificação).main.c: Crie um Point, mova-o e exiba sua posição em diferentes estágios.
Você receberá quatro entradas inteiras: o x inicial, o y inicial, o valor dx (quantidade para mover horizontalmente) e o valor dy (quantidade para mover verticalmente).
No seu 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() {
// Lê os valores de entrada
int x, y, dx, dy;
scanf("%d", &x);
scanf("%d", &y);
scanf("%d", &dx);
scanf("%d", &dy);
// TODO: Criar um Point com as coordenadas iniciais (x, y)
// TODO: Imprimir a posição inicial usando point_print
// TODO: Mover o ponto em (dx, dy) usando point_move
// TODO: Imprimir a nova posição usando point_print
return 0;
}
Todas as lições de Object Oriented Programming
1Fundamentos da Programação Modular
Arquivos de CabeçalhoInclude GuardsArquivos-FonteFunções EstáticasRecapitulação: Calculadora Modular4Encapsulamento
Conceito de Ponteiros OpacosDefinindo Structs OpacasGetters e SettersValidação em SettersRecapitulação: Caixa Secreta2Objetos e Métodos
Structs como ObjetosO Ponteiro 'Self'Const CorrectnessPonteiro vs ValorMétodos AuxiliaresRecapitulação: Point Manager5Projeto: Conta Bancária Simples
Configuração do ProjetoImplementação da Conta3Ciclo de Vida de Objetos
Padrão de ConstrutorPadrão de DestrutorInicialização na StackCópia ProfundaRecapitulação: String Wrapper6Herança via Composição
Incorporação de StructsA Regra do Primeiro MembroAcessando Membros PaiUpcastingRecapitulação: Hierarquia de Formas9Projeto: Desenhador de Formas
Visão Geral do ProjetoImplementação do Círculo