Использование паттернов проектирования при разработке приложения "Новогодний подарок" - C#
Формулировка задачи:
Использование паттернов проектирования при разработке приложений
Создать консольное приложение, удовлетворяющее следующим требованиям:
1. Использовать возможности ООП: классы, наследование, полиморфизм, инкапсуляция.
2. Каждый класс должен иметь исчерпывающее смысл название и информативный состав.
3. Наследование должно применяться только тогда, когда это имеет смысл.
4. При кодировании должны быть использованы соглашения об оформлении кода code convention.
5. Классы должны быть грамотно разложены в структуре проекта.
6. Работа с консолью или консольное меню должно быть минимальным.
7. Для хранения параметров инициализации можно использовать файлы.
Новогодний подарок. Определить иерархию конфет и прочих сладостей. Создать несколько
объектов-конфет. Собрать детский подарок с определением его веса. Провести сортировку конфет в
подарке на основе одного из параметров. Найти конфету в подарке, соответствующую заданному
диапазону содержания сахара.
Решение задачи: «Использование паттернов проектирования при разработке приложения "Новогодний подарок"»
textual
Листинг программы
public class Gift : IEnumerable<Candy>
{
private List<Candy> candies = new List<Candy>();
public uint Weight { get; private set; }
public void Add(Candy candy)
{
if (candy == null)
{
throw new ArgumentNullException(nameof(candy));
}
candies.Add(candy);
Weight += candy.TotalWeight;
}
public List<Candy> FindBy(uint minSugarWeight, uint maxSugarWeight)
{
return candies.Where(candy => candy.SugarWeight >= minSugarWeight && candy.SugarWeight <= maxSugarWeight).ToList();
}
public void OrderBy<TResult>(Func<Candy, TResult> comparer)
{
candies = candies.OrderBy(comparer).ToList();
}
public void OrderByDesceding<TResult>(Func<Candy, TResult> comparer)
{
candies = candies.OrderByDescending(comparer).ToList();
}
public IEnumerator<Candy> GetEnumerator()
{
return candies.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}