Файл: Реферат язык программирования c # (сишарп) Исполнители Хмелинин. С. И. Боталова М. Н.docx

ВУЗ: Не указан

Категория: Реферат

Дисциплина: Не указана

Добавлен: 10.01.2024

Просмотров: 171

Скачиваний: 6

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.


Компилятор не допустит ситуации, при которой производный класс будет более доступным, чем его базовый класс. Отсюда следует, что внутренний класс может наследоваться от общего базового класса, но общий класс не может наследоваться от внутреннего базового класса.

Если базовый класс не задан, то класс наследуется только от базового класса System.Object (для которого в C# используется синоним object). System.Object безусловно является корневым в иерархии наследования для всех классов.

Таблица допустимых в определении классов комбинаций модификаторов доступа




Модификатор

Значение

Отсутствует, либо internal

Класс доступен только в рамках текущего проекта

public

Класс доступен отовсюду

abstract или internal abstract

Класс доступен только в рамках текущего проекта, не допускает создания экземпляров, может только наследоваться

public abstract

Класс доступен отовсюду, не допускает создания экземпляров, может только наследоваться

sealed или internal sealed

Класс доступен только в рамках текущего проекта, не может наследоваться, допускает только создание экземпляров

public sealed

Класс доступен отовсюду, не может наследоваться, допускает только создание экземпляров


Интерфейсы


Интерфейсы объявляются тем же способом, что и классы, только вместо ключевого слова class используется ключевое слово interface. Ключевые слова для модификации доступа public и internal используются точно так же, поэтому, например, для того, чтобы сделать интерфейс общедоступным, следует использовать ключевое слово public.

Для интерфейсов ключевые слова abstract и sealed использовать нельзя, так как ни один модификатор для интерфейсов не имеет смысла (у них отсутствует реализация, следовательно, для них не могут создаваться экземпляры в явном виде).

Наследование для интерфейсов определяется аналогично наследованию для классов. Основное отличие здесь в том, что мы можем использовать интерфейсы с множественными базами, например: public interface IMylnterface : IMyBaselnterface, IMyBaseInterface2


Интерфейсы, как и классы, наследуются от System.object. Этот механизм допускает полиморфизм интерфейсов. Однако, как отмечалось ранее, нельзя создать экземпляр интерфейса таким же способом, как и экземпляр класса.

Свойства и индексаторы


C# поддерживает концепцию «свойств» — псевдополей класса, к которым обеспечивается полностью контролируемый доступ путём создания методов для извлечения и записи значения поля. Описания свойств производятся с помощью конструкций get и set.

C# также включает так называемые индексаторы, которые можно считать особым случаем перегрузки операций (аналогичным перегрузке operator[] в C++), или параметризованными свойствами. Индексатор — это свойство с именем this[], которое может иметь один или более параметров (индексов), причём индексы могут быть любого типа. Это позволяет создавать классы, экземпляры которых ведут себя подобно массивам.

Например: myList[4] = 5;

string name = xmlNode.Attributes["name"];

orders = customerMap[theCustomer];

Сравнение C, C++ и C#




Критерии сравнения

C

C++

C#

Парадигмы

Императивный

Присутствует

Присутствует

Присутствует

Объектно-ориентированный

Отсутствует

Присутствует

Присутствует

Функциональный

Отсутствует

Поддерживается очень ограниченно

Поддерживается не полностью

Обобщённое программирование

Отсутствует

Присутствует

Присутствует

Логический

Отсутствует

Отсутствует

Отсутствует

Декларативный

Отсутствует

Отсутствует

Поддерживается очень ограниченно

Типизация

Статическая типизация

Присутствует

Присутствует

Присутствует

Динамическая типизация

Отсутствует

Поддерживается не полностью

Отсутствует

Явная типизация

Присутствует

Присутствует

Присутствует

Неявная типизация

Отсутствует

Поддерживается не полностью

Поддерживается не полностью

Неявное приведение типов без потери данных

Присутствует

Присутствует

Присутствует

Неявное приведение типов с потерей данных

Присутствует

Отсутствует

Присутствует

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

Создание объектов на стеке

Присутствует

Присутствует

Присутствует

Неуправляемые указатели

Присутствует

Присутствует

Присутствует

Ручное управление памятью

Присутствует

Присутствует

Присутствует

Сборка мусора

Отсутствует

Отсутствует

Присутствует

Управление потоком вычислений

Инструкция goto

Присутствует

Присутствует

Присутствует

Инструкция break без метки

Присутствует

Присутствует

Присутствует

Инструкция break с меткой

Отсутствует

Отсутствует

Отсутствует

Поддержка try/catch

Отсутствует

Присутствует

Присутствует

Блок else (исключения)

Отсутствует

Отсутствует

Присутствует

данных

Цикл foreach

Отсутствует

Поддерживается не полностью

Присутствует

Алгебраические типы данных

Отсутствует

Отсутствует

Отсутствует

Типы и структуры

Многомерные массивы

Присутствует

Присутствует

Присутствует

Динамические массивы

Отсутствует

Поддерживается не полностью

Поддерживается не полностью

Контроль границ массивов

Отсутствует

Поддерживается очень ограниченно

Присутствует

Целые числа произвольной длины

Отсутствует

Отсутствует

Присутствует

Целые числа с контролем границ

Отсутствует

Отсутствует

Отсутствует

Возможности ООП

Интерфейсы

Отсутствует

Поддерживается не полностью

Присутствует

Мультиметоды

Отсутствует

Отсутствует

Поддерживается очень ограниченно

Множественное наследование

Невозможно

Присутствует

Отсутствует

Разное

Шаблоны

Отсутствует

Присутствует

Присутствует

Перегрузка функций

Отсутствует

Присутствует

Присутствует

Динамические переменные

Отсутствует

Отсутствует

Нет данных

Именованные параметры

Отсутствует

Отсутствует

Присутствует

Значения параметров по умолчанию

Отсутствует

Присутствует

Присутствует


Таким образом, можно сделать вывод о том, что C# обладает большим количеством возможностей, по сравнению с C и C++, так как поддерживает полностью или частично некоторые отсутствующие или слабо реализованные в предыдущих версиях возможности

Сфера применения C#


С# — один из языков программирования, который может использоваться для создания приложений. Создавать приложения на С# легче, чем на C+ + , поскольку синтаксис языка С# более простой, чем синтаксис C+ + .

Некоторые наиболее часто встречающиеся типы приложений:

  • Приложения Windows. Это приложения вроде Microsoft Office, имеющие знакомый "Windows-подобный" вид и представление. Создавать такие приложения достаточно просто с помощью модуля .NET Framework, который называется Windows Forms и представляет собой библиотеку управляющих элементов (кнопок, панелей инструментов, меню и т. п.); эта библиотека может использоваться для создания пользовательского интерфейса (user interface, UI) Windows.

  • Web-приложения. Эти приложения представляют собой web-страницы, которые могут просматриваться любым web-браузером. В состав .NET Framework входит мощная система динамического создания содержимого web-страниц, позволяющая идентифицировать пользователя, обеспечивать безопасность и пр. Эта система называется Active Server Pages.NET (ASP.NET — активные серверные страницы .NET); для создания приложений ASP.NET можно применять Web Forms языка С#.

  • Web-службы. Это новый замечательный способ создания гибких распределенных приложений. С помощью web-служб можно обмениваться по Интернету практически любыми данными с использованием единого простого синтаксиса независимо от того, какой язык программирования применялся при создании web-службы и на какой системы она размещена. Приложениям всех перечисленных типов может потребоваться доступ к базам данных, что осуществляется с помощью раздела .NET Framework, называемого Active Data Objects.NET (ADO.NET — активные объекты с данными .NET). Также можно использовать и многие другие ресурсы, например, инструменты для создания сетевых компонентов, графического вывода, выполнения сложных математических вычислений и т.д.


Заключение


На основании материала, изученного в данной работе, можно сформулировать следующие выводы:


  1. Возникновение языка C# было обусловлено прогрессом технологий и возрастающими достижениями в области программирования и разработки

  2. C# относится к C-подобным языкам, поэтому многие синтаксические конструкции являются заимствованными из более ранних реализаций C. Также C# имеет некоторое сходство с Java, так как создан на общем базисе для решения сходной задачи (создание переносимого кода)

  3. Язык C# выгодно отличается от своих предшественников и конкурентов широким спектром поддерживаемых возможностей и относительной простотой в использовании

  4. C# популярен, так как применяется для создания приложений, пользующихся большим спросом (а также вследствие распространения ОС Windows и созданной для неё NET Framework)

В данной работе реализованы следующие цели:

  1. Описана история создания C#.

  2. Рассмотрены особенности языка и реализация основных его конструкций.

  3. Представлены сферы применения языка C#.

  4. Проведено сравнение C# с предшествующими ему языками: С и С++.


Список литературы


  • http://ru.wikipedia.org

  • Герберт Шилдт C# 4.0: полное руководство = C# 4.0 The Complete Reference. — М.: «Вильямс», 2010. — С. 1056. — ISBN 978-5-8459-1684-6

  • Трей Нэш C# 2010: ускоренный курс для профессионалов = Accelerated C# 2010. — М.: Вильямс, 2010. — С. 592. — ISBN 978-5-8459-1638-9

  • Эндрю Троелсен. С# 2008 и платформа .NET 3.5 Framework = Pro C# 2008 and the .NET 3.5 Framework. — 4-е изд. — М.: Вильямс, 2009. — С. 1368. — ISBN 978-5-8459-1589-4

  • Герберт Шилдт. C# 3.0: полное руководство = C# 3.0: The Complete Reference. — 4-е изд. — М.: Вильямс, 2009. — С. 992. — ISBN 978-5-8459-1565-8

  • Кристиан Нейгел, Карли Уотсон и др. Visual C# 2008: базовый курс. Visual Studio® 2008 = Beginning Visual C# 2008. — М.: Диалектика, 2009. — ISBN 978-5-8459-1317-3


Приложения


Результат кода в приложениях 1-4: на экране в консоли появляется две строки, в одной из которых – цифры от 1 до 5, а в другой – два слова “hello world”.

Приложение 1


Пример использования цикла foreach

Использован следующий фрагмент кода:

// An array of integers

int[] array1 = {0, 1, 2, 3, 4, 5};

foreach (int n in array1)

{

System.Console.WriteLine(n.ToString());

}

// An array of strings

string[] array2 = {"hello", "world"};

foreach (string s in array2)

{

System.Console.WriteLine(s);

}

Приложение 2


Пример использования цикла for

Использован следующий фрагмент кода:

// An array of integers

int[] array1 = {0, 1, 2, 3, 4, 5};

for (int i=0; i<6; i++)

{

System.Console.WriteLine(array1[i].ToString());

}

// An array of strings

string[] array2 = {"hello", "world"};

for (int i=0; i<2; i++)

{

System.Console.WriteLine(array2[i]);

}

Приложение 3



Пример использования цикла while

Использован следующий фрагмент кода:

// An array of integers

int[] array1 = {0, 1, 2, 3, 4, 5};

int x = 0;

while (x < 6)

{

System.Console.WriteLine(array1[x].ToString());

x++;

}

// An array of strings

string[] array2 = {"hello", "world"};

int y = 0;

while (y < 2)

{

System.Console.WriteLine(array2[y]);

y++;

}

Приложение 4


Пример использования цикла do-while

Использован следующий фрагмент кода:

// An array of integers

int[] array1 = {0, 1, 2, 3, 4, 5};

int x = 0;

do

{

System.Console.WriteLine(array1[x].ToString());

x++;

} while(x < 6);

// An array of strings

string[] array2 = {"hello", "world"};

int y = 0;

do

{

System.Console.WriteLine(array2[y]);

y++;

} while(y < 2);