Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- namespace prSharp
- {
- //Базовый класс
- public class Person{
- //делаем защищенное поле, чтобы можно было иметь доступ из потомков
- protected readonly string _name;
- public Person(string name)
- {
- _name = name;
- }
- //метод базового класса который будем переопределять
- // пусть возвращает словарь где ключ - название свойства
- // значение - само свойства объекта
- public virtual Dictionary<string,string> GetData()
- {
- return new Dictionary<string, string>()
- {
- {"Name", _name}
- };
- }
- }
- //дочерний класс сотрудника, он содержит в себе информацию о компании
- public class Employee : Person
- {
- private readonly string _companyName;
- public Employee(string name, string comppanyName) : base(name)
- {
- _companyName = comppanyName;
- }
- public override Dictionary<string, string> GetData()
- {
- //тут мы вызвали базовую реализацию
- var data = base.GetData();
- data.Add("Company", _companyName);
- return data;
- }
- }
- // допустим у тебя задача - вывести инофрмацию о людях
- // это могут быть как обычные люди, так и сотрудники
- public class PersonInfoPresenter
- {
- private readonly Person[] _people;
- public PersonInfoPresenter(Person[] people)
- {
- //кидаем исключение если передан null
- _people = people??throw new ArgumentNullException(nameof(people));
- }
- public void DrawPeopleInfo()
- {
- for(int i = 0; i<_people.Length; i++)
- {
- //Вот тут мы не знаем кто это, сотрудник или обычный человек
- Person person = _people[i];
- //но мы знаем что метод GetData - должен вернуть словарь с данными
- //допустим мы договорились что ключ - имя какого-то свойства
- //а значение - значение этого свойства
- foreach(var data in _people[i].GetData())
- {
- Console.WriteLine(data.Key + " : " + data.Value);
- }
- //чтобы был промежуток между сотрудниками
- Console.WriteLine();
- }
- }
- }
- class Program
- {
- //вот наши данные, они содержат как сотрудников, так и обычных Person
- static Person[] people = new[]{
- new Person("Иван Петрович Смирнов"),
- new Person("Варвара Ивановна Панасенкова"),
- new Employee("Бил, мать его в сраку, Гейтс", "Майкрософт"),
- new Employee("Ричард Мэттью Столлман", "Временно безработный"),
- new Person("Анна Петровна"),
- };
- public static void Main()
- {
- //мы создали наш презентер, который схавал людей
- PersonInfoPresenter presenter = new PersonInfoPresenter(people);
- //вызвали метод для того чтобы он отрисовал людей которых схавал
- presenter.DrawPeopleInfo();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement