/// <summary> /// Cria instâncias de objectos do tipo <see cref="GeneralMatrixGroup{CoeffType}"/>. /// </summary> /// <param name="lines">O número de linhas.</param> /// <param name="columns">O número de colunas.</param> /// <param name="matrixFactory">A fábrica responsável pela criação de instâncias de matrizes.</param> /// <param name="coeffsGroup">O grupo responsável pelas operações sobre as entradas das matrizes.</param> /// <exception cref="ArgumentException">Se o número de linhas ou de colunas for negativo.</exception> /// <exception cref="ArgumentNullException"> /// Se forem nulos os argumentos "matrixFactory" e "coeffsGroup". /// </exception> public GeneralMatrixGroup( int lines, int columns, IMathMatrixFactory <CoeffType> matrixFactory, IGroup <CoeffType> coeffsGroup) { if (lines < 0) { throw new ArgumentException("The number of lines must be non negative."); } else if (columns < 0) { throw new ArgumentException("The number of columns must be non negative."); } else if (matrixFactory == null) { throw new ArgumentNullException("matrixFactory"); } else if (coeffsGroup == null) { throw new ArgumentNullException("coeffsGroup"); } else { this.lines = lines; this.columns = columns; this.coeffsGroup = coeffsGroup; this.matrixFactory = matrixFactory; this.matrixAdditionOperation = new MatrixAdditionOperation <CoeffType>(matrixFactory, this.coeffsGroup); } }
/// <summary> /// Adicionar os valores especificados aos valores existentes. /// </summary> /// <remarks> /// A utilização é destinada aos processo internos da livraria. /// </remarks> /// <param name="finitePart">Valor a ser adicionado à parte finita.</param> /// <param name="bigPart">Valor a ser adicionado à parte grande.</param> /// <param name="additionOperation">O objecto responsável pela adição dos coeficientes.</param> public void UnchekedAdd( ObjectType finitePart, ObjectType bigPart, IAdditionOperation <ObjectType, ObjectType, ObjectType> additionOperation) { this.finitePart = additionOperation.Add(this.finitePart, finitePart); this.bigPart = additionOperation.Add(this.bigPart, bigPart); }
/// <summary> /// Cria instâncias de objectos do tipo <see cref="MatrixAdditionOperation{ObjectType}"/>. /// </summary> /// <param name="matrixFactory">A fábrica responsável pela criação de instâncias de matrizes.</param> /// <param name="additionOperation">O objecto responsável pela adição dos coeficientes.</param> /// <exception cref="ArgumentNullException"> /// Se um dos argumentos for nulo. /// </exception> public MatrixAdditionOperation( IMathMatrixFactory <ObjectType> matrixFactory, IAdditionOperation <ObjectType, ObjectType, ObjectType> additionOperation) { if (additionOperation == null) { throw new ArgumentNullException("additionOperation"); } else if (matrixFactory == null) { throw new ArgumentNullException("matrixFactory"); } else { this.additionOperation = additionOperation; this.matrixFactory = matrixFactory; } }
/// <summary> /// Adicionar os valores especificados aos valores existentes. /// </summary> /// <param name="finitePart">Valor a ser adicionado à parte finita.</param> /// <param name="bigPart">Valor a ser adicionado à parte grande.</param> /// <param name="additionOperation">O objecto responsável pela adição dos coeficientes.</param> /// <exception cref="ArgumentNullException">Se algum dos argumentos for nulo.</exception> public void Add( ObjectType finitePart, ObjectType bigPart, IAdditionOperation <ObjectType, ObjectType, ObjectType> additionOperation) { if (finitePart == null) { throw new ArgumentNullException("finitePart"); } else if (bigPart == null) { throw new ArgumentNullException("bigPart"); } else if (additionOperation == null) { throw new ArgumentNullException("additionOperation"); } else { this.UnchekedAdd(finitePart, bigPart, additionOperation); } }
public Form1() { InitializeComponent(); calculator = new BasicOperation(); }