Моделирование и программирование

         

3D моделирование в LightWave 8

LightWave - это мощная программа для 3D-моделирования, анимации и визуализации. Данный продукт может применяться в самых разнообразных областях: от создания высококачественных изображений для полиграфии до выполнения всевозможных спецэффектов в кино и телевидении. Используя широчайший набор инструментов моделирования и анимации, предоставляемых пакетом LightWave, можно в мельчайших подробностях воссоздать тонущий «Титаник» или оживить героя видеоигры. Непревзойденное фотографическое качество получаемых изображений многие считают промышленным стандартом.


Введение.

Несмотря на то что LightWave - очень мощный программный продукт, он сравнительно прост в изучении и, кроме того, легко и быстро настраивается. Предусмотрены варианты конфигурации программы для начинающих и опытных пользователей. В главах 3-5 описывается Modeler (Редактор моделей), предназначенный для моделирования объектов; в главах 6-13 рассматривается Layout (Редактор сцены), который используется для создания анимации, настройки внешнего вида моделей, освещения, композиции и визуализации сцены. Тщательно подобранные примеры позволяют быстро освоить принципы работы одного из самых популярных программных продуктов трехмерного моделирования. Читайте внимательно, и, возможно, в один прекрасный день мы увидим на экране и вашу работу.

Первый запуск
Одним из показателей хорошего стиля работы является применение папок содержания (content directory). Часто пользователи для каждого нового проекта создают папку, в которой будут храниться файлы объектов, изображений и сцен. Будете ли вы хранить все файлы проекта в одной папке или в нескольких - это решать только вам. В каждой папке содержания как минимум должны находиться еще три папки: Objects (Объекты), Images (Изображения) и Scenes (Сцены), в которых будут сохраняться файлы указанных типов. При загрузке и сохранении файлов редакторы Layout и Modeler открывают папки, соответствующие типам этих файлов. Например, когда требуется загрузить объект в Modeler, диалоговое окно загрузки открывается непосредственно в папке Objects из текущей папки содержания.

Окна проекций.
Вся работа как в Layout, так и в Modeler происходит в окнах проекций. В каждом окне проекции есть координационная сетка, единицы измерения которой определяете вы сами. Начало (origin) сетки, или ее центр, находится в точке с координатами (0,0,0) - три координаты соответствуют трем осям X, Y и Z. Поскольку окна проекций и сетка чрезвычайно важны для 3D-моделирования, то необходимо понять, как они организованы, и узнать, как лучше настроить их для более удобной работы.

Создание геометрии.
Во второй главе рассказывалось, каким образом можно настроить окна проекций Modeler и Layout. Как только вы поработаете над созданием каких-либо геометрических тел, вам, вероятно, захочется настроить Modeler по-своему: добавить новые вкладки, изменить расположение наиболее часто применяемых инструментов, чтобы сделать доступ к ним более простым и удобным, убрать неиспользуемые инструменты. Чтобы быстрее научиться создавать геометрические тела в LightWave, изменим интерфейс и начальные настройки Modeler.

Редактирование геометрии.
Одна из еще не затронутых нами сторон редактора моделей - слои. Этот элемент давно уже перешел из разряда простых инструментов моделирования в разряд инструментов организации моделирования. Так, при использовании слоев вы можете сосредоточиться на моделировании отдельной части объекта, что позволяет создавать невероятно сложные модели, состоящие из нескольких меньших и хорошо проработанных. Слои могут облегчить проектирование даже самых трудных объектов, кроме того, они придают значительную гибкость работе в Layout.

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

Основы анимации.
Первый этап создания трехмерной анимации - это перемещение элемента или изменение его размеров, но перед тем как вы начнете передвигать объекты, необходимо изучить основы работы в трехмерном пространстве. В Layout каждому измерению поставлена в соответствие своя ось, вдоль которой вы можете перемещать объекты. Так, можно принять, что перемещение объекта вдоль оси X (+Х и -X)-это его движение влево-вправо, вдоль оси Y (+Y и -Y) - вверх-вниз, а вдоль оси Z (+Z и -Z) - вперед-назад

Объекты и кости.
Как и редактор моделей, Layout может работать с многослойными объектами. Но здесь, в отличие от Modeler, предполагается, что каждому слою соответствует определенный объект, и с ним можно работать независимо от других. Поэтому в Layout отсутствуют какие либо инструменты для перемещения между слоями, а объекты, размещенные в них, рассматриваются как самостоятельные элементы. Редактор сцены определяет различные слои по присвоенным им именам.

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

Камеры.
При построении новой сцены LightWave автоматически создает камеру и источник света. Хотя настройки камеры произведены по умолчанию, ее очень удобно использовать в сцене. При необходимости просто измените настройки. Число камер в сцене не ограничено, добавление новой камеры в сцену не представляет никакой трудности, как и добавление любого другого элемента. Используя несколько камер, можно добиться невероятной гибкости при построении сцены. Вы сможете, например, создавать анимацию под любыми углами обзора и с разных точек или переключаться между камерами с различными настройками. Это позволит сохранить массу времени и гораздо результативней, чем эксперименты с положениями одной камеры.

Дополнительные инструменты создания анимации.
Программа LightWave специально разрабатывалась для облегчения работы художников-аниматоров, в этом и заключается одно из ее значительных преимуществ. Так, в Layout можно автоматически создавать новые опорные кадры, переместив элемент в каком-нибудь из кадров, или редактировать уже существующие. У этого подхода есть как положительные так и отрицательные стороны, но в конечном счете все решать вам. Одно из преимуществ использования опции Auto Key Create (Автоматическое создание опорных кадров) заключается в том, что можно достаточно быстро создать траекторию движения объекта. Просто перейдите в кадр, который хотите сделать oпoрным, и переместите объект.

Создание спецэффектов.
Как вы, вероятно, уже поняли, фон - это то, что отображает Layout, когда в сцене нет ни объектов, ни эффектов. По умолчанию для фона используется заливка черным цветом, однако при необходимости это можно изменить.

Поверхности и текстуры.
Поверхность- это совокупность многоугольников, имеющих одинаковые атрибуты. Такие группы, обозначенные уникальным именем, со всеми значениями параметров сохраняются в файле объекта. Прежде чем начать работу с поверхностями, необходимо определить, какие многоугольники объединяются в группы и как их следует называть. Вы, 'вероятно, заметили, что в Layout нет способа выделения точек и многоугольников. Это очень неудобно при создании поверхностей, поскольку требуется определить, какой группе принадлежат те или иные полигоны. Однако сделать это невозможно, так как нельзя выделить геометрию. Чтобы присвоить поверхности имя, указать распределение полигонов по группам и настроить основные атрибуты, вам придется перейти в Modeler.

Создание сцены.
Для формирования изображения Light Wave использует механизм трассировки лучей. Это означает, что он рассчитывает лучи, исходящие от камеры, источников света и прочих элементов сцены, чтобы создавать реалистичные эффекты отражения, теней, каустические явления и т.д. Например, если вы используете опцию Ray Trace Reflection (Отражение методом трассировки лучей), то LightWave сначала направит лучи от камеры, чтобы определить, какие элементы видимы в текущем |» кадре, затем рассчитает лучи от источников света, чтобы найти элементы, которые окажутся освещенными. И наконец, рассчитает лучи от поверхностей элементов, для которых коэффициент отражения больше нуля, чтобы установить, какие именно элементы будут отражаться. Аналогичным образом происходит расчет теней, каустических эффектов, преломления и т.д. Метод трассировки лучей идеально подходит для создания реалистичных изображений, однако его реализация требует большого количества вычислений, что существенно сказывается на времени формирования анимации.

Cамоучитель по VB.NET

В главе 1 «Введение» рассматриваются принципиальные отличия VB .NET от предыдущих версий. Прочитать эту главу будет полезно даже опытным программистам.
Глава 2 «Среда программирования VB .NET: Visual Studio .NET» знакомит читателя с интегрированной средой разработки (IDE) Visual Studio .NET.
Материал главы 3 «Выражения, операторы и передача управления» является своего рода «букварем» VB .NET. В этой главе приведено описание базовых синтаксических средств, к числу которых относятся переменные, циклы и операторы.
Глава 4 «Классы и объекты» открывает серию разделов, посвященных объектно-ориентированному программированию. В ней рассматривается конструирование объектов и их использование в программах.
В главе 5 «Наследование и интерфейсы» описываются важные концепции объектно-ориентированного программирования VB .NET: наследование и интерфейсы. Также здесь приведена информация о полезных классах коллекций .NET, упрощающих эффективное управление данными в программах.
Глава 6 «Обработка событий и делегаты» представляет события и новую для Visual Basic концепцию делегатов. События играют ключевую роль в пользовательском интерфейсе программ, и VB .NET зависит от них в такой же степени, как и предыдущие версии VB.
Глава 7 «Обработка ошибок в VB .NET» посвящена исключениям — современному механизму обработки ошибок, позволяющему избавиться от архаичной конструкции On Error Goto, которая появилась в первых версиях VB.
В главе 8 «Формы Windows графический вывод и печать» рассматривается построение пользовательского интерфейса, графика и печать. Хотя в наше время все чаще встречаются приложения, работающие в броузере, традиционные Windows-клиенты прочно занимают свое место; в этой главе приводятся начальные сведения о построении таких клиентов в .NET.
Глава 9 «Ввод-вывод» представляет концепцию ввода/вывода с позиции потоков данных, на которых основана новая концепция обработки ввода/вывода в .NET.


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

Visual Basic: прошлое и настоящее
«Visual Basic представляет настоящую угрозу для благополучия тех, кто зарабатывает себе на жизнь, разъясняя программистам сложности программирования для Windows» (вряд ли к комментарию Петцольда стоит относиться серьезно, поскольку с того знаменательного дня были проданы миллионы книг, посвященных VB).

Приступаем к работе
Пользователи прежних версий VB обычно предпочитают, чтобы среда IDE по внешнему виду и поведению была как можно ближе к традиционной среде VB6. Для этого откройте на начальной странице VS ссылку My Profile и выберите строку Visual Basic Developer в списке Profile

Консольные приложения
Каждое приложение VB .NET должно иметь точку вто§а. В точке входа содержится код, автоматически выполняемый при запуске, после чего управление передается остальному коду программы. В относительно простых графических приложениях точка входа может ассоциироваться с начальной формой, как в VB6. Но как было показано в главе 1, код форм Windows достаточно сложен и поиск точки входа может вызвать определенные затруднения.

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

Основы наследования
Хотя наследование не является панацеей ООП и во многих ситуациях лучше воспользоваться интерфейсами, не стоит полагать, что без наследования можно как-нибудь обойтись. Наследование — замечательное средство, способное сэкономить немало времени и сил... если им правильно пользоваться. Критерий правильного использования прост: не используйте наследование, если у вас нет абсолютной уверенности в существовании логической связи типа «является частным случаем»

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

Проверка ошибок и обработка исключений
Традиционный механизм обработки ошибок, использовавшийся в прежних версиях VB, а также в программировании СОМ и Windows, основан на проверке возвращаемого значения функции и выборе действий. Обычно для проверки возвращаемого значения в программе создается аналог конструкции Select Case, причем значения интерпретируются абсолютно произвольно.

Немного истории
Для работы с формами в прежних версиях VB использовался механизм Ruby Forms. Он представлял собой версию программы Ruby, написанной Аланом Купером (Alan Cooper); в результате объединения Ruby с QuickBasic появился VB11. Таким образом, разработка графических приложений в прежних версиях VB зависела от механизма форм, работа которого была практически полностью скрыта от программиста. Стартовая форма, словно по волшебству, появлялась на экране, а элементы размещались на форме программистом на стадии конструирования

Каталоги и файлы
Обращение к функциональным возможностям классов Directory и File происходит при помощи общих методов. Поскольку методы классов Di rectory и Fi1е являются общими, они могут вызываться и без предварительного создания экземпляра оператором New. Конечно, это повышает их эффективность при разовых обращениях к конкретному файлу или каталогу.

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

Почему ADO .NET - не ADO++
В каждой из предыдущих версий VB появлялась новая модель поддержки баз данных. VB .NET следует этой давней традиции и представляет новый способ работы с данными — ADO .NET. При ближайшем рассмотрении выясняется, что название выбрано крайне неудачно. Почему? Потому что ADO .NET просто не является следующим поколением ADO!

Простое web-приложение для ASP .NET
После небольшой задержки VS IDE создает страницу, которой по умолчанию присваивается имя WebFormsl.aspx. Сгенерированная страница содержит код вывода для приложения ASP .NET. Примерный вид VS .NET IDE показан на 12.1. Обратите внимание, сколько файлов было создано для такой простой страницы (имена файлов перечислены в окне решения). Посмотрите на каскадный список стилей, определяющий общие параметры внешнего вида страницы.

Принципы работы СОМ Технология СОМ упрощает создание программ, сохраняющих совместимость в разных версиях платформы Windows и более или менее независимых от языка программирования. Компоненты СОМ могут создаваться на разных языках, включая классический С (вариант для мазохистов), C++, Delphi, VB5 и 6. Технология СОМ с большим успехом применялась для создания объектов, предназначенных для решения специализированных задач, таких как элементы VB OCX.

Понятно о Visual Basic NET

Visual Basic .NET – это новый мощный язык программирования, созданный корпорацией Microsoft в начале тысячелетия. Сохранив во многом внешнюю простоту своего предшественника – языка Visual Basic 6.0 – он радикально обогатил и усложнил свое внутреннее содержание, предоставив программисту огромное количество новеньких, с иголочки, инструментов. Самый главный из них – настоящее, полноценное объектно-ориентированное программирование.
Visual Basic .NET конечно же по-прежнему чрезвычайно силен во всех областях традиционного программирования для обычных настольных компьютеров, то есть там, где был силен и Visual Basic 6.0. Но, откликаясь на веление времени, он приобрел и новую направленность – программирование в сетях. Теперь он позволяет удобно и легко писать программы для локальных сетей и Интернета, для карманных компьютеров и даже для мобильных телефонов.

Кратко о NET Framework и о Visual Studio NET
Visual Basic .NET – это производительное и надежное оружие в руках профессионального программиста. К тому же очень удобное и, несмотря на мощь, достаточно простое. Поэтому Visual Basic .NET более других профессиональных языков подходит для освоения начинающими программистами. На написание программы уходит минимум времени.

Преобразование типов
Во всех этих случаях перед вами встанет вопрос: уступать требованиям VB или не уступать. Казалось бы: чего проще! – уступи и дело с концом. Например, я советовал для предотвращения переполнения объявлять все переменные, участвующие в вычислениях, самым вместительным типом из тех, что могут понадобиться для результатов вычислений. И это хороший совет.


Понятно о Visual Basic NET (том 2)

Работа с числами и текстом – это хорошо. Но, согласитесь, без графики, без картинок – как-то сухо на экране. Графику мы будем проходить в три приема – в три главы. Каждая глава научит нас каким-то конкретным вещам. В этой главе мы научимся рисовать простые фигуры. В Глава 12. мы улучшим рисование и научимся работать с фотографиями. В Глава 17.  мы научимся рисовать сложные фигуры и делать фигурные окна.

Графика
Работа с графикой в VB основывается на знании так называемых графических объектов. Поэтому данный раздел будет посвящен не графике, а более близкому знакомству с объектами. Не перепрыгивайте через него: чего хорошего, если вы будете рисовать, не понимая, как вы это делаете?

Из чего состоит тело процедуры. Выражения
Из чего состоят операторы? Они могут включать в себя блоки других операторов, как это делают, например, операторы If и Do. Они могут включать в себя выражения. Мы знаем с вами уже три вида выражений: арифметические (их значение – число), строковые (их значение – текстовая строка) и логические (они принимают одно из двух значений: True или False).

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

Понятно о Visual Basic NET (том 3)

Определим шутливо сплайн, как «ломаную, которая хочет стать кривой». Задается сплайн, как и ломаная, массивом точек. Метод DrawCurve рисует сплайн, то есть соединяет соседние точки массива плавной кривой. Степень «желания» стать кривой, определяет третий параметр метода, так называемое напряжение (tension). Если он равен нулю, то и «желание нулевое», а значит сплайн остается ломаной, как вы и видите на самой левой фигуре из Рис. 17.5. При увеличении численного значения этого параметра сплайн становится все более и более «кривым», что вы можете видеть на остальных фигурах. Если параметр не указывать, он считается равным 0,5.

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

Инкапсуляция – «Объект в футляре»
Нам будет легче проникнуть в суть объектов в программировании, если мы рассмотрим основные их понятия на аналогии с объектами реального мира, которые они очень напоминают. В качестве примера разберем игрушечный радиоуправляемый автомобиль. Посмотрим, где у него данные и действия

Из чего состоят пространства имен
Смысл пространств имен. Среди огромного количества классов, модулей и других компонентов библиотеки классов .NET Framework наверняка есть «тезки». Чтобы их не перепутать, «тезок» «рассовали» по разным пространствам имен. Вот половина ответа.

Ответы к задачам

Понятно о Visual Basic NET (том 4)

Visual Basic .NET – это производительное и надежное оружие в руках профессионального программиста. К тому же очень удобное и, несмотря на мощь, достаточно простое. Поэтому Visual Basic .NET более других профессиональных языков подходит для освоения начинающими программистами. На написание программы уходит минимум времени. Изучив эту книгу, вы сможете быстро писать такие, например, приложения, как собственные калькулятор или проигрыватель MP3-файлов, шифровщик секретных сообщений или будильник, веб-браузер или простенькая игра…. Приложив же достаточные усилия, вы сможете создавать вполне солидные продукты, такие, например, как система управления базами данных, графический редактор или сложная, красивая игра, которую не стыдно опубликовать в Интернете.

Почему Visual Basic, а не C++?
Что такое программа с точки зрения VB и большинства других объектно-ориентированных языков программирования, удобнее всего рассмотреть на аналогии. Представьте себе, что к вам, живущему в большом городе, в гости приехал ваш знакомый, никогда не выезжавший из своего поселка. Он хочет сходить на футбол, а вам идти вместе с ним некогда. Чтобы он смог добраться до стадиона и вернуться живым и здоровым, вы пишете ему на листе бумаги такую инструкцию

Форматирование чисел
Одни и те же значения могут выглядеть по-разному. Например, в школьной тетрадке одну и ту же дату вы можете записать так – 25.12.03 и так – 25 декабря 2003 года. Одно и то же число вы можете записать так – 500 и так – 5*102. Что касается VB, то он выбирает внешний вид данных, исходя из своих соображений, которые не всегда совпадают с нашими желаниями. В этом случае возникает необходимость строго указать компьютеру, в каком виде (формате) мы хотим лицезреть то или иное значение.

Окно модуля
Окно модуля служит для просмотра, написания и редактирования программ Visual Basic. Допускается открытие такого числа окон, сколько имеется модулей. Это позволяет просматривать, и копировать текст между различными формами или модулями.

Клавиши редактирования текста программы
Поиск следующего вхождения образца. Если перед этим не был выполнен поиск, выводится окно диалога Поиск. SHIFT+F3 Поиск предыдущего вхождения образца. Если перед этим не был выполнен поиск, выводится окно диалога Поиск. SHIFT+TAB

Глобальные клавиши быстрого вызова
Запуск программы обработки ошибки или возврат ошибки в вызвавшую процедуру. Не влияет на установки по отслеживанию ошибок, сделанные на вкладке Общие окна диалога Параметры.

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

Массивы параметров
Для обозначения массива параметров используется ключевое слово ParamArray. Такой массив описывается как массив типа Variant и всегда представляет последние элементы из списка аргументов в описании процедуры

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

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

Свойство Left
Возвращает или задает значение типа Single, содержащее положение левой границы окна на экране в единицах твип. Чтение/запись.

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

Cамоучитель по VB.NET

В главе 1 «Введение» рассматриваются принципиальные отличия VB .NET от предыдущих версий. Прочитать эту главу будет полезно даже опытным программистам.
Глава 2 «Среда программирования VB .NET: Visual Studio .NET» знакомит читателя с интегрированной средой разработки (IDE) Visual Studio .NET.
Материал главы 3 «Выражения, операторы и передача управления» является своего рода «букварем» VB .NET. В этой главе приведено описание базовых синтаксических средств, к числу которых относятся переменные, циклы и операторы.
Глава 4 «Классы и объекты» открывает серию разделов, посвященных объектно-ориентированному программированию. В ней рассматривается конструирование объектов и их использование в программах.
В главе 5 «Наследование и интерфейсы» описываются важные концепции объектно-ориентированного программирования VB .NET: наследование и интерфейсы. Также здесь приведена информация о полезных классах коллекций .NET, упрощающих эффективное управление данными в программах.
Глава 6 «Обработка событий и делегаты» представляет события и новую для Visual Basic концепцию делегатов. События играют ключевую роль в пользовательском интерфейсе программ, и VB .NET зависит от них в такой же степени, как и предыдущие версии VB.
Глава 7 «Обработка ошибок в VB .NET» посвящена исключениям — современному механизму обработки ошибок, позволяющему избавиться от архаичной конструкции On Error Goto, которая появилась в первых версиях VB.
В главе 8 «Формы Windows графический вывод и печать» рассматривается построение пользовательского интерфейса, графика и печать. Хотя в наше время все чаще встречаются приложения, работающие в броузере, традиционные Windows-клиенты прочно занимают свое место; в этой главе приводятся начальные сведения о построении таких клиентов в .NET.
Глава 9 «Ввод-вывод» представляет концепцию ввода/вывода с позиции потоков данных, на которых основана новая концепция обработки ввода/вывода в .NET.
В главе 10 «Многопоточные приложения» изложены азы программирования в многопоточной модели. Многопоточное программирование открывает множество замечательных возможностей, но при этом оно сопряжено с немалым риском. Надеюсь, эта глава научит читателя безопасно и эффективно использовать многопоточную модель в приложениях.

Структура книги
«Сборки .NET, установка приложений и COM Interop» содержит очень краткое описание работы сборок и механизма COM Interop. Информацию по этим темам также следует искать в книгах более высокого уровня.

Visual Basic: прошлое и настоящее
Первые две версии Visual Basic для Windows хорошо подходили для создания прототипов программ и демонстрационных приложений — но этим все и ограничивалось. В обеих версиях отличная среда программирования сочеталась с относительной простотой языка. Сам язык обладал относительно бедными возможностями. С появлением VB3 и новых средств работы с базами данных, требовавших изучения новой модели программирования, первая реакция нередко была обескураживающей: «Зачем они испортили VB?!»

Приступаем к работе
В VB .NET каждый проект является частью того, что Microsoft называет решением (solution). Любой код, созданный в VB .NET IDE, относится к некоторому решению. Решение можно рассматривать как хранилище всей информации, необходимой для компиляции программы и ее перевода в форму, пригодную для исполнения. Таким образом, решение состоит из одного или нескольких проектов; различных вспомогательных файлов (графических изображений, ресурсных файлов, метаданных, то есть данных, описывающих другие данные, и т. д.); документации в формате XML и практически всего, что приходит В голову.

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

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

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

Обработка событий с точки зрения ООП
Традиционно в VB источник (отправитель) события не идентифицировался в процедуре события. Единственным исключением были массивы управляющих элементов, когда конкретный элемент-отправитель выделялся из массива при помощи параметра-индекса. Смысл дополнительной объектной переменной sender в обобщенной процедуре события VB .NET становится очевидным, если вспомнить, что одна процедура может обрабатывать несколько событий, поступающих от разных объектов.

Проверка ошибок и обработка исключений
Когда в программе происходит исключение, встроенный механизм начинает искать обработчик, подходящий для данного объекта исключения (то есть для конкретной причины ошибки). Речь идет не о наборе GoTo, запутывающих логику программы, — обработка исключения больше напоминает запасную дорогу, идущую параллельно главной магистрали и связанную с ней несколькими переездами — настоящей мечте любого водителя, попавшего в пробку.

Немного истории
Программисты предпочитают работать с логичными и последовательными моделями, а с точки зрения ООП механизм форм в ранних версиях часто выглядел как нагромождение искусственных и несогласованных «заплат». В VB .NET ситуация полностью изменилась. Здесь формы являются экземплярами класса Windows. Forms. Form, и поведение форм может изменяться посредством наследования точно так же, как и поведение любых других классов .NET Framework.

Немного истории
Прежде чем рассматривать операции с каталогами и файлами, следует познакомиться с классом Path. Этот класс содержит несколько общих методов, предназначенных для обработки уточненных имен файлов [ Любопытная подробность: в описании этого класса, приведением в документации VB .NET, упоминаются некоторые аспекты кросс-платформенных операций. В частности, упоминается о различиях между символом «/» и разделителем каталогов «\», используемым в системах семейства UNIX

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

Почему ADO .NET - не ADO++
Поскольку программа обычно работает с автономными данными, типичному приложению .NET для обработки каждого запроса приходится заново подключаться к базе данных. На первый взгляд это кажется большим шагом назад, но такое впечатление обманчиво. Старый способ поддержания соединений плохо подходит для мира распределенных систем: если ваше приложение открывает соединение с базой данных и оставляет его открытым, серверу приходится поддерживать это соединение до тех пор, пока клиент его не закроет.

Простое web-приложение для ASP .NET
Создайте на форме надпись и кнопку. Растяните надпись по ширине страницы, расположите кнопку под надписью и выровняйте по центру, при этом генерируются экземпляры классов из пространства System. Web. UI. WebControl. Ссылка на это пространство имен автоматически включается в решение при создании «скелета» нового приложения ASP .NET.

Принципы работы СОМ
Именно благодаря наличию манифеста появляется возможность создания сборок, состоящих из нескольких файлов. Кроме того, данные манифеста заменяют сложную систему регистрации компонентов в реестре. Первое представление о сборке и ее манифесте дает файл Assemblylnfo.vb; чтобы просмотреть содержимое этого файла, дважды щелкните на соответствующей строке окна решения VS .NET.

Cамоучитель по VB.NET (2)

Прежде всего я постарался изложить основные принципы объектно-ориентированного программирования в контексте языка VB .NET. Без хорошей подготовки в этой области невозможно в полной мере пользоваться всеми преимуществами VB .NET. Кроме того, я попытался изложить хотя бы азы всех аспектов языка, которыми должен владеть любой профессиональный разработчик VB .NET. К их числу относится и многопоточность, вскользь упоминаемая во многих книгах. Из этого вовсе не следует, что я рассматриваю все возможные (или хотя бы наиболее характерные) области применения VB .NET на платформе .NET, для чего понадобилась бы книга вдвое, а то и втрое большего объема. Данная же книга посвящена навыкам, которые вам необходимо освоить, а не их практическому применению (впрочем, примеры я постарался сделать как можно более реалистичными, по возможности избегая «игрушечных» программ). Наконец, поскольку большинство читателей уже обладает опытом программирования в одной из предыдущих версий Visual Basic, я приложил все усилия к тому, чтобы как можно более четко подчеркнуть различия между VB .NET и прежними версиями VB. И все же опыт работы на VB не является обязательным условием для чтения — достаточно опыта программирования на любом языке.

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

Версии Visual Basic
К сожалению, большинство программистов VB, выросших на этом продукте, ранее никогда не использовали принципы объектно-ориентированного программирования. Когда в VB впервые появились классы, многие программисты VB понятия не имели, что это такое и зачем они нужны.

Среда программирования VB .NET: Visual Studio .NET
Как правило, работа над новой программой начинается с команды New Project. На экране появляется диалоговое окно ( 2.2; список проектов прокручен примерно до середины). В окне перечислены типы проектов, автоматически создаваемых в VB .NET, — на момент написания книги их было десять. Шаблоны проектов VB .NET работают практически .так же, как в VB6.

Выражения, операторы и передача управления
Каждое приложение VB .NET должно иметь точку вто§а. В точке входа содержится код, автоматически выполняемый при запуске, после чего управление передается остальному коду программы. В относительно простых графических приложениях точка входа может ассоциироваться с начальной формой, как в VB6. Но как было показано в главе 1, код форм Windows достаточно сложен и поиск точки входа может вызвать определенные затруднения

Классы и объекты
В частности, мы покажем, как использовать важный класс StringBuilder и некоторые новые классы коллекций .NET Framework (в том числе хэш-таблицы и динамические массивы). Вы узнаете о некоторых тонкостях, связанных с передачей объектов функциям и процедурам. Только после этого мы перейдем к определению новых классов и построению объектов на их основе

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

Обработка событий и делегаты
Общий смысл происходящего заключается в том, что при возникновении события объект-источник вызывает заранее определенные функции объектов-приемников. Вызываемая функция приемника регистрируется источником события одновременно с регистрацией объекта-приемника. Такая схема называется оповещением посредством обратного вызова (callback notification), потому что источник события вызывает метод приемника по заранее известному ему адресу.

Обработка ошибок в VB .NET
Обычно для проверки возвращаемого значения в программе создается аналог конструкции Select Case, причем значения интерпретируются абсолютно произвольно. Например, в одном случае 0 означает успех, а в другом — неудачу. А в приведенном ниже фрагменте кода VB6 коды выглядят и вовсе странно

Формы Windows, графический вывод и печать
После общих сведений о формах и элементах мы познакомимся с общими принципами графического программирования в VB .NET. В этой области новый язык несколько отличается от прежних версий VB (например, из него исчезли знакомые функции-примитивы Сircle и Line). Далее рассматривается тема печати, которая в .NET представляет собой частный случай графического вывода.

Ввод-вывод
Программа следит за изменениями в каталогах (такими, как создание и удаление файлов) и обрабатывает различные события, инициируемые в зависимости от типа изменений. В предыдущих версиях VB написание подобных программ было сильно затруднено тем, что программисту приходилось использовать Windows API весьма нетривиальным образом.

Домены приложений
В .NET все управление памятью осуществляется исполнительной средой, поэтому в одном процессе Win32 могут работать несколько доменов приложений. Одним из преимуществ этой схемы является улучшение возможностей масштабирования (scaling) приложений. Средства для работы с доменами приложений находятся в классе AppDomain. Рекомендуем изучить документацию по этому классу. С его помощью можно получить информацию об окружении, в котором работает ваша программа.

Поддержка баз данных в VB .NET
Чтобы увидеть, как работают элементы, связанные с данными (data-bound controls), воспользуйтесь мастером Data Form Wizard. Просмотр кода, сгенерированного этой программой, поможет вам больше узнать о возможностях VB. NET в области работы с базами данных.

Краткий обзор ASP .NET
Обратите внимание: все теги элементов страницы снабжаются префиксом asp:. Дело в том, что элементы ASP .NET не являются элементами HTML. Они находятся на сервере, и обычные элементы HTML используются только в страницах, передаваемых клиенту (там, где это возможно). Так, в HTML не существует аналогов для таких элементов ASP .NET, как календарь или элемент интервальной проверки.

Сборки .NET, установка приложений и COM Interop
Метаданные являются частью сборки, поэтому в документации сборки названы самодокументируемыми. Во многих ситуациях сборка состоит из одного файла, но встречаются и многофайловые сборки. Например, в сборку могут входить ресурсные файлы, графические изображения и даже дополнительные EXE/DLL-файлы. В любом случае сборка является минимальным объектом .NET, для которого производится контроль версии или задаются привилегии.