Программирование >>  Дополнительные возможности наследования 

1 ... 252 253 254 [ 255 ] 256 257 258 ... 265


12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

cout Usage: argv[0] <infile>\n ; returnd);

открываем поток ввода

ifstream fin (argv[1],ios::binary);

if (!fin)

cout Unable to open argv[1] for reading.\n ; return(1);

char ch;

while ( fin.get(ch))

if ((ch > 32 U ch < 127) ch == Дп I I ch = Af) cout ch; fin.closeO;

5. Напишите профамму, которая выведет заданные аргументы командной строки в обратном порядке, отбросив имя профаммы.

ftinclude <fstream.h>

int maindnt argc, char..argv) возвращает 1 в случае ошибки {

for (int ctr = argc-1; ctr ; ctr--) cout argv[ctr] ; return 0; }

День 17

Койшродьные вопросы

1. Можно ли использовать идентификаторы, объявленные в пространстве имен, без применения ключевого слова using?

Да, имена, определенные в просфанстве имен, можно свободно использовать в профамме, если указывать перед ними идентификатор просфанства имен.

2. Назовите основные отличия между именованными и неименованными пространствами имен.

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



помощью идентификатора пространства имен, либо использовать оператор using или ключевое слово using в объявлении пространства имен.

Имена, определенные в обычном пространстве имен, можно использовать вне модуля трансляции, в котором объявлено данное пространство имен. Имена, определенные в неименованном пространстве имен, можно использовать только внутри того модуля трансляции, в котором объявлено данное пространство имен.

3. Что такое стандартное пространство имен std?

Данное пространство определено в стандартной библиотеке С++ (С++ Standard Library) и содержит объявления всех классов и функций стандартной библиотеки.

1. Жучки: найдите ошибку в следующем коде:

sinclude <iostream>

int mainO {

cout Hello world! end; return 0;

Стандартный файл заголовка С++ iostream объявляет объекты cout и endl в пространстве имен std. Их нельзя использовать вне стандартного пространства имен std без соответствующего идентификатора.

2. Перечислите три способа устранения ошибки, найденной в коде упражнения 1.

using namespace std;

using std;;cout; using std;;endl;

std;;cout Hello world! std;;endl;

День 18

Контрольные вопросы

1. Какая разница между объектно-ориентированным и процедурным профаммирова-нием?

Процедурное программирование опирается на функции, отделенные от обрабатываемых ими данных. Объектно-ориентированное программирование объединяет данные и функции в таком понятии, как объект, и фокусирует внимание на взаимодействии между объектами.

2. Каковы этапы объектно-ориентированного анализа и проектирования?

а) разработка концепции;

б) анализ;



в) проектирование;

г) реализация;

д) тестирование;

е) возвращение.

3. Как связанны диаграммы последовательности и сотрудничества?

Это два вида диафамм взаимодействий классов. Диафамма последовательности определяет последовательность событий за некоторое время, а диафамма софуд-ничества - принципы взаимодействия классов. Диафамму софудничества можно создать прямо из диафаммы последовательности с помощью такого средства, как Rational Rose.

Унражнвния

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

Какие объекты и какие классы пофебуются для имитации этой ситуации?

Автомобили, мотоциклы, фузовики, велосипеды, пешеходы и спецмашины - все используют этот перекресток. Кроме того, существует еще светофор, регулирующий движение по перекрестку.

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

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

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

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

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

class Entity; клиент перекрестка

базовый класс для всех автомобилей, грузовиков, велосипедов и спецмашин class Vehicle : Entity ,;



1 ... 252 253 254 [ 255 ] 256 257 258 ... 265

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика