Объектно-ориентированное программирование



Скачать 64,27 Kb.
страница2/3
Дата26.03.2020
Размер64,27 Kb.
#143668
ТипЛабораторная работа
1   2   3
Связанные:
Отчёт 4 лаб. Новиков

Практическое задание
Реализовать для классов, созданных при выполнении лабораторной работы 2, механизм интерфейсов. Использовать стандартные интерфейсы IComparable и IComparer для выполнения сортировки объектов по различным полям.

Рисунок 1 – UML диаграмма классов


Код программы:
using System;

using System.Collections;

using System.Collections.Generic;

namespace ConsoleApplication1

{

public class Flat : IComparable



{

public string RoomName { get; set; }

public int RZ { get; set; }

public double Cost { get; set; }

public Flat() { }

public Flat(string RoomName, int RZ, double Cost)

{

this.RoomName = RoomName;



this.RZ = RZ;

this.Cost = Cost;

}

private class SortByRoomNameHelper : IComparer



{

public SortByRoomNameHelper() { }

int IComparer.Compare(object o1, object o2)

{

Flat t1 = (Flat)o1;



Flat t2 = (Flat)o2;

return String.Compare(t1.RoomName, t2.RoomName);

}

}

public int CompareTo(Flat obj)



{

if (this.Cost > obj.Cost)

return 1;

if (this.Cost < obj.Cost)

return -1;

else


return 0;

}

public static IComparer SortByRoomName



{ get { return (IComparer)new SortByRoomNameHelper(); } }
public override string ToString()

{

return String.Format("\tНазвание комнаты: {0}\tРазмер (в кв. метрах): {1}\tЦена (в рублях): {2}",



this.RoomName, this.RZ, this.Cost);

}

}


class Program

{

static void Main()



{

List dic = new List();

dic.Add(new Flat("Спальня", 25, 15000));

dic.Add(new Flat("Гостиная", 35, 22000));

dic.Add(new Flat("Детская", 30, 17000));

dic.Add(new Flat("Прихожая", 50, 45000));

dic.Add(new Flat("Ванная", 15, 20000));

dic.Add(new Flat("Кладовая", 5, 2000));


Console.WriteLine("Исходный массив комнат: \n");

foreach (Flat a in dic)

Console.WriteLine(a);
Console.WriteLine("\nМассив комнат по стоимости: \n");

dic.Sort();

foreach (Flat a in dic)

Console.WriteLine(a);

Console.WriteLine("\nМассив комнат по названию: \n");

Flat[] mas = dic.ToArray();

Array.Sort(mas, Flat.SortByRoomName);

foreach (Flat a in mas)

Console.WriteLine(a);

Console.ReadLine();

}

}

}



Скачать 64,27 Kb.

Поделитесь с Вашими друзьями:
1   2   3




База данных защищена авторским правом ©psihdocs.ru 2022
обратиться к администрации

    Главная страница