
- •Простейший класс
- •Класс с конструкторами
- •Перегрузка конструкторов
- •Использование свойств в классе
- •Применение свойства наследования на примере виртуальных и абстрактных классов
- •Использование интерфейсов
- •Сравнение обычного массива и семейства
- •Сравнение обычного массива и семейства
- •Создание семейств. Использование индексаторов
- •Перегрузка простейших операций в простейших классах
- •Перегрузка операций с использованием стандартных интерфейсов и методов класса Object
- •Использование делегатов в качестве параметров функции
- •Создание собственной библиотеки классов
Сравнение обычного массива и семейства
Условие задачи
Используя задание из ЛР 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 – Тестирование программы
Создание семейств. Использование индексаторов
Условие задачи
Создайте класс семейства 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 – Тестирование программы