На языке Go сделать работающую реализацию паттерна Factory Method. Две низкоуровневые сущности Cat и Dog. Обе генерализируются в абстракцию Animal, у которой в контракте есть метод Sound, который обязаны реализовать все потомки. Отдельно нужна функция принимающая на вход множество (не важно массив или связанный список) объектов типа Animal, в теле перебор всех элементов и вызов у каждого метода Sound. В результате работы программы на экране должен появится столбик голосов что-то вроде:
- “Гав”
- “Мяу”
Код должен быть откомментирован. Должно быть понятно как можно добавить новую сущность того же уровня, что и Cat, Dog.
Дан массив из 100 элементов, целых, упорядоченных по возрастанию, чисел от 1 до 100. Произвольный элемент этого массива заменили на значение 0, затем массив перемешали. На любом понятном языке программирования реализовать функцию, которая принимает на вход этот перемешанный массив и возвращает, то значение, которое до этого заменили на 0. Ограничение – это необходимо сделать за 1 проход по массиву. Результатом этой задачи может быть не обязательно компилируемый и работающий код, важен понятный алгоритмический подход к решению этой задачи.
Нужно спроектировать реляционную базу данных для издательства. У нас есть сущности: Автор (важно хранить ФИО), книга (важно хранить название), издание (важно хранить ISBN), гонорар (дату, сумму, кому выплачен).
Важно знать, что 1 автор может поучаствовать в создании более чем одной книги и над одной книгой могут потрудиться несколько авторов. Издание – это издание конкретной книги, книга может издаваться несколько раз, за каждое издание автору(ам) выплачивается гонорар. Результатом будет ER диаграмма (предпочтительно, схема в нотации «вороньи лапы»), содержащая таблицы с полями и связями.
Решения задач находятся в:
Запуск программ можно осуществить командой:
go run ./animal
В первом задании, чтобы было чуть веселее, добавлена поддержка ассинхронности. Чтобы включить этот режим, укажите флаг -a
:
go run ./animal -a
-
go run ./number
-
Задача проектирования решена в виде диаграммы:
Дополнительно составлен SQL-файл publishing.sql.