АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Хід роботи. Тема роботи:Интерфейсы

Читайте также:
  1. I. Мета, завдання та загальні вимоги до виконання курсової роботи
  2. II Методика виконання курсової роботи.
  3. II. ЗМІСТ І ОФОРМЛЕННЯ РОБОТИ
  4. IX. СИГНАЛИ, ЩО ЗАСТОСОВУЮТЬСЯ ПІД ЧАС МАНЕВРОВОЇ РОБОТИ
  5. VI Поточний контроль виконання роботи
  6. VI Поточний контроль виконання роботи
  7. VI Поточний контроль виконання роботи
  8. VI Поточний контроль виконання роботи
  9. VI. Методичні вказівки до виконання курсової роботи.
  10. VIІ Поточний контроль виконання роботи
  11. А. Виконується при підготовці до роботи
  12. Аналіз стану виховної роботи

Лабораторна робота №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 сек.)