1-ая аттестация (наиболее интересное из лекций) (по материалам лекций Седунова Алексея Александровича)

Соглашения об именовании
Имена файлов - начинаются с большой буквы - дальше строчные
Customer.java
Person.class

Имена пакетов - все буквы строчные - иерархия через точку

 java.util
     javax.swing

Имена классов - начинаются с заглавной. остальные строчные

    Customer
   <code> Person  </code>

Имена свойств класса - все слова свойства пишутся слитно (входящие в название , первое полностью из строчных букв,остальные начинаются с заглавной)

    firstName
    id

Имена методов - аналогично свойствам

    getName
    isAlive

Имена констант - все буквы здоровые - слова в составе разделяются нижним подчёркиванием

SQUARE_SIZE
vedro-compota's picture

Определение класса включает:
Модификатор доступа
Ключевое слово class
Свойства класса
Конструкторы
Методы
Статические свойства
Статические методы

_____________
матфак вгу и остальная классика =)

vedro-compota's picture

Переменные простых типов инициализируются автоматически. (но только если это свойства класса, локальные переменные автоматически инициализированы НЕ БУДУТ)

Имя переменной должно начинаться с буквы, знака подчеркивания или со знака “$”

_____________
матфак вгу и остальная классика =)

vedro-compota's picture

Все арифметические операции производятся над int или long
ВНИМАНИЕ:

byte a = 100;
byte b = 100;
byte c = a+b;
c = -56!!!

здесь хорошо было бы выяснить - почему "оно так".....

_____________
матфак вгу и остальная классика =)

vedro-compota's picture

побитовый сдвиг - непонятно что - надо разобраться

_____________
матфак вгу и остальная классика =)

vedro-compota's picture

switch (выражение целого типа){
  case const1:
	statement1;
	break;
  case const2:
	statement2;
	break;
  default:
	statement3;
}

1) Выражения const должны быть типа byte, int, char, short или enum

2) каждый case должен завершаться break-ом иначе программа будет "проваливаться " на следующий case

_____________
матфак вгу и остальная классика =)

vedro-compota's picture

Определяется в операционной системе

Указывает JVM, где необходимо искать файлы .class

Может ссылаться на каталоги и файлы .jar и .zip

Интерпретатор загружает встроенные классы перед тем, как загрузить пользовательские

Используется с командами java и javac

_____________
матфак вгу и остальная классика =)

vedro-compota's picture

Для того, чтобы класс можно было запустить, в нем должен быть определен метод main

public class FirstProgram {
	public static void main (String[] args){
		int itemsSold = 10;
		float itemCost = 11.0f;
		int i, j, k;
		double interestRate;
	}
}

_____________
матфак вгу и остальная классика =)

vedro-compota's picture

Компиляция .java файла

> javac [-classpath <path>] FirstProgram.java

Запуск .class файла

> java [-classpath <path>] FirstProgram

_____________
матфак вгу и остальная классика =)

vedro-compota's picture

1)создание экземпляра класса - объекта =

ClassName objectRef = new ClassName();

2) Объект может быть удален сборщиком мусора после присвоения null его переменной

3) Свойства класса объявляются внутри класса, но вне методов или инициализационных частей

4) Все свойства инициализируются неявно значениями по умолчанию
Сложные инициализации лучше помещать в конструктор

5) Public свойства могут быть прочитаны или изменены при помощи оператора “.” (точка)
Применять такой подход НЕ РЕКОМЕНДУЕТСЯ - интересно почему.,?....

_____________
матфак вгу и остальная классика =)

vedro-compota's picture

1)Все аргументы в Java передаются ПО ЗНАЧЕНИЮ, т.е. для аргумента делается локальная копия и метод работает с ней

2)Для простых переменных передаются значения

3)Для объектных переменных передается КОПИЯ ССЫЛКИ

_____________
матфак вгу и остальная классика =)

vedro-compota's picture

Для работы со свойствами (свойства здесь, это то , что в си шарп - поля) создаются методы следующего вида:
public PropertyClass getPropertyName (){
	return propertyName;
}
public void setPropertyName (PropertyClass value){
	propertyName = value;
}

читай о свойствах (встроенный в концепцию си шарп аналог геттеров и сеттеров )в си шарпе , = http://ru.wikipedia.org/wiki/%D0%A1%D1%8...

_____________
матфак вгу и остальная классика =)

vedro-compota's picture

Для конструктора не указывается возвращаемый тип

Конструкторы могут быть перегружены

Конструктор может вызывать другой конструктор, используя this()

public class Square{
private double sideLength;
public Square(){
	this(3.5);
}
public Square(double sideLength){
	this.sideLength = sideLength;
    }
}

_____________
матфак вгу и остальная классика =)

vedro-compota's picture

Свойства, принадлежащие только классу и общие для всех экземпляров класса

Объявляются при помощи модификатора static

public class Square{
private Color color;
private static int lineWidth;
}

при этом такое свойство не обязательно приватно = http://www.javable.com/tutorials/fesunov...

_____________
матфак вгу и остальная классика =)

vedro-compota's picture

Статические свойства могут быть проинициализированы при объявлении
Для сложной инициализации используется статический блок инициализации

public class Square{
private Color color;
private static int lineWidth;
static{
	lineWidth = 0.75;
}
}

_____________
матфак вгу и остальная классика =)

vedro-compota's picture

Свойство с модификатором final – это константа и оно не может быть изменено

Но может быть проинициализировано

Обычно объявляется как public static для использования вне класса

Метод с модификатором final не может быть перекрыт в наследнике

Класс с модификатором final не может быть унаследован

_____________
матфак вгу и остальная классика =)

vedro-compota's picture

Если объект работает с ресурсами (например, с файлом), то он должен освободить эти ресурсы перед тем, как он будет удален из памяти

Для этого используется метод finalize()

Метод вызывается перед тем, как объект будет убран из памяти

Время, когда будет вызван finalize() не определено

_____________
матфак вгу и остальная классика =)

vedro-compota's picture

Когда все ссылки на объект пустые, он помечается для удаления

Сборщик мусора периодически освобождает память, занимаемую объектами

Сборка мусора происходит автоматически

Для сигнала, что можно запустить сборщик мусора, можно воспользоваться методом System.gc();

_____________
матфак вгу и остальная классика =)

vedro-compota's picture

JavaTM 2 Platform, Standard Edition, v 1.5 API Specification

Хорстманн, Корнелл Java2, в 2-х томах

Bruce Eckel Thinking in Java

а также можно почитать = http://java.sun.com/learning/tutorial/in...

_____________
матфак вгу и остальная классика =)

vedro-compota's picture

Язык программирования JAVA
Введение
Базовый синтаксис и типы данных
Управление выполнением программы
Содержание курса
Введение. Базовый синтаксис и типы данных. Управление выполнением программ.
Создание собственных классов. Работа со строками. Внутренние классы.
Наследование и полиморфизм. Массивы и коллекции.
Абстрактные классы и интерфейсы.
Обработка исключений.
Создание интерфейса пользователя.
Работа с потоками ввода/вывода.
Мультизадачность в Java.

Что такое JAVA?
Объектно-ориентированный язык программирования
Изначально был разработан для управления бытовой электроникой
Поставляется с большой библиотекой классов
Использует виртуальную машину (JVM) для выполнения программ
Ключевые особенности JAVA
Объектно-ориентированный
Интерпретируемый и платформонезависимый
Динамическая загрузка библиотек
Мультипоточность
Надежность и безопасность
Объектно-ориентированный подход
Объекты и классы
Объект-представление «вещи» в реальном мире
Класс – «шаблон», определяющий «вещи»
Модель классов объединяет
Существующие классы и объекты
Поведение, цели и структуру
Отношения между классами
Отношения между объектами
Модель используется во всем проекте
Независимость от платформы
Исходные тексты хранятся в текстовом виде в файле .java
Файл .java компилируется в файл .class
Этот файл содержит байт-код (инструкции для выполнения интерпретатором)
Байт-код интерпретируется во время выполнения

Just-In-Time (JIT) компилятор
Компилирует байт-код в исполняемый код для конкретной платформы
Увеличивает производительность
Оптимизирует повторяющийся код, например, циклы

Java - приложения
Клиентские
JVM выполняет отдельное приложение из командной строки
Классы загружаются с локального диска
Серверные
Обслуживают несколько клиентов
Применяются для многозвенных приложений
Java - апплеты
Предназначены для встраивания в HTML страницы
Выполняются внутри браузера и могут взаимодействовать с сервером
Могут быть преобразованы в обычное приложение
Java SDK (JDK)
Sun Java SDK включает в себя
Компилятор (javac)
Библиотеку классов
Отладчик (jdb)
Интерпретатор (java)
Генератор документации (javadoc)
Архиватор (jar)
Другое…
Варианты поставки
J2ME (Micro Edition) – для мобильных устройств
J2SE (Standard Edition) – разработка обычных приложений
J2EE (Enterprise Edition) – разработка приложений многозвенной архитектуры
Инструменты, используемые в данном курсе
J2SE версии 1.5 (Java5)
В качестве IDE будет использоваться Eclipse
Базовый синтаксис языка
Ключевые компоненты SDK
Структура файла
Определение классов
Базовые типы данных и операторы
Использование переменной CLASSPATH
Компиляция и запуск приложения

Ключевые компоненты SDK
Компилятор (javac) – создает из исходного кода байт-код
Интерпретатор (java) – выполняет байт-код

Пакеты
Классы объединяются в специальные структуры, называемые пакетами
Стандартные пакеты для
Поддержки базовых конструкций языка (java.lang)
Создания оконного интерфейса (javax.swing)
Управления вводом/выводом (java.io)
Структура исходного файла класса Java
Исходный файл состоит из следующих частей
Необязательное слово package, за которым следует наименование пакета, в котором содержится класс
Необязательный оператор import (может быть несколько), который указывает, какие классы из сторонних пакетов используются создаваемым классом
Одно или более определение class или interface, за которым следует программный блок
Файл должен иметь ТО ЖЕ имя, что и создаваемый класс
Ключевые слова языка Java ЧУВСТВИТЕЛЬНЫ К РЕГИСТРУ
В файле может быть ТОЛЬКО ОДИН public класс
Пример класса Java
Соглашения об именовании
Имена файлов
Customer.java
Person.class
Имена пакетов
java.util
javax.swing
Имена классов
Customer
Person
Имена свойств класса
firstName
id
Имена методов
getName
isAlive
Имена констант
SQUARE_SIZE

Также могут использоваться цифры 1..9, _, $
Определение класса
Определение класса включает:
Модификатор доступа
Ключевое слово class
Свойства класса
Конструкторы
Методы
Статические свойства
Статические методы
Пример
Блоки кода
Блоки кода обрамляются в фигурные скобки “{“ “}”
Охватывают определение класса
Определения методов
Логически связанные разделы кода
Объявление методов
Методы определяются только внутри класса
Указывается
Модификатор доступа
Слово static
Тип возвращаемого значения
Аргументы
Пример
Переменные
Основное место для хранения данных
Должны быть явно объявлены
Каждая переменная имеет тип, идентификатор и область видимости
Определяются для класса, для экземпляра и внутри метода
Объявление переменных
Может быть объявлена в любом месте блока кода
Должна быть объявлена перед использованием
Обычно переменные объявляются в начале блока
Область видимости определяется блоком
Необходимо инициализировать переменные перед использованием
Переменные простых типов инициализируются автоматически
Объявление переменных
Основная форма объявления
тип идентификатор [ = значение];
Именование переменных
Имя переменной должно начинаться с буквы, знака подчеркивания или со знака “$”
Имя переменной может включать цифры
Давайте переменным осмысленные имена
Простые типы данных
Восемь простых типов данных
Шесть числовых
Символьный
Логический
Определяемые пользователем типы
Классы
Интерфейсы
Массивы

Простые типы данных
Операторы
Пять типов операторов
Присваивание
Арифметические
Побитовый сдвиг
Равенство
Логические
Оператор присваивания
Оператор присваивания – выражение и может использоваться там, где допустимы выражения
Сначала вычисляется правая часть, а затем полученное значение присваивается левой части
Арифметические операторы
Сложение (+)
Умножение (*)
Вычитание (-)
Деление (/)
Остаток от деления (%)

Операции инкремента и декремента
Увеличение на 1 (++)
Уменьшение на 1 (--)
Побитовый сдвиг
>> - сдвиг вправо
>>> - сдвиг вправо с заполнением нулями
Правая часть сокращается до остатка от деления на длину числа, т.е. 1 Операторы сравнения
> - больше
>= - больше или равно
== - равно
!= - не равно
Логические операторы
&& - and
|| - or
^ - xor
! – not

Приоритет операций
Управление выполнением программы
Типы выполнения
Последовательность
Выбор
Итерация
Переход
Последовательность
Каждый оператор завершается точкой с запятой
Группы операторов обрамляются фигурными скобками
Каждая группа выполняется как единый оператор внутри последовательности операторов
Оператор if
Оператор switch
Используется для выбора из счетного количества вариантов
Выражения const должны быть типа byte, int, char, short или enum
Циклы
Три типа
while
do..while
for
Все циклы имеют две части
Условие выполнения
Тело

Цикл while
Цикл do..while
Цикл for
Переменная среды CLASSPATH
Определяется в операционной системе
Указывает JVM, где необходимо искать файлы .class
Может ссылаться на каталоги и файлы .jar и .zip
Интерпретатор загружает встроенные классы перед тем, как загрузить пользовательские
Используется с командами java и javac
Выполнение JAVA программ
Для того, чтобы класс можно было запустить, в нем должен быть определен метод main
Компиляция и запуск JAVA программ
Компиляция .java файла
Язык программирования JAVA
Создание собственных классов
Работа с памятью
Класс
Класс – шаблон для создания объекта
Свойства – для хранения данных (простые и ссылочные)
Методы – для определения поведения
Логически связанные классы объединяются в пакеты
Пакеты также применяются для управления доступом к классам
Классы и объекты
Создание объектов
Экземпляры класса (объекты) создаются при помощи оператора new
Оператор new
Оператор выполняет следующие действия:
Выделяет участок памяти для нового экземпляра
Вызывает специальный метод класса, называемый конструктором
Возвращает ссылку на созданный объект
Простые и объектные типы
Простые переменные содержат значения
Что такое null?
Показывает, что ссылка на объект пуста
Может быть присвоено только объектной переменной
Можно сравнивать объектные переменные с null
Объект может быть удален сборщиком мусора после присвоения null его переменной
Присвоение объектных переменных
Объявление свойств
Свойства класса объявляются внутри класса, но вне методов или инициализационных частей
Инициализация свойств класса
Свойства могут быть явно инициализированы при объявлении
Присваивание значений происходит в момент создания экземпляра класса
Доступ к свойствам класса
Public свойства могут быть прочитаны или изменены при помощи оператора “.” (точка)
Объявление методов
Метод – эквивалент процедуры или функции в других языках программирования
Вызов методов
Все методы определяются только внутри классов
Вызов метода всегда происходит в контексте объекта или класса
В скобках передаются аргументы метода
Если у метода нет аргументов, то скобки оставляются пустыми
Задание аргументов для методов
Количество и типы аргументов задаются при объявлении метода
Передача аргументов в метод
Все аргументы в Java передаются ПО ЗНАЧЕНИЮ, т.е. для аргумента делается локальная копия и метод работает с ней
Для простых переменных передаются значения
Для объектных переменных передается КОПИЯ ССЫЛКИ
Возврат значения из метода
Для возврата значения используется оператор return значение
Вызов методов
Для вызова методов используется оператор “.” (точка)
В скобках перечисляются фактические аргументы
Если у метода нет аргументов, пустые скобки все равно нужно ставить
Перегрузка методов
Методы в классе могут иметь одинаковое имя
У методов ДОЛЖЕН БЫТЬ разный набор аргументов (разные сигнатуры)
Компилятор различает вызовы методов по типам и количеству параметров
Методы не могут различаться по типу возвращаемого значения
Инкапсуляция
Правила
Свойства класса должны быть объявлены private (исключения - константы)
Доступ к свойствам должен осуществляться только через методы
Преимущества
Легкость модификации (сохраняется интерфейс класса)
Простота контроля за присваиваемыми значениями

Getter’ы и Setter’ы
Для работы со свойствами создаются методы следующего вида:

Ссылка this
В методах можно использовать переменную this, которая представляет из себя ссылку на текущий объект
Конструкторы
Для правильной инициализации в классе может быть создан конструктор
Конструктор – метод, вызываемый автоматически при создании объекта
Обычно объявляется как public
Должен иметь то же имя, что и класс
Для конструктора не указывается возвращаемый тип
По умолчанию компилятор создает конструктор без аргументов, если конструкторы не указаны явно. В противном случае используются только конструкторы, которые указаны в классе
Конструкторы могут быть перегружены
Пример
Разделение кода между конструкторами
Конструктор может вызывать другой конструктор, используя this()
Статические свойства
Свойства, принадлежащие только классу и общие для всех экземпляров класса
Объявляются при помощи модификатора static
Инициализация статических свойств
Статические свойства могут быть проинициализированы при объявлении
Для сложной инициализации используется статический блок инициализации
Статические методы
Статические методы разделяются всеми экземплярами класса
Полезны для работы со статическими свойствами
При объявлении используется модификатор static
Неизменяемые свойства, методы и классы
Свойство с модификатором final – это константа и оно не может быть изменено
Но может быть проинициализировано
Обычно объявляется как public static для использования вне класса
Метод с модификатором final не может быть перекрыт в наследнике
Класс с модификатором final не может быть унаследован
Пример
Метод finalize()
Если объект работает с ресурсами (например, с файлом), то он должен освободить эти ресурсы перед тем, как он будет удален из памяти
Для этого используется метод finalize()
Метод вызывается перед тем, как объект будет убран из памяти
Время, когда будет вызван finalize() не определено

Работа с памятью
Когда все ссылки на объект пустые, он помечается для удаления
Сборщик мусора периодически освобождает память, занимаемую объектами
Сборка мусора происходит автоматически
Для сигнала, что можно запустить сборщик мусора, можно воспользоваться методом System.gc();
Рекомендуемая литература
JavaTM 2 Platform, Standard Edition, v 1.5 API Specification
Хорстманн, Корнелл Java2, в 2-х томах
Bruce Eckel Thinking in Java
http://java.sun.com/learning/tutorial/index.html
Вопросы?

_____________
матфак вгу и остальная классика =)

Хороший сайт, отличный материал. Обновляйте почаще.

vedro-compota's picture

ды конкретный материал этой темы - копипаст из лекций Седунова А.С. , с небольшими комментариями и "опущением" того, что подобно си шарпу ) обновляю по мере того , как сам начинаю учу - иначе не получается)

_____________
матфак вгу и остальная классика =)