Приветствую Вас ГостьСуббота, 18.05.2024, 16:29

Light Midnight Inc.


Каталог статей

Главная » Статьи » Программирование » C#

C# для вундеркиндов. Часть 2.3. Учимся общаться с компьютером

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

Строительный блок: Поля

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

 class SchoolKid
 {
 string firstName;
 string lastname;
 int age;
 bool isWideAwake;
 }
 

Тип

Его значение

Примеры значений.

string

Данный тип поля в основном используется для слов и предложений, состоящих из «связанных» букв алфавита и некоторых других символов

«Sam»

«Eight-legged Octopus»

«Girls are too clever to fall out of their prams»

int

Сокращение от слова «integer», представляющее целое число.

328

28000

-520

bool

Сокращение от слова «boolean», которое в принципе означает «true/false»

true

false

 

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

 string lastname;
 

Обозначение типа должно быть известно компьютеру. Указанные выше основные типы (как int) пишутся строчными буквами, однако некоторые типы могут содержать прописные буквы.

В качестве имени поля можно использовать любое слово, например «VsegdaNacheku» с сочетанием заглавных и строчных букв. Использование пробелов не допускается.

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

 schoolKid.firstName = "Jiminy”;
 schoolKid.age = 13;
 

Имя объекта и имя поля разделяются точкой (.).

Итак, schoolKid.firstName = "Jiminy" означает «значение "Jiminy" подставить в поле firstName объекта schoolKid».

Закрытые, защищенные и открытые поля

При первом изучении языка C# этот раздел не будет настолько важным, но в дальнейшем вам могут встречаться слова «private», «protected» и «public» и вы захотите узнать их значение. Давайте обсудим этот вопрос.

 class Animal
 {
 string kindOfAnimal;
 string name;
 int numberOfLegs;
 int height;
 int length;
 string color;
 bool hasTail;
 bool isMammal;
 bool spellingCorrect;
 }
 class MyTestClass
 {

 }
 

Объекты можно брать из одного класса, такого как MyTestClass выше, и говорить об объектах в другом классе, таком как Animal.

При объявлении полей так, как показано выше, мы можем решить, должны ли другие классы иметь доступ к ним или нет. Иногда очень важно делать поля закрытыми (private), например потому что другой класс может помещать неверные значения в поля и нарушать работу программы. Использование полей «private», «protected» и «public» означает насколько безопасным будет наш класс.

Обратите внимание на различные уровни защищенности детей в семьей, как показано на рисунке выше. Малютка Света закрыта (private) в комнате — ее не выпускают из дома и она имеет наиболее высокий уровень защиты. С ней могут общаться люди, обладающие наибольшим доверием. Борис может находиться как на переднем, так и заднем дворе, но он по-прежнему в некоторой степени защищен (protected). Толя, старший ребенок, является открытым (public) для других и любой желающий может общаться с ним. 

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

 class Animal
 {
 public string kindOfAnimal;
 public string name;
 public int numberOfLegs;
 public int height;
 public int length;
 public string color;
 bool hasTail;
 protected bool isMammal;
 private bool spellingCorrect;
 }
 

Вы может поинтересоваться, а что если мы не станем включать эти слова. В этом случае компьютер молча воспринимает код, как если бы в начале объявления было написано слово «private», поскольку «private» задается по умолчанию. Поэтому поле hasTail автоматически становится закрытым (private).

Что означают эти слова?

  • Private означает, что «объекты только этого класса могут обращаться к данному полю»

  • Public означает, что «объекты любого класса могут обращаться к этому полю»

  • Protected означает, что «только объекты тесно связанных классов могут обращаться к полю»

Следующие примеры двух классов демонстрируют описанный принцип полей public и private . Мы не станем далее обсуждать поля типа protected. Дополнительные сведения о них можно получить в справке Visual C# Express.

Как и ранее, мы сначала определяем несколько закрытых и открытых полей в классе «Animal» и затем пытаемся обратиться к ним из класса «Zoo».

 class Animal
 {
 public string kindOfAnimal;
 public string name;
 public int numberOfLegs;
 public int height;
 public int length;
 public string color;
 bool hasTail;
 protected bool isMammal;
 private bool spellingCorrect;
 }

 class Zoo
 {
 Animal a = new Animal ();
 // Следующая строка будет выполнена успешно, поскольку классу «Zoo» разрешено
 // обращаться к открытым полям в классе «Animal»
 a.kindOfAnimal = "Kangaroo”;
 // Обе следующие строки НЕ будут выполнены, поскольку классу «Zoo»
 // не разрешено обращаться к закрытым или защищенным полям
 a.isMammal = false; // Попытка обращения к защищенному методу
 a.spellingCorrect = true; // Попытка обращения к закрытому методу
 }
 

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

  • Выводили слова на экран

  • Решали задачи

  • Копировали данные с веб-узла

  • Регулировали яркость фотографии

  • … и могли выполнять еще тысячи операций

А теперь вспомните уроки, на которых вас учили сложению чисел. Вероятней всего, сначала вас учили тому КАК складывать числа, возможно, пошагово описывая порядок действий. Другими словами, в первую очередь вас учили МЕТОДУ решения подобного типа задачи. Метод представляет собой набор пошаговых инструкций, поясняющих порядок выполнения действий.

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

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

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

Простой метод для компьютера может иметь следующий вид:

 void SayHello()
 {

 }
 

Но метод не имеет смысла, если он ничего не делает, поэтому давайте дополним код между фигурными скобками.

 void SayHello()
 {
 Console.WriteLine("Hello");
 }
 

(Чтобы придать коду аккуратный вид, необходимо создать отступы в методе при помощи клавиши TAB)

Если сейчас вызвать этот метод, то на экран будет выведено слово «Hello». Это не слишком сложная задача, поэтому и метод довольно прост.

Что означает VOID?

Странное слово «void» в приведенном выше примере может несколько озадачить и вы можете поинтересоваться зачем вообще мы его использовали. Давайте вкратце рассмотрим его. Просто подумайте о своем любимом фильме о космических путешествиях: представьте безграничное, пустое пространство во вселенной. Void означает «ничего».

Использование слова «void» перед именем метода означает, что когда завершается его выполнение, возвращается пустое значение, то есть ничего не возвращается. Это не значит, что метод не выполняет никаких действий, а скорее то, что по завершении отведенной операции он никаких значений не возвращает. В приведенном выше примере метода «SayHello» нам это отлично подходит, поскольку после написания слова «Hello» возвращать ничего не нужно. Вот и все, что нужно было сделать.

Вы сможете лучше понять смысл этого слова, когда мы будем рассматривать случаи, где метод должен будет возвращать некоторый результат. Мы рассмотрим подобный пример немного позже.

Вызов метода

Написав приведенный выше код, мы научили компьютер КАК выводить приветствие на экран, но фактически мы не сказали, что это нужно сделать.

Это можно сравнить с тем, как ваш учитель учит вас складывать числа и вы записываете метод, но фактически вас не просят вычислять какую-либо определенную сумму.

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

SayHello();

Когда компьютер встречает эту строку, он сам не знает как обрабатывать команду, поэтому лихорадочно начинает искать написанный вами метод с именем «SayHello». Если ему удается найти такой метод, он быстро считывает каждую строку в нем, выполняя все написанное вами.

Затем он возвращается, и с чувством гордости от того, что сделал, получает вашу благодарность.

Символ плюса (+) служит для слияния строк друг с другом и напоминает, что текстовые символы заключаются в кавычки ("”), а значения переменных — нет. Двойная косая черта (//) заставляет компьютер пропускать весь текст в строке. Она служит для включения комментариев и примечаний в код для чтения человеком. Слово "this» относится к «тому объекту, о котором идет речь". Так «this.name» относится к полю name текущего объекта (в приведенном ниже примере это «Jiminy»). Для включения метода в действие необходимо указать его имя со скобками в определенном месте программы.

Когда встречается строка ShowFullName, компьютер возвращается и находит метод с указанным именем и выполняет код, написанный в нем шаг за шагом.

Строительный блок: Объявление и вызов метода

Чаще всего в классе присутствует один или несколько методов. Они выполняют определенные действия. Методами они называются потому, что именно в них описывается метод выполнения действий: пошаговые инструкции, поясняющие порядок опреаций.

 class Person
 {
 // Поля
 public string firstName;
 public string lastName;
 // Метод
 public void ShowFullName()
 {
 Console.WriteLine("Name is " + this.firstName + " " + this.lastName);
 }
 …
 }
 
 Person Jiminy;
 Jiminy = new Person();
 Jiminy.firstName = "Jiminy";
 Jiminy.lastName = "Cricket";
 Jiminy.ShowFullName();
 

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

Представим, что вам потребовалось, чтобы компьютер вывел на экран следующий текст:

      Hello Jo

      Hello Sam

      Hello You

Вот один способ, как это сделать: можно было бы написать отдельный метод для каждого случая:

 void WriteHelloJo()
 {
 Console.WriteLine("Hello Jo”);
 }

 void WriteHelloSam()
 {
 Console.WriteLine("Hello Sam”);
 }

 void WriteHelloYou()
 {
 Console.WriteLine("Hello You”);
 }
 

и затем вызвать их следующим образом:

 WriteHelloJo();
 WriteHelloSam();
 WriteHelloYou();
 

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

В этом случае можно написать следующий метод:

 void WriteHello( string someName )
 {
 Console.WriteLine( "Hello ” + someName );
 }
 

и затем вызвать метод следующим образом:

 WriteHello( "Jo” );
 WriteHello( "Sam” );
 WriteHello( "You” );
 

Как видно, этот код позволяет сократить как занимаемое пространство, так и усилия. Нужно всегда стараться делать код как можно более кратким. По большому счету, чем короче программа, тем умнее программист.



Источник: http://msdn.microsoft.com/ru-ru/library/bb330920(v=vs.80).aspx
Категория: C# | Добавил: Cromartie (25.08.2013)
Просмотров: 1109 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Наш опрос
Оцените мой сайт
Всего ответов: 542
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Реклама
Cheсking
Часы
Мини-чат
200
Друзья Сайта
  • Light Midnight - Ваша Еда
  • Light Midnight - Anim as life style
  • Поиск