Лекция №2.
Преимущества использования XML.
Xml позволяет компоновать документ из отдельных независимых элементов.
Использование XML даёт возможность передавать по сети не весь ресурс, а лишь ту его часть, которая требуется пользователю.
Xml упрощает создание новых языков.
XML позволяет использовать в документе практически любые дескрипторы, и в то же время DTD налагает ограничения на их использование. Совместное применение этих средств позволяет создавать на базе XML специализированные языки. Одна из таких разработок представляет собой язык для описания результатов исследований в области химии.
Публикация материалов в сети с использованием XML позволит гораздо эффективнее осуществлять поиск информации.
Общие сведения о языке Java.
Интерпретация и компиляция.
Недостатки компиляторов.
Чтобы перенести программу на другую аппаратную платформу или в другую операционную среду, её надо повторно скомпилировать.
После запуска скомпилированной программы операционная система практически теряет контроль над ней. Операционная система получает управление лишь по инициативе выполняющейся программы в те моменты, когда необходимо выполнить системную функцию (записать данные в файл, прочитать значение таймера и т. д.). Если скомпилированная программа самостоятельно (без помощи операционной системы) обратится к ресурсам компьютера, никто не в силах ей помешать.
Недостатки интерпретаторов.
Быстродействие интерпретируемой программы крайне низкое.
Команды и данные.
Разработчики языка Java стремились к тому, чтобы создаваемый ими язык как можно больше походил на С++. Но так как С++ не обеспечивает реальной переносимости программ между различными платформами, в языке Java появились некоторые особенности, отличающие его от С++.
Типы данных.
Java является строго типизированным языком. В нём определены следующие простые типы данных.
Целочисленные данные
byte — 8 бит
short — 16 бит
int — 32 бита
long — 64 бита
Данные с плавающей точкой
float — 32 бита
double — 64 бита
Символьные данные
char — 16 бит
Логические данные
boolean — принимают два значения: true или false.
В Java такое свободное обращение с типами недопустимо, ведь средства, обеспечивающие работу Java, должны обеспечивать реальную переносимость программ. Таким образом, в Java, в отличие от некоторых версий C, типы short и int — не синонимы.
Число бит в переменных типа long увеличилось вдвое по сравнению с языком C. Кроме того, среди целочисленных типов появился тип byte. В языке C роль хранилища байтовых значений выполняли переменные типа char.
Ещё одно отличие целочисленных данных состоит в том, что в Java отсутствуют беззнаковые типы.
Символьные данные в Java и C также различаются. Основное отличие состоит в том, что в 16-битовой переменной типа char хранятся значения Unicode. Таким образом, в Java решается проблема поддержки национальных кодировок.
В Java нельзя использовать переменные int, char, long и т. д. для храпения логических значений.
Операторы.
Подавляющее большинство операторов в языках C и Java полностью совпадают, однако некоторые операторы в Java имеют специальное назначение.
Беззнаковый сдвиг.
Если в языке C результат действия оператора << строго определён, то этого нельзя сказать об операторе >>. В одних версиях языка C операция >> трактуется как беззнаковый сдвиг, в других — как сдвиг числа со знаком. В первом случае при сдвиге вправо старшие разряды заполняются нулями, во втором случае в них записывается значение знакового разряда.
В Java данная неоднозначность устранена. При выполнении оператора >> учитывается знак числа. Для обозначения беззнакового сдвига вправо введен новый оператор >>>. Он выполняет сдвиг вправо на указанное число разрядов; освободившиеся старшие разряды заполняются нулями.
byte i = -2;
i = i >>> 3;
Кроме оператора >>>, в Java определён оператор >>>=. Так, команду сдвига, приведенную в предыдущем примере, можно записать следующим образом:
i >>>= 3;
Конкатенация.
В языке Java широко используются строковые значения. Не удивительно, что для упрощения работы со строками в Java поддерживается операция конкатенации. Для обозначения данной операции используется оператор +.
Как же отличить конкатенацию от обычного сложения? Если операция + выполняется над числами, данный оператор обозначает сложение. Если же оператором + связаны два объекта String, это означает, что должна быть выполнена конкатенация строк.
Некоторые особенности логических операторов.
Оператор & выполняет побитовое логическое умножение, а оператор && — ту же операцию над логическими значениями.
Благодаря тому что в языке Java был реализован тип данных boolean, появилась возможность расширить набор логических операций. В логических выражениях может быть использован как односимвольный (&), так и двухсимвольный оператор умножения (&&). Оператор & реализует вычисления по полной схеме, а && — по сокращённой схеме. Рассмотрим простой пример.
if ((a != 0) && (b++ < 10))
{
…
}
Очевидно, что, если a равно 0 и всё выражение равно false, вычислять второе логическое значение не имеет смысла. Однако в этом случае инкрементирование переменной b не будет выполнено. В языке C работа программ, включающих подобные выражения, зависела от реализации компилятора. В Java появилась возможность исключить неоднозначность.
Оператор && указывает на то, что вычисление значения логического выражения может производиться по сокращённой схеме. В нашем примере это означает, что если переменная a равна 0, то второе выражение вычисляться не будет.
При использовании оператора & вычисления выполняются по полной схеме.
В этом случае выражение, находящееся справа от оператора &, вычисляется независимо от значения переменной a.
Очевидно, что все вышесказанное справедливо не только для &, но и для | и других логических операторов.
Классы.
Функции, входящие в состав класса (в C++ их принято называть функциями-членами), в языке Java называются методами.
Переменные, входящие в состав класса, называют свойствами, или же более привычным термином переменные.
В языке Java дочерний класс принято называть подклассом, я родительский класс — суперклассом.
Иногда
суперклассами называют все классы,
находящиеся в иерархии выше данного
класса. Чтобы различать «предков»
различного уровня, класс, из которого
порождён данный класс, иногда называют
непосредственным
суперклассом.
Говоря о наследовании, следует упомянуть одну важную деталь, отличающую Java от C: в языке Java для каждого класса существует лишь один непосредственный суперкласс. Если при определении класса суперкласс не указан, считается, что данный класс является подклассом класса Object. Таким образом, класс Object является суперклассом для всех классов, используемых в любой Java-программе.
Объявление класса.
Основная часть исходного кода программы на Java представляет собой объявление класса. В теле класса определяются переменные и методы, обеспечивающие работу программы. Формат выражения, используемого для объявления класса, приведен ниже.
[модификаторы] class имя_класса [extends имя_суперкласса] [implements имя_интерфейса]
{
тело_класса
}
Рассмотрим подробнее составные части данного выражения.
Единственные компоненты, которые обязательно должны присутствовать в объявлении класса, — это ключевое слово class и имя класса. По соглашениям Java, имя класса должно начинаться с прописной буквы. Со строчных букв начинаются имена методов и переменных.
Ключевому слову class может предшествовать один или несколько модификаторов. Допустимые значения модификаторов перечислены ниже
abstract — определяет абстрактный класс, т. е. класс, экземпляр которого не может быть создан. Чтобы обеспечить доступ к переменным и методам, содержащимся в таком классе, надо объявить его подкласс, определить недостающие методы и создать экземпляр подкласса.
final — указывает на то, что подкласс объявляемого класса не может быть создан. Разрабатывая свои первые программы на языке Java, вы вряд ли будете использовать данный модификатор, однако знать о его существовании необходимо. Очевидно, что в объявлении класса не могут одновременно присутствовать модификаторы abstract и final.
public — сообщает, что объявляемый класс должен быть доступен за пределами текущего пакета. Следует заметить, что в Java действует следующее правило: имя файла, содержащего public-класс, должно совпадать с именем этого класса. Другими словами, выражение public class MyApplet может присутствовать лишь в файле с именем MyApplet.java.
За именем класса может следовать ключевое слово extends, сопровождаемое именем суперкласса, из которого порождается объявляемый класс. Если ключевое слово extends и имя суперкласса отсутствуют, это означает, что суперклассом объявляемого класса является класс Object.
И, наконец, последний компонент объявления класса — ключевое слово implements за которым следует имя интерфейса.