Академический Документы
Профессиональный Документы
Культура Документы
Создание классов
Вариант 1 (класс Point)
Создать класс Point, содержащий следующие члены класса:
– поля: int x, y;
– конструкторы, позволяющие создать экземпляр класса с нулевыми координатами, с заданными координатами;
– методы, позволяющие вывести координаты точки на экран, рассчитать
расстояние от начала координат до точки, переместить точку на плоскости на вектор (a, b);
– свойства, позволяющие получить/установить координаты точки (доступное для чтения и записи), умножить
координаты точки на скаляр
(доступное только для записи);
– индексатор, позволяющий по индексу 0 обращаться к полю x, по индексу 1 –
к полю y, при других значениях индекса выдается сообщение об ошибке;
– перегрузку: операции ++ (‐‐) – одновременно увеличивает (уменьшает)
значение полей х и у на 1; констант true и false – обращение к экземпляру
класса дает значение true, если значение полей x и у совпадает, иначе false;
операции бинарный + – одновременно добавляет к полям х и у значение скаляра.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Lab1
{
public class Point
{
//поля: int x, y;
private int x;
private int y;
//конструктор, позволяющий создать экземпляр класса с нулевыми координатами;
public Point()
{
x = 0;
y = 0;
}
//конструктор, позволяющий создать экземпляр класса с заданными координатами;
public Point(int X,int Y)
{
this.x = X;
this.y = Y;
}
//метод, позволяющий вывести координаты точки на экран;
public override string ToString()
{
return $"x:{this.x} y:{this.y}";
}
//метод, позволяющий рассчитать расстояние от начала координат до точки;
public double GetDistance()
{
double rasst = Math.Sqrt(Math.Pow(this.x, 2) + Math.Pow(this.y, 2));
return rasst;
}
}
}
namespace Lab1
{
public class Triangle
{
private int a;
private int b;
private int c;
}
public static Rectangle operator ++(Rectangle r)
{
r.a += 1;
r.b += 1;
return r;
}
public static Rectangle operator --(Rectangle r)
{
r.a -= 1;
r.b -= 1;
return r;
}
public static bool operator false(Rectangle r)
{
return !r.IsSquare;
}
return intArray[N,M];
}
set
{
if (N >= rows || M >= columns)
throw new ArgumentOutOfRangeException();
intArray[N,M] = (int)value;
}
}
public static TwoArray operator ++(TwoArray twoArray)
{
for (int i = 0; i < twoArray.rows; i++)
for(int j = 0; j < twoArray.columns; j++)
twoArray[i,j]++;
return twoArray;
}
public static TwoArray operator --(TwoArray twoArray)
{
for (int i = 0; i < twoArray.rows; i++)
for (int j = 0; j < twoArray.columns; j++)
twoArray--;
return twoArray;
}
public static bool operator true(TwoArray twoArray)
{
return twoArray.rows == twoArray.columns;
}
public static bool operator false(TwoArray twoArray)
{
return twoArray.rows != twoArray.columns;
}
public static TwoArray operator +(TwoArray twoArray1,TwoArray twoArray2)
{
TwoArray result = new TwoArray(twoArray1.rows, twoArray1.columns);
for (int i = 0; i < twoArray1.rows; i++)
for (var j = 0; j < twoArray1.columns; j++)
result[i,j] = (int)twoArray1[i,j]+(int)twoArray2[i,j];
return result;
}
public static explicit operator TwoArray(int[,] array)
{
TwoArray transformation = new TwoArray((int)array.GetLength(0), (int)array.GetLength(1));
array.CopyTo(transformation.intArray, 0);
return transformation;
}
public ArrayDouble() { }
// Позволяющее увеличить значение всех элементов массива на скаляр (доступное только для
записи).
public double Array_Scal
{
set
{
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
DoubleArray[i, j] *= value;
}
}
// константа true: обращение к экземпляру класса дает значение true, если каждая строка массива
упорядоченна по возрастанию, иначе false.
public static bool operator true(ArrayDouble obj)
{
int count = 0;
for(int i = 0; i < obj.n; i++)
for(int j = 0; j < obj.m - 1; j++)
if(obj.DoubleArray[i,j] > obj.DoubleArray[i, j+1])
count++;
if (count == 0)
return true;
return false;
}
// Константа false: обращение к экземпляру класса дает значение true, если каждая строка массива
упорядоченна по возрастанию, иначе false.
public static bool operator false(ArrayDouble obj)
{
int count = 0;
for (int i = 0; i < obj.n; i++)
for (int j = 0; j < obj.m - 1; j++)
if (obj.DoubleArray[i, j] > obj.DoubleArray[i, j + 1])
count++;
if (count != 0)
return false;
return true;
}
Console.WriteLine("Ввод массива:");
array.Enter_Array();
Console.WriteLine("\nПоказать массив:");
array.Display_Array();
Console.ReadLine();
}
}
Вариант 8
Создать класс для работы со строками. Разработать следующие члены класса:
– поле: string line;
– конструктор, позволяющий создать строку на основе заданного
строкового литерала;
– методы, позволяющие подсчитать количество цифр в строке, выводить на
экран все символы строки, встречающиеся в ней ровно один раз, вывести на
экран самую длинную последовательность повторяющихся символов в строке;
– свойство, возвращающее общее количество символов в строке (доступное
только для чтения);
– индексатор, позволяющий по индексу обращаться к соответствующему
символу строки (доступный только для чтения);
– перегрузку: операции унарного ! – возвращает значение true, если строка
не пустая, иначе – false; констант true и false – обращение к экземпляру
класса дает значение true, если строка является палиндромом, false – в противном случае; операции & –
возвращает значение true, если строковые поля
двух объектов посимвольно равны (без учета регистра), иначе – false; операции
преобразования класса строка в тип string (и наоборот).
1-
//Свойства: возвращающее общее количество элементов в строке (доступное только для чтения);
public int N
{
get { return Line.Length; }
}
//Констант true и false: обращение к экземпляру класса дает значение true, если строка не пустая,
иначе false.
public static bool operator true(MyString obj)
{
if (obj.Line.Length != 0)
return true;
return false;
}
public static bool operator false(MyString obj)
{
if (obj.Line.Length == 0)
return true;
return false;
}
//операции &: возвращает значение true, если строковые поля двух объектов посимвольно равны (без
учета регистра), иначе false;
public static bool operator &(MyString obj1, MyString obj2)
{
return obj1.Line.ToString().ToUpper().Equals(obj2.Line.ToString().ToUpper());
}
}
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Введите строку:");
string str = Console.ReadLine();
MyString Line = new MyString(str);
Console.WriteLine(@"Перегрузка операции &: возвращает значение true, если строковые поля двух
объектов посимвольно равны (без учета регистра), иначе false:");
Console.WriteLine("Введите строку:");
str = Console.ReadLine();
MyString Line2 = new MyString(str);
Console.WriteLine("Равны ли строки? {0}", Line & Line2);
if (Line)
Console.WriteLine("Строка не пустая.");
else
Console.WriteLine("Строка пустая.");
Console.ReadLine();
}
}
}
// дату 1.01.2009
public DateClass()
{
date = new DateTime(2009, 1, 1);
}
//Свойства:• позволяющее установить или получить значение поле класса (доступно для чтения
и записи)
public DateTime Data
{
set { date = value; }
get { return date; }
}
// Индексатор, позволяющий определить дату i-того по счету дня относительно установленной даты
// (при отрицательных значениях индекса отсчет ведется в обратном порядке).
public DateTime this[int index]
{
get
{
return date.AddDays(index);
}
}
// операции &: возвращает значение true, если поля двух объектов равны, иначе false;
public static bool operator &(DateClass a, DateClass b)
{
return a.date.Equals(b.date);
}
class Program
{
static void Main(string[] args)
{
DateClass my = new DateClass();
Console.WriteLine("Преобразования класса string в тип DataTime (2014, 12, 01): {0}", (string)my);
Console.ReadKey();
}
}