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

Light Midnight Inc.


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

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

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

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

Вы скажите: «Так давайте научим компьютер понимать нас!». Но компьютеры устроены совсем не так как человеческий мозг и «видят» мир совсем по-другому, поэтому обучить их мышлению подобному нашему — непростая задача.

Выходом может стать поиск компромиссного решения:

  • общий «взгляд на мир» и

  • общий язык, который способны понимать как люди, так и компьютеры.

Эта часть книги полностью посвящена изучению способов общения с компьютером. Потребуется несколько «развернуть» свое сознание, чтобы увидеть вещи с позиции компьютера. При этом придется пойти на взаимные уступки: компьютер сможет научиться многому (например узнает некоторые слова) из нашего мира, но и вы должны будите выучить кое-что из мира компьютеров. Попытайтесь забраться в «голову» компьютера и представить, как можно было бы изложить мысли.

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

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

  • К счастью или нет, но что-то произошло во Вселенной и бог весть как это случилось, но вы и странный пришелец оказались на маленьком, пустынном острове посреди океана. После отчаянного «Привет, меня зовут Света, а тебя?», вы, в конце концов, решаете дать своему спутнику имя Алджи.

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

    На песке вы рисуете изображение кокосовой пальмы и, указывая на него, произносите слово «ко-кос». Вас поражает то, что Алджи моментально реагирует на слово «ко-кос». Вы рисуете другие изображения и Алджи отлично на них реагирует. Обнаруживается, что у этого создания талант к языкам. До наступления сумерек Алджи овладевает русским.

  • Будучи взволнованным собственным успехом, вы смотрите Алджи в глаза. «Алджи, пожалуйста, подними меня на плечи, чтобы я могла достать кокосы».

    Он смотрит на вас озадаченно. Затем с таким же видом смотрит на изображение кокосовой пальмы. Потом опять на вас. И снова на рисунок. Бесполезно — он не понимает! Осознав свою ошибку, вы хватаетесь за голову и растерянно показываете на настоящую пальму. Но Алджи по-прежнему не может понять. Оказывается, он понимает только по рисункам. Ага! Вам постепенно становится ясно, что хотя Алджи и может использовать ваш язык, он, фактически, НЕ понимает реальных вещей, о которых вы говорите.

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

    Вы не знаете, сон это, галлюцинации или видение, но фигура в белом появляется в ярком, туманном свете. Низкий голос подсказывает вам: «Вот отличный способ восприятия окружающего мира!». «Так вы и Знифф12 сможете добиться понимания». (Вы догадываетесь, что это должно быть настоящее имя Алджи.) Вы теряете чувство времени по мере того, как образы магически вкрадываются в ваш разум, обучая новому способу описания мира. Наконец успокоившись, вам удается выйти из этого беспечного состояния.

  • Встрепенувшись, вы хватаете Алджи за плечи: «Я все поняла, приятель, слушай внимательно то, что я тебе скажу». Алджи с нахмуренным видом вслушивается в вашу речь.

  • «В окружающем нас мире существуют различные классы объектов — растения, животные, голодные люди, инопланетяне и так далее».

  • «Сейчас я хотела бы рассказать тебе о существующих объектах на этом острове. А именно, если ты не заметил, меня очень интересует эта кокосовая пальма (которая, между прочим входит в класс называемый «растениями»). Мне также интересен вон тот слон. Ух ты! Странно, как это я не увидела его раньше». (Вы указываете на каждый объект, о котором говорите).

  • «Слон входит в класс, называемый «животными» и имеет некоторые важные для нас свойства, Алджи. Во-первых, все животные могут двигаться. Во-вторых, слон по-настоящему тяжелый. Наверное, тонны две, что пригодится нам. В-третьих, у него скверный характер, что тоже может оказаться полезным.

  • «Ну ладно, Алджи, теперь слушай меня ... «В окружающем нас мире непрерывно происходят события. Я проголодалась — это событие. Кокосы созревают — это событие. Иногда мы сами можем вызывать события, чтобы выполнить некоторое действие. У меня есть отличная мысль, давай вызовем событие «беспокойства слона», которое заставит его помочь нам выполнить действие «добывание кокосов».

  • «Давай разделим обязанности. Я вызову событие (отвлеку внимание слона на тебя), а ты заставишь его достать для нас кокосы, договорились?» При этом Алджи робко смотрит на вас и признает: «Света, я слышу твои слова, но не знаю как это сделать». Похлопывая товарища по спине, вы говорите: «Алджи, не беспокойся, я никогда не стану просить тебя о чем-либо, сначала не объяснив тебе метода выполнения этого действия». Вот что нужно будет сделать после того, как я отвлеку слона и скажу тебе «доставать кокосы»:

    • Выбегай из-за этого камня и вставай рядом с пальмой. Слон немедленно понесется к тебе.

    • В тот момент, когда он достигнет нарисованной мной на песке линии, беги изо всех сил (поворачивай в разные стороны, так как бегать взад и вперед — не лучшая мысль).

    • Он ударится о пальму и на некоторое время оцепенеет, но силой удара кокосы будут сбиты и мы позже сможем собрать их.

    • После этого возвращайся в исходную точку и сообщи результат.

  • Алджи надолго замирает, очевидно переваривая задание, прежде чем неожиданно достает суперсовершенное устройство связи. В течение некоторого времени он передает модемные звуки в это устройство и затем снова кладет его в карман. Вы спрашиваете: «Что все это было, Алджи?». Алджи отвечает: «Позволь мне перевести, Света ...

    • Существует класс объектов, называемых Икс-знифферами.

    • Я один из объектов такого класса, но есть и другие.

    • Все объекты этого класса обладают следующими свойствами:

      - name (например мое имя — Знифф12)

      - earShape (значение которого всегда «трубка»)

      - likeToWatchTV (в большинстве случаев имеет значение истины, а в других случаях — лжи)

    Должен признаться, что мое появление здесь не случайно. Ты попала в популярное ТВ-шоу «Остаться в живых». Но я только что позвонил своему продюсеру и сказал, что меня не удовлетворяет обещанная плата за такое задание. Он собирается немедленно выполнить метод ОтправитьСпасательнуюГруппу».

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

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

Подход с использованием «классов, объектов, свойств, событий и методов», о котором было рассказано в истории, не является безупречным. Это только один из способов, который можно выбрать для объяснения окружающего нас мира пришельцу. Важно то, чтобы вы оба договорились об описании мира единым образом. Такой взгляд на мир, который, между прочим, называется «объектно-ориентированным» подходом, стал очень популярным способом описания вещей компьютерам, и фактически, язык C# требует придерживаться именно его.

Итак, изучение языка C# это изучение способов описания вещей при помощи классов, объектов, событий, методов и т.д.

Если вы хотите, чтобы компьютер помог в выполнении необходимых вам действий, то:

  • Вам (как человеку) нужно выучить язык C# и научиться описывать вещи с ориентацией на объекты.

  • Вам необходимо установить приложение C# и другие сопутствующие программы. Теперь и компьютер сможет понимать язык C# и сможет работать с объектами, описанными в соответствии с объектно-ориентированным подходом.

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

Позвольте теперь описать значение ориентации на объекты с точки зрения программиста.

  • Окружающий нас мир можно разделить на различные классы вещей, такие как «коты» или «дома» или «деревья». Такие классы можно считать категориями или метками для группировки сходных объектов. Задача заключается в поиске способа описания таких классов для компьютера, чтобы он мог выполнять с ними действия.

  • Каждый класс вещей включает определенные объекты, которые и нужны нам. Например, в класс «кот» входит мой кот Пушок, который является объектом класса котов. Подобным образом, розовый дом на углу моей улицы является объектом класса «дом», а дуб, видимый из окна моей спальни, является объектом класса «дерево». Если есть определенный объект, с которым должен работать компьютер, то нам необходимо создать некоторое описание для компьютера, которое представляет такой объект.

  • Для объектов характерны различные свойства. Свойства служат для более четкого описания объектов.  Их можно сравнить с прилагательными в русском языке. Например, моего Пушка можно описать такими свойствами как роствес и рядом других.

  • События — это изменения, происходящие с объектом. В реальном мире события происходят вокруг нас непрерывно. Например, когда я глажу Пушка, это событие происходит с ним. Подобным образом, ветер, развевающий ветви дуба, видимого из моего окна — это событие, происходящее с деревом. События, как правило, представляют собой действия, воздействующие на определенный объект, но сам объект повлиять на них не может. В компьютерном мире событиями могут быть «нажатие кнопки» или «перемещение мыши».

  • Действия выполняются объектом. Например, кот Пушок лижет свою шерсть — это действие. В компьютерном мире, иногда, когда происходят интересные события, мы хотим, чтобы выполнялись определенные действия, например «рисование изображения кота при нажатии на кнопку».

  • Хотите верьте, хотите нет, но компьютеры по-настоящему глупы. Компьютер не имеет представления о том, как нарисовать кота. Поэтому необходимо дать описание, которое будет понятно компьютеру — метод рисования кота. Метод представляет собой набор пошаговых инструкций, которые определяют порядок рисования кота, подобно рецепту.

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

Окружающий нас мир можно разделить на различные группы вещей. Назовем их классами.

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

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

Рассмотрим другой пример: группу всех живых организмов можно объединить в два класса — «растения» и «животные».

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

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

 class Animal
 {

 }
 

Из этого небольшого отрывка кода компьютер теперь понимает, что

  • мы собираемся обсуждать класс объектов

  • мы назовем этот класс Animal

  • все описание этого класса будет расположено между фигурными скобками { … }.

В то время как имя класса «Animal» определенно будет нести смысл в программе, выводящей на экран изображения животных или сохраняющей интересные факты о них, также возможны такие классы как «MyPhotoProgram» или «MyGradeCalculator». Итак нужно понимать, что классы совсем не обязательно работают с объектами, существующими в реальном мире — имя классу дается для описания того, с чем он имеет дело.

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

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

Строительный блок: Классы

Все программы на языке C# создаются внутриклассов. Основная структура класса для компьютера имеет следующий вид:

 class Animal
 {

 }
 
 class Animal { }
 

Немного позже мы расскажем о том, что происходит внутри описания класса (между фигурными скобками). Но сначала мы обсудим объекты.

Каждый класс содержит ряд реальных объектов. Например, в классе объектов «Animal» могут присутствовать определенные существа:

  • Тетин кот «Барсик»

  • Корова, увиденная вами однажды, прозвище которой вам неизвестно

  • Горилла по прозвищу Джереми

  • и другие объекты.

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

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

 Animal Barsik;
 

Мы написали небольшой отрывок кода, и здесь нужно остановиться чтобы подумать, иначе можно упустить главную мысль. Компьютер понимает следующее: «Этот человек хочет поговорить об объекте в классе «Animal» и назвать его «Barsik». Я не знаю, что такое Barsik, но если человек хочет это так называть, то мне все равно».

Однако нам нужно дополнить приведенный выше код еще одним выражением:

 Barsik = new Animal();
 

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

  • Первое выражение предупреждает компьютер, что вскоре мы попросим его работать с определенным индивидуумом в классе «Animal». Теперь у компьютера появляется возможность проверить свои знания об этом классе. Он просматривает всю программу и ищет описание класса с именем «Animal». Если он не находит такого объекта, то может предупредить вас: «Эй, я не смогу этого сделать!». Если же удается найти нужное описание, он просто продолжит выполнение программы, приняв во внимание, что вы позже попросите его выполнить некоторое действие с объектом класса «Animal» по имени Barsik.

  • Несколько позже мы добавим второе выражение, которое скажет компьютеру: «Эй, помнишь объект Barsik? Теперь мне нужно выполнить с ним действие. Освободи пространство в голове для размышления об этом животном. Компьютер представляет новый объект «Animal» в своей голове и понимает, что вы говорите о том же объекте (Barsik), упомянутом ранее. Изучив класс «Animal», компьютеру стало кое-что известно о Барсике, и он держит эту информацию наготове в своей голове в надежде на то, что получит от вас дополнительные данные или несколько вопросов о Барсике.

Теперь давайте рассмотрим все три момента и представим как компьютер «думает» о них

Заметьте, в первом блоке мы описываем класс объектов в общем, а в блоках 2 и 3 мы выделили определенный объект в классе Animal.



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

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