Операторы (1) НазваниеСинтаксисПримечание Пустой;Этот символ превращает выражения присваиваний, инкрементов и вызовов методов в операторы Условный if (

Презентация:



Advertisements
Похожие презентации
Синтаксис языка Java. Символы и синтаксис Перевод строчки эквивалентен пробелу Регистр в именах различается.
Advertisements

Типы данных Инна Исаева. Переменные Переменная - это как ящик, в котором можно хранить данные. Каждая переменная имеет своё имя, она служит для хранения.
Практическое занятие 6. Функции. Большинство языков программирования используют понятия функции и процедуры. C++ формально не поддерживает понятие процедуры,
Основы информатики Классы Заикин Олег Сергеевич zaikin.all24.org
1 Классы в Java Ключевое слово class означает: Я говорю тебе, как выглядит новый тип объекта. Класс является базовым элементом объектно-ориентированного.
1 Java 6. ИНТЕРФЕЙСЫ И ВНУТРЕННИЕ КЛАССЫ. 2 Интерфейсы Не являются классами Ни один из объявленных методов не может быть реализован внутри интерфейса.
1 © Luxoft Training 2012 Java: расширенные вопросы Модуль #8.
Обработка исключительных ситуаций Исключительная ситуация (исключение) – это ошибка, возникающая во время выполнения программы. Например, ошибка работы.
Объектно-ориентированное программирование С++. Лекция 6 Карпов В.Э.
b5_java_s4
1 Java 6. ИНТЕРФЕЙСЫ И ВНУТРЕННИЕ КЛАССЫ. 2 Интерфейсы Не являются классами Ни один из объявленных методов не может быть реализован внутри интерфейса.
Лекция 2: Описание класса 1. Поля 2. Методы 3. Конструкторы.
Основы ООП и C# Работа с объектами и классами. Классы Класс специальный тип данных для описания объектов. Он определяет данные и поведение типа. Определение.
Лекция 4. Введение в С++ Наследование, множественное наследование. Конструкторы, деструкторы. Виртуальные функции.
Переменные и операторы УРОК 2. Переменные ПЕРЕМЕННАЯ – ?... контейнер для хранения данных. Переменная имеет имя – это….? последовательность букв, цифр.
Инструкции C++ Условная инструкция Формат: if (условие) оператор; else оператор; Пример: if (i!=0) { if (j) j++; if(k) k++; else if(p) k--; } else i--;
Наследование Наследование – это отношение является между классами. class Person { string first_name; int birth_year;... } class Student : Person { float.
Глава 6. УПРАВЛЯЮЩИЕ СТРУКТУРЫ Оператор присваивания Простой и составной операторы Условный оператор Оператор множественного выбора Оператор цикла с предусловием.
Функции Функция – именованная последовательность описаний и операторов, выполняющая некоторое действие. Может иметь параметры и возвращать значение. Функция.
Полиморфизм. Полиморфизм – это свойство системы использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта.
Транксрипт:

Операторы (1) НазваниеСинтаксисПримечание Пустой;Этот символ превращает выражения присваиваний, инкрементов и вызовов методов в операторы Условный if ( ЛВ ) ОператорИлиБлок [ else ОператорИлиБлок ] ЛВ – выражение, возвращающее логическое значение Переключатель switch ( ЦВ ) { case KВ: [ [ ПоследовательностьОператоров] [ break ; ] ] [ … ] [ default : [ ПоследовательностьОператоров] [ break ; ] ] } 1. Не может быть двух или более case с одинаковым значением КВ. 2. Не может быть более одного default.

Операторы (2) Цикла ( while )while ( ЛВ ) ОператорИлиБлок Цикла ( do )do ОператорИлиБлок while ( ЛВ ) ; Цикла ( for )for ( [ Инициализация ] ; [ Проверка ] ; [ Модификация ] ) ОператорИлиБлок Цикла (for- each) for ( Тип Переменная : ОбъектРеализующийИнтерфейсIterable ) ОператорИлиБлок Тип переменной должен быть одинаков с типом, возвращаемы м реализацией интерфейса Iterable

Операторы (3) Прекращения break [ Метка ] ; Если Метка отсутствует, производится выход из ближайшего охватывающего оператора. Если Метка указана, производится выход из оператора (не обязательно цикла), помеченного ею. Продолжения continue [ Метка ] ; Если Метка отсутствует, производится переход к следующей итерации ближайшего охватывающего оператора цикла. Если Метка указана, производится переход к следующей итерации цикла, помеченного ею. Возврата return [ Выражение ] ;

Операторы (4) Возбуждение исключения throw ОбъектноеВыражение ; ОбъектноеВы ражение должно возвращать объект исключения. Перехват исключения try { ПоследовательностьОператоров } [ catch ( ОбъявлениеОбъектаИсключения ) { ПоследовательностьОператоров } ] [ … ] [ finally { ПоследовательностьОператоров }] Должен присутствовать хотя бы один блок catch или блок finally

Операторы (5) Синхрони- зации synchronized ( ОбъектИлиМассив ) { ПоследовательностьОператоров } ПоследовательностьОпера торов выполняется только тогда, когда обеспечена полная блокировка указанного ОбъектИлиМассив от доступа других потоков. Проверки утверждений assert Утверждение [ : КодВозврата ] Утверждение должно возвращать булево значение. Если оно равно false, то возбуждается исключение AssertionError, содержащее КодВозврата. Это исключение обычно не перехватывают.

Структура java-файла [ package packageName; ] [ import packageOrClassNameToImport; … ] [ accessSpecifier ] class ClassName[ typeParameters ] // класс [ extendsOrImplements ] { [ accessSpecifier ] dataType variableName [ = initialValue ] [, …];// поле... [ accessSpecifier ] [ typeParameters ] ClassName ( [ argumentsList ] ) [ throwsList ]{// конструктор operatorsList } … [ accessSpecifier ] [ typeParameters ] retValueDataType methodName ( [ argumentsList ] ) [ throwsList ] {//метод operatorsList } … } […]//еще классы и/или интерфейсы

Элементы объявления класса Пакеты (1) package packageName; Это предложение, если оно присутствует в программе, должно быть первым в тексте. Пакет – именованная совокупность классов, интерфейсов и, возможно, подпакетов. Полное имя класса (интерфейса), его метода или поля включает имя пакета: java.lang.String или java.lang.String.length() Пакеты определяют пространства имен со специальным доступом для входящих в них классов. Если метод или поле не помечены ни одним модификатором доступа (public, protected, private), то он(о) доступен(но) из любого метода любого класса данного пакета. Если в тексте отсутствует предложение package, то компилятор по умолчанию всегда создает один и тот же неименованный (unnamed) пакет. Поэтому, если пишется не примитивная программа, то нужно указывать пакеты классов для того, чтобы закрыть доступ из посторонних классов, входящих в любой неименованный пакет.

Элементы объявления класса Пакеты (2) В пакетах могут быть определены подпакеты, имена которых должны быть различны, однако на имена внутри них никаких ограничений не накладывается. Главное, чтобы уникальными были полные или составные имена. Рекомендуется разделять имена подпакетов точками и указывать их в порядке, обратном порядку следования имен в имени интернет-домена автора, например: ru.nstu.cs.vt.wtl.syntaxилиcom.knownhost.direct Это гарантирует уникальность имен классов, их полей и методов каждого автора, которая не может быть достигнута в случае unnamed. Система пакетов платформы Java имеет деревообразную структуру, которая хорошо накладывается на структуру каталогов файловой системы. Для сокращения длины имен часто употребляемых пакетов собственником платформы Java фирмой Sun (теперь Oracle) введены и поддерживаются: java, javax и sun.

Элементы объявления класса Импорт Если известно полное имя класса, экземпляр которого нужно использовать в программе, то создавать экземпляр можно так: tta = new ru.nstu.cs.vt.wtl.templateToAutomates(); Тот же результат можно получить, указав необходимость импорта класса templateToAutomates из пакета: import ru.nstu.cs.vt.wtl.templateToAutomates; … tta = new templateToAutomates(); Полное имя класса можно указывать и тогда, когда присутствует директива его импорта или импорта содержащего его пакета. Если в программе требуется использовать несколько классов (или все классы) из некоторого пакета, то можно указать: import ru.nstu.cs.vt.wtl.*; Директив import может быть сколько угодно много, но все они должны находиться в начале файла сразу после package.

Элементы объявления класса Заголовок класса (1) [ accessSpecifier ] class ClassName[ typeParameters ] [ extendsOrImplements ] accessSpecifier – одно или несколько ключевых слов: public – общедоступный класс (при отсутствии этого спецификатора поля и методы класса доступны только из методов классов пакета, содержащего данный класс, например - unnamed); abstract – абстрактный класс, его экземпляры не могут быть созданы (этот класс может использоваться только в качестве базового при наследовании); final – у этого класса не может быть наследников (естественно, не имеет смысла объявление abstract final class); strictfp – все методы этого класса используют операции с плавающей точкой ограниченной точности (введено для обеспечения совместимости с JDK v1.0, при этом сильно замедляется интерпретация программы, по возможности этот спецификатор лучше не использовать).

Элементы объявления класса Заголовок класса (2) [ accessSpecifier ] class ClassName[ typeParameters ] [ extendsOrImplements ] typeParameters – список имен типов, заключенных в угловые скобки, информация о которых должна использоваться при компиляции и при создании экземпляров класса (механизм «generics», напоминающий шаблонные классы в С++). Пример определения параметризованного класса: public class Box { … } Пример создания экземпляра параметризованного класса: Box boxForIntegers = new Box ; Box boxForStrings = new Box ;

Элементы объявления класса Заголовок класса (3) [ accessSpecifier ] class ClassName[ typeParameters ] [ extendsOrImplements ] extendsOrImplements – указание родительского (super-) класса (возможно – отсутствующее) и/или указание списка реализуемых классом интерфейсов (также возможно отсутствующее): public final class HelloWorld extends Object { …// это лишнее, любой класс наследует от класса Object // не допускается множественное наследование от классов } public abstract class TaskTemplate implements Comparable, Runnable { …// имена интерфейсов обычно (но не обязательно) заканчиваются на able // допускается множественная реализация интерфейсов } class MyClass extends HelloWorld implements java.io.Serializable { …// класс может одновременно наследовать от одного класса // и реализовывать один или несколько интерфейсов }

Элементы объявления класса Поле (1) [ accessSpecifier ] dataType variableName [= initialValue ] …; accessSpecifier – ни одного, одно или несколько ключевых слов (рекомендуется указывать их именно в этом порядке): [ private – поле, доступ к которому возможен только из методов этого класса; нет (package: пакетный доступ) – поле, доступ к которому возможен из методов класса-наследника, объявленного в этом же пакете; protected – поле, доступ к которому возможен из методов этого класса и его наследников, не обязательно прямых; public – общедоступное поле; ] static – это поле принадлежит классу в целом, а не экземпляру; final – значение этого поля не может быть изменено (поле является константой); transient – это поле не должно сериализоваться (сохраняться во внешней памяти в составе объекта); volatile – это поле предназначено для организации взаимодействия несинхронизируеых потоков и операции с ним не подлежат какой-бы то ни было оптимизации (используется крайне редко). Спецификаторы доступа относятся только к тому объявлению, в котором они указаны и не распространяются на последующие объявления.

Элементы объявления класса Поле (2) [ accessSpecifier ] dataType variableName [= initialValue ] [, … ]; dataType – имя примитивного или объектного типа данных, возможно – сопровождаемое модификатором массива: размерностью (размерностями) в квадратных скобках. Если часть [= initialValue ] отсутствует, то: -переменные типа boolean инициализируются значением false; -остальные численные переменные инициализируются значением 0 (нуль); -все объектные переменные инициализируются значением null. Поля и методы могут иметь одинаковые имена, поскольку обращение к методу отличается от обращения к полю по круглой скобке после имени.

Элементы объявления класса Поле (3) Примеры public int eventCount ; //значение по умолчанию 0 private boolean hideFlag = false;//и по умолчанию false protected char currentSymbol;//по умолчанию \u0000 private byte шагСетки = 1; static final float PACKAGE_VERSION = 2.01; short[ ] arrayOfArrays[ ];//эквивалентно short arrayOfArrays[ ][ ]; private transient float exchangeRate$; long resultNumber = -1; protected volatile int семафорПотока = 0; private double[ ] startCoordinates = { 1.0, 2.0, 3.0 }; public String className;//по умолчанию - null Не рекомендуется объявлять переменные так: int i,a,j,x,k=0,l,m,n;

Элементы объявления класса Конструктор (1) [ accessSpecifier ] [ typeParameters ] ClassName ( [ argumentsList ] ) [ throwsList ] { operatorsList } accessSpecifier – одно (или ни одного) из ключевых слов: public, protected, private. typeParameters – список имен типов, заключенных в угловые скобки, информация о которых должна использоваться при компиляции конструктора (эти элементы Java-generics будут подробно рассматриваться позже). argumentsList – список типов и имен аргументов, используемых конструктором при создании экземпляра класса. throwsList – список исключений, бросаемых конструктором. Исключения – единственный способ не создавать объект при выполнении new. operatorsList – последовательность операторов, образующая тело конструктора. В классе может быть несколько конструкторов. Поскольку у них одно и то же имя, совпадающее с именем класса, то они должны отличаться типом и/или количеством параметров.

Элементы объявления класса Конструктор (2) Конструктор имеется в байт-коде любого класса. Если ни одного конструктора нет в исходном тексте, компилятор Java сам создаст конструктор по умолчанию (default constructor), который не делает ничего, кроме вызова конструктора суперкласса. Однако, если явно определен хотя бы один конструктор класса, то конструктор без аргументов неявно не создается, если нужно – его придется определять явно. Конструктор выполняется автоматически при создании экземпляра класса, сразу после распределения памяти и стандартной инициализации полей, но до начала использования создаваемого объекта. Конструктор не возвращает никакого значения. Конструктор не является методом, он даже не считается членом класса. Поэтому его нельзя наследовать или переопределить в подклассе.

Элементы объявления класса Конструктор (3) Тело конструктора может начинаться: с вызова одного из конструкторов суперкласса, для этого записывается слово super() с параметрами в скобках, если они нужны; если вызов super( … ) в начале конструктора явно не написан, то вначале все равно будет вызван конструктор суперкласса без аргументов, затем выполнена инициализация полей значениями, указанными при их объявлении, а уже потом то, что записано в теле конструктора; с вызова другого конструктора того же класса, для этого записывается слово this() с параметрами в скобках, если они нужны (такие вызовы не должны образовывать циклическую цепочку); внутри тела конструктора (после первой строки) вызовы конструктора суперкласса или другого конструктора этого же класса не допускаются (компилятор выдаст ошибку);

Элементы объявления класса Метод (1) [ accessSpecifier ] [ typeParameters ] retValueDataType methodName ( [ argumentsList ] ) [ throwsList ] { operatorsList } accessSpecifier – ни одного, одно или несколько ключевых слов: [ public, protected, private, ] [ abstract, final, ] static, synchronized, native, strictfp. typeParameters – список имен типов, заключенных в угловые скобки, информация о которых должна использоваться при компиляции метода (эти элементы Java-generics будут подробно рассматриваться позже).

Элементы объявления класса Метод (2) retValueDataType – тип значения, возвращаемого методом, это может быть: ключевое слово void, один из примитивных типов данных (boolean, char, byte, short, int, long, float, double), какой-либо ссылочный тип (имя класса), массив значений примитивного либо ссылочного типа. argumentsList – список типов и имен аргументов, обрабатываемых методом (начиная с Java5 метод может обрабатывать заранее неизвестное количество аргументов, специальный синтаксис таких списков будет рассмотрен позже). Если этот список пуст, то в отличие от C/C++ ключевое слово void не употребляется, пишется ( ). Аргументы всегда передаются по значению. Перед типом аргумента может быть записано ключевое слово final, означающее запрет изменения значения этого аргумента в теле метода. throwsList – список исключений, возбуждаемых (бросаемых) методом; исключения и их обработка будут рассматриваться отдельно. operatorsList – последовательность операторов, образующая тело метода.

Элементы объявления класса Метод (3) Методы не могут быть вложенными. Сигнатурой метода называется совокупность из: имени метода; количества, порядка следования, и типов аргументов. Имена аргументов и тип значения, возвращаемого методом, не входят в сигнатуру. Контрактом метода называется сигнатура совместно с типом возвращаемого значения. Класс может иметь несколько разных методов с одним и тем же именем (так называемая перегрузка или overloading методов). Сигнатуры всех методов любого класса должны быть попарно различны, т.е. перегруженные методы должны иметь разные списки типов аргументов. В языке Java все методы классов являются виртуальными функциями как следствие того, что любой объект представлен указателем.