
- •Простейший класс
- •Класс с конструкторами
- •Перегрузка конструкторов
- •Использование свойств в классе
- •Применение свойства наследования на примере виртуальных и абстрактных классов
- •Использование интерфейсов
- •Сравнение обычного массива и семейства
- •Сравнение обычного массива и семейства
- •Создание семейств. Использование индексаторов
- •Перегрузка простейших операций в простейших классах
- •Перегрузка операций с использованием стандартных интерфейсов и методов класса Object
- •Использование делегатов в качестве параметров функции
- •Создание собственной библиотеки классов
Перегрузка конструкторов
Условие задачи
Реализовать класс: “Строка”. В методе run() осуществить вычисление количества гласных букв в строке.
Листинг программы:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
public class Stroka
{
private string s;
private int gl = 0;
public Stroka(string s)
{
this.s = s;
}
public Stroka(int gl)
{
this.gl = 0;
}
public int run()
{
char[] glasnie = { 'а', 'е', 'ё', 'и', 'о', 'у', 'ы', 'э', 'ю', 'я' };
char[] mas = s.ToCharArray();
foreach (char c in mas)
if (Array.IndexOf(glasnie, c) != -1) gl++;
return gl;
}
public override string ToString()
{
return "Количество гласных букв в строке = "+ gl;
}
public string S
{
get
{
return s;
}
}
}
namespace ConsoleApplication25
{
class Program
{
static void Main(string[] args)
{
Stroka stroka = new Stroka("Количество гласных букв в строке");
stroka.run();
Console.WriteLine(stroka.S + "\t" + stroka);
Console.ReadKey();
}
}
}
Тестирование программы
Рисунок 3 – Тестирование программы
Использование свойств в классе
Условие задачи
Для индивидуального задания из лабораторной работы № 3 реализовать свойства для класса.
Листинг программы:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
public class Stroka
{
private string s;
private int gl = 0;
public Stroka(string s)
{
this.s = s;
}
public Stroka(int gl)
{
this.gl = 0;
}
public int run()
{
char[] glasnie = { 'а', 'е', 'ё', 'и', 'о', 'у', 'ы', 'э', 'ю', 'я' };
char[] mas = S.ToCharArray();
foreach (char c in mas)
if (Array.IndexOf(glasnie, c) != -1) gl++;
return gl;
}
public override string ToString()
{
return "Количество гласных букв в строке = "+ gl;
}
public string S{
get
{
return s;
}
}
}
namespace ConsoleApplication25
{
class Program
{
static void Main(string[] args)
{
Stroka stroka = new Stroka("Количество гласных букв в строке");
stroka.run();
Console.WriteLine(stroka.S+"\t"+stroka);
Console.ReadKey();
}
}
}
Тестирование программы
Рисунок 4 – Тестирование программы
Применение свойства наследования для расширения и уточнения классов
Условие задачи
Реализовать иерархию классов Х->Y. В классе Х присутствуют данные х1, х2. В классе Y-данное y. Методами классов представить конструктор, метод ToString(). В производном классе Y присутствует метод Run(), который определяет:
14. Значение (х1 - у)* х2
Листинг программы:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication26
{
class zn
{
protected double x1;
protected double x2;
public zn(double x1, double x2)
{
this.x1 = x1;
this.x2 = x2;
}
public void Vivod()
{
Console.WriteLine();
}
public override string ToString()
{
return "Otvet = ";
}
}
class zn1 : zn
{
int y;
public zn1(int y, double x1, double x2)
: base(x1, x2)
{
this.y = y;
}
public double Run()
{
return (x1-y)*x2;
}
}
class Program
{
static void Main(string[] args)
{
int y; int x1; int x2;
Console.WriteLine("Введите x1:");
x1 = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Введите x2:");
x2 = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Введите y:");
y = Convert.ToInt32(Console.ReadLine());
zn1 f = new zn1(y, x1, x2);
Console.WriteLine(f.ToString() + "" + f.Run());
Console.ReadKey();
}
}
}
Тестирование программы
Рисунок 5 – Тестирование программы