Назад
Вперед
Содержание
Отношение агрегации
Коллекции
Пример
Изменим модель стада коров. Добавим в класс стадо поле, которое будет содержать общее количество корма, выделенного стаду.
Будем считать, что каждой корове нужно в день определенное и разное количество корма.
Принимать или не принимать корову в стадо, будем решать исходя из того, хватит ли на нее общего корма.
Поэтому количество мест в стаде нам заранее неизвестно и массив объектов использовать нельзя.
В этом случае удобнее использовать не массив объектов, а коллекцию объектов.
Создать класс Cow – корова, содержащий:
- Поле name -кличка;
- Поле nadoy-надой в литрах;
- Поле eda – нужное количество еды;
- Конструктор, присваивающий значения этим полям;
- Свойства только для чтения всех полей;
- Метод ToStr, формирующий строку значений полей объекта с комментариями.
Создать класс Stado – стадо, содержащий:
- Закрытое поле List< Cow > cows - коллекция из нескольких коров, объектов класса Cow;
- Закрытое поле all – количество корма, выделенное всему стаду;
- Конструктор, с одним параметром all. Параметр all - количество еды на все стадо. Конструктор создает также объект - коллекцию cows .
- Метод Zap – получает в качестве параметра корову x и добавляет ее в коллекцию cows. Метод возвращает значение true, если на эту корову хватает корма и false, если корма не хватает. Если корова в стадо принята, метод также уменьшает количество общего корма (значение поля all) на количество корма нужное данной корове (поле x.Eda).
- Метод Obnadoy (без параметров) – вычисляющий общий надой стада.
- Метод ToStr (без параметров) формирующий строку значений полей всех объектов стада с комментариями.
В методе Main:
- Случайным образом получить количество еды, выделенное стаду и вывести его на экран.
- Создать стадо - объект класса Stado с полученным кормом в качестве параметра;
- В цикле, пока хватает корма:
- Получить случайным образом надой коровы и количество необходимого ей корма;
- Создать корову - объект класса Cow с полученными значениями в качестве параметров и именами: корова 0, корова 1, …
- С помощью метода Zap попытаться поместить корову в стадо.
- С помощью метода ToStr вывести информацию о каждой корове.
- С помощью метода ToStr показать состояние созданного стада
- С помощью метода Obnadoy вычислить общий надой стада
Отработка:
Описание класса Cow
Описание класса Stado
Метод Main класса Program
Назад
Вперед
Содержание