Recapitulação: Point Manager
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 completo Point 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 cuidadosamente sobre qual função precisa de um ponteiro comum (para modificar o ponto) e qual usa um ponteiroconst(para ler com segurança sem fazer modificações).main.c: Crie um Point, mova-o e exiba sua posição em diferentes etapas.
Você receberá quatro entradas inteiras: o x inicial, o y inicial, o valor de dx (quantidade a mover horizontalmente) e o valor de dy (quantidade a mover verticalmente).
Em 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() {
// Ler 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 coordenadas iniciais (x, y)
// TODO: Imprimir a posição inicial usando point_print
// TODO: Mover o ponto por (dx, dy) usando point_move
// TODO: Imprimir 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ç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írculoImplementação do RetânguloUso PolimórficoContainer de FormasPratique por conta própria: Compilador de C online