Организовать множественное наследование с использованием интерфейсов - C#
Формулировка задачи:
Ребят, не знаю как решить. Может кто сможет?
Задание выглядит так:
Доработайте программу, созданную в лабораторной работе №11.1, следующим образом:
- организуйте множественное наследование с использованием интерфейсов;
- добавьте как минимум еще один интерфейс;
- класс/классы должны реализовывать как минимум два интерфейса.
А вот решенный пример лабораторной работы №11.1
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
interface ICalculate
{
int Add();
int Sub();
int Mul();
double Div();
}
class Calculate : ICalculate
{
private int a;
private int b;
public Calculate()
{
a = 0; // не обязательно
b = 0; // не обязательно
}
public Calculate(int a, int b)
{
this.a = a;
this.b = b;
}
public int Add()
{ return a + b; }
public int Sub()
{ return a - b; }
public int Mul()
{ return a * b; }
public double Div()
{ return b == 0 ? 0 : (double)a / b; }
// Метод, не являющийся частью интерфейса
public int Pow()
{ return (int)Math.Pow(a, b); }
public int getA()
{ return a; }
public int getB()
{ return b; }
}
class A
{
static void Main()
{
Console.WriteLine("Введите a");
int a = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Введите b");
int b = Convert.ToInt32(Console.ReadLine());
Calculate obj1 = new Calculate(a, b);
Calculate obj2 = new Calculate(a, b);
Console.WriteLine("{0} + {1} = {2}", obj1.getA(), obj1.getB(), obj1.Add());
Console.WriteLine("{0} - {1} = {2}", obj1.getA(), obj1.getB(), obj1.Sub());
Console.WriteLine("{0} * {1} = {2}", obj2.getA(), obj2.getB(), obj2.Mul());
Console.WriteLine("{0} / {1} = {2}", obj2.getA(), obj2.getB(), obj2.Div());
Console.ReadKey(true);
}
}Решение задачи: «Организовать множественное наследование с использованием интерфейсов»
textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication3
{
interface IRadical
{
double Radical();
}
interface ISquare
{
int Square();
}
interface ICalculate: IRadical,ISquare
{
int Add();
int Sub();
int Mul();
double Div();
}
class Calculate : ICalculate
{
private int a;
private int b;
public Calculate()
{
a = 0;
b = 0;
}
public Calculate(int a, int b)
{
this.a = a;
this.b = b;
}
public int Add()
{ return a + b; }
public int Sub()
{ return a - b; }
public int Mul()
{ return a * b; }
public double Div()
{ return b == 0 ? 0 : (double)a / b; }
public double Radical()
{
return Math.Sqrt(a+b);
}
public int Square()
{
return (int)Math.Pow(a, b);
}
// Метод, не являющийся частью интерфейса
public int Pow()
{ return (int)Math.Pow(a, b); }
public int GetA()
{ return a; }
public int GetB()
{ return b; }
}
class A
{
static void Main()
{
Console.Write("Введите a:");
int a = Convert.ToInt32(Console.ReadLine());
Console.Write("Введите b:");
int b = Convert.ToInt32(Console.ReadLine());
Calculate obj1 = new Calculate(a, b);
Calculate obj2 = new Calculate(a, b);
Console.WriteLine("{0} + {1} = {2}", obj1.GetA(), obj1.GetB(), obj1.Add());
Console.WriteLine("{0} - {1} = {2}", obj1.GetA(), obj1.GetB(), obj1.Sub());
Console.WriteLine("{0} * {1} = {2}", obj2.GetA(), obj2.GetB(), obj2.Mul());
Console.WriteLine("{0} / {1} = {2}", obj2.GetA(), obj2.GetB(), obj2.Div());
Console.WriteLine("({0} + {1})^0.5 = {2}", obj2.GetA(), obj2.GetB(), obj2.Radical());
Console.WriteLine("{0} ^ {1} = {2}", obj2.GetA(), obj2.GetB(), obj2.Square());
Console.ReadKey(true);
}
}
}