Файл: Реферат язык программирования 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). Также можно использовать и многие другие ресурсы, например, инструменты для создания сетевых компонентов, графического вывода, выполнения сложных математических вычислений и т.д.
Заключение
На основании материала, изученного в данной работе, можно сформулировать следующие выводы:
-
Возникновение языка C# было обусловлено прогрессом технологий и возрастающими достижениями в области программирования и разработки -
C# относится к C-подобным языкам, поэтому многие синтаксические конструкции являются заимствованными из более ранних реализаций C. Также C# имеет некоторое сходство с Java, так как создан на общем базисе для решения сходной задачи (создание переносимого кода) -
Язык C# выгодно отличается от своих предшественников и конкурентов широким спектром поддерживаемых возможностей и относительной простотой в использовании -
C# популярен, так как применяется для создания приложений, пользующихся большим спросом (а также вследствие распространения ОС Windows и созданной для неё NET Framework)
В данной работе реализованы следующие цели:
-
Описана история создания C#. -
Рассмотрены особенности языка и реализация основных его конструкций. -
Представлены сферы применения языка C#. -
Проведено сравнение 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);