Создание тестовых данных.........................465
Создание массивов с использованием генераторов.............470
Вспомогательный инструментарий Arrays..................474
Резюме...................................482
Глава 16. Система ввода/вывода Java...............483
Класс File..................................484
Ввод и вывод................................489
Добавление атрибутов и интерфейсов...................491
Классы Reader и Writer...........................494
RandomAccessFile: сам по себе.......................497
Типичное использование потоков ввода/вывода..............498
Средства чтения и записи файлов.....................505
Стандартный ввод/вывод..........................507
Новый ввод/вывод (nio)..........................510
Сжатие данных...............................531
Сериализация объектов..........................536
Предпочтения...............................553
Резюме...................................555
Глава 17. Параллельное выполнение...............557
Класс Thread................................559
Исполнители................................561
Совместное использование ресурсов....................578
Взаимодействие между потоками......................598
Взаимная блокировка............................602
Новые библиотечные компоненты.....................607
CountDownLatch..............................607
CyclicBarrier.................................609
DelayQueue.................................611
PriorityBlockingQueue............................614
Семафоры.................................619
Exchanger.................................623
Моделирование...............................624
Резюме...................................629
Алфавитный указатель......................631
Введение в объекты
Мы препарируем природу, преобразуем ее в концепции и приписываем им смысл так, как мы это делаем во многом, потому что все мы являемся участниками соглашения, которое имеет силу в обществе, связанном речью, и которое закреплено в структуре языка... Мы не можем общаться вовсе, кроме как согласившись с установленными этим соглашением организацией и классификацией данных.
Возникновением компьютерной революции мы обязаны машине. Поэтому наши языки программирования стараются быть ближе к этой машине.
Но в то же время компьютеры не столько механизмы, сколько средства усиления мысли («велосипеды для ума», как любит говорить Стив Джобе), и еще одно средство самовыражения. В результате инструменты программирования все меньше склоняются к машинам и все больше тяготеют к нашим умам, также как и к другим формам выражения человеческих устремлений, как-то: литература, живопись, скульптура, анимация и кинематограф. Объектно-ориентиро-ванное программирование (ООП) — часть превращения компьютера в средство самовыражения.
Эта глава познакомит вас с основами ООП, включая рассмотрение основных методов разработки программ. Она, и книга вообще, подразумевает наличие у вас опыта программирования на процедурном языке, не обязательно С. Если вам покажется, что перед прочтением этой книги вам не хватает познаний в программировании и синтаксисе С, воспользуйтесь мультимедийным семинаром
Настоящая глава содержит подготовительный и дополнительный материалы. Многие читатели предпочитают сначала представить себе общую картину, а уже потом разбираться в тонкостях ООП. Поэтому многие идеи в данной главе служат тому, чтобы дать вам цельное представление об ООП. Однако многие люди не воспринимают общей идеи до тех пор, пока не увидят конкретно, как все работает; такие люди нередко вязнут в общих словах, не имея перед собой примеров. Если вы принадлежите к последним и горите желанием приступить к основам языка, можете сразу перейти к следующей главе — пропуск этой не будет препятствием для написания программ или изучения языка. И все же чуть позже вам стоит вернуться к этой главе, чтобы расширить свой кругозор и понять, почему так важны объекты и какое место они занимают при проектировании программ.
Развитие абстракции