Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Podbelsky_V_V_C_Bazovy_kurs.pdf
Скачиваний:
69
Добавлен:
02.06.2015
Размер:
1.73 Mб
Скачать

12

Г л а в а 1

 

 

В качестве обозначения операции конкатенации строк используется символ +. (Обратите внимание, что в выражениях с арифметическими операндами знак + означает операцию сложения. Эта особенность операций по-разному выполняться для разных типов операндов называется полиморфизмом. Полиморфизм и его формы мы еще рассмотрим позднее…). При конкатенации в нашем примере значения строковых констант ”присоединяются” к значению переменной с именем name.

Таким образом, результат выполнения программы будет таким:

Введите Ваше имя: Тимофей<ENTER> Приветствую Вас, Тимофей!

Для продолжения нажмите любую клавишу . . .

Последнюю фразу добавляет среда исполнения программ при завершении консольного приложения. Нажатие любой клавиши приводит к закрытию консольного окна. Если приложение выполняется вне интегрированной среды, т. е. из консольной строки, то фраза «Для продолжения нажмите любую клавишу» будет отсутствовать.

1.3.Пространство имен

Внашей программе использованы обращения к двум статическим методам класса Console. В общем виде формат обращения к статическим членам класса:

Название_пространства_имен.имя_класса.имя_члена

Эта конструкция в языке C# называется уточненным, квалифицированным, или составным именем. Первым элементом квалифицированного имени является наименование пространства имен. Поясним это понятие. Вначале приведем опубликованные в литературе определения.

«Пространство имен – механизм, посредством которого поддерживается независимость используемых в каждой программе имен и исключается возможность их случайного взаимного влияния» [6]

«Пространство имен определяет декларативную область, которая позволяет отдельно хранить множества имен. По существу,

Объектная ориентация программ на C#

13

 

 

имена, объявленные в одном пространстве имен, не будут конфликтовать с такими же именами, объявленными в другом пространстве.» [11]

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

Понятие пространства имен появилось в программировании в связи с необходимостью различать одноименные понятия из разных библиотек, используемых в одной программе. Пространство имен System объединяет те классы из .NET Framework, которые наиболее часто используются в консольных программах на C#.

Если в программе необходимо многократно обращаться к классам из одного и того же пространства имен, то можно упростить составные имена, используя в начале программы (до определения класса) специальный оператор:

using имя_пространства_имен;

После такого оператора для обращения к статическому члену класса из данного пространства имен можно использовать сокращенное квалифицированное имя

имя_класса.имя_члена

В нашей программе используются: пространство имен System, из этого пространства - класс Console и два статических метода этого класса WriteLine() и ReadLine().

Поместив в программу оператор

using System;

можно обращаться к названным методам с помощью сокращенных составных имен Console.WriteLine() и Console. ReadLine().

Именно так мы будем поступать в следующих примерах программ.

14

Г л а в а 1

 

 

1.4.Создание консольного приложения

Вотличие от языков предшествующих поколений, язык C# невозможно применять, изучив только синтаксис и семантику языковых конструкций. На приведенном примере программы мы уже убедились, что даже такие элементарные действия, как ввод—вывод тестовой информации требуют применения механизмов, не входящих в язык программирования. Эти механизмы предоставляются программисту в виде средств платформы .NET. Платформа .NET поддерживает не только язык C#, но и десятки других языков, предоставляя им огромную библиотеку классов, упрощающих разработку программ разного назначения. Не пытаясь описать все достоинства и особенности .NET, отметим только следующее: .NET позволяет в одном программном комплексе объединять программы, написанные на разных языках программирования. .NET в настоящее время реализована для разных операционных систем. Для .NET разработаны мощные и наиболее современные системы (среды) программирования. Назовем две из них.

Фирма Microsoft (разработчик продукта .NET Framework) предлагает программистам среду программирования Visual Studio. Корпорация Borland выпускает систему программирования Borland Developer Studio (BDS). Кроме коммерческих продуктов с указанным наименованием, обе фирмы выпускают следующие свободно распространяемые (бесплатные) системы программирования, возможностей которых вполне достаточно для изучения программирования на языке C#:

Visual C# 2008 Express Edition (http://msdn.microsoft.com/ vstudio/express/);

Turbo C# Explorer (http://www.borland.com/downloads/ download_turbo.html).

(За время издания книги ссылки могут измениться). Предполагая, что читатель имеет возможность работать с

одной из сред программирования, поддерживающей язык C#, перейдем к описанию технологии создания простых программ. Будем использовать Visual Studio 2008.

Программируя на C# в .NET Framework, можно разрабатывать (программы других видов в книге не рассматриваются):

●●консольные приложения; ●●Windows-приложения; ●●библиотеки классов.

Объектная ориентация программ на C#

15

 

 

Программу, которую мы привели в предыдущем разделе, проще всего реализовать как консольное приложение.

Независимо от того, какого вида программа разрабатывается, в Visual Studio необходимо создать решение (Solution) и в нем – проект (Project). Создание пустого (без проектов) решения не имеет смысла, поэтому решение будет автоматически создано при создании нового проекта. Прежде чем описать последовательность действий, необходимых для создания и выполнения простой программы, остановимся на соотношении понятий «проект» и «решение». В одно решение могут одновременно входить проекты программ разных видов. Текст (код) программы может быть обработан средой Visual Studio, когда он помещен в проект, а проект включен в решение. Часто в одно решение помещают взаимосвязанные проекты, например, использующие одни и те же библиотеки классов (также помещенные в виде проектов в это решение).

Как только среда разработки (в нашем случае Visual Studio 2008) запущена, выполните следующие шаги.

1. Создание нового проекта.

File -> New -> Project

Вокне New Project на левой панели (Project Types) выберите язык (Visual C#) и платформу (Windows). На правой панели (Templates) выберите вид приложения Console Application.

Вполе Name вместо предлагаемого по умолчанию имени ConsoleApplication1 напечатайте выбранное вами имя проекта, например Program_1. В поле Location введите полное имя папки, в которой будет сохранено решение, например, С:\ Программы. По умолчанию решению приписывается имя его первого проекта (в нашем примере Program_1). Кнопкой ОК запускаем процесс создания проекта (и решения).

Среда Visual Studio 2008 создает решение, проект приложе-

ния и открывает окно редактора с таким текстом заготовки для кода программы:

using System;

using System.Collections.Generic; using System.Linq;

using System.Text; namespace Program_1

{

16

Г л а в а 1

 

 

class Program

{

static void Main(string[] args)

{

}

}

}

2.Несмотря на то, что никакого кода в проект мы не добавляли, это приложение вполне работоспособно. Его можно следующим образом запустить на компиляцию и выполнение:

Debug -> Start Without Debuggind

(или сочетание клавиш Ctrl+F5)

Откроется консольное окно с единственной фразой: «Для продолжения нажмите любую клавишу…»

Это сообщение среды разработки, завершающее исполнение консольного приложения.

3.Дополним созданную средой разработки заготовку кода консольного приложения операторами из нашей первой программы:

using System;

using System.Collections.Generic; using System.Linq;

using System.Text; namespace Program_1

{

class Program

{

static void Main(string[] args)

{

string name;

System.Console.WriteLine("Введите Ваше имя: "); name = System.Console.ReadLine(); System.Console.WriteLine("Приветствую Вас,

" + name + "!");

}

}

}

Теперь по нажатию клавиш Ctrl+F5 программа откомпилируется, начнет выполнение, выведет приглашение: «Введите Ваше имя: » и в ответ на введенное имя «поздоровается».

Объектная ориентация программ на C#

17

 

 

В отличие от первой программы 01_01.cs в тексте заготовки, созданной средой Visual Studio 2008, присутствуют лишние для нашей программы операторы. Во-первых, вместо четырех операторов using, можно обойтись одним using System;.

Во-вторых, нет необходимости в явном указании параметра в заголовке метода:

static void Main(string[] args)

Конструкция string[] args никак не используется в нашем приложении и может быть удалена. Назначение этой конструкции будет рассмотрено в последующих главах, где мы ее используем в заголовке метода Main().

Третья особенность заготовки – наличие объявления пространства имен:

namespace Program_1 {…}

Это объявление вводит для программы собственное пространство имен с обозначением Program_1. Программа 01_01.cs не содержит такого объявления и поэтому использует стандартное пространство имен. Это вполне допустимо для тех небольших программ, которые мы будем приводить в книге.

Контрольные вопросы

1.Объясните, что такое тип.

2.Как можно определить понятие «переменная»?

3.Приведите примеры классов и объектов.

4.Перечислите признаки объектов.

5.В чем отличия членов класса от членов объекта?

6.Дайте определение идентификатора.

7.Объясните назначение отдельных частей простейшей программы на C#.

8.Каково назначение статического метода Main()?

9.Возможно ли написать программу на C#, не применяя классов?

10.Что такое тип void?

11.Какие методы класса Console применяются для ввода и вывода данных?

12.В какой момент выполняется чтение вводимых с клавиатуры данных при использовании метода ReadLine()?

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]