С++ - язык, который изучается постепенно.Три великие идеи С++
                   Справочники Всё для создания сайта

Ссылки


Home
Бизнес
Справочники
Советы







Материалы книги получены с http://www.itlibitum.ru/

Три великие идеи С++

О нетривиальном использовании C++ написано так много, что я даже не знаю, с чего начать. Вам когда-нибудь приходилось видеть стереограммы? С первого взгляда они похожи на случайный узор, но после медленного и внимательного разглядывания на них проявляется слон, спираль или что-нибудь еще. Чтобы увидеть смысл в точках и пятнах, нужно рассматривать их в контексте объединяющей темы. Именно здесь кроется одно из самых больших разочарований при изучении архитектуры и идиом C++. Сначала кажется, что перед вами - огромная куча разрозненных приемов и ни одного правила того, как ими пользоваться. Эта книга научит вас «видеть слона». Существует множество классификаций нетривиальных аспектов C++, но я разделил их на несколько простых тем:

• Косвенные обращения.

• Гомоморфные иерархии классов.

• Пространства памяти.

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

В первой части приведен обзор многих важных аттракционов синтаксического цирка C++. Например, многие программисты C++ не имеют большого опыта работы с перегруженными операторами и лишь теоретически знают, как они применяются. Оказывается, большинство программистов никогда не использует шаблоны или обработку исключений и лишь немногие умеют пользоваться потоками ввода/вывода за рамками простейших обращений к объектам cout и cin. В части 1 стараюсь выровнять уровни подготовки читателей, заполнить пробелы в ваших знаниях C++ и подготовиться к

игре. Часть 1 можно читать от корки до, бегло просматривать или пропускать целые разделы в зависимости от того, насколько хорошо вы знакомы с нюансами C++.

Термин косвенное обращение (indirection) относится к разным конкретным темам, однако везде используется одна и та же концепция: клиентский объект обращается с запросом к другому объекту, который, в свою очередь, поручает работу третьему объекту. Косвенность связана со средним объектом в цепочке. Иногда годится слышать, что это определение почти совпадает с определением делегирования (delegation), одного из краеугольных камней объектно-ориентированного программирования. Тем не менее, в C++ идиомы, используемые с этой концепцией, и ее языковая поддержка выходят далеко за рамки того, что считается делегированием в других языках. В этой книге часто используется термин указатель (pointer); вы встретите его в каждой главе. Указатели C++

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

О проектировании иерархии классов говорили все кому не лень - одни по делу, другие болтали об «имитации объектов реального мира». Большинство аргументов в равной степени относится к любому объектно-ориентированному языку, и я вовсе не намерен захламлять книгу по C++ своими личными взглядами на объектно-ориентированный дизайн. Тем не менее, один конкретный тип наследования -гомоморфное наследование (homomorphic derivation) - оказывается исключительно полезным в сочетании со специфическими средствами C++. В гомоморфной иерархии все производные классы

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

За концепцией пространства памяти (memory space) кроется нечто большее, чем обычное управление памятью. Перегружая в C++ операторы new и delete, вы определяете, где создаются объекты и как они уничтожаются. Кроме того, можно создавать абстрактные коллекции, в которых не всегда понятно, с чем вы имеете дело - с настоящим объектом или с абстракцией. На горизонте уже видны контуры новых распределенных объектно-ориентированных структур, разработанных такими фирмами, как Microsoft, Apple и Taligent. Правда, вам придется пересмотреть некоторые базовые представления о

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


Назад    Содержание    Далее    

Home  Создание сайтов  Учебник по записи CD  Справочник Web дизайнера Самоучитель IE PHP и MySQL Компьютерные сети С++ E-mail me

Copyright 2007. Климов Александр. All Right Reserved.
Hosted by uCoz