Этот диск был задуман как руководство для самостоятельного изучения языка C/C++ в контексте его применения в среде Windows. Известно, какое значение приобретает сегодня объектно-ориентированное программирование, учитывая возрастающие требования к качеству, надежности и пользовательскому интерфейсу приложений. Сложность и объем программ все время растут. В свете этого объектно-ориентированные языки, и прежде всего C++, становятся едва ли не единственным средством решения встающих перед программистом задач, и потому знание таких языков программирования представляется сегодня совершенно необходимым, если вы хотите писать программы, отвечающие современным требованиям. Последнее не обязательно означает, что вы являетесь профессионалом, пишущим приложения на продажу. Вы можете быть любителем, программирующим пока в свободное время ради собственного удовольствия или для решения каких-либо личных, домашних задач. Или, может быть, вы занимаетесь научно-техническими расчетами, обработкой данных и т. п. Конечно, часто для этого достаточно примитивной DOS и традиционных языков, таких, как Pascal или даже BASIC, однако обидно писать программы с минимальным пользовательским интерфейсом, ориентированным на командную строку, когда у вас есть 32-битная операционная система Windows и превосходные средства разработки приложений для нее, позволяющие создавать программы профессионального качества. А если вы уже программировали для Windows, то и сами прекрасно понимаете, зачем вам нужен объектно-ориентированный C++... Однако даже этот мощный язык в своем голом виде, так, как он есть, мало подходит для создания приложений Windows. Интерфейс прикладного программирования этой системы насчитывает сотни функций, и даже самая элементарная программа с графическим интерфейсом пользователя состоит из нескольких сот строк кода на С или C++. Поэтому на практике программисту-одиночке или небольшой рабочей группе придется использовать какие-то более мощные средства, вроде визуальных систем программирования (Visual Basic, C++Builder, Delphi) или же универсальную среду разработки типа Borland C++ в сочетании с библиотекой классов, такой, как OWL или MFC. Существуют неплохие книги, посвященные визуальным системам программирования и библиотекам классов, но собственно языку программирования, на которых они базируются, в этих книгах уделяется мало внимания, а иногда и вовсе не уделяется. А в книгах академического характера, более или менее полно и строго излагающих синтаксис и семантику языка, отсутствуют описания конкретных средств разработки программ и особенностей реализации тех или иных его аспектов. Такие книги могут быть очень полезны в условиях учебного заведения, где они будут дополняться практическими занятиями, но, как показывает опыт, самостоятельно изучить по ним язык почти невозможно. Ничто не может заменить живого опыта работы с языком, когда вы можете сразу запустить написанную программу, отладить ее и немного поэкспериментировать, внося изменения в исходный код. Поэтому мы и решили написать книгу, в которой по возможности полное описание языка C++ сопровождалось бы практическими рекомендациями и пояснениями, относящимися к конкретной среде разработки, а именно — C++Builder 5 (можно пользоваться и 4-й версией) фирмы Borland (ныне Inprise Corporation). На одном диске нельзя, конечно, охватить всю тематику программирования для Windows в C++Builder, однако там, где это уместно, мы постараемся рассказать об основных принципах того или иного аспекта работы в этой среде. Как уже говорилось, главная цель книги — описать собственно язык и научить программировать на C++ в полном его объеме; все остальное направлено на то, чтобы дать представление о доступных вам возможностях создания развитых приложений Windows и о том, что для этого потребуется освоить. И если говорить о создании программ с интерфейсом Windows, то мы, конечно, не обойдем вниманием визуальные средства программирования C++Builder. Они-то, собственно, и делают этот инструмент (как и его Pascal-аналог — Delphi) тем, что он есть — средством ускоренной разработки приложений. Rapid Application Development. Так как основным предметом книги является изложение языка программирования C++, мы не сможем подробно рассказать об использовании библиотеки визуальных компонентов (VCL), о написании оригинальных компонентов VCL или ActiveX и т. п. Ясно, что объектно-ориентированное и визуальное программирование — это разные вещи; и как нам кажется, очень важно, чтобы читатель четко понимал, что представляет собой визуальный подход к программированию с точки зрения его реализации на базе C++. Какие для этого требуются расширения языка, как организуется программа в целом, каковы особенности потока управления... короче — “как это все устроено”. Кстати, это касается, на другом уровне, и реализации самого языка программирования; настоящий программист не только формальным образом “знает язык”, но и представляет себе, как он устроен. Как, скажем, в C++ реализуется механизм виртуальных функций или как работает стек при вызове процедуры. В общем, мы постараемся при обсуждении визуального программирования не упускать из виду именно подобные моменты. Организация диска Первая часть диска обсуждает основные особенности среды C++Builder и фундаментальные принципы программирования на языке С. Далее следует описание более сложных аспектов этого языка, включая расширения, характерные для C++Builder. Вторая часть рассказывает о языке C++ и объектно-ориентированном программировании. Третья часть посвящена визуальному программированию для Windows. Мы рассмотрим концепцию визуальных компонентов и организацию библиотеки VCL. При этом мы продемонстрируем, как создать свой собственный визуальный компонент; нам кажется, это самый эффективный способ сразу ввести читателя в реалии визуального подхода. Описания синтаксических конструкций обязательно сопровождаются фрагментами программного кода, иллюстрирующими и разъясняющими обсуждаемые концепции; часто от короткого примера бывает больше пользы, чем от пространных теоретических объяснений. В разделах, посвященных визуальному программированию, приводятся примеры законченных программ, чтобы дать читателю представление о всем процессе создания приложений в C++Builder. По ходу чтения диска читатель найдет много советов, подсказок, предостережений и других сведений, дополняющих основной материал. Поскольку такие вставки выбиваются из основной линии изложения, они выделены специальным стилем текста. Конечно, если вы уже знакомы с язьком С, а тем более с C++, некоторые из глав покажутся вам скучными, но книгу можно читать и выборочно. Каждый раздел книги носит в общем-то самостоятельный характер, хотя лучше читать все подряд, пропуская только то, что вам и так хорошо известно. В любом случае мы надеемся, что книга окажется полезной в качестве своего рода справочника, в котором вы всегда сможете быстро найти информацию по тому или иному вопросу, когда в процессе вашей повседневной работы будут проявляться — пока вы не изучили язык в совершенстве, это неизбежно — разнообразные неясности и сомнения.