Similar presentations:
Абстрактные типы
1.
Абстрактные типы2.
Пример полиморфизмаclass Stone {
double weight;
double price;
double cost() {
return price * weight;
}
}
3.
Пример полиморфизмаclass Jewel extends Stone {
double transparent;
double cost() {
return super.cost()
* transparent;
}
}
4.
Пример полиморфизмаclass RareJewel extends Jewel {
double cost() {
return super.cost()
* Math.log(Math.E
+ weight);
}
}
5.
Пример полиморфизмаstatic Stone generate() {
int t = (int)(3*Math.random());
switch(t) {
case 0:
return new Stone();
case 1:
return new Jewel();
case 2:
return new RareJewel();
}
}
6.
Пример полиморфизмаStone[] s = new Stone[25];
for(int i = 0; i < s.length; i++){
s[i] = generate();
}
for(...) {
if(s[i].cost() > s[j].cost())
}
7.
Пример абстрактного классаpublic class Circle {
private double radius;
public double area() {
return Math.PI * radius
* radius;
}
}
8.
Пример абстрактного классаpublic class Rectangle {
private double width;
private double height;
public double area() {
return width * height;
}
}
9.
Пример абстрактного классаpublic class Rectangle
extends Figure {
public double area() {/*...*/}
}
public class Circle
extends Figure {
public double area() {/*...*/}
}
10.
Пример абстрактного классаpublic class Figure {
public double area() {
/* ??? */
}
}
11.
Пример абстрактного классаpublic class Figure {
abstract public double area();
}
12.
Пример абстрактного классаabstract public class Figure {
abstract public double area();
}
13.
Абстрактные методы и классыabstract public class A {
abstract public void aaa();
abstract public void bbb();
}
14.
Абстрактные методы и классыabstract public class B
extends A {
abstract public void aaa();
public void bbb() {
/* реализация */
}
}
15.
Абстрактные методы и классыpublic class C extends B {
public void aaa() {
/* реализация */
}
}
16.
Абстрактные методы и классыA x = new A(); // ОШИБКА
B y = new B(); // ОШИБКА
C z = new C();
17.
Абстрактные методы и классыabstract public class A {
public void aaa() {
/* реализация */
}
public void bbb() {
/* реализация */
}
}
18.
Пример абстрактного класса безабстрактных методов
public class Author {
private String surname;
private String name;
private String patronymic;
private String degree;
}
19.
Пример абстрактного класса безабстрактных методов
public class Book {
private String title;
private Author author;
private Integer year;
}
20.
Пример абстрактного класса безабстрактных методов
public class Reader {
private String surname;
private String name;
private String patronymic;
private Long phone;
private String address;
}
21.
Пример абстрактного класса безабстрактных методов
public class Usage {
private Reader reader;
private Book book;
private Date issueDay;
private Date returnDay;
}
22.
Пример абстрактного класса безабстрактных методов
public class Person {
private String surname;
private String name;
private String patronymic;
}
23.
Пример абстрактного класса безабстрактных методов
public class Author extends
Person
{
private String degree;
}
24.
Пример абстрактного класса безабстрактных методов
public class Reader extends
Person
{
private Long phone;
private String address;
}
25.
Пример абстрактного класса безабстрактных методов
abstract public class Person {
private String surname;
private String name;
private String patronymic;
}
26.
Пример чтения данныхpublic class BookTxtReader {
public Book[] read() {
/* реализация */
}
}
27.
Пример чтения данныхpublic class BookDBReader {
public Book[] read() {
/* реализация */
}
}
28.
Пример чтения данныхabstract public class BookReader {
abstract public Book[] read();
}
29.
Пример чтения данныхabstract public class BookReader {
abstract public
Book[] readBooks();
abstract public
Author[] readAuthors();
}
30.
Пример чтения данныхabstract public class BookReader {
public Book[] read() {
/* readAuthors() */
/* readBooks() */
}
abstract public
Book[] readBooks();
abstract public
Author[] readAuthors();
}
31.
Пример чтения данныхabstract public class BookReader {
public final Book[] read() {
/* readAuthors() */
/* readBooks() */
}
abstract protected
Book[] readBooks();
abstract protected
Author[] readAuthors();
}
32.
Пример сортировкиpublic class ReaderSorter {
public Reader[] sort(
Reader[] readers
) {
/* реализация */
}
}
33.
Пример сортировкиpublic class ReaderSorter {
public Reader[] sortByName(
Reader[] readers
) {
/* реализация */
}
public Reader[] sortByAddress(
Reader[] readers
) {
/* реализация */
}
}
34.
Пример сортировкиabstract public
class ReaderComparator {
abstract public int compare(
Reader r1,
Reader r2
);
}
35.
Пример сортировкиpublic class ReaderSorter {
public Reader[] sort(
Reader[] readers,
ReaderComparator comparator
) {
/* начало цикла */
if(comparator
.compare(reader[i],
reader[j]) > 0) {
/* обмен */
}
/* конец цикла */
}
}
36.
Пример сортировкиpublic class ReaderByNameComparator
extends ReaderComparator {
public int compare(Reader r1,
Reader r2) {
/* реализация */
}
}
37.
Пример сортировкиpublic class ReaderByAddressComparator
extends ReaderComparator {
public int compare(Reader r1,
Reader r2) {
/* реализация */
}
}
38.
Пример сортировкиReader[] readers = /* создание массива */
ReaderSorter sorter = new ReaderSorter();
ReaderComparator comparator;
comparator = new ReaderByNameComparator();
sorter.sort(readers, comparator);
/* вывод массива readers */
comparator = new ReaderByAddressComparator();
sorter.sort(readers, comparator);
/* вывод массива readers */
39.
Пример сортировкиabstract public
class ReaderComparator {
abstract public int compare(
Reader r1,
Reader r2
);
}
40.
Пример сортировкиpublic interface ReaderComparator {
int compare(Reader r1, Reader r2);
}
41.
Пример сортировкиpublic class ReaderByNameComparator
implements ReaderComparator {
public int compare(Reader r1,
Reader r2) {
/* реализация */
}
}
42.
Пример сортировкиpublic class ReaderByAddressComparator
implements ReaderComparator {
public int compare(Reader r1,
Reader r2) {
/* реализация */
}
}
43.
Интерфейсыpublic interface A {
int x; // public final static
void test(); // abstract public
}
44.
Интерфейсыpublic interface A {
int x; // public final static
void test(); // abstract public
}
public class B implements A {}
public class C extends X
implements A {}
public class D implements A1, A2, A3 {}