Способы реализации и доступ к пакетам
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

n Пакеты могут быть реализованы:

l в виде структуры каталогов с файлами классов

l в виде jar-архива

n Путь к используемым пакетам указывается:

l непосредственно при запуске JVM с помощью ключей

l через переменную окружения CLASSPATH
(по умолчанию CLASSPATH="")

 


Понятие имени

n Имена задаются посредством идентификаторов, указывают на компоненты программы

n Пространства имен

l пакеты

l типы

l поля

l методы

l локальные переменные и параметры

l метки

n Имена типов бывают

l составные (java.lang.Double)

l простые (Double)

 

Пример зависимости имени от контекста

package Reuse;

class Reuse {

Reuse Reuse (Reuse Reuse) {

Reuse:

for(;;) {

if (Reuse.Reuse(Reuse) == Reuse)

   break Reuse;

}

return Reuse;

}

}

 

Понятие модуля компиляции

n Модуль компиляции хранится в .java файле и является единичной порцией входных данных для компилятора

n Состоит из:

l объявления пакета
(указывает принадлежность типов в модуле к пакету)
package mypackage ;

l выражений импортирования
(добавляют другие классы в область видимости)
import java . net . Socket ;
import java . io .*;

l объявлений верхнего уровня
(описания классов и интерфейсов)

 







Правила именования

n Пакеты
java . lang, javax . swing, ru . ssau . tk

n Типы
Student, ArrayIndexOutOfBoundException
Cloneable
, Runnable, Serializable

n Поля
value, enabled, distanceFromShop

n Методы
getValue, setValue, isEnabled, length, toString

n Поля-константы
PI, SIZE_MIN, SIZE_MAX, SIZE_DEF

n Локальные переменные

 

 

Вопрос 4 Описание классов. Модификаторы класса. Модификаторы доступа элементов класса. 24-25; 46-47 Лекция основные понятия и принципы ООП







Описание класса

Класс может содержать:

n поля

n методы

n вложенные классы и интерфейсы

 

public class Body {

public long idNum;

public String name;

public Body orbits;

public static long nextID = 0;

}

 

Модификаторы объявления класса

n public
Признак общедоступности класса (класс виден вне пакета)

n abstract
Признак абстрактности класса (класс не полностью реализует поведение)

n final
Завершенность класса (класс не допускает наследования)

n strictfp
Повышенные требования к операциям с плавающей точкой (результаты операций одинаковые на различных платформах)

 





Модификаторы доступа

n Ключевые слова языка

n Определяют видимость (область доступа) элементов класса

n Являются средством обеспечения инкапсуляции

n В разных языках могут присутствовать
в разном количестве

n В разных языках один и тот же модификатор может обозначать разные вещи

 


Модификаторы доступа

n private

    Доступ только в контексте класса

n          (package, default, none)

    Доступ для самого класса и классов в том же пакете

n protected

    Доступ в пределах самого класса, классов-наследников

    и классов пакета

n public

    Доступ есть всегда, когда доступен сам класс

Вопрос 5 Описание полей классов. Модификаторы полей. 26-27 Лекция основные понятия и принципы ООП

Поля класса

По сути являются переменными: обладают типом, именем и значением

n Объявление поля
[модификаторы] <тип> {<имя> [=           <инициализирующее выражение>]};

n Примеры
double sum = 2.5 + 3.7, a;
public double val = sum + 2 * Math.sqrt(2);

n Если поле явно не инициализируются, ему присваивается значение по умолчанию его типа (0, false или null)

 




Модификаторы полей класса

n модификаторы доступа

n static
поле статично (принадлежит контексту класса, а не объекта)

n final
поле не может изменять свое значение после инициализации

n transient
поле не сериализуется (влияет только на механизмы сериализации)

n volatile
усиливает требования к работе с полем в многопоточных программах

 

Вопрос 6 Описание методов классов. Модификаторы методов. 28-30  Лекция основные понятия и принципы ООП





Методы класса

n По сути являются функциями: обладают именем, параметрами и возвращаемым значением

n Объявление метода:
[модификаторы] <тип> <сигнатура> [ throws исключения] {<тело>}

n Тело метода состоит из набора инструкций

 

class Primes {

static int nextPrime(int current) {

<Вычисление простого числа в теле метода>

}

}

 


Модификаторы методов класса

n Модификаторы доступа

n abstract
абстрактность метода (метод объявляется, но тело при этом не описывается)

n static
статичность метода (метод принадлежит контексту класса, а не объекта)

n final
завершенность метода (метод не может быть переопределен при наследовании)

 




Модификаторы методов класса

n synchronized
синхронизированность метода (особенности вызова метода в многопоточных приложениях)

n native
«нативность» метода (тело метода не описывается, при вызове вызывается метод из native-библиотеки)

n strictfp
повышенные требования к операциям с плавающей точкой (результаты операций одинаковые на различных платформах)

 

 

Вопрос 7 Особенности методов, допустимые действия в методах. 31-33  Лекция основные понятия и принципы ООП




Особенности методов

n Для нестатических методов вызов через ссылку на объект или в контексте объекта
reference . method ();
methodReturningReference (). method ();

n Для статических методов вызов через имя типа, через ссылку на объект или в контексте класса
ClassName . staticMethod ();
reference . staticMethod ();
staticMethodReturningReference (). method ();

n Наличие круглых скобок при вызове обязательно, т.к. они являются оператором вызова метода

 






Особенности методов

n На время выполнения метода управление передается в тело метода

n Возвращается одно значение
return someValue ;

n Аргументы передаются по значению,
т.е. значения параметров копируются в стек:

l для примитивных типов копируются сами значения

l для ссылочных типов копируется значение ссылки

n Перегруженными являются методы
с одинаковыми именами и различными по типу списками параметров

 




Что можно делать в методе?

n Можно обращаться к данным

l Параметры метода

l Локальные переменные

l Поля объекта

l Статические поля классов

n Можно выполнять операции

n Можно объявлять переменные

n Можно создавать объекты

n Можно вызывать методы объектов и классов

 

Вопрос 8 Конструкторы в классах. 34-38 Лекция основные понятия и принципы ООП

Создание объектов

n Объявление переменной и создание объекта – различные операции

n Используется оператор new, он возвращает ссылку на объект

n После оператора указывается имя конструктора и его параметры

 

Body sun;

sun = new Body();

sun.idNum = Body.nextID++;

sun.name = "Sun";

sun.orbits = null;

Body earth = new Body();

earth.idNum = Body.nextID++;

earth.name = "Earth";

earth.orbits = sun;

 

Конструкторы

n Память для объекта выделяет оператор new

n Конструкторы предназначены для формирования начального состояния объекта

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

n Имя конструктора совпадает с именем класса

 

Особенности конструкторов

n Для конструкторов разрешено использование только модификаторов доступа

n При написании конструктор не имеет возвращаемого типа

n Оператор возврата return прекращает выполнение текущего конструктора

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

n Конструкторы могут вызывать друг друга с помощью ключевого слова this в первой строке конструктора

 

Особенности конструкторов

n Если в классе явно не описан ни один конструктор, автоматически создается т.н. конструктор по умолчанию, не имеющий параметров

n Если в классе описан хотя бы один конструктор, то автоматически конструктор по умолчанию не создается

n Также конструктором по умолчанию называют конструктор, не имеющий параметров

 

Конструкторы

class Body {

public long idNum;

public String name = "No Name";

public Body orbits = null;

private static long nextID = 0;

Body() {

idNum = nextID++;

}

Body(String name, Body orbits) {

this();

this.name = name;

this.orbits = orbits;

}

}

 

Вопрос 9 Автоматическая сборка мусора. 39-40 Лекция основные понятия и принципы ООП

Деструкторы?

 

n Явное уничтожение объектов является серьёзным источником ошибок: если после вызова деструктора где-то осталась ссылка (указатель) на объект, ее использование  и приведет к возникновению ошибки

n В Java деструкторов нет, вместо них применяется механизм автоматической сборки мусора

n Задачу высвобождения ресурсов обычно выполняет простой метод объекта  с говорящим названием (close (), dispose () и т.д.)

 

Дата: 2019-07-30, просмотров: 181.