Научная статья на тему 'Особенности. Достоинства и преимущества использования с# в приложениях'

Особенности. Достоинства и преимущества использования с# в приложениях Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
1979
112
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ПРИЛОЖЕНИЕ / ПЛАТФОРМА / ИНТЕРФЕЙС / КЛАСС / СТРУКТУРЫ / ССЫЛКИ / КОМПОНЕНТНОЕ ПРОГРАММИРОВАНИЕ

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Шикуть Алла Васильевна, Аристов Борис Константинович, Просуков Евгений Алексеевич

Статья посвящена особенностям, достоинствам и преимуществам использования С# в приложениях. Показаны особенности С# как компонентно-ориентированного языка программирования. Рассмотрены отличительные особенности С# и преимущесва использования по сравнению с С++ и Java. В качесте примеров приведены фрагменты конкретных приложений на языке С#.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Особенности. Достоинства и преимущества использования с# в приложениях»

_МЕЖДУНАРОДНЫЙ НАУЧНЫЙ ЖУРНАЛ «СИМВОЛ НАУКИ» №11-3/2016 ISSN 2410-700Х_

Клапан состоит из корпуса с запорным элементом и блока управления клапаном, в котором находятся узел управления, узел контроля положения, элемент питания и узел приема/передачи[3].

Клапан управляется как в автоматическом режиме, так и в ручном оператором управляющей компании. Так как автоматизированная система имеет единый сервер с базой данных, к которому подключены Расчетно-кассовый центр, Банки, Почта Управляющая компания, Поставщики услуг, Служба социальной защиты населения, Аварийно-диспетчерская служба, то в автоматическом режиме система сама определит должника и заблокирует ему подачу энергоресурсов, путем подачи соответствующего сигнала на электромагнитный клапан. Заблокировав должнику энергоресурсы, он вынужден будет оплатить свою задолженность. После поступления оплаты система автоматически подаст сигнал на открытие клапана[2].

Данный клапан отличается малым энергопотреблением и может работать длительное время от встроенного источника питания. Клапан может устанавливаться как на горизонтальном, так и на вертикальном участке трубопровода на вводе в помещение[1].

Данная система не заставляет коммунальные службы проникать в квартиры должников и механическим способом устанавливать какие-либо заглушки, все работы производятся удаленно. Блокировка энергоресурсов - это самый простой и самый действенный метод воздействия на должника. Список использованной литературы:

1. Маликонов А. Г. Методы разработки автоматизированных систем управления. М, Энергия, 2004.-300с.

2. Гук М. Аппаратные средства локальных сетей. СПб, Питер, 2006.-570с.

3. Рульнов А. А., Евсафьев К. Ю. Автоматизация систем водоснабжения и водоотведения. - М.: ИНФРА-М, 2014.-192с.

© Шевелев А.М., 2016

УДК 004.514

Шикуть Алла Васильевна

канд. техн. наук, доц. МГТУ им.Н.Э.Баумана, г. Москва, РФ E-mail: [email protected] Аристов Борис Константинович ст. преподаватель МГТУ им.Н.Э.Баумана, г. Москва, РФ e-mail: [email protected]. Просуков Евгений Алексеевич доц. МГТУ им.Н.Э.Баумана, г. Москва, РФ

ОСОБЕННОСТИ. ДОСТОИНСТВА И ПРЕИМУЩЕСТВА ИСПОЛЬЗОВАНИЯ

С# В ПРИЛОЖЕНИЯХ

Аннотация

Статья посвящена особенностям, достоинствам и преимуществам использования С# в приложениях. Показаны особенности С# как компонентно-ориентированного языка программирования. Рассмотрены отличительные особенности С# и преимущесва использования по сравнению с С++ и Java. В качесте примеров приведены фрагменты конкретных приложений на языке С#.

Ключевые слова

Приложение, платформа, интерфейс, класс, структуры, ссылки, компонентное программирование.

_МЕЖДУНАРОДНЫЙ НАУЧНЫЙ ЖУРНАЛ «СИМВОЛ НАУКИ» №11-3/2016 ISSN 2410-700Х_

Введение.

звестно, что языки С и С++ являются наиболее широко используемыми языками программирования. Считается, что при разработке инженерных, коммерческих и бизнес-приложений эти языки устраивают многих разработчиков, но в действительности они не всегда обеспечивают должную продуктивность разработки. К примеру, процесс написания приложения на С++ часто занимает гораздо больше времени, чем разработка эквивалентного приложения на Visual Ваsiс. В настоящее время существуют языки, увеличивающие продуктивность разработки за счет потери в гибкости, которая так привычна и необходима программистам на С/С++. Однако, на практике хотелось бы использовать современный язык, который позволял бы писать, читать и сопровождать программы с простотой Visual Ваsiс и в то же время обладал бы мощью и гибкостью языка С++, обеспечивал бы доступ ко всем функциональным возможностям системы, взаимодействовал бы с существующими программами и легко работал бы с новыми Web-стандартами.

Язык программирования С# учитывает все выше перечисленные нюансы и, кроме того, имеет массу преимуществ таких как: простота, объектная ориентированность, типовая защищенность, «сборка мусора», поддержка совместимости версий и многое другое. Такие возможности позволяют быстро и легко разрабатывать приложения. Кроме того, С# учитывает достижения многих других языков программирования, таких как: С++, С, ]ауа, Visual Ваsiс и другие. При этом необходимо отметить, что поскольку С# разрабатывался что называется «с нуля», была возможность не переносить в него все неудачные особенности любого из предшествующих языков. Особенно это касается проблемы совместимости с предыдущими версиями. В результате имеет место быть действительно простой, удобный и современный язык, который по мощности не уступает С++, но существенно повышает продуктивность разработок.

Компонентая ориентированность

Язык С# создан как первый компонентно-ориентированный язык программирования семейства С/С++, является объектно-ориентированным языком, в котором любая сущность представляется объектом, но более простым по сравнению с С++, и сохраняющим его мощь и основные конструкции. Главное новшество при этом связано с заявленной компонентной ориентированностью языка. Компоненты [3, с.64] позволяют решать проблему модульного построения приложений на новом уровне.

Следует иметь ввиду, однако построение компонентов обычно определяется не только языком, но и платформой, на которой этот язык реализован.

Платформа .NET

Платформа .NET, на которой реализуется С#, является многоязыковой средой, открытой для свободного включения новых языков, создаваемых ме только Мю1геой, но и другими фирмами. При этом все языки, включаемые в платформу .NET, опираются на единый каркас, роль которого играет .NET Framework [2, с.83]. Каркас .NET содержит обширную библиотеку классов (Class Library) и служит тем же целям, что и любая библиотека классов, входящая в каркас. Библиотека.NET включает множество интерфейсов и классов, объединенных в группы по тематике. Каждая группа задается пространством имен (namespace), корневым пространством имен является System. Классы библиотеки связаны отношением наследования. Все классы являются наследниками класса System Object. Для всех классов библиотеки, равно как и для классов в языке С#, не определено множественное наследование.

Библиотека классов представляет собой статическую составляющую каркаса . В .NET Framework есть и динамическая составляющая -- система, определяющая среду выполнения,— CLR ( ^mmon Language Runtime). Роль этой среды весьма велика так как в ее функции входят - управление памятью, потоками, безопасностью, компиляция из промежуточного MSIL-кода в машинный код и многое другое. При этом важжйшим элементом CLR является мощный механизм «автоматической сборки мусора» (garbage соПе^о^), управляющий работой с памятью.

В целом, следует отметить следующие основные особенности проектирования приложений на:языке

С#:

• среда . NET Framework, задающая единый каркас многоязыковой среды разработки приложений, во

_МЕЖДУНАРОДНЫЙ НАУЧНЫЙ ЖУРНАЛ «СИМВОЛ НАУКИ» №11-3/2016 ISSN 2410-700Х_

многом ориентирована на компонентное программирование и оказывает несомненное влияние на все языки, поддерживающие эту технологию,в том числе и на С# ;

• главным достоинством языка С# является его согласованность с возможностями .NET Framework и вытекающая отсюда компонентная ориентированность.

Некоторые особенности С# по сравнению с С++

Указатели и управление памятью

Известно, что в языке С++ работа с указателями занимает одно из центральных мест. Нормальный стиль программирования на С# предполагает написание безопасного кода, а это значит — никаких указателей, никакой адресной арифметики, никакого управления распределением памяти. Возможность работы с указателями в духе С++ ограничена «небезопасными» блоками. Небезопасный код для С#-программистов является скорее исключением, чем правилом. Это позволяет меньше отвлекаться на отслеживание корректности работы программы с памятью, уделяя больше внимания функциональной части программы.

Наследование и шаблоны

В языке С# не реализованы такие важные для С++ моменты, как множественное наследование и шаблоны. Множественное наследование в С# возможно только для интерфейсов.

Типы данных

В языке С# имеет место принципиально новая классификация типов данных, подразделяющая типы на структурные и ссылочные. Основное различие между ними — это способ, которым их значения сохраняются в памяти. Структурные типы сохраняют свое фактическое значение в стеке. Ссылочные типы хранят в стеке лишь адрес объекта, а сам объект сохраняется в куче. Куча является основной памятью программ, доступ к которой осуществляется на много медленнее, чем к стеку. Как следствие, в С# применяются разные способы работы с объектами этих типов. В языке устранена разница между переменными и объектами. Все переменные в С# — тоже объекты, которые имеют единого предка — класс System.Object.

Структуры

В языке С++ структуры подобны классу, за небольшими исключениями. В С# разница между структурой и классом более существенна: структуры не могут иметь наследников, при этом классы относятся к ссылочным типам, а структуры — к значимым.

Особенности использования стека и кучи в С# структурными и ссылочными данными

Таким оразом, в С# структурные типы (в том числе, целые числа) располагаются в стеке, для их значений зарезервирована область, доступ к которой осуществляется по названию переменной.

Стек представляет собой динамическую структуру данных, которая сохраняет элементы по принципу: первым пришел, последним ушёл и относится к области памяти, поддерживаемой процессором, в которой сохраняются локальные переменные. Доступ к стеку во много раз быстрее, чем к общей области памяти, поэтому использование стека для хранения данных ускоряет работу программы.

Ссылочные типы (например, объекты) располагаются в куче. Куча представляет собой оперативную память компьютера. Доступ к ней осуществляется медленнее, чем к стеку. Когда объект располагается в куче, то переменная хранит лишь адрес объекта. Этот адрес хранится в стеке. По адресу программа имеет доступ к самому объекту, все данные которого сохраняются в общем куске памяти (куче).

«Сборщик мусора» уничтожает объекты, располагающиеся в стеке, каждый раз, когда соответствующая переменная выходит за область видимости. Таким образом, если объявить локальную переменную в пределах функции, то объект помечается как объект для «сборки мусора». И он будет удален из памяти после завершения работы функции. Объекты в куче тоже очищаются сборщиком мусора, после того, как конечная ссылка на них разрушается.

Массивы

В языке С# имеется возможность как объявлять классические массивы, так и работать с массивами при помощи встроенных классов. Работа с массивами в С# более безопасна, чем в С++, поскольку выход за границы массива контролируется.

_МЕЖДУНАРОДНЫЙ НАУЧНЫЙ ЖУРНАЛ «СИМВОЛ НАУКИ» №11-3/2016 ISSN 2410-700Х_

Синтаксические и семантические нюансы

В С# оператор switch не требует задания break для прерывания операции. Булевы переменные в языке С# имеют только два значения и вместо них нельзя использовать целочисленные переменные, как это принято в С++. В С# точка используется повсюду, где в С++ применяются три разных символа «.», «::», «->».

С# и Java

Эти два языка часто сравнивают друг с другом, так как оба они являются объектно-ориентированными, имеют собственную платформу (среду выполнения и набор стандартных классов) и произошли они от общего предка - С++.

Следует отметить два важных отличия в деталях реализации С# и Java [1,с.29]. В среде выполнения Java промежуточный байт-код интерпретируется, в то время как в СLR -компилируется, что повышает эффективность исполнения. Известно при этом, что время исполнения уменьшается в десятки раз. И Java и С# многое взяли от общего предка -- языка С++. Однако авторы новых языков разделились в заимствовании многих конструкций. Например, разработчики Java отказались от перечислений, тогда как в С# этот тип не только сохранен, но и развит. В С# сохранена также возможность перегрузки операторов. Кроме того, в С# добавлены ещё многие полезные нововведения...

Примеры и фрагменты программ на С#

1. Вывод на экран НеПо, Wor1d!

// подключение стандартного пространства имён для приложений .NET using System;

// все исполняемые инструкции в С# должны быть // помещены в определение типа

// (под типами понимаются классы, интерфейсы, структуры и т.п.

class He11oC1ass {

// Главная функция обязательно должна называться Main // (с заглавной буквы) и должна быть определена как статическая // (статические функции могут быть вызваны до создания // экземпляров данного класса)

public static void MainO {

// вывод сообщения на экран консоли

Console . WriteLine ("Не11о, Wor1d!"); }

}

2.Использование аргументов командной строки using System;

class He11oC1ass

{

// теперь функция принимает аргументы командной строки

public static void Main(string[] а^)

{

// вывод на экран всех аргументов

// конструкция {0} определяет положение для вывода

// первого элемента после форматной строки

// (нумерация с 0 )

// тип определяется автоматически

Fог (int i = 0; i < args.Length; i++)

Сопво1е . WriteLine ("Не11о, { 0} ", а^[ i] );

МЕЖДУНАРОДНЫЙ НАУЧНЫЙ ЖУРНАЛ «СИМВОЛ НАУКИ» №11-3/2016 ISSN 2410-700Х

Console.WriteLine("He11o, World!"); }

}

3.Работа со строками. using System;

using System.Text; // для использования StringBuilder

class HelloClass {

public static void Main(string[] args) {

// в С # строки неизменяемые, то есть все функции для работы // с ними возвращают копии строк

// чтобы избежать многократных переприсваиваний, можно

// использовать StringBuilder

StringBuilder buf = new StringBuilder("Args: ");

for ( int i = 0; i < args.Length; i++) {

// добавление строки в StringBuilder, одновременно // делая отступ и вставляя пробелы в начало строки buf .Append (args[ i] . Insert (0, " "); // добавление символа перевода строки

Ь^.Арре^("\п"); }

// перево всех букв в заглавные

Console .WriteLine (buf.ToString.ToUpperO));

}

}

4.Работа с файлом

// приведенные ниже классы используются для работы // с текстовыми файлами StreamReader SR= File.OpenText ("..." ) StreamWriter SW = File.CreateText ("...") ; string S;

// прерпись текста из одного файла в другой // с переводом в заглавные буквы

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

while (null ! =_(S = SR.ReadLineO)))

{

SW.WriteLine(S.ToUpperO); }

// заканчивание работы с файлами

SR.C^O;

SW.Close();

Заключение

В статье рассмотрены особенности, достоинства и преимущества использования в приложениях возможностей первого компонентно-ориентированного языка С# семейства С/С++. Показано, что в что в С# используется принципиально новая классификация типов, подразделяющая их на структурные и ссылочные (по способу хранения в памяти и не только). Работа с массивами в С# реализована при помощи встроенных классов и является более безопасной благодаря тому, что выход за границы массива контролируется. Кроме

МЕЖДУНАРОДНЫЙ НАУЧНЫЙ ЖУРНАЛ «СИМВОЛ НАУКИ» №11-3/2016 ISSN 2410-700Х

того по сравнению с языком С++ код на С#является более безопасным, так как не использует указателей и адресной арифметики. По сравнению с языком Java в среде Java промежуточный байт-код интерпретируется, в то время как в С# он компилируется, что повышает эффективность исполнения, так как сокращается время исполнения во много раз.

Список использованной литературы

1. Герберд Шилдт. C++: Базовый курс, 3-е издание.: Пер. с англ.- М.: Издательский дом «Вильямс», 2007.

2. Пирогов В.Ю. Программирование на Visual С++ .NET - Спб.:БХВ - Петербург, 2003.

3. Уильям Робисон, С#: Пер. с англ. - М.: ДМК Пресс, 2005.

© Шикуть А.В., Аристов Б.К., Просуков Е.А., 2016.

УДК 654.9

Щербакова Ирина Владимировна

канд. техн. наук, доцент ВИ МВД России

г. Воронеж, РФ E-mail: [email protected]

АНАЛИЗ ЭФФЕКТИВНОСТИ СИСТЕМ ОХРАНЫ ПЕРИМЕТРА ОБЪЕКТОВ

Аннотация

Рассмотрен подход к оценке эффективности системы охраны периметра объекта. Метод оценки основан на принципах вероятностно-временного анализа взаимодействия элементов системы охраны периметра.

Ключевые слова

Охрана периметра объекта. Эффективность системы охраны. Коэффициент готовности инженерных средств

охраны. Вероятность обнаружения.

Система охраны периметра объекта представляет собой сложную организационно-техническую систему, поэтому оценка эффективности ее функционирования представляет весьма сложную задачу.

Существует несколько подходов к решению вопроса об оценке эффективности системы охраны периметра (СОП). Один из основных методов, используемых в настоящее время, базируется на принципах вероятностно-временного анализа взаимодействия элементов СОП, объединенных общим целевым назначением -предотвращение несанкционированного проникновения на охраняемый объект [1].

СОП можно считать эффективной, если суммарное время задержания нарушителя инженерными средствами охраны будет больше времени, необходимого наряду охраны для предотвращения нарушения:

s

Z T3i > Tn, i=1

(1)

где Т3i - время задержания нарушителя i-тым инженерным средством охраны; i - количество

инженерных средств охраны в запретной зоне объекта (после первого рубежа обнаружения); Тп - время, необходимое для предотвращения нарушения.

Время преодоления нарушителем периметра охраняемого объекта во многом будет зависеть от количества и качества инженерных средств охраны.

Время, необходимого наряду охраны для предотвращения нарушения, в основном определяется подготовленностью личного состава.

Кроме того, эффективность СОП зависит от вероятности обнаружения нарушителя средствами

i Надоели баннеры? Вы всегда можете отключить рекламу.