✅ The verified answer to this question is available below. Our community-reviewed solutions help you understand the material better.
Який структурний патерн використано
class Program
{
static void Main(string[] args)
{
Person john = new Person("John");
Person jane = new Person("Jane");
Person alice = new Person("Alice");
Person billy = new Person("Billy");
Person christine = new Person("Christine");
john.LogChildren();
jane.LogChildren();
john.AddChild(alice);
jane.AddChild(alice);
john.AddChild(billy);
jane.AddChild(christine);
john.LogChildren();
jane.LogChildren();
Uncle david = new Uncle("David");
Person edward = new Person("Edward");
edward.AddChild(john);
edward.AddChild(david);
edward.LogChildren();
}
}
public interface IFamilyMember
{
string Name { get; set; }
}
public class Person : IFamilyMember, IEnumerable<IFamilyMember>
{
private List<IFamilyMember> _children = new List<IFamilyMember>();
public string Name { get; set; }
public Person(string name)
{
Name = name;
}
public void AddChild(IFamilyMember child)
{
_children.Add(child);
}
public void RemoveChild(IFamilyMember child)
{
_children.Remove(child);
}
public IFamilyMember GetChild(int index)
{
return _children[index];
}
public IFamilyMember GetChild(string name)
{
return _children.Where(c => c.Name == name).First();
}
public IEnumerable<IFamilyMember> GetChildren()
{
return _children;
}
public IEnumerator<IFamilyMember> GetEnumerator()
{
return ((IEnumerable<IFamilyMember>)_children).GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return ((IEnumerable<IFamilyMember>)_children).GetEnumerator();
}
public void LogChildren()
{
// Check if person has any children.
if (GetChildren().Any())
{
// Output person's name, number of children, and list of child names.
Console.WriteLine($"{Name} has ({GetChildren().Count()}) children:\n{String.Join("\n", GetChildren().Select(c => c.Name))}");
}
else
{
// No children to output.
Console.WriteLine($"{Name} has no children.");
}
}
}
public class Aunt : IFamilyMember
{
public string Name { get; set; }
public Aunt(string name)
{
Name = name;
}
}
public class Uncle : IFamilyMember
{
public string Name { get; set; }
public Uncle(string name)
{
Name = name;
}
}