Шукаєте відповіді та рішення тестів для Основи розробки програмного забезпечення на платформі Microsoft.NET? Перегляньте нашу велику колекцію перевірених відповідей для Основи розробки програмного забезпечення на платформі Microsoft.NET в do.ipo.kpi.ua.
Отримайте миттєвий доступ до точних відповідей та детальних пояснень для питань вашого курсу. Наша платформа, створена спільнотою, допомагає студентам досягати успіху!
Який структурний патерн використано
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) { }
}