11 / 11 / 2
Регистрация: 17.02.2014
Сообщений: 947
|
|
1 | |
Как описать простые объекты?25.08.2016, 15:36. Показов 1315. Ответов 20
Метки нет (Все метки)
Например:
- женщины, мужчины (с именем, фамилией, датой рождения и тд) - они могут, жениться, например - они могут иметь детей - одним методом получаем объекты детей, супругов Ну и имеется реестр, который и имеет методы, по женитьбе, беременности и тд. Добавлено через 29 минут Допустим я создам класс Human. Как мне описывать все объекты (женщин, мужчин, детей)?
0
|
25.08.2016, 15:36 | |
Ответы с готовыми решениями:
20
Создать приложение, рисующие простые графические объекты DirectX: Как динамически создавать простые 3d объекты Простые объекты Даны три простые дроби, описать их как записи. Найти их произведение и сократить |
331 / 283 / 78
Регистрация: 02.08.2016
Сообщений: 1,008
|
||||||
25.08.2016, 15:50 | 3 | |||||
Как производные классы. Только зачем ребёнка описывать отдельным классом, что будем делать, когда он вырастет, восходящее преобразование? Я бы вообще не делил на женщин и мучжин, а просто поставил флаг для пола, но раз ТЗ такое.
Добавлено через 1 минуту Детей тоже надо хранить во внешнем списке.
0
|
186 / 184 / 97
Регистрация: 30.04.2016
Сообщений: 478
|
|
25.08.2016, 15:55 | 4 |
Можно и не наследоваться.
Создай свойства в классе для каждого из признаков: 1) bool IsWoman 2) string Name 3) string Surname 4) string Patronymic 5) DateTime Birthday Для "хранения детей" также создай свойство коллекцию 6) ICollection<Human> Children Для указания супруга создай свойство 7) Human Partner
0
|
11 / 11 / 9
Регистрация: 23.04.2013
Сообщений: 81
|
||||||
25.08.2016, 15:57 | 5 | |||||
ну если заморачиваться и считать, что у детей тоже могут быть дети, как-то примерно так можно:
0
|
331 / 283 / 78
Регистрация: 02.08.2016
Сообщений: 1,008
|
|
25.08.2016, 16:02 | 6 |
Детей тоже надо хранить во внешнем списке.
Отчасти согласен, но если у нас мужчина сможет иметь флаг беременности, будет странно)
Когда(если?) программа будет переноситься на реальную базу данных будут сложности. и придётся следить за целостностью данных, когда мужчина говорит что A - его жена, а она это напрочь отрицает. Добавлено через 3 минуты поменяйте на throw new MizulinaException("Однополые браки в России запрещены!");
0
|
186 / 184 / 97
Регистрация: 30.04.2016
Сообщений: 478
|
|
25.08.2016, 16:21 | 7 |
Какие сложности будут?
Если будет использоваться Code First подход, никаких сложностей не вижу. Все для этого подготовлено. Да, странно, можно за миллионом баксов бежать. Опять же, Code First предполагает такие навигационные свойства. Если забыть про БД, то следить за целостностью здесь должен упомянутый автором реестр. Ничего критичного в этом не вижу. DevAlone, все Ваши замечания вполне к месту. Всегда приходится выбирать между простотой реализации и использования, и логической корректностью модели.
1
|
11 / 11 / 2
Регистрация: 17.02.2014
Сообщений: 947
|
|
25.08.2016, 17:00 [ТС] | 8 |
0
|
Заблокирован
|
|
25.08.2016, 17:02 | 9 |
jestero, https://msdn.microsoft.com/en-... .110).aspx
Достаточно посмотреть на класс объекта, на имя метода. Загуглить C# имя_класса имя_метода. Профит.
0
|
Master of Orion
|
|
25.08.2016, 17:14 | 10 |
Возможно стоит наследоваться, возможно все стоит пихать в один класс. Зависит от полета фантазии и задачи.
А если таких флагов не будет получится ненужная иерархия, которая внесет только сложность.
0
|
11 / 11 / 2
Регистрация: 17.02.2014
Сообщений: 947
|
|
25.08.2016, 17:18 [ТС] | 11 |
Написано, что добавляет объект в конец очереди List. В данном случае это важно?
0
|
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
|
|
25.08.2016, 17:23 | 12 |
0
|
11 / 11 / 2
Регистрация: 17.02.2014
Сообщений: 947
|
|
25.08.2016, 17:27 [ТС] | 13 |
А как можно организовать поиск?
Найти людей по имени, фамилии, женатых, с детьми, родителей ребёнка, детей родителя, супруга. У List есть какой нибудь метод?
0
|
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
|
||||||
25.08.2016, 17:30 | 14 | |||||
Есть технология LINQ, которая может в коллекциях типа List искать совпадения с заданным условием, например найти в списке людей Васю:
1
|
11 / 11 / 2
Регистрация: 17.02.2014
Сообщений: 947
|
|
25.08.2016, 17:49 [ТС] | 15 |
0
|
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
|
|
25.08.2016, 17:51 | 16 |
0
|
331 / 283 / 78
Регистрация: 02.08.2016
Сообщений: 1,008
|
|
25.08.2016, 19:07 | 17 |
Как вариант сделать абстрактный класс Human, который будет описывать сферического человека в вакууме и иметь флаг беременности, но геттеры и сеттеры будут только у наследника Woman.
0
|
Master of Orion
|
|
25.08.2016, 19:44 | 18 |
DevAlone, в чем проблема сделать класс Human вообще без этого флага, а определить его в производном классе? Что если нам вообще не нужен этот флаг, а нам достаточно НЕ-абстрактного класса, у которого всего лишь будет свойство Sex?
Наследование становится удобным только если у нас есть куча проверок if (x.Sex == Sex.Male) {...}else{...}. Если таких проверок нет, то и наследование не нужно. А нужны ли эти проверки определяется тем, какая работа происходит с данными. Если данные гомогенные (мы никогда не проверяем этот флаг, а просто показываем его на интерфейсе), то иерархия не нужна, если гетерогенные (и мы постоянно в коде проверяем различные условия и в заисимости от этих проверок поведение разное), то нужна иерархия. Проблема в том, что иерархия всегда добавляет сложность. Поэтому принцип KISS фактически говори о том, что вы должны ДОКАЗАТЬ необходимость наличия производных классов, в противном случае успокоившись на написании одного простого Human с 1.5 свойствами. Хорошая статья "Как программисты хлеб пекли", немного грубовато написано, но по сути: сложность нужно вносить постепенно, трансформируя код, а не заложив в него сразу гибкость на все случаи жизни (иначе получите пример как в статье, на которую ссылаются в тексте):
0
|
11 / 11 / 2
Регистрация: 17.02.2014
Сообщений: 947
|
|
25.08.2016, 19:57 [ТС] | 19 |
0
|
331 / 283 / 78
Регистрация: 02.08.2016
Сообщений: 1,008
|
|
25.08.2016, 22:48 | 20 |
а как человек будет знать, что он беременный? Где-то это информация должна храниться.
Инетересная статья. Вообще, моё мнение, что сложность нужна тогда, когда она оправдана функциональностью, если что-то можно сделать проще и оно будет делать тоже самое, то зачем усложнять? Паттерны не изучал, может моё мнение ещё изменится)
0
|
25.08.2016, 22:48 | |
25.08.2016, 22:48 | |
Помогаю со студенческими работами здесь
20
Использование классов в С++. Простые объекты. Описать объекты Периодичность, Статья, Автор Объекты. Описать тип объекта - вектор Как уничтожать динамические объекты и вообще объекты, если это необходимо сделать в их процедурах? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |