1 © Luxoft Training 2012 Понятие Java приложения Модуль #4.

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



Advertisements
Похожие презентации
Практическое занятие 6. Функции. Большинство языков программирования используют понятия функции и процедуры. C++ формально не поддерживает понятие процедуры,
Advertisements

Основы информатики Классы Заикин Олег Сергеевич zaikin.all24.org
1 © Luxoft Training 2012 Java: расширенные вопросы Модуль #8.
Синтаксис языка Java. Символы и синтаксис Перевод строчки эквивалентен пробелу Регистр в именах различается.
Основы ООП и C# Работа с объектами и классами. Классы Класс специальный тип данных для описания объектов. Он определяет данные и поведение типа. Определение.
1 Классы в Java Ключевое слово class означает: Я говорю тебе, как выглядит новый тип объекта. Класс является базовым элементом объектно-ориентированного.
Лекция 8 Область видимости Время жизни. Область видимости Область видимости – характеристика именованного объекта Область видимости - часть текста программы,
Функции Функция – именованная последовательность описаний и операторов, выполняющая некоторое действие. Может иметь параметры и возвращать значение. Функция.
Переменные и основные типы переменных на JAVA Выполнил учитель информатики и ИКТ МБОУ СОШ р.п. Евлашево Горелочкин Н.К.
Информационные технологии Классы памяти auto static extern register Автоматические переменные создаются при входе в функцию и уничтожаются при.
Преобразования типов В языке C/C++ имеется несколько операций преобразования типов. Они используются в случае, если переменная одного типа должна рассматриваться.
Создание программ на Java Управляющие структуры языка, объявление классов и методов, компиляция и запуск программ.
Основы информатики Лекция. Функции Заикин Олег Сергеевич
Полиморфизм Полиморфизм (polymorphism) - последний из трех "китов", на которых держится объектно-ориентированное программирование Слово это можно перевести.
Основы языка программирования. План лекций: 1.Основные особенности языка С++ 2. Основные понятия языка программирования: алфавит, константы, идентификаторы,
Лекция 10 ОбъектыЛекция 10 ОбъектыООП Инкапсуляция Возможность совместного хранения данных и кода для их обработки Наследование Возможность расширять существующие.
Подбор материала и презентация: Сазонов Д.О. Кафедра ПМиЭММ ВГТА Динамические объекты, ссылки.
1 Методы Java Методы класса – это подпрограммы, присоединенные к конкретным определениям классов. Они описываются внутри определения класса на том же уровне,
Лекция 2: Описание класса 1. Поля 2. Методы 3. Конструкторы.
ОБЪЕКТНО- ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ (ООП) 1.
Транксрипт:

1 © Luxoft Training 2012 Понятие Java приложения Модуль #4

2 © Luxoft Training 2012 Модуль 4 Описание класса Понятие Java-приложения Работа с экземпляром класса Понятие classpath Пакеты Java-архивы Отладка приложений

3 © Luxoft Training 2012 Идентификатор – слово используемое для наименования переменной, метода, класса или метки. Ключевые слова и зарезервированные слова не могут быть использованы в качестве идентификаторов. Идентификатор должен начинаться с буквы, символа доллара ($) или символа подчеркивания (_). Последующими символами могут быть: буквы, $, _, цифры. Описание класса

4 © Luxoft Training 2012 Ключевые слова Java

5 © Luxoft Training 2012 Класс – набор данных и методов работы с этими данными. Класс необходимо представлять как штамп, производящий экземпляры этого класса. Экземпляр – создается в runtime (в процессе выполнения программы). Представляет из себя память, выделенную под данные и инструкции JVM, как вызывать методы класса. Описание класса

6 © Luxoft Training 2012 Декларация класса: Описание класса определяет видимость класса, т.е. какие классы могут получить доступ к данному классу. Модификатор public говорит, что к такому классу могут обращаться откуда угодно. Может быть определен только один public класс в файле. class { }

7 © Luxoft Training 2012 Тело класса – это кодовый блок, содержащий данные. Его тело должно заключаться в { }. Данные – декларация переменных и методы. Стоит различать переменные класса и переменные экземпляра (об этом в следующих модулях). Описание класса

8 © Luxoft Training 2012 Метод – набор инструкций работы с данными класса, а так же с параметрами метода. Метод также представляет кодовый блок и заключается в { }. Описание класса ( ) {... }

9 © Luxoft Training 2012 Модуль 4 Описание класса Понятие Java-приложения Работа с экземпляром класса Понятие classpath Пакеты Java-архивы Отладка приложений

10 © Luxoft Training 2012 Работа любой java программы (java приложения) начинается с выполнения метода main. Простейшее приложение состоит из одного метода main. Для запуска программы в JVM, необходимо задать в командной строке java: Описание класса Внимание! Eсли указанный класс не содержит main, или не верна его сигнатуры, Возбуждается java.lang.NoSuchMethodError

11 © Luxoft Training 2012 Сигнатура метода main. Сигнатура метода public static void main(String[] args) void – возвращаемый тип. args – список аргументов командной строки. Метод main должен быть объявлен как статический. Статический метод может и должен быть вызван так: TheClass.staticMethod(...) Внимание! Время жизни программы равно времени выполнения метода main.

12 © Luxoft Training 2012 Метод создает экземпляры классов, вызывает методы этих объектов, которые могут вызывать другие методы, запрашивать ввод с консоли и т.д. Данная цепочка вызовов методов называется поток выполнения(execution thread). JVM ведет выполнение метода строго последовательно, от выражения к выражению. Описание класса

13 © Luxoft Training 2012 Модуль 4 Описание класса Понятие Java-приложения Работа с экземпляром класса Понятие classpath Пакеты Java-архивы Отладка приложений

14 © Luxoft Training 2012 Класс – это файл, содержащий байт-код, определяющий данные и методы. Экземпляр – память, выделенная под структуры данных, декларированные в классе. Для того, чтобы JVM могла работать в классом (создавать экземпляры), она должна загрузить код класса. Описание класса

15 © Luxoft Training 2012 Для того, чтобы создать экземпляр класса, используется оператор new. При этом в динамической области памяти, называемой кучей (heap), выделяется память под данные экземпляра (объекта). Размер кучи можно задать при запуске JVM. Описание класса Оператор new возвращает ссылку на созданный экземпляр класса.

16 © Luxoft Training 2012 JVM имеет специальный загрузчик (bootstrap classloader), который умеет загружать байт-код класса из файловой системы, учитывая полное имя класса. Байт-код класса можно загрузить также из другого источника. В этом случае необходимо создать специфический загрузчик. JVM сама управляет загрузкой классов. Загрузка класса

17 © Luxoft Training 2012 Работа с объектами в Java всегда ведется через ссылку. Тип ссылки определяется типом созданного объекта. Тип ссылки может совпадать с классом создаваемого объекта, либо отличаться, что является полиморфизмом. Работа с объектами

18 © Luxoft Training 2012 Описание класса

19 © Luxoft Training 2012 Конструирование и инициализация Вызов Xyz x = new Xyz() выполняет: Связывание ссылки с ее типом. Выделение памяти под объект. Выполняется явная инициализация атрибутов. Вызывается конструктор. Объектная ссылка возвращается оператором new. Объектная ссылка присваивается переменной х. Внимание! Декларация только выделит память для хранения ссылки.

20 © Luxoft Training 2012 Конструирование и инициализация Выделение памяти под ссылку Выделение памяти под объект. MyDate my_birth; new MyDate(31,3,1988)

21 © Luxoft Training 2012 Конструирование и инициализация Инициализация атрибутов Вызов конструктора.

22 © Luxoft Training 2012 Конструирование и инициализация Присвоение объектной ссылки MyDate my_birth = new MyDate(22, 7, 1964)

23 © Luxoft Training 2012 Конструирование и инициализация Две переменные ссылаются на один объект int x = 7; int y = x; MyDate s = new MyDate(22, 7, 1964); MyDate t = s; При переприсваивании t она ссылается на новый объект: t = new MyDate(22, 7, 1964);

24 © Luxoft Training 2012 Конструирование и инициализация Java поддерживает следующие виды переменных, отличающихся в области памяти и временем жизни: Свойство объекта (member) Создается когда создается объект. Размещается в куче. Cтековая переменная (local variable) Определяется в методе. Переменная класса (class member) Создается когда класс загружается загрузчиком классов. Может существовать только одна копия.

25 © Luxoft Training 2012 Размер объектов (основы) Бит. 0 или 1 Байт. 8 бит Мегабайт (MB). ~1 миллион или 2^20 байт Гигабайт (GB). ~1 миллиард или 2^30 байт

26 © Luxoft Training 2012 Размер объектов (основы) Бит. 0 или 1 Байт. 8 бит Мегабайт (MB). ~1 миллион или 2^20 байт Гигабайт (GB). ~1 миллиард или 2^30 байт Старые компьютеры: Имеется ввиду 32-разрадный компьютер с указателем в 4 байта. Новые компьютеры: Имеется ввиду 64-разрадный компьютер с указателем в 8 байт. Можно использовать больше памяти Указатели используют больше места Некоторые JVM сжимают указатели до 4 х байт.

27 © Luxoft Training 2012 Размер объекта byte 1 int 4 float 4 char 2 short 2 long 8 double 8 int[] 4N + 24 char[][] ~2MN double[][] ~8MN char[] 2N + 24 double[] 8N + 24 int[][] ~4MN bytes type Примитивные типы Одномерные массивы Двумерные массивы Внимание! Примитивные типы более подробно рассмотрены в модуле 5.

28 © Luxoft Training 2012 Размер класса Заголовок класса. 16 байт. Ссылка. 8 байт. Выравнивание снизу. Каждый объект выравнивается до кратности 8 байт.

29 © Luxoft Training 2012 Размер класса Заголовок класса. 16 байт. Ссылка. 8 байт. Выравнивание снизу. Каждый объект выравнивается до кратности 8 байт. Пример 1. Объект Data использует 32 байта памяти. class Date { int day; int month; int year;... } Заголовок класса day month year Выравнивание 16 байт 4 байт 32 байт

30 © Luxoft Training 2012 Размер класса Заголовок класса. 16 байт. Ссылка. 8 байт. Выравнивание снизу. Каждый объект выравнивается до кратности 8 байт. Пример 2. Пустая строка длинны N использует ~2N байт памяти. class String { char[] vale; int offset; int count; int hash;... } Заголовок класса value offset count Выравнивание 16 байт 8 байт(ccылка на массив) 4 байт 2N + 64 байта hash 2N + 24 байта (массив) 4 байт

31 © Luxoft Training 2012 Размер класса Сколько памяти использует объект QuickUnion как функция от N? class QuickUnion { int[] id; int[] size; int count; … }

32 © Luxoft Training 2012 Размер класса (итог) Использование памяти для различных типов. Примитивные типы: 4 байта для int, 8 байт для double.... Объектная ссылка: 8 байт Массивы: 24 байта + память для каждого элемента. Объект: 16 байт + память для каждого члена класса Вложенный класс: 8 байт Выравнивание: кратно 8 байт.

33 © Luxoft Training 2012 Работа с экземпляром класса К свойству объекта можно обратиться с помощью оператора «. » Аналогично можно вызвать метод объекта. Если метод не принимает аргументы, нужно указать (), чтоб отличить метод от свойства. Аргументы заключаются в скобки ().

34 © Luxoft Training 2012 Работа с экземпляром класса

35 © Luxoft Training 2012 Упражнение 5 Разработка приложения из 2-х классов.

36 © Luxoft Training 2012 Модуль 4 Описание класса Понятие Java-приложения Работа с экземпляром класса Понятие classpath Пакеты Java-архивы Отладка приложений

37 © Luxoft Training 2012 Понятие classpath Программа Java – это цепочка вызовов методов объектов некоторых классов, т.о. В процессе компиляции и работы программы требуется информация, где расположен байт-код необходимых классов. При запуске программы javac можно указать список путей файловой системы, где необходимо искать зависимые классы. Это спецификация путей поиска и называется classpath.

38 © Luxoft Training 2012 Понятие classpath В Windows список путей разделяется ;, в Unix : Если компилируемый java файл Person.java использует некоторые скомпилированные классы, находящиеся в c:\lib\classes, то необходимо указать компилятору данный путь через флаг -classpath javac -d bin -sourcepath src -classpath C:\lib\classes Person.java

39 © Luxoft Training 2012 Понятие classpath Аналогично можно задать classpath при запуске java приложения. Необходимые классы JVM будет искать в указанных путях. java -classpath C:\lib\classes Test Внимание! Для избегания компиляции каждого класса в отдельности, можно указать класс содержащий метод main.

40 © Luxoft Training 2012 Компиляция и выполнение

41 © Luxoft Training 2012 Модуль 4 Описание класса Понятие Java-приложения Работа с экземпляром класса Понятие classpath Пакеты Java-архивы Отладка приложений

42 © Luxoft Training 2012 Пакеты Пакет – способ организации классов. Подобно тому, как два различных файла readme.txt могут располагаться в разных директориях, java-классы тоже могут размещаться в разных директориях. Пакеты позволяют избежать коллизий классов с одинаковым именем.

43 © Luxoft Training 2012 Пакеты Для того, чтобы разместить файл HelloWorld.java в пакет world, необходимо указать имя пакета в файле с помощью ключевого слова package. Декларация пакета должна идти в самом начале файла.

44 © Luxoft Training 2012 Пакеты Для того чтобы использовать класс, необходимо указать его полное имя:

45 © Luxoft Training 2012 Пакеты Существует способ упростить способ спецификации полного имени класса, импортировав пространство имен.

46 © Luxoft Training 2012 Импорт Импорт класса не имеет ничего общего с загрузкой класса и не влияет на скорость компиляции и выполнения Можно внести все классы данного пакета в пространство имен. import package.subpackage.*;

47 © Luxoft Training 2012 Модуль 4 Описание класса Понятие Java-приложения Работа с экземпляром класса Понятие classpath Пакеты Java-архивы Отладка приложений

48 © Luxoft Training 2012 Jar-архивы Cуществует способ организации классов в zip-aрхивы для более удобного распространения группы.class файлов. Архив имеет расширения.jar. Если классы в jar-файле, то необходимо указывать имя этого файла в classpath. java –classpath c:\libs\myjar.jar thepackage.MainClass

49 © Luxoft Training 2012 Jar-архивы Для того чтобы создать Jar-файл. jar.exe cf myjar.jar MainClass.class c – создать Jar-файл f – задает имя файла

50 © Luxoft Training 2012 Jar-архивы В Jar файле можно также вручную определить специальный файл манифеста, описывающий данный JAR файл. Манифест располагается в каталогк META-INF архива. Он создается по умолчанию инструментом jar.

51 © Luxoft Training 2012 Jar-архивы Например, манифест может указывать имя класса, содержащего main (): В таком случае JVM можно запустить так: Manifest-Version: 1.0 java -jar MyJar.jar Class-Path: ojdbc14. jar Created-By: Eclipse Main-Class: MyPackage.MyClass

52 © Luxoft Training 2012 Упражнение Работа с пакетами и jar-файлами