Особенности языка программирования C# (Си-шарп)

Автор работы: Пользователь скрыл имя, 16 Декабря 2010 в 19:19, реферат

Краткое описание

C# — это типизированный, объектно-ориентированный, простой и в то же время мощный язык программирования, который позволяет разработчикам создавать многофункциональные приложения. Разработан в 1998—2001 годах группой инженеров под руководством Андерса Хейлсберга в компании Microsoft как основной язык разработки приложений для платформы Microsoft .NET (программной платформы от компании Microsoft, предназначенной для создания обычных программ и веб-приложений).

Содержание работы

Введение 3
История возникновения 4
Особенности C# 5
Особенности реализации основных конструкций в C#. 6
Типы данных 6
Примитивные типы 6
Ссылочные типы 6
Структуры (записи) 7
Перечислимые типы 8
Массивы и коллекции 8
Параметризованные (обобщённые) типы 8
Переменные. 9
Циклы. 10
Цикл foreach 10
Цикл for 10
Цикл while 10
Цикл do-while 10
Функции и процедуры 11
Возвращаемые значения 11
Параметры 12
Некоторые особенности синтаксиса 13
Перегрузка операций 13
Пространства имён 13
Классы 14
Объявление класса 14
Создание объектов 15
Наследование классов 16
Таблица допустимых в определении классов комбинаций модификаторов доступа 17
Интерфейсы 17
Свойства и индексаторы 18
Сравнение C, C++ и C# 19
Сфера применения C# 21
Заключение 22
Список литературы 23
Приложения 24
Приложение 1 24
Приложение 2 24
Приложение 3 25
Приложение 4 25

Содержимое работы - 1 файл

Реферат.docx

— 55.09 Кб (Скачать файл)

Имя класса указывается  после ключевого слова class. Оставшаяся часть определения является телом  класса, в котором задаются данные и поведение. Поля, свойства, методы и события в классе обозначаются термином члены класса.

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

Класс и объект —  это разные вещи, хотя в некоторых  случаях они взаимозаменяемы. Класс  определяет тип объекта, но не сам  объект. Объект — это конкретная сущность, основанная на классе и иногда называемая экземпляром класса.

Объекты можно создавать  с помощью ключевого слова new, за которым следует имя класса, на котором будет основан объект:

Пример: Customer object1 = new Customer();

При создании экземпляра класса ссылка на этот объект передается программисту. В предыдущем примере object1 является ссылкой на объект, основанный на Customer. Эта ссылка указывает на новый объект, но не содержит данные этого объекта. Фактически, можно  создать ссылку на объект без создания самого объекта:

Пример: Customer object2;

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

Пример: Customer object3 = new Customer();

         Customer object4 = object3;

В данном коде создаются  две ссылки на объекты, которые указывают  на один объект. Поэтому любые изменения  объекта, выполненные посредством object3, будут видны при последующем  использовании object4.Поскольку на объекты, основанные на классах, указывают ссылки, классы называют ссылочными типами.

Наследование  классов

Наследование выполняется  с помощью образования производных, то есть класс объявляется с помощью  базового класса, от которого он наследует  данные и поведение. Базовый класс  задается добавлением после имени  производного класса двоеточия и  имени базового класса:

Пример: public class Manager : Employee

         {

             // Employee fields, properties, methods and events are inherited

             // New Manager fields, properties, methods and events go here...

         }

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

В отличие от C++, класс  в C# может только напрямую наследовать  от одного базового класса. Однако, поскольку  базовый класс может сам наследовать  от другого класса, класс может  косвенно наследовать несколько  базовых классов. Кроме того, класс  может напрямую реализовать несколько  интерфейсов.

Кроме двух ключевых модификаторов доступа (private и protected), для описания класса можно использовать ключевое слово abstract (абстрактный; создавать экземпляры такого класса запрещено, он может только наследоваться, в нем допускается наличие абстрактных членов) или sealed (изолированный; такой класс не может наследоваться). Эти ключевые слова являются взаимоисключающими.

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

Если базовый класс  не задан, то класс наследуется только от базового класса 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

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

Информация о работе Особенности языка программирования C# (Си-шарп)