- •Глава 1. Структура программы на языке с# 6
- •Глава 1. Структура программы на языке с#
- •Задание 1. Вывод строки на экран с использованием esp-последовательности
- •Глава 2. Переменные. Основные типы данных
- •Int.MinValue
- •Задание 2. Описание переменных и преобразование типов
- •Глава 3. Ввод – вывод значений переменных
- •Задание 3. Форматирование вывода
- •Глава 4. Обработка исключительных ситуаций
- •Задание 4. Обработка стандартных исключений
- •Задание 5. Генерация исключений
- •Глава 5. Массивы в c#
- •Initially,
- •Integer array: 1 2 3 4 5
- •Integer array: 1 2 3 4 5
- •Integerarray: 1 2 3 29 30
- •Задание 6. Одномерные массивы
- •Задание 7. Многомерные массивы и массивы массивов
- •Глава 6. Символы и строки
- •If (char.IsLetter(a)) Console.WriteLine("Буква");
- •Задание 8. Работа со строками
- •Глава 7. Описание классов
- •Int m, n;// числитель и знаменатель
- •Пример решения задачи
- •Intyear_tr;
- •If (Enum.IsDefined(typeof(gender_type),value))
- •Int year_tr;
- •If (Enum.IsDefined(typeof(gender_type),value))
- •Задание 9. Описание классов
- •Глава 8. Наследование
- •Задание 10. Наследование
- •Глава 9. Итерфейсы
- •Interface iOutput
- •Void outputName();
- •Interface iOutput
- •Void outputName();
- •If ( a is iOutput )
- •Interface iComparable
- •Int CompareTo( object obj )
- •Задание 11. Стандартные интерфейсы.
- •Глава 10. Файлы
- •Задание 12. Работа с файлами
- •Список использованных источников
Int m, n;// числитель и знаменатель
public Rational(int a, int b)
{
if (b == 0) throw new Exception("Не возможно создать рациональное число с знаменателем 0");
m = a; n = b;
}
public static Rational operator +(Rational r1, Rational r2)
{
int u, v;
u = r1.m * r2.n + r1.n * r2.m; v = r1.n * r2.n;
return (new Rational(u, v));
}
public void output()
{
Console.WriteLine("{0}/{1}", m, n);
}
}
Для тестирования операции сложения напишем следующий фрагмент кода
Rational a = new Rational(1, 2);
Rational b = new Rational(1, 4);
(a + b).output();
На экран будет выведено 6/8.
Операции преобразования типаобеспечивают возможность явного и неявного преобразования между пользовательскими типами данных. Синтаксис объявителя операции преобразования типа:
publicstaticimplicitoperatorтип ( параметр ) // неявное преобразование
publicstatic explicit operator тип ( параметр ) // явное преобразование
Эти операции выполняют преобразование из типа параметра в тип, указанный в заголовке операции. Одним из этих типов должен быть класс, для которого определяется операция. Таким образом, операции выполняют преобразование либо типа класса к другому типу, либо наоборот. Преобразуемые типы не должны быть связаны отношениями наследования.
Явное преобразование типа выполняется при использовании операции приведения типа в программе, как в примере.
Неявное преобразование выполняется автоматически:
при присваивании объекта переменной указанного в операции типа (или наоборот);
при использовании объекта в выражении, содержащем переменные указанного в операции типа (или наоборот);
при передаче объекта в метод на место параметра указанного в операции типа (или наоборот);
при явном приведении типа.
Неявное преобразование следует определять так, чтобы при его выполнении не возникала потеря точности и не генерировались исключения. Если эти ситуации возможны, преобразование следует описать как явное.
Для одного и того же преобразования нельзя определить одновременно явную и неявную операцию преобразования типа.
Пример решения задачи
В задаче необходимо описать класс с СТУДЕНТ (поля: ФАМИЛИЯ, СПЕЦИАЛЬНОСТЬ, ПОЛ (задается из фиксированного списка), ГОД ОБУЧЕНИЯ).
. В классе должен быть описаны как минимум:
соответствующие поля,
конструкторы (не менее трех),
свойства для получения и изменения значений
метод ввода объекта с клавиатуры
метод вывода объекта на экран
операция преобразования типа.
Кроме того в классе должны быть описаны :
операция класса: перевод студента на следующий курс (+)
статический метод класса: поиск студента с заданной фамилией в массиве студентов.
методы и операции, соответствующие варианту задания.
Методы класса должны генерировать исключения.
Разработать демонстрационную программу, которая должна обеспечивать выбор с помощью меню и выполнение следующих функций:
начальное формирование массива из N20 объектов класса (ввод с клавиатуры или из заданного массива);
добавления объекта в массив;
вывод массива объектов на экран;
функции, демонстрирующие работу методов и операций, описанных в варианте задания.
дополнительная функция: вывод всех студентов с заданной специальностью.
Опишем поэтапное решение данной задачи.
Этап 1.
Для решения данной задачи опишем класс CStudent c указанными полями и тремя конструкторами. Для проверки работы конструкторов сразу определим метод, выводящий на экран все поля.
namespace ConsoleApplication1
{
enum gender_type { male, female, unknown };
class CStudent
{
//**************Поля класса CStudent*******************
static public int n = 0;
string name;
string speciality;
gender_type gender;