Простейшие классы. Инкапсуляция и свойства. - C#
Формулировка задачи:
Я не могу доделать прогу,мне не хватает для неё закрытых и открытых полей....а также конструкторов с параметрами и без....и преподаватель требует чтобы программа использовала их всех ..Помогите плизззз!!!
Задание:
Создайте проект, в котором опишите класс для решения задачи Вашего варианта.
Разрабатываемый класс должен содержать следующие элементы: скрытые и открытые поля, конструкторы без параметров и с параметрами (среди параметров должны быть совпадающие с именами полей и несовпадающие), методы и свойства. Методы и свойства должны обеспечивать непротиворечивый, полный минимальный и удобный интерфейс класса.
В программе должна выполняться проверка всех разработанных элементов класса.
Вариант:
Описать класс, представляющий квадратное уравнение вида ах2 + bх + с = 0. Описать метод, вычисляющий решение этого уравнения и выдающий сообщение в случае отсутствия действительных корней. Описать свойства для задания переменной х и получения состояния объекта.
А вот и сама программа:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Klass
{
class Program
{
static void Main(string[] args)
{
String buf;
Console.WriteLine("Отыскание корней квадратного уравнения");
Console.WriteLine("Введи a b c");
buf = Console.ReadLine();
double a = Double.Parse(buf);
buf = Console.ReadLine();
double b = Double.Parse(buf);
buf = Console.ReadLine();
double c = Double.Parse(buf);
Equaltion e = new Equaltion(a, b, c);
e.Calculation();
Console.ReadKey();
}
}
class Equaltion
{
double a;
double b;
double c;
public Equaltion(double _a, double _b, double _c)
{
this.a = _a;
this.b = _b;
this.c = _c;
}
public double A
{
get { return a; }
set { a = value; }
}
public double B
{
get { return b; }
set { b = value; }
}
public double C
{
get { return c; }
set { c = value; }
}
public void Calculation()
{
double D = Math.Pow(b, 2) - 4 * a * c;
if (D > 0)
{
Console.WriteLine("Уравнение имеет два корня");
double x1 = (-1 * b + Math.Sqrt(D)) / (2 * a);
double x2 = (-1 * b - Math.Sqrt(D)) / (2 * a);
Console.WriteLine("x1 = {0}; x2 = {1}", x1, x2);
}
else if (D == 0)
{
Console.WriteLine("Уравнение имеет один корень");
double x = (-1 * b) / (2 * a);
Console.WriteLine("x = {0}", x);
}
else
Console.WriteLine("Уравнение не имеет вещественных корней");
}
}
}Решение задачи: «Простейшие классы. Инкапсуляция и свойства.»
textual
Листинг программы
#region using
using System;
#endregion
namespace ConsoleApplicationTest
{
public static class Program
{
private static void Main()
{
var quadraticEquation = new QuadraticEquation(1, 3, 2);
var solver = new Solver();
solver.Solve(quadraticEquation);
Console.WriteLine(quadraticEquation);
Console.WriteLine("Число корней: " + solver.NumberOfRoots);
for (int i = 0; i < solver.NumberOfRoots; i++)
Console.Write(solver.Roots[i] + "; ");
Console.ReadKey();
}
}
public class Solver
{
private double _a;
private double _b;
private double _c;
private double _discriminant;
public Solver()
{
NumberOfRoots = 0;
}
public double[] Roots { get; private set; }
public int NumberOfRoots { get; private set; }
public void Solve(QuadraticEquation quadraticEquation)
{
_a = quadraticEquation.A;
_b = quadraticEquation.B;
_c = quadraticEquation.C;
CalculateDiscriminant();
CalculateRoots();
}
private void CalculateDiscriminant()
{
_discriminant = Math.Pow(_b, 2) - 4*_a*_c;
}
private void CalculateRoots()
{
if (_discriminant > 0)
{
Roots = new double[2];
Roots[0] = (-_b + Math.Sqrt(_discriminant))/(2*_a);
Roots[1] = (-_b - Math.Sqrt(_discriminant))/(2*_a);
NumberOfRoots = 2;
}
else if (_discriminant == 0)
{
Roots = new double[1];
Roots[0] = -_b/(2*_a);
NumberOfRoots = 1;
}
else
{
Roots = new double[0];
NumberOfRoots = 0;
}
}
}
public class QuadraticEquation
{
public QuadraticEquation(double a, double b, double c)
{
A = a;
B = b;
C = c;
}
public double A { get; set; }
public double B { get; set; }
public double C { get; set; }
public override string ToString()
{
return string.Format("Квадратное уравнение: {0}*x^2+{1}*x+{2}=0.", A, B, C);
}
}
}