Отправить другу/подруге по почте ссылку на эту страницуВариант этой страницы для печатиНапишите нам!Карта сайта!Помощь. Как совершить покупку…
московское время08.10.24 02:32:07
На обложку
Математическая логика в программировании: Сборник статей…авторы — Захарьящев М. В., Янов Ю. И., ред.
Искусство западноевропейского средневековьяавторы — Сопоцинский О. И.
Шампавер: Безнравственные рассказыавторы — Борель П.
б у к и н и с т и ч е с к и й   с а й т
Новинки«Лучшие»Доставка и ОплатаМой КнигоПроводО сайте
Книжная Труба   поиск по словам из названия
В ВЕСЕННЕ-ЛЕТНЕ-ОСЕННЕЕ ВРЕМЯ ВОЗМОЖНЫ И НЕМИНУЕМЫ ЗАДЕРЖКИ ПРИ ОБРАБОТКЕ ЗАКАЗОВ
Авторский каталог
Каталог издательств
Каталог серий
Моя Корзина
Только цены
Рыбалка
Наука и Техника
Математика
Физика
Радиоэлектроника. Электротехника
Инженерное дело
Химия
Геология
Экология
Биология
Зоология
Ботаника
Медицина
Промышленность
Металлургия
Горное дело
Сельское хозяйство
Транспорт
Архитектура. Строительство
Военная мысль
История
Персоны
Археология
Археография
Восток
Политика
Геополитика
Экономика
Реклама. Маркетинг
Философия
Религия
Социология
Психология. Педагогика
Законодательство. Право
Филология. Словари
Этнология
ИТ-книги
O'REILLY
Дизайнеру
Дом, семья, быт
Детям!
Здоровье
Искусство. Культурология
Синематограф
Альбомы
Литературоведение
Театр
Музыка
КнигоВедение
Литературные памятники
Современные тексты
Худ. литература
NoN Fiction
Природа
Путешествия
Эзотерика
Пурга
Спорт

/ИТ-книги

Объектно-ориентированное программирование в C++. — 4-е изд. — Лафоре Р.
Объектно-ориентированное программирование в C++. — 4-е изд.
Лафоре Р.
год издания — 2003, кол-во страниц — 928, ISBN — 5-94723-302-9, тираж — 4000, язык — русский, тип обложки — твёрд. 7БЦ матов. вставка УФ-лак, масса книги — 1200 гр., издательство — Питер
серия — Классика computer science
цена: 1100.00 рубПоложить эту книгу в корзину
Сохранность книги — хорошая

Object-Oriented Programming in C++
Fourth Edition
Robert Lafore

Sams Publishing, 2002

Пер. с англ. А. Кузнецов, М. Назаров, В. Шрага

Формат 70x100 1/16
ключевые слова — c++, stl, uml, ооп, объектно-ориентирован, наследован, перегрузк

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

Читатель может вообще не иметь представления о C++. Необходимо лишь знание начальных основ программирования.


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

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

ОГЛАВЛЕНИЕ

Предисловие24
 
Введение25
 
Новые концепции программирования25
Объектно-ориентированное программирование25
Унифицированный язык моделирования26
Языки и платформы разработки26
Для чего нужна эта книга27
Новые концепции27
Последовательность изложения материала27
Знания, необходимые для чтения этой книги28
Техническое и программное обеспечение28
Консольные программы28
Исходные тексты программ28
Упражнения29
Проще, чем кажется29
Преподавателям29
Стандартный C++29
Унифицированный язык моделирования (UML)29
Средства разработки программного обеспечения30
Различия между С и C++30
Оптимальный порядок изучения ООП30
Нововведения в C++31
Избыточные возможности31
Упражнения31
От издательства31
 
Глава 1. Общие сведения32
 
Для чего нужно объектно-ориентированное программирование?32
Процедурные языки32
Деление на функции33
Недостатки структурного программирования33
Неконтролируемый доступ к данным34
Моделирование реального мира35
Объектно-ориентированный подход36
Аналогия37
ООП: подход к организации программы38
Характеристики объектно-ориентированных языков38
Объекты38
Классы39
Наследование40
Повторное использование кода42
Пользовательские типы данных42
Полиморфизм и перегрузка42
C++ и С43
Изучение основ44
Универсальный язык моделирования (UML)44
Резюме45
Вопросы46
 
Глава 2. Основы программирования на C++48
 
Что необходимо для работы49
Структура программы49
Функции49
Операторы51
Разделяющие знаки51
Вывод с использованием cout52
Строковые константы53
Директивы53
Директивы препроцессора54
Заголовочные файлы54
Директива using55
Комментарии55
Синтаксис комментариев55
Использование комментариев56
Альтернативный вид комментариев56
Переменные целого типа56
Описание переменных целого типа57
Объявление и определение переменной58
Имена переменных59
Операция присваивания59
Целые константы59
Оператор вывода60
Манипулятор endl60
Другие целые типы61
Символьные переменные61
Символьные константы62
Инициализация63
Управляющие последовательности63
Ввод с помощью cin64
Определение переменных при первом использовании65
Каскадирование операции <<66
Выражения66
Приоритеты выполнения операций66
Вещественные типы67
Тип float67
Типы double и long double68
Вещественные константы68
Префикс const69
Директива #define70
Тип bool70
Манипулятор setw71
Каскадирование операции <<72
Множественное определение72
Файл заголовка IOMANIP73
Таблица типов переменных73
Беззнаковые типы данных73
Преобразования типов75
Неявные преобразования типов75
Явные преобразования типов77
Арифметические операции78
Остаток от деления79
Арифметические операции с присваиванием79
Инкремент81
Декремент82
Библиотечные функции82
Заголовочные файлы83
Библиотечные файлы84
Заголовочные и библиотечные файлы84
Формы директивы #include84
Резюме85
Вопросы87
Упражнения88
 
Глава 3. Циклы и ветвления92
 
Операции отношения92
Циклы94
Цикл for94
Инициализирующее выражение96
Условие выполнения цикла96
Инкрементирующее выражение96
Число выполнений цикла97
Несколько операторов в теле цикла97
Блоки и область видимости переменных98
Форматирование и стиль оформления циклов99
Обнаружение ошибок100
Варианты цикла for100
Определение счётчика цикла внутри оператора цикла for101
Несколько инициализирующих выражений и условий цикла101
Цикл while102
Несколько операторов в цикле while104
Приоритеты арифметических операций и операций отношения105
Цикл do106
Выбор типа цикла108
Ветвления108
Условный оператор if109
Несколько операторов в теле if110
if внутри циклов110
Функция exit()111
Оператор if…else112
Функция getche()113
Условия с присваиванием114
Вложенные ветвления if…else116
if и else во вложенных ветвлениях117
Конструкция else…if119
Оператор switch119
Оператор break121
switch и символьные переменные122
Ключевое слово default123
Сравнение switch и if…else124
Условная операция124
Логические операции127
Операция логического И127
Логическое ИЛИ128
Логическое НЕ129
Целые величины в качестве булевых129
Приоритеты операций C++130
Другие операторы перехода131
Оператор break131
Расширенная таблица символов ASCII133
Оператор continue133
Оператор goto134
Резюме135
Вопросы136
Упражнения138
 
Глава 4. Структуры142
 
Структуры142
Простая структура143
Определение структуры143
Определение структурной переменной144
Доступ к полям структуры146
Другие возможности структур146
Пример применения структур148
Вложенные структуры150
Пример карточной игры154
Структуры и классы156
Перечисления156
Дни недели157
Перечисления и программа подсчёта числа слов159
Пример карточной игры161
Недостаток перечислений162
Примеры перечисляемых типов163
Резюме163
Вопросы164
Упражнения165
 
Глава 5. Функции168
 
Простые функции169
Объявление функции170
Вызов функции171
Определение функции171
Обычные и библиотечные функции172
Отсутствие объявления173
Передача аргументов в функцию174
Передача констант в функцию174
Передача значений переменных в функцию175
Передача аргументов по значению176
Структурные переменные в качестве аргументов177
Имена переменных внутри прототипа функции181
Значение, возвращаемое функцией181
Оператор return182
Исключение ненужных переменных184
Структурная переменная в качестве возвращаемого значения185
Ссылки на аргументы186
Передача по ссылке аргументов стандартных типов187
Усложнённый вариант передачи по ссылке189
Передача структурных переменных по ссылке191
Замечание о ссылках192
Перегруженные функции192
Переменное число аргументов функции193
Различные типы аргументов195
Рекурсия196
Встраиваемые функции198
Аргументы по умолчанию200
Область видимости и класс памяти202
Локальные переменные203
Глобальные переменные205
Статические локальные переменные207
Возвращение значения по ссылке208
Вызов функции в качестве левого операнда операции присваивания209
Зачем нужно возвращение по ссылке?210
Константные аргументы функции210
Резюме212
Вопросы213
Упражнения215
 
Глава 6. Объекты и классы217
 
Простой класс217
Классы и объекты218
Определение класса219
Использование класса222
Вызов методов класса222
Объекты программы и объекты реального мира224
Детали изделия в качестве объектов224
Круги в качестве объектов225
Класс как тип данных226
Конструкторы227
Пример со счётчиком228
Графический пример231
Объекты в качестве аргументов функций232
Объекты в качестве аргументов236
Конструктор копирования по умолчанию237
Объекты, возвращаемые функцией239
Аргументы и объекты240
Пример карточной игры242
Структуры и классы244
Классы, объекты и память245
Статические данные класса247
Применение статических полей класса247
Пример использования статических полей класса247
Раздельное объявление и определение полей класса248
const и классы249
Константные методы250
Константные объекты252
Зачем нужны классы?253
Резюме254
Вопросы255
Упражнения257
 
Глава 7. Массивы и строки261
 
Основы массивов262
Определение массивов263
Элементы массива263
Доступ к элементам массива263
Среднее арифметическое элементов массива264
Инициализация массива265
Многомерные массивы267
Передача массивов в функции271
Массивы структур273
Массивы как члены классов275
Массивы объектов278
Массивы интервалов278
Границы массива280
Доступ к объектам в массиве280
Массивы карт281
Строки284
Строковые переменные285
Считывание нескольких строк288
Копирование строк289
Копирование строк более простым способом290
Массивы строк291
Строки как члены классов292
Определённые пользователем типы строк294
Стандартный класс string языка C++296
Определение объектов класса string и присваивание им значений296
Ввод/вывод для объектов класса string298
Поиск объектов класса string299
Модификация объектов класса string300
Сравнение объектов класса string301
Доступ к символам в объектах класса string302
Другие методы класса string303
Резюме304
Вопросы304
Упражнения307
 
Глава 8. Перегрузка операций312
 
Перегрузка унарных операций313
Ключевое слово operator314
Аргументы операции315
Значения, возвращаемые операцией315
Временные безымянные объекты317
Постфиксные операции318
Перегрузка бинарных операций320
Арифметические операции320
Объединение строк323
Множественная перегрузка325
Операции сравнения325
Операции арифметического присваивания328
Операция индексации массива ([])330
Преобразование типов334
Преобразования основных типов в основные типы335
Преобразования объектов в основные типы и наоборот336
Преобразования строк в объекты класса string и наоборот338
Преобразования объектов классов в объекты других классов340
Преобразования: когда что использовать346
Диаграммы классов UML346
Объединения347
Направленность347
«Подводные камни» перегрузки операций и преобразования типов348
Использование похожих значений348
Использование похожего синтаксиса348
Показывайте ограничение349
Избегайте неопределённости349
Не все операции могут быть перегружены349
Ключевые слова explicit и mutable349
Предотвращение преобразования типов с помощью explicit350
Изменение данных объекта, объявленных как const,
    используя ключевое слово mutable351
Резюме353
Вопросы353
Упражнения356
 
Глава 9. Наследование361
 
Базовый и производный классы362
Определение производного класса364
Обобщение в диаграммах классов в UML364
Доступ к базовому классу365
Результат программы COUNTEN366
Спецификатор доступа protected366
Недостатки использования спецификатора protected368
Неизменность базового класса368
Разнообразие терминов368
Конструкторы производного класса368
Перегрузка функций370
Какой из методов использовать?372
Операция разрешения и перегрузка функций372
Наследование в классе Distance373
Применение программы ENGLEN374
Конструкторы класса DistSign375
Методы класса DistSign375
В поддержку наследования375
Иерархия классов376
Абстрактный базовый класс379
Конструкторы и функции380
Наследование и графика380
Общее и частное наследование383
Комбинации доступа383
Выбор спецификатора доступа384
Уровни наследования385
Множественное наследование388
Методы классов и множественное наследование389
Частное наследование в программе EMPMULT393
Конструкторы при множественном наследовании393
Конструкторы без аргументов396
Конструктор со многими аргументами396
Неопределённость при множественном наследовании397
Включение: классы в классах398
Включение в программе EMPCONT399
Композиция: сложное включение403
Роль наследования при разработке программ403
Резюме404
Вопросы405
Упражнения407
 
Глава 10. Указатели411
 
Адреса и указатели412
Операция получения адреса &412
Переменные указатели414
Недостатки синтаксиса416
Указатели должны иметь значение416
Доступ к переменной по указателю417
Указатель на void420
Указатели и массивы421
Указатели-константы и указатели-переменные423
Указатели и функции424
Передача простой переменной424
Передача массивов426
Сортировка элементов массива428
Расстановка с использованием указателей428
Сортировка методом пузырька430
Указатели на строки432
Указатели на строковые константы432
Строки как аргументы функций433
Копирование строк с использованием указателей434
Библиотека строковых функций434
Модификатор const и указатели435
Массивы указателей на строки436
Управление памятью: операции new и delete437
Операция new438
Операция delete439
Класс String с использованием операции new440
Указатели на объекты442
Ссылки на члены класса443
Другое применение операции new444
Массив указателей на объекты445
Действия программы446
Доступ к методам класса446
Связный список447
Цепочка указателей447
Добавление новых элементов в список449
Получение содержимого списка450
Классы, содержащие сами себя450
Пополнение примера LINKLIST451
Указатели на указатели451
Сортируем указатели453
Тип данных person**454
Сравнение строк454
Пример разбора строки455
Разбор арифметических выражений456
Программа PARSE457
Симулятор: лошадиные скачки459
Разработка лошадиных скачек460
Моделирование хода времени463
Уничтожение массива указателей на объекты463
Функция putch()464
Диаграммы UML464
Диаграмма состояний в UML465
Состояния466
Переходы466
От состояния к состоянию466
Отладка указателей467
Резюме467
Вопросы469
Упражнения471
 
Глава 11. Виртуальные функции476
 
Виртуальные функции476
Доступ к обычным методам через указатели477
Доступ к виртуальным методам через указатели479
Позднее связывание481
Абстрактные классы и чистые виртуальные функции481
Виртуальные функции и класс person483
Виртуальные функции в графическом примере485
Виртуальные деструкторы488
Виртуальные базовые классы489
Дружественные функции491
Дружественные функции как мосты между классами491
Ломая стены492
Пример с английскими мерами длины493
Дружественность и функциональная запись496
Дружественные классы499
Статические функции500
Доступ к статическим функциям501
Инициализация копирования и присваивания502
Перегрузка оператора присваивания503
Конструктор копирования506
Объектные диаграммы UML510
Эффективное использование памяти классом String510
Указатель this516
Доступ к компонентным данным через указатель this517
Использование this для возврата значений518
Исправленная программа STRIMEM520
Динамическая информация о типах523
Проверка типа класса с помощью dynamic_cast523
Изменение типов указателей с помощью dynamic_cast524
Оператор typeid526
Резюме527
Вопросы528
Упражнения531
 
Глава 12. Потоки и файлы536
 
Потоковые классы536
Преимущества потоков537
Иерархия потоковых классов537
Класс ios539
Класс istream542
Класс ostream543
Классы iostream и _withassign544
Предопределённые потоковые объекты544
Ошибки потоков545
Биты статуса ошибки545
Ввод чисел546
Переизбыток символов547
Ввод при отсутствии данных547
Ввод строк и символов548
Отладка примера с английскими расстояниями548
Потоковый ввод/вывод дисковых файлов551
Форматированный файловый ввод/вывод551
Строки с пробелами554
Ввод/вывод символов555
Двоичный ввод/вывод557
Оператор reinterpret_cast558
Закрытие файлов558
Объектный ввод/вывод559
Совместимость структур данных560
Ввод/вывод множества объектов561
Биты режимов563
Указатели файлов564
Вычисление позиции564
Вычисление сдвига565
Функция tellg()567
Обработка ошибок файлового ввода/вывода567
Реагирование на ошибки567
Анализ ошибок568
Файловый ввод/выводе помощью методов570
Как объекты записывают и читают сами себя570
Как классы записывают и читают сами себя572
Код типа объекта578
Перегрузка операторов извлечения и вставки581
Перегрузка cout и cin581
Перегрузка << и >> для файлов583
Память как поток585
Аргументы командной строки586
Вывод на печатающее устройство589
Резюме590
Вопросы591
Упражнения592
 
Глава 13. Многофайловые программы596
 
Причины использования многофайловых программ596
Библиотеки классов597
Организация и концептуализация598
Создание многофайловой программы598
Заголовочные файлы599
Директории599
Проекты600
Межфайловое взаимодействие600
Взаимодействие исходных файлов600
Заголовочные файлы605
Пространства имён609
Класс сверхбольших чисел613
Числа как строки613
Описатель класса614
Методы615
Прикладная программа617
Моделирование высотного лифта619
Работа программы ELEV620
Проектирование системы621
Листинг программы ELEV623
Диаграмма состояний для программы ELEV634
Резюме635
Вопросы636
Проекты638
 
Глава 14. Шаблоны и исключения640
 
Шаблоны функций640
Шаблон простой функции642
Шаблоны функций с несколькими аргументами644
Шаблоны классов647
Контекстозависимое имя класса651
Создание класса связных списков с помощью шаблонов653
Хранение пользовательских типов655
UML и шаблоны658
Исключения659
Для чего нужны исключения660
Синтаксис исключений661
Простой пример исключения662
Многократные исключения666
Исключения и класс Distance668
Исключения с аргументами670
Класс bad_alloc673
Размышления об исключениях674
Резюме675
Вопросы676
Упражнения678
 
Глава 15. Стандартная библиотека шаблонов (STL)681
 
Введение в STL682
Контейнеры682
Алгоритмы687
Итераторы688
Возможные проблемы с STL689
Алгоритмы690
Алгоритм find()690
Алгоритм count()691
Алгоритм sort()692
Алгоритм searchQ692
Алгоритм merge()693
функциональные объекты694
Пользовательские функции вместо функциональных объектов695
Добавление _if к аргументам696
Алгоритм for_each()697
Алгоритм transform()697
Последовательные контейнеры698
Векторы699
Списки702
Итераторы706
Итераторы как интеллектуальные указатели706
Итераторы в качестве интерфейса708
Соответствие алгоритмов контейнерам710
Работа с итераторами713
Специализированные итераторы717
Адаптеры итераторов717
Потоковые итераторы720
Ассоциативные контейнеры724
Множества и мультимножества725
Отображения и мультиотображения729
Ассоциативный массив730
Хранение пользовательских объектов731
Множество объектов person732
Список объектов класса person735
Функциональные объекты738
Предопределённые функциональные объекты739
Создание собственных функциональных объектов741
Функциональные объекты и поведение контейнеров746
Резюме746
Вопросы747
Упражнения749
 
Глава 16. Разработка объектно-ориентированного ПО752
 
Эволюция процесса создания программного обеспечения752
Процесс просиживания штанов753
Каскадный процесс753
Объектно-ориентированное программирование753
Современные подходы754
Моделирование вариантов использования755
Действующие субъекты755
Варианты использования756
Сценарии756
Диаграммы вариантов использования757
Описания вариантов использования758
От вариантов использования к классам758
Предметная область программирования759
Рукописные формы760
Допущения762
Программа LANDLORD: стадия развития762
Действующие субъекты762
Варианты использования762
Описание вариантов использования763
Сценарии765
Диаграммы действий UML765
От вариантов использования к классам766
Список существительных766
Уточнение списка767
Определение атрибутов768
От глаголов к сообщениям768
Диаграмма классов770
Диаграммы последовательностей770
Написание кода774
Заголовочный файл775
Исходные .срр файлы780
Вынужденные упрощения789
Взаимодействие с программой789
Заключение791
Резюме791
Вопросы792
Проекты794
 
Приложение А. Таблица ASCII796
 
Приложение Б. Таблица приоритетов операций C++803
 
Таблица приоритетов операций803
Зарезервированные слова803
 
Приложение В. Microsoft Visual C++806
 
Элементы экрана806
Однофайловые программы807
Компоновка существующего файла807
Создание нового файла808
Ошибки808
Информация о типах в процессе исполнения (RTTI)808
Многофайловые программы809
Проекты и рабочие области809
Работа над проектом809
Сохранение, закрытие и открытие проектов810
Компиляция и компоновка811
Программы с консольной графикой811
Отладка программ811
Пошаговая трассировка812
Просмотр переменных812
Пошаговая трассировка функций812
Точки останова813
 
Приложение Г. Borland C++ Builder814
 
Запуск примеров в C++Builder815
Очистка экрана815
Создание нового проекта815
Задание имени и сохранение проекта817
Работа с существующими файлами817
Компиляция, связывание и запуск программ818
Запуск программы в C++Builder818
Запуск программы в MS DOS818
Предварительно скомпилированные заголовочные файлы818
Закрытие и открытие проектов818
Добавление заголовочного файла к проекту819
Создание нового заголовочного файла819
Редактирование заголовочного файла819
Определение местонахождения заголовочного файла819
Проекты с несколькими исходными файлами820
Создание дополнительных исходных файлов820
Добавление существующих исходных файлов820
Менеджер проектов821
Программы с консольной графикой821
Отладка822
Пошаговый прогон822
Просмотр переменных822
Пошаговая трассировка функций822
Точки останова823
 
Приложение Д. Упрощенный вариант консольной графики824
 
Использование подпрограмм библиотеки консольной графики825
Функции библиотеки консольной графики825
Реализация функций консольной графики827
Компиляторы Microsoft827
Компиляторы Borland828
Листинги исходных кодов828
 
Приложение Е. Алгоритмы и методы STL836
 
Алгоритмы836
Методы843
Итераторы845
 
Приложение Ж. Ответы и решения847
 
Глава 1847
Глава 2847
Глава 3849
Глава 4853
Глава 5855
Глава 6859
Глава 7862
Глава 8866
Глава 9871
Глава 10876
Глава 11881
Глава 12886
Глава 13889
Глава 14890
Глава 15894
Глава 16898
 
Приложение 3. Библиография899
 
Углублённое изучение C++899
Основополагающие документы900
UML900
История C++901
И другое901
 
Алфавитный указатель902

Книги на ту же тему

  1. Стандарты программирования на C++: 101 правило и рекомендации, Саттер Г., Александреску А., 2015
  2. Современное проектирование на C++: Обобщённое программирование и прикладные шаблоны проектирования, Александреску А., 2015
  3. Моя первая программа на C/C++, Нейбауэр А. Р., 1995
  4. Справочник программиста по C/C++. — 2-е изд., Шилдт Г., 2001
  5. Основы программирования на языках C и C++, Ашарина И. В., 2002
  6. Начальный курс C и C++, Березин Б. И., Березин С. Б., 2001
  7. Язык программирования C. Лекции и упражнения. — 6-е изд., Прата С., 2015
  8. Символьный C++: Введение в компьютерную алгебру с использованием объектно-ориентированного программирования, Тан К. Ш., Стиб В.-Х., Харди Й., 2001
  9. UNIX. Профессиональное программирование. — 2-е изд., Стивенс Р., Раго С., 2007
  10. Объектно-ориентированный анализ и проектирование с использованием UML и IBM Rational Rose, Леоненков А. В., 2006

Напишите нам!© 1913—2013
КнигоПровод.Ru
Рейтинг@Mail.ru работаем на движке KINETIX :)
elapsed time 0.025 secработаем на движке KINETIX :)