Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
KPiYaP_otchyot_VS14.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
136.03 Кб
Скачать
    1. Сравнение обычного массива и семейства

Условие задачи

Используя задание из ЛР 8 создать собственное семейство с именем «Моя ферма», реализовать индексатор (на 10 баллов – строковый), в основной программе продемонстрировать работу со всеми животными фермы.

Листинг программы:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Collections;

namespace Laba_8_2

{

public abstract class Animal

{

protected string name;

public string Name

{

get

{ return name; }

set

{ name = value; }

}

public Animal()

{ name = "У животного нет имени"; }

public Animal(string newName)

{ name = newName; }

public void Feed()

{ Console.WriteLine("{0} кушает", name); }

}

public class Корова : Animal

{

public void Milk()

{ Console.WriteLine("{0} дает молоко", name); }

public Корова(string newName)

: base(newName)

{ }

}

public class Курица : Animal

{

public void LayEgg()

{

Console.WriteLine("{0} несет яйца", name);

}

public Курица(string newName)

: base(newName)

{ }

}

public class Пёс : Animal

{

public void Woof()

{

Console.WriteLine("{0} лает", name);

}

public Пёс(string newName) : base(newName) { }

}

public class Кот : Animal

{

public void Myaw()

{

Console.WriteLine("{0} мяукает", name);

}

public Кот(string newName) : base(newName) { }

}

public class МояФерма : DictionaryBase

{

public void Add(string newID, Animal newAnimal)

{

Dictionary.Add(newID, newAnimal);

}

public void Remove(string animalID)

{

Dictionary.Remove(animalID);

}

public МояФерма() { }

public Animal this[string animalID]

{

get { return (Animal)Dictionary[animalID]; }

set { Dictionary[animalID] = value; }

}

}

class Class

{

static void Main(string[] args)

{

МояФерма ферма = new МояФерма();

ферма.Add("Мурка",new Корова("Корова"));

ферма.Add("Курейка", new Курица("Курица"));

ферма.Add("Джэйк", new Пёс("Бобик"));

ферма.Add("Барсик",new Кот("Кузя"));

((Корова)ферма["Мурка"]).Milk();

((Курица)ферма["Курейка"]).LayEgg();

((Пёс)ферма["Джэйк"]).Woof();

((Кот)ферма["Барсик"]).Myaw();

Console.ReadKey();

}

}

}

Тестирование программы

Рисунок 9 – Тестирование программы

  1. Создание семейств. Использование индексаторов

Условие задачи

Создайте класс семейства People (люди), который представляет собой семейство класса Person (лицо), приведенного ниже. Доступ к элементам семейства должен быть организован через строковый индексатор, являющийся именем лица, которое идентично свойству Person.Name

Листинг программы:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Collections;

namespace Laba_9

{

public class Человек

{

private string name;

private int age;

public string Name

{

get { return name; }

set { name = value; }

}

public int Age

{

get { return age; }

set { age = value; }

}

public Человек(string newName, int newAge) {

this.Name = newName;

this.Age = newAge;

}

public override string ToString()

{

return (string.Format(this.GetType().Name + " " + this.Name + " ему " + this.Age + " лет"));

}

}

public class People : DictionaryBase

{

public void Add(string newID, Человек newPerson)

{

Dictionary.Add(newID,newPerson);

}

public void Remove(string personID)

{

Dictionary.Remove(personID);

}

public People() {}

public Человек this[string personID]

{

get {return (Человек)Dictionary[personID];}

set {Dictionary[personID]=value;}

}

}

class Program

{

static void Main(string[] args)

{

People Люди = new People();

Человек a = new Человек("Андрей", 18);

Человек b = new Человек("Паша", 17);

Человек c = new Человек("Ваня", 19);

Люди.Add(a.Name, a);

Люди.Add(b.Name, b);

Люди.Add(c.Name, c);

Console.WriteLine("Перед вами:");

foreach (DictionaryEntry z in Люди)

{

Console.WriteLine(z.Value.GetType().Name + " " + ((Человек)z.Value).Name + " ему " + ((Человек)z.Value).Age + " лет");

}

Console.WriteLine(Люди["Саша"]);

Console.ReadKey();

}

}

}

Тестирование программы

Рисунок 10 – Тестирование программы