Главная » Просмотр файлов » Б. Страуструп - Язык программирования С++. Специальное издание, 3-изд. Бином. 2004

Б. Страуструп - Язык программирования С++. Специальное издание, 3-изд. Бином. 2004 (1160791), страница 199

Файл №1160791 Б. Страуструп - Язык программирования С++. Специальное издание, 3-изд. Бином. 2004 (Б. Страуструп - Язык программирования С++. Специальное издание, 3-изд. Бином. 2004) 199 страницаБ. Страуструп - Язык программирования С++. Специальное издание, 3-изд. Бином. 2004 (1160791) страница 1992019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 199)

В качестве примера рассмотрим фильтр, то есть программу, которая считывает поток ввода, (возможно) выполняет какие-то действия, основанные на вводе, (возможно) выдает поток вывода и (возможно) представляет окончательный результат. Бесхитростная среда разработки для таких программ обеспечивает набор операций, которыми бы мог воспользоваться прикладной программист: с!аее р!!!ее ( ри6|: с!аее )«егер ( ри 6!!с: о!г!па! сапе! сваг* теееаяе () ( ге!игп О; ) )' Глава 25.

Роли классов 864 и!с!и а! во Ы з1аг! () ( ) и1г(иа! тг геас! () = О; Ыггиа! соЫ шг!1е () () слег! иа! соЫ со три 1е ( ) э!г(иа! Ы1 гели!1 () = О; и1г1иа! Ы1 геп у ()се! у8, т) ( сегг«т теззауе () « '~п'; ге1игп 2; ) Ыг1иа! -Р!!1ег () ( ) ); Г!главний цикл !пг та!л !оор !Р1!1еГ Р) ( у.- („)( 1гу ( р->зтаг1 (); шИ!е (р->геас! ()) ( р->сотри1е (); р->шг!1е (); ге1игп р->гезий (); ). са1сб (Р1!1ег::йе~гуа т) ( (Г (!п1 ! = р->ге1гу (т)) ге1игп й са1с!с(...)( «сратальная ошибка в фильтре 'Р ' ге1игп 1; И наконец, я мог бы написать свою программу следуюшим образом: с!азз Му )(!1ег: риб!!с Я!1ег ( !з !сеато !з, озггеат8, оз; !и! лсбаг, риЫ! .' !п1 геай () ( сваг с; !з.уе1 (с); ге1игп !з.уооа! (); ) иоЫ сотри1е () ( псйагч-';; ); 1п1 гели!1 () ( оз «псйаг « 'символов считано~п"; ге1игп О; ) Му Я!!ег (!з1геата !1, озггеатй оо); и (И), оз (оо), псбаг (О) () и активизировать ее таким образом: Функции, которые будут использоваться в производном классе, объявлены как чисто виртуальные; другие просто определены так, что ничего не делают.

Среда разработки также обеспечивает главный цикл и рудиментарный механизм обработки ошибок: 865 25.9. Советы 1п1~паГп [) ( Му Яйег(' [от, гоиг]; ге1игп та! и (оор [Рф Естественно, чтобы быть полезной, среда разработки должна обеспечивать болыпе структур и служебных функций, чем этот простой пример.

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

Советы [1] Решение, каким образом класс должен использоваться, должно быть сознательным (осознанным и проектировщиком, и пользователем); 6 25.1. [2] Учитывайте альтернативы, связанные с разными видами классов; 9 25.1. [3) Для представления простых независимых понятий пользуйтесь копкретцымн типами; 6 25.2. [4] Для представления понятий, где важна эффективность, близкая к оптимальной, пользуйтесь конкретными типами; 6 25.2.

[5] Не стройте от конкретных классов производные; 9 25.2. [6] Для представления интерфейсов в тех случаях, когда представления объектов могут меняться, пользуйтесь абстрактнымн классами; 6 25.3. [7] Там, где должны сосуществовать разные представления объектов, для представления интерфейсов пользуйтесь абстрактными классами; 9 25.3. [6) Для представления новых интерфейсов к существующим типам пользуйтесь абстрактнымн классами; 6 25.3. [9] Там, где схожие понятия имеют существенные общие детали реализации, применяйте узловые классы; 6 25.4, [10) Используйте узловые классы для постепенного расширения реализации; 9 25.4. [11) Чтобы ввести для объекта новый игп ерфейс, пользуйтесь определением типа во время выполнения; 6 25.4.1.

[12] Для представления действий с ассоциированным с ннмн состоянием пользуйтесь классами; 6 25.5. [13) Для представления действий, которые нужно сохранять, передавать или откладывать пользуйтесь, классами; 6 25.5. [14] Для приспособления классов к новому виду использования (без изменения самого класса) применяйте интерфейсные классы; 6 25.6. [15] Пользуйтесь интерфейсными классами, чтобы ввести проверку; 6 25.6.1. [16) Чтобы избежать прямого использования указателей и ссылок, применяйте вспомогательные классы; 9 25.7.

, [17) Чтобы управлять общими представлениями, пользуйтесь вспомогательными классами; 6 25.7. Глава 25. Роли классов 666 25.10. Упражнения 1О. 11. ' Название подразумевает, что объекты этого класса умеют записывать себя в нсьую долговременную память (скажем, на диск) и считывать себя оттуда. — Прижею дед. 1 2 3 5 6 7 В тех прикладных областях, где управляющую структуру можно предопреде; лить заранее, пользуйтесь прикладными средами разработки; 9 25.8. (*1) Шаблон 7о иэ 9 25А.1 не работает для встроенных типов.

Измените его так, чтобы работал. ('1.5) Шаблон вспомогательного класса Напг?1е из 9 25.7 не отражает отноше- ний наследования классов, которым он «помогает». Измените его так, чтобы от- ражал. То есть вы должны сделать так, чтобы можно было присваивать объект Налг11е<С<гс1е> объекту Налг?1е<БЬаре>, но не наоборот. (*2.5) Имея класс 31г(лп; определитедругой строковый класс, использующий его как представление и предоставляющий свои операции как виртуальные функ- пии, Сравните быстродействие двух классов.

Попытайтесь найти осмысленный класс, который бы лучше всего реализовывался открьпым наследованием нз клас- са строк с виртуаяъными функциями. (»4) Изучите две широко используемые библиотеки, Классифицируйте биб- лиотечные классы в терминах конкретных и абстрактных типов, узловых, вспомогательных и интерфейсных классов. Используются ли абстрактные уз- ловые и конкретные узловые классы? Есть ли для классов этих библиотек бо- лее подходящая классификация? Используются ли жирные интерфейсы? Ка- кие возможности в них предоставляются (если вообще предоставляются) для получения информации о типе во время выполнения? Какова стратегия рас- пределения памяти? (*2) Воспользуйтесь средой разработки Н11ег для реализации программы, кото- рая удаляет повторяющиеся соседние слова из потока ввода, а в остальном копи- рует ввод на вывод.

(*2) Воспользуйтесь средой разработки Г!11ег для реализации программы, кото- рая подсчитывает частоту слов в потоке ввода и выдает на выход список пар (сло- во, счетчик) в порядке возрастания частот. (*1.5) Напиши~с гиаблон Каппе, принимающий в качестве параметров шаблона и диапазон, н тнп элементов. (*1) Напишите шаблон Наиде, принимакицнй диапазон в качестве аргумента конструктора. (»9) Напишите простой строковый класс, не выполняющий проверки ошибок. Напишите другой класс, проверяющий доступ к первому. Рассмотрите все «за» и «против» разделения базовых функций и проверки ошибок.

(*2.5) Реализуйте систему объектного ввода/вывода пз 9 25А.1 лля нескольких типов, включая по крайней мере целые числа, строки и какую-нибудь иерархию классов по вашему выбору. (*2.5) Определите класс 51огаЫе' как абстрактный базовый класс с внртуальны- мн функциями тпгйе ои1 11 (записать) и геас( 1л 1) (прочесть). Для простоты допу- стите, что символьной строки достаточно для описания места, где перманентно хранится объект. Воспользуйтесь классом 51огаЫе, чтобы обеспечить возмож- 867 25.10.

Упражнения 12 13 допустимым аргументом для у (). ' Название подразумевает, что объекты этого класса будут «долгоживущими», то есть ови (в частности) могут существовать после завершения выполнения программы. Блнзко к понятию «хранимый» (зГогаЫе). — Примеч. ред.

15 18 1? 18 19 ность записывать на диск объекты классов, производных от ЫогаЬУе, н считывать такие объекты с диска. Проверьте это на паре классов по вашему выбору. (*4) Определите базовый класс Регизуеп1' с операциями заве () и по заве (), ко- торые контролировали бы, записывается ли объект деструктором в долговре- менную память или нет. Кроме заве () и по заве (), какие еше операции можно с пользой для дела ввести в Регзузуеп1? Проверьте класс Регзуз1еп1 на паре клас- сов по вашему выбору. Является ли он узловым классом, конкретным типом или абстрактным типом? Почему? ('3) Напишите класс 81асУг (стек), реализацию которого можно изменять во вре- мя выполнения программы.

Подсказка: «Всякая проблема решается еще одним перенаправлением». (*3.5) Определите класс Орег, который содержал бы идентификатор типа И (это может быть зугУпя'пли С-строка) и некую операцию (указатель на функцию или некоторый объект-функцию). Определите класс Сау оЬуес1, содержащий список операций Орег н указателей поИ*, Введите в Сау оЬуес1 функцию агУгУ орег (Орег), добавляющую в список операцию Орег, гетопе орег (Уг9, удаляющую из списка операцию, идентифицируемую строкой И; и орега1ог () (УЫ, агй), вызывающий операцию Орег по ее идентификатору И.

Рсализу11те стек объектов Сау при помощи Са1 оЬУес1. Напишите маленькую программку, чтобы проверить эти классы. (*3) Определите шаблон ОЬуесу на основе класса Са1 обуес1. Воспользуйтесь ОЬуес1 для реализации стека строк 51г?пд. Напишите маленькую программку, чтобы проверить этот шаблон. (" 2.5) Определите вариант класса ОЬуес1, называемый СУазз, который гарантировал бы, что ооьекты с одинаковыми операпиямн имеют один и тот же список операций. Напишите маленькую программку, чтобы проверить этот шаблон. ('2) Определите шаблон 81асй, которьпй бы предоставлял удобный н безопасный с точки зрения типов интерфейс к стеку, реализованному шаблоном Обуесу. Сравните этот стек со стековыми классами из предыдущих упражнений.

Напишите маленькую программку, чтобы проверить этот шаблон. ('3) Напишите класс для представления операций, которые должны передаваться на выполнение другому компьютеру. Проверьте его либо путем действительной пересылки команд другой машине, либо предварительной записью команд в файл с их последующим чтением и выполнением, ("2) Напишите класс для составления операций, представленных в виде объектов-функций. При наличии двух объектов-функций У н д'Сотроее (у, д) должен произвести объект, который можно вызвать с аргументом х. допустимым для я; и возвращаюгций у (д (х)), если возвращаемое функцией д () значение является РИЛОЖЕНИЯ „ И ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ В приложениях описана грамматика С++, обсуждается совместимость между С++ и С, между стандартом С++ и предыдущими версиями С++, разного рода технические подробности языка, особенности локализации, а также вопросы безопасности при генерации исключений.

Характеристики

Тип файла
DJVU-файл
Размер
10,02 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6367
Авторов
на СтудИзбе
309
Средний доход
с одного платного файла
Обучение Подробнее