🗊Презентация Программирование на Java. Объектная модель Java. (Лекция 3.2)

Нажмите для полного просмотра!
Программирование на Java. Объектная модель Java. (Лекция 3.2), слайд №1Программирование на Java. Объектная модель Java. (Лекция 3.2), слайд №2Программирование на Java. Объектная модель Java. (Лекция 3.2), слайд №3Программирование на Java. Объектная модель Java. (Лекция 3.2), слайд №4Программирование на Java. Объектная модель Java. (Лекция 3.2), слайд №5Программирование на Java. Объектная модель Java. (Лекция 3.2), слайд №6Программирование на Java. Объектная модель Java. (Лекция 3.2), слайд №7Программирование на Java. Объектная модель Java. (Лекция 3.2), слайд №8Программирование на Java. Объектная модель Java. (Лекция 3.2), слайд №9Программирование на Java. Объектная модель Java. (Лекция 3.2), слайд №10Программирование на Java. Объектная модель Java. (Лекция 3.2), слайд №11Программирование на Java. Объектная модель Java. (Лекция 3.2), слайд №12Программирование на Java. Объектная модель Java. (Лекция 3.2), слайд №13Программирование на Java. Объектная модель Java. (Лекция 3.2), слайд №14Программирование на Java. Объектная модель Java. (Лекция 3.2), слайд №15Программирование на Java. Объектная модель Java. (Лекция 3.2), слайд №16Программирование на Java. Объектная модель Java. (Лекция 3.2), слайд №17Программирование на Java. Объектная модель Java. (Лекция 3.2), слайд №18Программирование на Java. Объектная модель Java. (Лекция 3.2), слайд №19Программирование на Java. Объектная модель Java. (Лекция 3.2), слайд №20Программирование на Java. Объектная модель Java. (Лекция 3.2), слайд №21Программирование на Java. Объектная модель Java. (Лекция 3.2), слайд №22Программирование на Java. Объектная модель Java. (Лекция 3.2), слайд №23Программирование на Java. Объектная модель Java. (Лекция 3.2), слайд №24Программирование на Java. Объектная модель Java. (Лекция 3.2), слайд №25Программирование на Java. Объектная модель Java. (Лекция 3.2), слайд №26Программирование на Java. Объектная модель Java. (Лекция 3.2), слайд №27

Содержание

Вы можете ознакомиться и скачать презентацию на тему Программирование на Java. Объектная модель Java. (Лекция 3.2). Доклад-сообщение содержит 27 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

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


Слайд 1





 Мультимедийный курс 

Программирование на Java


Лекция 3.2

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

Слайд 2





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

Слайд 3





Пакеты
Иерархия пакетов
Задается конструкцией
package   <имя_пак.1> [ .  …  [ . <имя_пак.N> ]];

package  proj.mod3.sect1;
Пакет, входящий в иерархию, должен храниться в соответствующем подкаталоге файловой системы
<имя_пак.1> / …  / <имя_пак.N>
Описание слайда:
Пакеты Иерархия пакетов Задается конструкцией package <имя_пак.1> [ . … [ . <имя_пак.N> ]]; package proj.mod3.sect1; Пакет, входящий в иерархию, должен храниться в соответствующем подкаталоге файловой системы <имя_пак.1> / … / <имя_пак.N>

Слайд 4





Пакеты
Использование классов пакета
Варианты:
а) при обращении к классу указать реальное имя класса с учетом имени пакета
	<имя_пакета>.<имя_класса>
	class  MyDate  extends  java.util.Date;
Описание слайда:
Пакеты Использование классов пакета Варианты: а) при обращении к классу указать реальное имя класса с учетом имени пакета <имя_пакета>.<имя_класса> class MyDate extends java.util.Date;

Слайд 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() следует переопределять тогда, когда для класса существует понятие логической эквивалентности, которое не совпадает с тождественностью объектов Метод 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

Слайд 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 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; } }

Слайд 10





equals() 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="abc"; String b="abc"; String c=new StringBuffer("a").append("bc").toString(); a == b ? a.equals(b) ? a == c ? a.equals(c) ?

Слайд 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, и др.) Требования к методу: Он должен быть переопределен в каждом классе, где переопределен метод equals() При нескольких обращениях к объекту метод должен возвращать одно и то же число Если два объекта равны по результатам метода equals(), их хеш-коды тоже должны быть равны Если два объекта не равны по equals(), они не обязательно должны иметь разный хеш-код. Но это очень желательно public int hashCode(){ int result = 17; result = 37*result + areaCode; result = 37*result + extension; return result; }

Слайд 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 он формирует строку как 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) } }

Слайд 13





Класс Object
Вывод информации об объекте
System.out.Println("Объект "+х);
			
		х.toString();
Описание слайда:
Класс Object Вывод информации об объекте System.out.Println("Объект "+х); х.toString();

Слайд 14





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

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

Слайд 15





Класс Object
Клонирование объектов
Метод clone - protected
Employee orig= new Employee("Иван Иванов", 4500);
Employee copy = orig.clone();
Описание слайда:
Класс Object Клонирование объектов Метод clone - protected Employee orig= new Employee("Иван Иванов", 4500); Employee copy = orig.clone();

Слайд 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; // координаты абстрактной фигуры 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); } }

Слайд 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 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); } }

Слайд 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 x, int y, int r) { super(x, y); this.r = r; } public void print() { System.out.print(" Circle: " + x + " " + y + " " + r); } }

Слайд 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 190 Rectangle: 30 20 90 190

Слайд 22





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

      			super.<имя_поля>
Описание слайда:
Наследование Тогда объект производного класса будет содержать по два поля производное имя будет скрывать базовое Обращение из метода производного класса к полю суперкласса: super.<имя_поля>

Слайд 23





Наследование
Методы, одноименные с методами базового класса
при совпадении параметров производный метод перекроет базовый
при несовпадении параметров производный метод перегрузит базовый
Перекрытый метод - недоступен в подклассе
Перегруженный метод - виден наряду с новым методом. Вызов из метода подкласса:
    		  super.<имя_метода>()
Описание слайда:
Наследование Методы, одноименные с методами базового класса при совпадении параметров производный метод перекроет базовый при несовпадении параметров производный метод перегрузит базовый Перекрытый метод - недоступен в подклассе Перегруженный метод - виден наряду с новым методом. Вызов из метода подкласса: 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 A { { System.out.print(3); } B(){ System.out.print(4); } } Результат: "1234"

Слайд 27





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

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



Похожие презентации
Mypresentation.ru
Загрузить презентацию