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

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

Реализовать класс из индивидуального задания. Каждый разрабатываемый класс должен содержать:

  • скрытые данные

  • перегрузку конструкторов

  • свойства класса

  • индексаторы (если необходимо)

  • указанные перегруженные операции.

При возникновении ошибок должны генерироваться исключения. В программе должна выполняться работоспособность всех разработанных элементов класса

Вариант 14. Класс “Дробь”. Перегрузить +, унарный плюс

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

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

namespace Laba_10

{

class Dorob

{

int x;

int y;

public int X

{

get { return x; }

set { x = value; }

}

public int Y

{

get { return y; }

set { y = value; }

}

public Dorob(int x, int y)

{

X = x;

Y = y;

}

public static Dorob operator +(Dorob z)

{

int temp;

temp = z.X;

z.Y = temp;

return z;

}

public static Dorob operator +(Dorob z, int c)

{

z.X = z.X + c;

z.Y = z.Y + c;

return z;

}

public static Dorob operator +(int c, Dorob z)

{

z.X = z.X + c;

z.Y = z.Y + c;

return z;

}

public void Print(string name)

{

Console.WriteLine(name + ":\nx=" + X + " y=" + Y);

Console.WriteLine();

}

}

class Program

{

static void Main(string[] args)

{

Dorob a = new Dorob(15, 32);

a.Print("Дробь x/y");

a.Print("Дробь после унарного плюса "+(+a));

Console.WriteLine("Введите число которое следует прибавить ко всем числам в дроби");

int m = Convert.ToInt32(Console.ReadLine());

a += m;

a.Print("Дробь после сложения");

Console.ReadKey();

}

}

}

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

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

  1. Перегрузка операций с использованием стандартных интерфейсов и методов класса Object

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

Каждый разрабатываемый класс должен содержать:

  • скрытые данные

  • перегрузку конструкторов

  • свойства класса

  • индексаторы (где требуется)

  • указанные перегруженные операции. Если операции не указаны, перегрузить операцию =, ==, !=. Реализовать перегрузку 2 способами:

  • Используя открытые методы класса object

  • Используя стандартный интерфейс IComparable

При возникновении ошибок должны генерироваться исключения. В программе должна выполняться работоспособность всех разработанных элементов класса.

В основной программе описать массив из экземпляров разработанного класса. Реализовать следующие операции:

  1. Создать клон разработанного класса

  2. Отсортировать массив по одному критерию сортировки

  3. Отсортировать массив по нескольким (заданным) критериям сортировки

  4. Организовать перебор элементов массива с помощью простейшего итератора foreach.

Перечисленные операции (4) организовать в программе как меню с выбором пользователем определенного действия.

Вариант 14. Класс “Каталог”. Поля – имя каталога, путь к каталогу, дата создания, количество файлов

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

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

namespace Katalog11

{

public class Katalog : IComparable

{

string name;

public string Name

{

get { return name; }

set { name = value; }

}

int browe;

public int Browe

{

get { return browe; }

set { browe = value; }

}

int date;

public int Date

{

get { return date; }

set { date = value; }

}

int files;

public int Files

{

get { return files; }

set { files = value; }

}

public Katalog() { }

public Katalog(string Name, int Date, int Files, int Browe)

{

this.Name = Name;

this.Date = Date;

this.Files = Files;

this.Browe = Browe;

}

public void Dannie()

{

Console.WriteLine("Имя каталога: {0} Путь к катологу: {1} Дата создания: {2} Количество файлов: {3}", Name, Browe, Date, Files);

}

public override bool Equals(object obj)

{

if (obj == null || GetType() != obj.GetType()) return false;

Katalog temp = (Katalog)obj;

return (Name == temp.Name && Browe == temp.Browe && Date == temp.Date && Files == temp.Files);

}

public override int GetHashCode()

{

return Browe.GetHashCode();

}

public static bool operator ==(Katalog a, Katalog b)

{

return a.Browe == b.Browe;

}

public static bool operator !=(Katalog a, Katalog b)

{

return !a.Equals(b);

}

public static bool operator <(Katalog a, Katalog b)

{

return (a.CompareTo(b) < 0);

}

public static bool operator >(Katalog a, Katalog b)

{

return (a.CompareTo(b) > 0);

}

public int CompareTo(object obj)

{

Katalog temp = (Katalog)obj;

if (this.Browe > temp.Browe) return 1;

if (this.Browe < temp.Browe) return -1;

return 0;

}

}

class Program

{

static void Main(string[] args)

{

Katalog[] a = new Katalog[5];

Katalog Temp = new Katalog();

for (int i = 0; i < 5; i++)

{

Console.WriteLine("Напишите имя, путь к файлу, дату создания и количество файлов");

a[i] = new Katalog(Console.ReadLine(), Convert.ToInt32(Console.ReadLine()), Convert.ToInt32(Console.ReadLine()), Convert.ToInt32(Console.ReadLine()));

}

select:

Console.WriteLine("Выберите действие:\n1.Создать копию Каталога\n2.отсортировать по дате создания\n3.отсортировать по дате создания и кол-ву фалов \n4.Вывести информацию о каталоге");

switch (Console.ReadLine())

{

case "1":

{

Katalog[] Copy = new Katalog[5];

Copy = a;

break;

}

case "2":

{

int K = 0;

do

{

K = 0;

for (int i = 0; i < 4; i++)

{

if (a[i] < a[i + 1]) { Temp = a[i]; a[i] = a[i + 1]; a[i + 1] = Temp; K = 1; }

}

} while (K == 1);

break;

}

case "3":

{

int K;

do

{

K = 0;

for (int i = 0; i < 4; i++)

{

if (a[i] < a[i + 1]) { Temp = a[i]; a[i] = a[i + 1]; a[i + 1] = Temp; K = 1; };

}

} while (K == 1);

do

{

K = 0;

for (int i = 0; i < 4; i++)

{

if (a[i] == a[i + 1]) { if (a[i].Browe > a[i + 1].Browe) { Temp = a[i]; a[i] = a[i + 1]; a[i + 1] = Temp; K = 1; } }

}

} while (K == 1);

break;

}

case "4":

{

foreach (Katalog x in a) { x.Dannie(); }

break;

}

}

goto select;

}

}

}

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

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