Итоги: Point Manager
Часть раздела Объектно-ориентированное программирование путешествия по C на Coddy. Урок 11 из 61.
Задание
ЛегкоДавайте создадим полный модуль Point, который управляет 2D-координатой. Это итоговое задание объединяет всё, чему вы научились, рассматривая структуры как объекты: используя указатели для изменения состояния и указатели const для операций только чтения.
Вы создадите три файла:
point.h: Declare структуруPointс two integer members:xиy. Также Declare two функции, которые действуют как методы:point_move: Takes указатель на Point вместе с two integers (dxиdy) и сдвигает position точки, добавляя эти values кxиypoint_print: Takes указательconstна Point и отображает её координаты (эта function не Should modify точку)
POINT_H.point.c: Implement обе функции. Внимательно подумайте, какой функции нужен обычный указатель (чтобы modify точку), а какая использует указательconst(чтобы безопасно Read без изменения).main.c: Create Point, перемещайте её и отображайте её position на разных этапах.
Вы получите four integer inputs: initial x, initial y, dx value (величина горизонтального перемещения) и dy value (величина вертикального перемещения).
В вашем основном файле инициализируйте Point с начальными координатами, выведите её initial position, переместите её на заданные values, затем выведите её новую position.
Функция point_print Should выводить данные в следующем формате:
Point: ({x}, {y})Например, при inputs 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;
}
Все уроки раздела Объектно-ориентированное программирование
1Основы модульного программирования
Заголовочные файлыСтражи включенияИсходные файлыСтатические функцииПовторение: Модульный калькулятор4Инкапсуляция
Концепция непрозрачных указателейОпределение непрозрачных структурГеттеры и сеттерыВалидация в сеттерахИтоги: Секретный ящик2Объекты и методы
Структуры как объектыУказатель 'Self'Константная корректностьУказатель против значенияВспомогательные методыИтоги: Point Manager5Проект: Простой банковский счет
Настройка проектаРеализация счета3Жизненный цикл объекта
Паттерн «Конструктор»Паттерн «Деструктор»Инициализация в стекеГлубокое копированиеПовторение: String Wrapper6Наследование через композицию
Встраивание структурПравило первого элементаДоступ к элементам родителяUpcastingПовторение: Иерархия фигур9Проект: Рисование фигур
Обзор проектаРеализация кругаРеализация прямоугольникаПолиморфное использованиеКонтейнер фигурПотренируйтесь самостоятельно: Онлайн-компилятор C