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> public int Voltage { get; set; } /// <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.Voltage = voltage; this.IsBroken = false; this.IsON = false; this.PointFromID = fromID; this.PointToID = toID; this.CheckValue(); } /// <summary> /// проверка валидности полей /// </summary> /// <returns></returns> private void CheckValue() { 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"); } } } }