Итоги: Point Manager
Часть раздела Object Oriented Programming путешествия по C на Coddy — урок 11 из 61.
Задание
ЛегкоДавайте создадим полноценный модуль Point, который управляет 2D-координатой. Эта итоговая задача объединяет все, что вы узнали об обращении со структурами как с объектами — использовании указателей для изменения состояния и указателей const для операций только для чтения.
Вы создадите три файла:
point.h: Объявите структуруPointс двумя целочисленными членами:xиy. Также объявите две функции, которые действуют как методы:point_move— принимает указатель на Point вместе с двумя целыми числами (dxиdy) и сдвигает положение точки, добавляя эти значения кxиypoint_print— принимает указательconstна Point и отображает его координаты (эта функция не должна изменять точку)
POINT_H.point.c: Реализуйте обе функции. Тщательно подумайте, какой функции нужен обычный указатель (для изменения точки), а какая использует указательconst(для безопасного чтения без изменения).main.c: Создайте Point, перемещайте его и отображайте его положение на разных этапах.
Вы получите четыре целых числа на вход: начальное x, начальное y, значение dx (величина перемещения по горизонтали) и значение dy (величина перемещения по вертикали).
В вашем основном файле инициализируйте Point с начальными координатами, выведите его начальное положение, переместите его на заданные значения, а затем выведите его новое положение.
Функция point_print должна выводить данные в следующем формате:
Point: ({x}, {y})Например, при входных данных 3, 5, 2 и -1 вывод будет следующим:
Point: (3, 5)
Point: (5, 4)Попробуйте сами
#include <stdio.h>
#include "point.h"
int main() {
// Считать входные значения
int x, y, dx, dy;
scanf("%d", &x);
scanf("%d", &y);
scanf("%d", &dx);
scanf("%d", &dy);
// TODO: Создать Point с начальными координатами (x, y)
// TODO: Вывести начальную позицию, используя point_print
// TODO: Переместить точку на (dx, dy), используя point_move
// TODO: Вывести новую позицию, используя point_print
return 0;
}
Все уроки раздела Object Oriented Programming
1Основы модульного программирования
Заголовочные файлыСтражи включенияИсходные файлыСтатические функцииПовторение: Модульный калькулятор4Инкапсуляция
Концепция непрозрачных указателейОпределение непрозрачных структурГеттеры и сеттерыВалидация в сеттерахИтоги: Секретный ящик2Объекты и методы
Структуры как объектыУказатель 'Self'Константная корректностьУказатель против значенияВспомогательные методыИтоги: Point Manager5Проект: Простой банковский счет
Настройка проектаРеализация счета3Жизненный цикл объекта
Паттерн «Конструктор»Паттерн «Деструктор»Инициализация в стекеГлубокое копированиеПовторение: String Wrapper6Наследование через композицию
Встраивание структурПравило первого элементаДоступ к элементам родителяUpcastingПовторение: Иерархия фигур9Проект: Рисование фигур
Обзор проектаРеализация круга