Студенческий сайт КФУ - ex ТНУ » Учебный раздел » Учебные файлы »Информатика

Введение в C#: классы

Тип: реферат
Категория: Информатика
Скачать
Купить
Введение в C#: классы Вадим БодровСистема классов играет важную роль в современных языках программирования. Как же они реализованы в новом языке C#, созданном корпорацией Microsoft, и зачем нужно изучать С#?Ответы на эти вопросы зависят от того, как вы собираетесь работать дальше. Если вы хотите создавать приложения для платформы .NET, то вам, скорее всего, не удастся избежать изучения C#. Конечно, можно использовать и Си++, и Visual Basic или любой язык программирования, тем более что независимыми разработчиками создаются трансляторы с APL, Кобола, Eiffel, Haskell, Оберона, Smalltalk, Perl, Python, Паскаля и др. Однако для компилятора, способного генерировать приложения среды .NET CLR (Common Language Runtime), только C# является «родным» языком. Он полностью соответствует идеологии .NET и позволяет наиболее продуктивно работать в среде CLR. В свое время для использования виртуальной машины Java было создано множество так называемых «переходников» (bridges) c различных языков программирования, в частности PERCobol, JPython, Eiffel-to-JavaVM System, Tcl/Java и т.д. Подобные разработки так и не получили должного распространения. Практика показала, что значительно проще изучить новый язык, чем вводить дополнительные расширения в менее подходящую для данных целей систему программирования. И не надо быть провидцем, чтобы утверждать, что бо,льшая часть программистов, создающих приложения для платформы .NET, отдаст предпочтение именно языку C#.C# является языком объектно-ориентированного программирования, поэтому классы играют в нем основополагающую роль. Более того, все типы данных C#, как встроенные, так и определенные пользователем, порождены от базового класса object. Иными словами, в отличие от Java, где примитивные типы данных отделены от объектных типов, все типы данных в C# являются классами и могут быть разделены на две группы:ссылочные (reference types); обычные (value types).Внешне ссылочные и обычные типы очень похожи, так как аналогично Cи++ в них можно объявлять конструкторы, поля, методы, операторы и т.д. Однако, в отличие от Cи++, обычные типы в C# не позволяют определять классы и не поддерживают наследования. Они описываются с помощью ключевого слова struct и в основном используются для создания небольших объектов. Ссылочные же типы описываются с помощью ключевого слова class и являются указателями, а экземпляры таких типов ссылаются на объект, находящийся в куче (heap). Продемонстрируем сказанное на примере:using System;class CValue{public int val;public CValue(int x) {val = x;}}class Example_1{public static void Main(){CValue p1 = new CValue(1);CValue p2 = p1;Console.WriteLine(”p1 = {0}, p2 = {1}”,p1.val, p2.val);p2.val = 2;Console.WriteLine(”p1 = {0}, p2 = {1}”,p1.val, p2.val);}}Откомпилировав и выполнив программу, получим следующий результат:p1 = 1, p2 = 1p1 = 2, p2 = 2Как нетрудно видеть, p2 является всего лишь ссылкой на p1. Тем самым становится очевидно, что при изменении поля val экземпляра класса p2 в действительности изменяется значение соответствующего поля p1. Подобный подход не очень удобен при работе с примитивными типами данных, которые должны содержать само значение, а не ссылку на него (Complex, Point, Rect, FileInfo и т.д.). Для описания таких объектов и предназначены типы значений:using System;struct SValue{public int val;public SValue(int x) {val = x;}}class Example_2{public static void Main(){SValue p1 = new SValue(1);SValue p2 = p1;Console.WriteLine(”p1 = {0}, p2 = {1}”,p1.val, p2.val);p2.val = 2;Console.WriteLine(”p1 = {0}, p2 = {1}”,p1.val, p2.val);}}Вот что получится после запуска вышеприведенной программы:p1 = 1, p2 = 1p1 = 1, p2 = 2Из этого следует, что экземпляр класса p2 является самостоятельным объектом, который содержит собственное поле val, не связанное с p1. Использование обычных типов позволяет избежать дополнительного расходования памяти, поскольку не создаются дополнительные ссылки, как в случае с экземплярами классов. Конечно, экономия невелика, если у вас имеется всего несколько небольших объектов типа Complex или Point. Зато для массива, содержащего несколько тысяч таких элементов, картина может в корне измениться. В таблице приведены основные отличия типов class и struct.ИнтерфейсыКлассы в языке C# претерпели довольно серьезные изменения по сравнению с языком программирования Cи++, который и был взят за основу. Первое, что бросается в глаза, это невозможность множественного наследования. Такой подход уже знаком тем, кто пишет на языках Object Pascal и Java, а вот программисты Cи++ могут быть несколько озадачены. Хотя при более близком рассмотрении данное ограничение уже не кажется сколь-нибудь серьезным или непродуманным. Во-первых, множественное наследование, реализованное в Cи++, нередко являлось причиной нетривиальных ошибок. (При том что не так уж часто приходится описывать классы с помощью множественного наследования.) Во-вторых, в C#, как и в диалекте Object Pascal фирмы Borland, разрешено наследование от нескольких интерфейсов.Интерфейсом в C# является тип ссылок, содержащий только абстрактные элементы, не имеющие реализации. Непосредственно реализация этих элементов должна содержаться в классе, производном от данного интерфейса (вы не можете напрямую создавать экземпляры интерфейсов). Интерфейсы C# могут содержать методы, свойства и индексаторы, но в отличие, например, от Java, они не могут содержать константных значений. Рассмотрим простейший пример использования интерфейсов:using System;class CShape
Другие файлы:

Криптографические средства Microsoft .NET
Обзор криптографических классов библиотеки Framework Class Libr: классы алгоритмов симметричного и асимметричного шифрования, хеширования. Классы-форм...

Общественные классы
Книга "Общественные классы", изданная в Томске в 1917 г., несмотря на социальные потрясения, которые переживала Россия в тот год, привлекла к себе вн...

Биотерроризм
Использование биологического оружия террористами, способы борьбы с ним. Введение биологического оружия в войны. Типы болезнетворных возбудителей. Груп...

Иерархия Карла Линнея
Жизнь и деятельность Карла Линнея - шведского натуралиста; его заслуги в науке: предложение бинарной номенклатуры, создание единой научной терминологи...

Введение в политологию. 10-11 классы
Авторы в доступной форме знакомят с предметом политологии и ее основными понятиями; показывают взаимоотношения гражданского общества и правового госуд...