Главная » Статьи для тега "только"

Применение методов для управления доступом

Добавлено Дата: 27 May, 2011 категория: Java

Вариант класса Body, предусматривающий использование различных конструкторов, значительно легче применять, нежели простую версию класса, в которой содержатся только поля данных, поскольку, в частности, мы всегда уверены в том, что поле idNum получит верное значение без дополнительных воздействий извне. Но программисту, который собирается воспользоваться нашим классом, трудно уберечься от искушения обратиться к полям построенного объекта напрямую, поскольку то же поле idNum объявлено нами как publiс, Т.е. полностью открыто для доступа извне. Исходя из семантики класса Body содержимое переменной idNum позволяется только "читать". Данные объекта, доступные исключительно для чтения, – это достаточно типичная структура хранения информации, но в языке нет специального служебного слова, которым можно было бы пометить поле, предоставляющее ограниченный доступ "снаружи" и полный – "изнутри" (ведь должен же сам класс как-то управлять собственными данными!).

Читать »

Операция XOR и простейшее шифрование файлов

Добавлено Дата: 27 May, 2011 категория: Delphi

Согласно определению, двухместная однобитовая операция "исключающее ИЛИ" выполняет действия, показанные в табл. 19.1.

Таблица 19.1. Исключающее ИЛИ(ХОЯ)

Читать »

О программах реального времени

Добавлено Дата: 26 May, 2011 категория: Delphi

Любой асинхронный обмен в одну сторону — когда с устройства поступает некий непрерывный поток данных — требует от принимающей стороны реализации режима реального времени. В этом режиме основная задача— "не потерять ни капли жира с этого драгоценного гуся" (" Три мушкетера"), т. е. пи одного байта данных. Данные передаются обычно кадрами, отдельные байты в которых часто связаны между собой (например, они образуют многобайтовые числа), и ошибка в приеме такого кадра может дорого обойтись. Windows принципиально не может обеспечить режим реального времени, если это касается длительностей порядка миллисекунд и даже десятков миллисекунд— в этом случае, например, если вы параллельно со своей программой запустили что-то ресурсоемкое (хотя бы просто инициализировали запуск другой достаточно громоздкой программы), то ваша программа будет заторможена, и вы можете что-то потерять. Конечно, на практике все эти соображения могут относиться в основном к случаю сравнительно медленных компьютеров, но тут дело не в самой по себе скорости работы. Максимальное время переключения между потоками в семействе NT составляет порядка миллисекунд даже на быстрых компьютерах и линейно растет с увеличением числа потоков (сравните— за 1 мс можно передать/принять целый байт со скоростью всего 9600 бод). Среднее время может быть намного меньше, но в общем случае гарантий не может дать никто. Разумеется, мы можем из-за этого потерять байт-другой и при передаче запрос/ответ, но вероятность этого существенно меньше, т. к. нам не надо следить за системой непрерывно. Обычное значение кванта времени, выделяемое конкретному потоку, составляет не менее нескольких десятков миллисекунд, и за это время буфер обычного размера (см. далее) мы гарантированно успеваем очистить, а вот в случае непрерывного поступления данных это может оказаться не так.

Читать »

Поля классов и локальные переменные Java

Добавлено Дата: 26 May, 2011 категория: Java

Поля классов (fields) и локальные переменные (local variables) объявляются согласно одним и тем же правилам. Объявление в общем случае состоит из трех частей: перечня модификаторов, наименования типа и списка идентификаторов. Каждому идентификатору может быть поставлено в соответствие необязательное выражение инициализации.

Читать »

Приемы простейшего шифрования и стеганографии

Добавлено Дата: 25 May, 2011 категория: Delphi

В заголовок главы вынесено слово "любительская" сразу по двум причинам. Во-первых, потому что профессиональная криптография — специальная дисциплина с использованием самых абстрактных разделов аысшей математики и одновременно искусство, которое требует серьезной практической подготовки. Все эти детские забавы с решеткой Кардано1 в настоящее время преодолеваются одним щелчком мыши. Обычно, когда я слышу призывы "доверять только специалистам", я отношусь к этому с изрядной долей скепсиса — в подавляющем большинстве жизненных ситуаций "специалиста" вполне заменяет здравый смысл, небольшая эрудиция и руки, растущие из нужного места. Но серьезная криптография — одно из немногих исключений из этог о правила. Если вам действительно нужно что-то засекретить— не жалейте денег и приглашайте лучших специалистов, не пользуйтесь услугами малоизвестных "контор" и патентованными "ширпотребовскими" решениями. Пример того, какие "ляпы" могут таиться в широко разрекламированных общедоступных криптографических технологиях, приведен далее.

Читать »

Операторы присваивания Java

Добавлено Дата: 25 May, 2011 категория: Java

Оператор присваивания, =, сохраняет значение выражения правой части в левостороннем операнде, который представляет собой идентификатор переменной или элемента массива. Тип выражения обязан быть совместим с типом переменной в левой части оператора – с учетом возможности явного преобразования. Для ссылочных типов совместимость присваивания означает, что выражение должно относиться к тому же типу, что и переменная, либо к производному типу. Что касается простых типов, все числовые типы взаимно совместимы (с некоторыми ограничениями), а переменным типа boolean могут быть присвоены только значения типа boolean.

Читать »

Класс File в Java

Добавлено Дата: 25 May, 2011 категория: Java

 

   Класс File (не путать с потоками File— см. раздел 15.6.1) реализует ряд полезных средств, позволяющих манипулировать именами файлов, например разделять имена на компоненты или запрашивать дополнительную информацию о файле с заданным именем.

Читать »

Инструкции synchronized Java

Добавлено Дата: 24 May, 2011 категория: Java

Инструкции synchronized позволяют выполнять синхронизированный код, который способен блокировать произвольный объект, а не только текущий, либо уменьшить длительность блокировки, распространяя ее влияние только на часть метода. Инструкция synchronized состоит из двух частей – ссылки на объект, блокировка которого запрашивается, и фрагмента кода, выполняемого после З:1хвата блокировки. Общая синтаксическая форма synchronized -инструкции вы-

Читать »

Единичное и множественное наследование Java

Добавлено Дата: 24 May, 2011 категория: Java

 

Новый производный класс может быть построен на основе только одного базового класса – подобную модель в программировании обозначают термином единичное наследование (single inheritance). Предполагается, что Производный класс наследует не только контракт базового класса, но и элементы его реализации. В некоторых объектно-ориентированных языках программирования поддерживается модель множественного наследования (multiple inheritance), в соответствии с которой производный класс способен единовременно наследовать характеристики нескольких базовых классов.

Читать »

Правила именования пакетов

Добавлено Дата: 24 May, 2011 категория: Java

 

   Имя должно присваиваться пакету, прежде всего, таким образом, чтобы воспрепятствовать возникновению конфликтов с другими пакетами. Выбор имени, одновременно осмысленного и уникального, — это важный аспект проектного решения. Но созданием пакетов занимаются программисты, проживающие во всех уголках земного шара, поэтому определить, кто и зачем использует то или иное имя пакета, не представляется возможным. Таким образом, обеспечение уникальности имени — это отдельная проблема. Если вы убеждены, что разрабатываемый пакет найдет применение только внутри вашей организации, вы можете использовать любые имена по своему усмотрению, и вся ответственность за их уникальность будет возложена на вас или некое лицо, способное гарантировать непротиворечивость имен любых двух пакетов, применяемых вашей рабочей группой.

Читать »

Реализация вложенных типов

Добавлено Дата: 23 May, 2011 категория: Java

 

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

Читать »

Диаграммы классов: дополнительные понятия UML

Добавлено Дата: 23 May, 2011 категория: UML

Описанные ранее в главе 4 понятия соответствуют основной нотации диаграмм классов. Именно эти понятия нужно постичь и освоить прежде всего, поскольку они на 90% удовлетворят ваши потребности при построении диаграмм классов.

Однако диаграммы классов могут содержать множество обозначений для представления различных дополнительных понятий. Я сам обращаюсь к ним не слишком часто, но в отдельных случаях они оказываются весьма удобными. Рассмотрим последовательно эти дополнительные понятия, обращая внимание на особенности их применения.

Читать »

Доработка программы Trace пример поисковой программы

Добавлено Дата: 21 May, 2011 категория: Delphi

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

Читать »

continue Java

Добавлено Дата: 21 May, 2011 категория: Java

Команда continue применяется только в контексте циклических конструкций foг, whilе и do и передает управление в конец тела цикла. В ситуациях с whilе и do это приводит к выполнению проверки условия цикла, а при использовании в теле for Инструкция continue провоцирует передачу управления секции изменения значений переменных цикла.

Читать »

Потоки Pushback в Java

Добавлено Дата: 20 May, 2011 категория: Java

 

   Классы Pushback, поддерживающие обратный буфер (pushback buffer), наделены способностью возвращать (unread) считанные символы или байты назад в поток,    если    процесс   чтения    "зашел"    слишком    далеко.    Средства   классов Pushback обычно  находят  применение  при необходимости  разбиения  потока ввода (чтения) на отдельные лексемы. Например, программы лексического анализа часто обнаруживают конец очередной лексемы (скажем, идентификатора; только после ввода первого символа следующей лексемы. "Увидев" этот символ, анализатор обязан возвратить его в поток ввода, чтобы затем тот был корректн обработан при считывании следующей лексемы.  Рассмотрим пример,  которы демонстрирует  использование   объекта   PushbacklnputStream  для   поиска  во входном байтовом потоке самой длинной непрерывной последовательности од наковых байтов:

Читать »