Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Порядок на классе Person




Определив метод CompareTo для класса Person, мы тем самым ввели отношение порядка для объектов этого класса. Конечно, сравнение персон может выполняться по разным критериям: возрасту, росту, зарплате. В данном случае отношение порядка на объектах класса Person задается как отношение порядка на фамилиях персон. Так как строки наследуют интерфейс IComparable, для фамилий персон вызывается метод CompareTo, его результат и возвращается в качестве результата метода CompareTo для персон.

Введем теперь в нашем классе Person перегрузку операций отношения:

public static bool operator <(Person p1, Person p2)

{

return (p1.CompareTo(p2) < 0);

}

public static bool operator >(Person p1, Person p2)

{

return (p1.CompareTo(p2) > 0);

}

public static bool operator <=(Person p1, Person p2)

{

return (p1.CompareTo(p2) <= 0);

}

public static bool operator >=(Person p1, Person p2)

{

return (p1.CompareTo(p2) >=0);

}

public static bool operator ==(Person p1, Person p2)

{

return (p1.CompareTo(p2) == 0);

}

public static bool operator!=(Person p1, Person p2)

{

return (p1.CompareTo(p2)!= 0);

}

Как обычно, приведу тестовый пример, проверяющий работу с введенными методами:

public void TestCompare()

{

Person poet1 = new Person("Пушкин");

Person poet2 = new Person("Лермонтов");

Person poet3 = new Person("Пастернак");

Person poet4 = new Person("Мандельштам");

Person poet5 = new Person("Ахматова");

Person poet6 = new Person("Цветаева");

Console.WriteLine("{0} > {1} = {2}", poet1.Fam,

poet2.Fam, (poet1 > poet2));

Console.WriteLine("{0} >= {1} = {2}", poet3.Fam,

poet4.Fam, (poet3 >= poet4));

Console.WriteLine("{0}!= {1} = {2}", poet5.Fam,

poet6.Fam, (poet5!= poet6));

}

Вот результаты работы этого теста.

Рис. 5.6. Сравнение персон

Конечно, заданный нами порядок не имеет никакого отношения к поэтическому дару, а лишь говорит об относительном расположении фамилий поэтов в словарях.






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных