Newer
Older
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace WindStressPRM
{
/// <summary>
/// power line object
/// объект - ЛЭП
/// </summary>
public class Powerline
{
/// <summary>
/// unique id
/// уникальный идентификатор
/// </summary>
public int Identifier { get; set; }
/// <summary>
/// year of construction
/// год постройки ЛЭП
/// </summary>
public int Year { get; set; }
/// <summary>
/// average height of cable span between two poles, meters
/// средняя высота пролета, м
/// </summary>
public double Height { get; set; }
/// <summary>
/// voltage class kV for switches
/// Напряжение ЛЭП, кВ
/// </summary>
/// <summary>
/// Line vertices coordinate list
/// список координат вершин ЛЭП как линейного объекта
/// </summary>
public IList<Coordinate> Coordinates { get; set; }
/// <summary>
/// assigned powerstation/pole
/// идентификатор соответсвующего конца/начала линии (столб, трансформаторная подстанция, понижающая подстанция)
/// </summary>
public int PointFromID { get; set; }
/// <summary>
/// assigned powerstation/pole
/// идентификатор соответсвующего конца/начала линии (столб, трансформаторная подстанция, понижающая подстанция)
/// </summary>
public int PointToID { get; set; }
/// <summary>
/// broken/not broken switch
/// сломана (true) или нет (false) линяя
/// </summary>
public bool IsBroken { get; set; }
/// <summary>
/// power on switch
/// получает (true) или нет (false) линия питание
/// </summary>
public bool IsON { get; set; }
/// <summary>
/// designated constructor
/// </summary>
/// <param name="coord"> Line vertices coordinate list/список координат вершин ЛЭП как линейного объекта</param>
/// <param name="id"> uniq id/уникальный идентификатор </param>
/// <param name="year">year of construction/год постройки ЛЭП </param>
/// <param name="height"> average height of cable span between two poles, meters/средняя высота пролета, м</param>
/// <param name="voltage"> voltage class kV for switches, Напряжение ЛЭП, кВ</param>
/// <param name="toID"> assigned powerstation/pole/идентификатор соответсвующего конца/начала линии (столб, трансформаторная подстанция, понижающая подстанция)</param>
/// <param name="fromID"> assigned powerstation/pole/идентификатор соответсвующего конца/начала линии (столб, трансформаторная подстанция, понижающая подстанция)</param>
public Powerline(IList<Coordinate> coordinates, int id, int year, double height, int voltage, int toID, int fromID)
{
this.Coordinates = coordinates;
this.Identifier = id;
this.Year = year;
this.Height = height;
this.IsBroken = false;
this.IsON = false;
this.PointFromID = fromID;
this.PointToID = toID;
}
/// <summary>
/// проверка валидности полей
/// </summary>
/// <returns></returns>
if (Identifier < 0)
{
throw new System.ArgumentOutOfRangeException("Identifier", Identifier, "Expected >0");
}
if (Year > 2050 || Year < 1900)
{
throw new System.ArgumentOutOfRangeException("Year", Year, "Expected 1900<=Year<=2050");
}
if (Height <= 0 || Height > 50)
{
throw new System.ArgumentOutOfRangeException("Height", Height, "Expected 0<Height<=50");
}
if (Voltage <= 0 || Voltage > 1500)
{
throw new System.ArgumentOutOfRangeException("Voltage", Voltage, "Expected 0<Voltage<=1500");
}
if (PointFromID < 0)
{
throw new System.ArgumentOutOfRangeException("PointFromID", PointFromID, "Expected >0");
}
if (PointToID < 0)
{
throw new System.ArgumentOutOfRangeException("PointToID", PointToID, "Expected >0");
}