Разделы презентаций


Мультимедийный курс Программирование на Java

Содержание

ПакетыПакет - некоторый набор родственных (связанных) классов (аналог подкаталога жесткого диска)служит для управления видимостьюпозволяет разделить пространство именСоздание пакетаВначале файла исходного текста (можно после комментариев) включается операторpackage ;при отсутствии такого оператора классы

Слайды и текст этой презентации

Слайд 1 Мультимедийный курс Программирование на Java

Лекция 3.2

Объектная модель JAVA (ч.

2)


Пакеты
Класс Object
Наследование

Мультимедийный курс   Программирование на Java Лекция 3.2Объектная модель JAVA (ч. 2)ПакетыКласс ObjectНаследование

Слайд 2Пакеты
Пакет - некоторый набор родственных (связанных) классов (аналог подкаталога жесткого

диска)
служит для управления видимостью
позволяет разделить пространство имен
Создание пакета
Вначале файла исходного

текста (можно после комментариев) включается оператор
package <имя_пакета >;
при отсутствии такого оператора классы файла относят к пакету без имени
на один и тот же пакет могут ссылаться разные файлы. Все они должны находиться в одном каталоге



ПакетыПакет - некоторый набор родственных (связанных) классов (аналог подкаталога жесткого диска)служит для управления видимостьюпозволяет разделить пространство именСоздание

Слайд 3Пакеты
Иерархия пакетов
Задается конструкцией
package [ . … [ .

]];

package proj.mod3.sect1;

Пакет, входящий в иерархию, должен храниться в соответствующем

подкаталоге файловой системы
<имя_пак.1> / … / <имя_пак.N>




ПакетыИерархия пакетовЗадается конструкциейpackage  [ . … [ . ]];package proj.mod3.sect1;Пакет, входящий в иерархию, должен храниться в

Слайд 4Пакеты
Использование классов пакета
Варианты:
а) при обращении к классу указать реальное имя

класса с учетом имени пакета .
class MyDate extends java.util.Date;


ПакетыИспользование классов пакетаВарианты:а) при обращении к классу указать реальное имя класса с учетом имени пакета 	.	class MyDate

Слайд 5Пакеты
Использование классов пакета
б) использовать оператор импорта пакета
import .; или
import .*;
Примеры:
import

java.util.Date;
import java.io.*;

ПакетыИспользование классов пакетаб) использовать оператор импорта пакета		import .;				или		 import .*;Примеры:import java.util.Date;		import java.io.*;

Слайд 6Класс Object
Все классы Java (даже массивы) происхо-дят от суперкласса java.lang.Object



Методы класса Object
методы поддержки многопоточности
прикладные методы

Класс ObjectВсе классы Java (даже массивы) происхо-дят от суперкласса java.lang.Object Методы класса Object методы поддержки многопоточностиприкладные методы

Слайд 7Класс Object
Прикладные методы

Класс ObjectПрикладные методы

Слайд 8Метод boolean equals(Object obj)
Метод equals() следует переопределять тогда, когда для

класса существует понятие логической эквивалентности, которое не совпадает с тождественностью

объектов

Метод equals должен удовлетворять следующим требованиям:
Рефлексивность. x.equals(x) всегда должно быть true.
Симметричность. Если x.equals(y) == true, то и y.equals(x) должно быть true
Транзитивность. Если x.equals(y) == true, y.equals(z) == true то и x.equals(z) должно быть true
Непротиворечивость. x.equals(null) всегда должно возвращать false
Метод boolean equals(Object obj)	Метод equals() следует переопределять тогда, когда для класса существует понятие логической эквивалентности, которое не

Слайд 9Метод boolean equals(Object obj). Пример
public class Point {
private

final int x;
private final int y;
public

Point(int x, int y){
this.x = x;
this.y = y;
}

public boolean equals(Object obj){
if (obj == this){
return true;
}
if (!(obj instanceof Point)){
return false;
}
Point p = (Point)obj;
return p.x == x && p.y == y;
}
}
Метод boolean equals(Object obj). Примерpublic class Point {  private final int x;  private final int

Слайд 10equals() vs. ==
String a="abc";
String b="abc";
String c=new StringBuffer("a").append("bc").toString();

a == b ?

a.equals(b) ?
a == c ? a.equals(c) ?
equals() vs. ==String a=

Слайд 11Метод hashCode()
Метод int hashCode() применяется при построении хеш-таблиц (HashSet, HashMap,

и др.)

Требования к методу:
Он должен быть переопределен в каждом классе,

где переопределен метод equals()
При нескольких обращениях к объекту метод должен возвращать одно и то же число
Если два объекта равны по результатам метода equals(), их хеш-коды тоже должны быть равны
Если два объекта не равны по equals(), они не обязательно должны иметь разный хеш-код. Но это очень желательно

public int hashCode(){
int result = 17;
result = 37*result + areaCode;
result = 37*result + extension;
return result;
}
Метод hashCode()Метод int hashCode() применяется при построении хеш-таблиц (HashSet, HashMap, и др.)Требования к методу:Он должен быть переопределен

Слайд 12Метод toString()
Метод toString() возвращает строковое представление объекта

Желательно, чтобы все классы

переопределяли этот метод

В классе Object он формирует строку как
getClass().getName() +

'@' + Integer.toHexString(hashCode())

Этот метод вызывается при конкатенации строк, если указывается ссылка на объект, а также при печати объекта на консоль
public class Point {
private int x, y;
Point(int x, int y){
this.x= x;
this.y= y;
}
public String toString(){
return x+", "+ y + ")";
}
public static void main(String[] args){
System.out.println(new Point(1, 3)); // Распечатает (1, 3)
String str = "Point " + new Point(2, 3);
System.out.println(str); // Распечатает Point (2, 3)
}
}
Метод toString()Метод toString() возвращает строковое представление объектаЖелательно, чтобы все классы переопределяли этот методВ классе Object он формирует

Слайд 13Класс Object
Вывод информации об объекте

System.out.Println("Объект "+х);

х.toString();

Класс ObjectВывод информации об объектеSystem.out.Println(

Слайд 14Метод finalize()
Метод finalize() вызывается сборщиком мусора непосредственно перед удалением объекта

Как

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

Он не должен содержать

никаких критических по времени операций, поскольку время удаления объекта не регламентировано

На практике вместо того, чтобы помещать всю логику по освобождению ресурсов в этот метод, используйте метод прямого завершения (пример - метод close() у java.io.OutputStream)

Метод finalize() следует применять только в качестве запасного варианта для освобождения ресурсов (проверять, был ли вызван метод прямого завершения, и если нет – вызывать его)
Метод finalize()Метод finalize() вызывается сборщиком мусора непосредственно перед удалением объектаКак правило, используется для освобождения ресурсов, используемых объектомОн

Слайд 15Класс Object
Клонирование объектов
Метод clone - protected

Employee orig= new Employee("Иван Иванов",

4500);
Employee copy = orig.clone();

Ссылка на подобъект едина для оригинала и

клонированного объекта !!!
Класс ObjectКлонирование объектовМетод clone - protectedEmployee orig= new Employee(

Слайд 16Наследование
Наследование – использование одним классом структуры или поведения другого

класса (одиночное наследование)

Наследование способствует
созданию иерархических классификаций
уменьшению количества кода,

созданного для описания схожих сущностей,
написанию более эффективного и гибкого кода

Суперкласс – унаследованный класс
Подкласс – специализированная версия суперкласса, которая, обычно, дополняет или переопределяют унаследованную структуру и поведение
Наследование Наследование – использование одним классом структуры или поведения другого класса (одиночное наследование) Наследование способствует созданию иерархических

Слайд 17Наследование
Объявление наследования:
в определение подкласса включается
extends

Пример:
class

Rect extends Figure{

}

Наследование Объявление наследования:	в определение подкласса включается   extends Пример:class Rect extends Figure{ …}

Слайд 18Наследование
Пример.
// Суперкласс
class Figure {
int x, y;

// координаты абстрактной фигуры
public Figure(int x,

int y) {
this.x = x;
this.y = y;
}
public void move (int dx, int dy) { // передвижение фиг.
x += dx;
y += dy;
}
public void print() {
System.out.print("Figure: " + x + " " + y);
}
}
Наследование Пример. // Суперклассclass Figure {	int x, y;       // координаты абстрактной

Слайд 19Наследование

// Подкласс - прямоугольник
class Rect extends Figure{
int w, h;

// ширина и высота
public Rect(int x1, int

y1, int x2, int y2) {
super(x1, y1);
this.w = x2 - x1;
this.h = y2 - y1;
}
public void print() {
System.out.print("Rectangle: " + x + " " + y + " " + w + " " + h);
}
}
Наследование// Подкласс - прямоугольникclass Rect extends Figure{	int w, h;    // ширина и высота 	public

Слайд 20Наследование
// Подкласс - окружность
class Circle extends Figure{
int r;

// радиус
public Circle(int x, int y,

int r) {
super(x, y);
this.r = r;
}
public void print() {
System.out.print(" Circle: " + x + " " + y + " " + r);
}
}
Наследование//  Подкласс - окружность class Circle extends Figure{	int r;     // радиус	public Circle(int

Слайд 21Наследование
Созданная структура классов






...
Rect rect = new Rect(10,10,100,200);
rect.print();
rect.move(20,10);
rect.print();

Результат
Rectangle: 10

10 90 190
Rectangle: 30 20 90 190

НаследованиеСозданная структура классов  ...Rect rect = new Rect(10,10,100,200);rect.print();rect.move(20,10);rect.print();… РезультатRectangle: 10 10 90 190Rectangle: 30 20 90

Слайд 22Наследование
Тогда
объект производного класса будет содержать по два поля
производное имя

будет скрывать базовое

Обращение из метода производного класса к полю суперкласса:


super.<имя_поля>

В производном классе можно объявлять поля, одноименные с полями базового класса

НаследованиеТогда объект производного класса будет содержать по два поляпроизводное имя будет скрывать базовоеОбращение из метода производного класса

Слайд 23Наследование
Методы, одноименные с методами базового класса
при совпадении параметров производный метод

перекроет базовый
при несовпадении параметров производный метод перегрузит базовый
Перекрытый метод -

недоступен в подклассе
Перегруженный метод - виден наряду с новым методом. Вызов из метода подкласса: super.<имя_метода>()
НаследованиеМетоды, одноименные с методами базового классапри совпадении параметров производный метод перекроет базовыйпри несовпадении параметров производный метод перегрузит

Слайд 24Наследование
Последовательность вызова конструкторов

Инструкции инициализации суперкласса
Конструктор суперкласса
Инструкции инициализации объекта-потомка
Код конструктора-потомка

НаследованиеПоследовательность вызова конструкторовИнструкции инициализации суперкласса Конструктор суперклассаИнструкции инициализации объекта-потомкаКод конструктора-потомка

Слайд 25Наследование

Вызов (при необходимости) конструктора суперкласса

super ()

Наследование Вызов (при необходимости) конструктора суперкласса 		super ()

Слайд 26Наследование
Пример. Иллюстрация последовательности действий при конструировании объекта:

B b1=new B();

class A

{
{ System.out.print(1); }
A(){ System.out.print(2); }
}
class B extends A {
{ System.out.print(3);

}
B(){ System.out.print(4); }
}
Результат: "1234"
НаследованиеПример. Иллюстрация последовательности действий при конструировании объекта:…B b1=new B();…class A {	{ System.out.print(1); }	A(){ System.out.print(2); }}class B extends

Слайд 27Наследование
Преобразование между типами, связанными отношением наследования
1) восходящее: от

подкласса к суперклассу - выполняется неявно
2) нисходящее:

от суперкласса к подклассу - выполняется при помощи операции приведения типа:
D d= (D) z;
Проверка допустимости преобразования:
оператор instanceof

// B - базовый класс D - производный класс
B b = new D();
D d;
if (b instanceof D)
d = (D) b;
НаследованиеПреобразование между типами, связанными отношением наследования  1) восходящее: от подкласса к суперклассу -  выполняется неявно

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика