|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Хід роботи. Тема роботи:ИнтерфейсыЛабораторна робота №7 Тема роботи: Интерфейсы. Мета роботи: Освоить методы работы с интерфейсом. Хід роботи 1 Набрать в редакторе следующую программу. Выполнить анализ кода и добавить комментарии: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace LabIter { /// <summary> /// интерфейс /// </summary> public interface IarOperation { ///методы интерфейса int Add(); int Subtraction(); int Multiplication(); int Division(); } /// <summary> /// интерфейс /// </summary> public interface IsqrSqrt { ///методы интерфейса с параметрами int Sqr(int x); int Sqrt(int x); } /// <summary> /// класс, реализующий методы интерфейса IarOperation /// базовый класс /// </summary> class TestIntefece: IarOperation { int Test_x, Test_y; /// <summary> /// свойство чтение-запись /// </summary> public int x { set{ Test_x = value; } get{ return Test_x; } } /// <summary> /// свойство чтение-запись /// </summary> public int y { set{ Test_y = value; } get{ return Test_y; } } public TestIntefece() { } /// <summary> /// конструктор /// </summary> public TestIntefece(int x, int y) { this.Test_x = x; this.Test_y = y; } /// <summary> /// реализация метода интерфейса /// возвращает сумму /// </summary> public virtual int Add() { return Test_x + Test_y; } /// <summary> /// реализация метода интерфейса /// возвращает разницу /// </summary> public int Subtraction() { return Test_x - Test_y; } /// <summary> /// реализация метода интерфейса /// возвращает произведение /// </summary> public int Multiplication() { return Test_x * Test_y; } /// <summary> /// реализация метода интерфейса /// возвращает результат деления /// </summary> public int Division() { return Test_x / Test_y; } /// <summary> /// метод класса /// </summary> public virtual void ShowNumber () { Console.WriteLine("Переменная x: {0}\nПеременная y: {1}",Test_x,Test_y); } } /// <summary> /// класс-наследник /// </summary> class DeriveTestIntefece: TestIntefece { public int Test_z; /// <summary> /// конструктор /// </summary> public DeriveTestIntefece(int z, int x, int y):base(x,y) { this.Test_z = z; } /// <summary> /// реализация метода интерфейса /// возвращает сумму /// </summary> public override int Add() { return base.x + base.y + Test_z; } /// <summary> /// наследуемый метод /// </summary> public override void ShowNumber() { base.ShowNumber(); Console.WriteLine("Переменная z: "+ Test_z); } } /// <summary> /// класс, реализующий интерфейс IsqrSqrt /// класс-наследник /// </summary> class Test2Interface: TestIntefece, IsqrSqrt { /// <summary> /// реализация метода интерфейса /// возвращает квадрат числа /// </summary> public int Sqr(int x) { return x * x; } /// <summary> /// реализация метода интерфейса /// возвращает куб числа /// </summary> public int Sqrt(int x) { return(int)Math.Sqrt((double)(x)); } } class Program { static void Main(string[] args) { TestIntefece MyInter = new TestIntefece(x: 10,y: 12); //создание обьекта Console.WriteLine("MyInter: "); ///вызов методов, наследуемых с интерфейса MyInter.ShowNumber(); Console.WriteLine("{0} + {1} = {2}", MyInter.x, MyInter.y, MyInter.Add()); Console.WriteLine("{0} * {1} = {2}", MyInter.x, MyInter.y, MyInter.Multiplication()); DeriveTestIntefece MyInter1 = new DeriveTestIntefece(z: 4, x: 5, y: 6); //создание обьекта Console.WriteLine(); Console.WriteLine("MyInter1: "); ///вызов методов, наследуемых с интерфейса MyInter1.ShowNumber(); Console.WriteLine("{0} + {1} + {3} = {2}", MyInter1.x, MyInter1.y, MyInter1.Add(), MyInter1.Test_z); Test2Interface MyInter2 = new Test2Interface(); //создание обьекта MyInter2.x = 15; MyInter2.y = 20; Console.ReadKey(); } } } 2. Разработть программу в соответствии со своим вариантом. Доработать задание лабораторной работы №6 использовав следующие изменения: 1. Добавить в проект два класса интерфейса; 2. В классах наследовать интерфейсы. 3. Продемонстрировать работу классов наследующих интерфейсы. 5. Выполнить описание добавляемых интерфейсов и методов. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication49 { class Program { /// <summary> /// базовый класс /// </summary> public class Matrix { public double[,] matrix; public int Row = 0, Col = 0; //конструктор public Matrix(int row, int col) { matrix = new double[row, col]; Row = row; Col = col; } //доступ к элементу по индексам public double this[int i, int j]//индексатор { get { return matrix[i, j]; } set { matrix[i, j] = value; } } //произведение матриц public static Matrix operator *(Matrix first, Matrix second) { Matrix matr = new Matrix(first.Row, first.Col); if (first.Col!= second.Row) throw new ArgumentException("Число столбцов матрицы А не равно числу строк матрицы В."); for (int i = 0; i < first.Row; i++) { for (int j = 0; j < second.Col; j++) { double sum = 0; for (int r = 0; r < first.Col; r++) sum += first[i, r] * second[r, j]; matr[i, j] = sum; } } return matr; } //умножение на число public static Matrix operator *(Matrix m, int t) { Matrix mat = new Matrix(m.Row, m.Col); for (int i = 0; i < m.Row; i++) for (int j = 0; j < m.Col; j++) mat[i, j] = m[i, j] * t; return mat; } //деление на число public static Matrix operator /(Matrix m, int t) { Matrix mat = new Matrix(m.Row, m.Col); for (int i = 0; i < m.Row; i++) for (int j = 0; j < m.Col; j++) mat[i, j] = m[i, j] / t; return mat; } } interface IA { void PrintMatrix(); } interface IB { void Status(int pow);} /// <summary> /// класс-потомок /// класс, реализующий интерфейсы /// </summary> class Matrix_1: Matrix, IA,IB { public Matrix_1(int Row, int Col): base(Row, Col) { } /// <summary> /// метод возведения в степень /// возвращает матрицу /// </summary> public Matrix_1 Step(Matrix_1 first, int pow) { Matrix_1 matr = new Matrix_1(first.Row, first.Col); matr = first; for (int z = 1; z < pow; z++) { Matrix_1 bufer = new Matrix_1(first.Row, first.Col); for (int i = 0; i < first.Row; i++) { for (int j = 0; j < first.Row; j++) { double sum = 0; for (int r = 0; r < first.Row; r++) sum += matr[i, r] * first[r, j]; bufer[i, j] = sum; } } matr = bufer; } return matr; } /// <summary> /// реализация интерфейса IA /// выводит матрицу /// </summary> public void PrintMatrix() { for (int i = 0; i < this.Row; i++) { for (int j = 0; j < this.Col; j++) Console.Write("{0} ", this[i, j]); Console.Write("\n"); } } /// <summary> /// реализация интерфейса IB /// выводит текст /// </summary> public void Status(int pow) { Console.WriteLine("\n\n{0} степень матрицы:\n\n", pow); } static void Main(string[] args) { Console.WriteLine("Введите размерность матрицы:\n"); int N = Convert.ToInt32(Console.ReadLine()); int M = Convert.ToInt32(Console.ReadLine()); Matrix_1 first = new Matrix_1(N, M);//обьект класса Console.WriteLine("Введите элементы матрицы:\n"); for (int i = 0; i < N; i++) for (int j = 0; j < M; j++) { first[i, j] = double.Parse(Console.ReadLine()); } Console.WriteLine("Введите степень:\n"); int pow = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("Введенная матрица:\n\n"); first.PrintMatrix();//вызов метода интерфейса Matrix_1 s = first.Step(first, pow); //вызов методов интерфейсов s.Status(pow); s.PrintMatrix(); Console.ReadKey(); } } } } Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.018 сек.) |