Looking for Основи розробки програмного забезпечення на платформі Microsoft.NET test answers and solutions? Browse our comprehensive collection of verified answers for Основи розробки програмного забезпечення на платформі Microsoft.NET at do.ipo.kpi.ua.
Get instant access to accurate answers and detailed explanations for your course questions. Our community-driven platform helps students succeed!
Який структурний патерн використано
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;
}
}
public class LazyDbAdapter : IDb
{
private readonly Lazy
_db = new(() => new LegacyDb());
public int Get(int id) => _db.Value.Read(id);
}
Яку додаткову вигоду дає цей Adapter?
var m = new[]{ "ab", "abcd", "abc" }
.Select(s => new { s, len = s.Length })
.OrderByDescending(x => x.len);
]]>public class ColorAdapter
{
private readonly LegacyRgb _c;
public ColorAdapter(LegacyRgb c)=>_c=c;
public static implicit operator NewColor(ColorAdapter a)
=> new(a._c.R,a._c.G,a._c.B);
}
Ризик неявного оператора в Adapter:
Який породжуючий патерн реалізовано
public class Pages
{
public int PageCount { get; set; }
public Pages(int pageCount)
{
this.PageCount = pageCount;
}
}
public interface IBook
{
string Author { get; set; }
string Title { get; set; }
Pages Pages { get; set; }
}
public class Book : IBook, ICloneable
{
public string Title { get; set; }
public string Author { get; set; }
public Pages Pages { get; set; }
public Book(string title, string author, int pageCount)
{
Title = title;
Author = author;
Pages = new Pages(pageCount);
}
public Book DeepClone()
{
Book clone = (Book)this.MemberwiseClone();
clone.Title = String.Copy(Title);
clone.Author = String.Copy(Author);
clone.Pages = new Pages(Pages.PageCount);
return clone;
}
public object Clone()
{
return this.MemberwiseClone();
}
}
ISortStrategy strategy = args.Contains("--fast") ? new QuickSort() : new MergeSort();
Як називається цей підхід вибору стратегії?
string txt = "LinQ";
var flag = txt.Equals("LINQ", StringComparison.OrdinalIgnoreCase);
]]>Для прикладу, класи сонця, багаття, батареї опалення та електричного нагрівача, які по суті мають спільну функцію нагрівання, можна поєднати
Абстрактні класи
Який структурний патерн використано
class Program
{
static void Main(string[] args)
{
var spiralBinding = new SpiralBinding();
var fantasyBook = new FantasyBook("The Name of the Wind", "Patrick Rothfuss", spiralBinding);
var sciFiBook = new ScienceFictionBook("Dune", "Frank Herbert", spiralBinding);
}
}
interface IBinding
{
string Name { get; }
}
class Binding : IBinding
{
public string Name
{
get
{
return this.GetType().Name;
}
}
}
class PerfectBinding : Binding { }
class SpiralBinding : Binding { }
class SaddleStitchBinding : Binding { }
interface IBook
{
string Author { get; set; }
Binding Binding { get; set; }
string Title { get; set; }
}
class Book : IBook
{
public string Author { get; set; }
public Binding Binding { get; set; }
public string Title { get; set; }
public Book(string title, string author, Binding binding)
{
Author = author;
Binding = binding;
Title = title;
Console.WriteLine($"Created {this.GetType().Name} of \"{title}\" by {author} using {binding.Name}.");
}
}
class MysteryBook : Book
{
public MysteryBook(string title, string author, Binding binding) : base(title, author, binding) { }
}
class FantasyBook : Book
{
public FantasyBook(string title, string author, Binding binding) : base(title, author, binding) { }
}
class ScienceFictionBook : Book
{
public ScienceFictionBook(string title, string author, Binding binding) : base(title, author, binding) { }
}