3. Объекты, классы и пакеты в java
TRANSCRIPT
![Page 1: 3. Объекты, классы и пакеты в Java](https://reader034.vdocuments.site/reader034/viewer/2022051404/58786f1b1a28ab497b8b5ab1/html5/thumbnails/1.jpg)
Введение в ООП
Алексей Владыкин
![Page 2: 3. Объекты, классы и пакеты в Java](https://reader034.vdocuments.site/reader034/viewer/2022051404/58786f1b1a28ab497b8b5ab1/html5/thumbnails/2.jpg)
![Page 3: 3. Объекты, классы и пакеты в Java](https://reader034.vdocuments.site/reader034/viewer/2022051404/58786f1b1a28ab497b8b5ab1/html5/thumbnails/3.jpg)
![Page 4: 3. Объекты, классы и пакеты в Java](https://reader034.vdocuments.site/reader034/viewer/2022051404/58786f1b1a28ab497b8b5ab1/html5/thumbnails/4.jpg)
Объект — это мыслимая илиреальная сущность,обладающая характернымповедением и отличительнымихарактеристиками иявляющаяся важной впредметной области.
Гради Буч
![Page 5: 3. Объекты, классы и пакеты в Java](https://reader034.vdocuments.site/reader034/viewer/2022051404/58786f1b1a28ab497b8b5ab1/html5/thumbnails/5.jpg)
Client client = new Client ();
Contract contract = new Contract ();
Order order = new Order ();
![Page 6: 3. Объекты, классы и пакеты в Java](https://reader034.vdocuments.site/reader034/viewer/2022051404/58786f1b1a28ab497b8b5ab1/html5/thumbnails/6.jpg)
Client client = new Client ();
client.setName("Vasily Poupkine");
client.setBirthDate(new LocalDate (1990, 6, 13));
client.setAddress("Uryupinsk");
Order[] orders = client.getOrders ();
![Page 7: 3. Объекты, классы и пакеты в Java](https://reader034.vdocuments.site/reader034/viewer/2022051404/58786f1b1a28ab497b8b5ab1/html5/thumbnails/7.jpg)
Order order = getOrder ();
order.paymentReceived ();
order.sendToDelivery ();
order.cancel ();
![Page 8: 3. Объекты, классы и пакеты в Java](https://reader034.vdocuments.site/reader034/viewer/2022051404/58786f1b1a28ab497b8b5ab1/html5/thumbnails/8.jpg)
Client client = new VIPClient ();
client.getDeliveryPrice ();// actually VIPClient.getDeliveryPrice ()// is executed
![Page 9: 3. Объекты, классы и пакеты в Java](https://reader034.vdocuments.site/reader034/viewer/2022051404/58786f1b1a28ab497b8b5ab1/html5/thumbnails/9.jpg)
double [][] m1 = new double [3][3];double [][] m2 = new double [3][3];
// multiplyint m = m1.length;int n = m2[0]. length;int o = m2.length;double [][] res = new double[m][n];for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {for (int k = 0; k < o; k++) {
res[i][j] += m1[i][k] * m2[k][j];}
}}
![Page 10: 3. Объекты, классы и пакеты в Java](https://reader034.vdocuments.site/reader034/viewer/2022051404/58786f1b1a28ab497b8b5ab1/html5/thumbnails/10.jpg)
Matrix m1 = new FullMatrix(new double [3][3]);
Matrix m2 = new DiagonalMatrix(new double [3]);
// multiplyint m = m1.getHeight ();int n = m2.getWidth ();int o = m2.getHeight ();double [][] res = new double[m][n];for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {for (int k = 0; k < o; k++) {
res[i][j] += m1.get(i, k) * m2.get(k, j);}
}}Matrix m3 = new FullMatrix(res);
![Page 11: 3. Объекты, классы и пакеты в Java](https://reader034.vdocuments.site/reader034/viewer/2022051404/58786f1b1a28ab497b8b5ab1/html5/thumbnails/11.jpg)
Пакеты
package org.stepic.java;
public class HelloWorld {// ...
}
![Page 12: 3. Объекты, классы и пакеты в Java](https://reader034.vdocuments.site/reader034/viewer/2022051404/58786f1b1a28ab497b8b5ab1/html5/thumbnails/12.jpg)
Пакеты
package org.stepic.java.other;
import org.stepic.java.HelloWorld;
import java.util .*;
import static java.lang.Math.sqrt;
import static java.lang.System.out;
public class OtherClass {// ...
}
![Page 13: 3. Объекты, классы и пакеты в Java](https://reader034.vdocuments.site/reader034/viewer/2022051404/58786f1b1a28ab497b8b5ab1/html5/thumbnails/13.jpg)
Пакеты стандартной библиотеки
I java.langI java.ioI java.nioI java.mathI java.timeI java.utilI java.util.regexI javax.xmlI . . .
![Page 14: 3. Объекты, классы и пакеты в Java](https://reader034.vdocuments.site/reader034/viewer/2022051404/58786f1b1a28ab497b8b5ab1/html5/thumbnails/14.jpg)
Пакеты для стороннего кода
I org.stepic.javaI com.google.commonI org.apache.mavenI com.intellij.ideaI net.sf.jsonI io.nettyI . . .
![Page 15: 3. Объекты, классы и пакеты в Java](https://reader034.vdocuments.site/reader034/viewer/2022051404/58786f1b1a28ab497b8b5ab1/html5/thumbnails/15.jpg)
![Page 16: 3. Объекты, классы и пакеты в Java](https://reader034.vdocuments.site/reader034/viewer/2022051404/58786f1b1a28ab497b8b5ab1/html5/thumbnails/16.jpg)
Модификаторы доступа
public class ModifiersDemo {
public static void visibleEverywhere () {}
protected static void inSubclasses () {}
static void inPackage () {}
private static void inClass () {}}
![Page 17: 3. Объекты, классы и пакеты в Java](https://reader034.vdocuments.site/reader034/viewer/2022051404/58786f1b1a28ab497b8b5ab1/html5/thumbnails/17.jpg)
Объявление класса
package java.lang;
/*** The {@code Integer} class wraps a value of the primitive type* {@code int} in an object. An object of type {@code Integer}* contains a single field whose type is {@code int}.*/
public final class Integer {
// ...
}
![Page 18: 3. Объекты, классы и пакеты в Java](https://reader034.vdocuments.site/reader034/viewer/2022051404/58786f1b1a28ab497b8b5ab1/html5/thumbnails/18.jpg)
Поля
package java.lang;
public final class Integer {
private final int value;
// ...
}
![Page 19: 3. Объекты, классы и пакеты в Java](https://reader034.vdocuments.site/reader034/viewer/2022051404/58786f1b1a28ab497b8b5ab1/html5/thumbnails/19.jpg)
Конструкторы
package java.lang;
public final class Integer {
private final int value;
public Integer(int value) {this.value = value;
}
// ...}
![Page 20: 3. Объекты, классы и пакеты в Java](https://reader034.vdocuments.site/reader034/viewer/2022051404/58786f1b1a28ab497b8b5ab1/html5/thumbnails/20.jpg)
Конструкторы
package java.lang;
public final class Math {
/*** Don’t let anyone instantiate this class.*/
private Math() {}
// ...}
![Page 21: 3. Объекты, классы и пакеты в Java](https://reader034.vdocuments.site/reader034/viewer/2022051404/58786f1b1a28ab497b8b5ab1/html5/thumbnails/21.jpg)
Конструкторы
package java.math;
public class BigInteger {
public BigInteger(String val) {this(val , 10);
}
public BigInteger(String val , int radix) {// ...
}
}
![Page 22: 3. Объекты, классы и пакеты в Java](https://reader034.vdocuments.site/reader034/viewer/2022051404/58786f1b1a28ab497b8b5ab1/html5/thumbnails/22.jpg)
package java.io;
public class FileInputStream {
protected void finalize () {// cleanup
}
public void close() {// cleanup
}
// ...}
![Page 23: 3. Объекты, классы и пакеты в Java](https://reader034.vdocuments.site/reader034/viewer/2022051404/58786f1b1a28ab497b8b5ab1/html5/thumbnails/23.jpg)
Методы
package java.lang;
public final class Integer {
private final int value;
public int intValue () {return value;
}
// ...}
![Page 24: 3. Объекты, классы и пакеты в Java](https://reader034.vdocuments.site/reader034/viewer/2022051404/58786f1b1a28ab497b8b5ab1/html5/thumbnails/24.jpg)
Методы
package java.lang;
public final class String {
public int indexOf(int ch) {return indexOf(ch , 0);
}
public int indexOf(int ch, int fromIndex) {// ...
}
// ...}
![Page 25: 3. Объекты, классы и пакеты в Java](https://reader034.vdocuments.site/reader034/viewer/2022051404/58786f1b1a28ab497b8b5ab1/html5/thumbnails/25.jpg)
Статические поля и методы
package java.lang;
public final class Integer {
public static final int MIN_VALUE = 0x80000000;
public static int rotateRight(int i, int distance) {return (i >>> distance) | (i << -distance );
}
// ...}
![Page 26: 3. Объекты, классы и пакеты в Java](https://reader034.vdocuments.site/reader034/viewer/2022051404/58786f1b1a28ab497b8b5ab1/html5/thumbnails/26.jpg)
package java.math;
public class BigInteger {
public static final BigInteger ONE = valueOf (1);
public static BigInteger valueOf(long val) {// ...
}
// ...}
![Page 27: 3. Объекты, классы и пакеты в Java](https://reader034.vdocuments.site/reader034/viewer/2022051404/58786f1b1a28ab497b8b5ab1/html5/thumbnails/27.jpg)
Вложенные классыpackage java.util;
public class ArrayList <E> {
Object [] elementData;
public Iterator <E> iterator () {return new Itr();
}
private class Itr implements Iterator <E> {int cursor;// ...
}
// ...}
![Page 28: 3. Объекты, классы и пакеты в Java](https://reader034.vdocuments.site/reader034/viewer/2022051404/58786f1b1a28ab497b8b5ab1/html5/thumbnails/28.jpg)
Вложенные классы
package java.util;
public class Collections {
public static final List EMPTY_LIST = new EmptyList <>();
public static final <T> List <T> emptyList () {return (List <T>) EMPTY_LIST;
}
private static class EmptyList <E> {// ...
}}
![Page 29: 3. Объекты, классы и пакеты в Java](https://reader034.vdocuments.site/reader034/viewer/2022051404/58786f1b1a28ab497b8b5ab1/html5/thumbnails/29.jpg)
Перечисления
public class BadExample {public static final int MONDAY = 1;public static final int TUESDAY = 2;public static final int WEDNESDAY = 3;public static final int THURSDAY = 4;public static final int FRIDAY = 5;public static final int SATURDAY = 6;public static final int SUNDAY = 7;
}
![Page 30: 3. Объекты, классы и пакеты в Java](https://reader034.vdocuments.site/reader034/viewer/2022051404/58786f1b1a28ab497b8b5ab1/html5/thumbnails/30.jpg)
Перечисления
package java.time;
public enum DayOfWeek {MONDAY ,TUESDAY ,WEDNESDAY ,THURSDAY ,FRIDAY ,SATURDAY ,SUNDAY
}
![Page 31: 3. Объекты, классы и пакеты в Java](https://reader034.vdocuments.site/reader034/viewer/2022051404/58786f1b1a28ab497b8b5ab1/html5/thumbnails/31.jpg)
Перечисления
for (DayOfWeek day : DayOfWeek.values ()) {
System.out.println(day.ordinal () + " " + day.name ());
}
![Page 32: 3. Объекты, классы и пакеты в Java](https://reader034.vdocuments.site/reader034/viewer/2022051404/58786f1b1a28ab497b8b5ab1/html5/thumbnails/32.jpg)
Аннотации
package java.lang;
public final class Character {
@Deprecatedpublic static boolean isJavaLetter(char c) {
// ...}
@SuppressWarnings("unchecked")public static final Class <Character > TYPE =
(Class <Character >) Class.getPrimitiveClass("char");
}
![Page 33: 3. Объекты, классы и пакеты в Java](https://reader034.vdocuments.site/reader034/viewer/2022051404/58786f1b1a28ab497b8b5ab1/html5/thumbnails/33.jpg)
Аннотации
package java.lang;
import java.lang.annotation .*;import static java.lang.annotation.ElementType .*;
@Target ({TYPE , FIELD , METHOD , PARAMETER ,CONSTRUCTOR , LOCAL_VARIABLE })
@Retention(RetentionPolicy.SOURCE)public @interface SuppressWarnings {
String [] value ();
}
![Page 34: 3. Объекты, классы и пакеты в Java](https://reader034.vdocuments.site/reader034/viewer/2022051404/58786f1b1a28ab497b8b5ab1/html5/thumbnails/34.jpg)
Наследование
package java.lang;
public final class BigDecimal extends Number {
public int intValue () {// ...
}
// no shortValue () method ,// it’s inherited from Number
}
![Page 35: 3. Объекты, классы и пакеты в Java](https://reader034.vdocuments.site/reader034/viewer/2022051404/58786f1b1a28ab497b8b5ab1/html5/thumbnails/35.jpg)
Наследование
package java.lang;
public final class StringBuilderextends AbstractStringBuilder {
@Overridepublic StringBuilder append(String str) {
// ...}
// base method in AbstractStringBuilder:// AbstractStringBuilder append(String str)
}
![Page 36: 3. Объекты, классы и пакеты в Java](https://reader034.vdocuments.site/reader034/viewer/2022051404/58786f1b1a28ab497b8b5ab1/html5/thumbnails/36.jpg)
package java.lang;
public final class StringBuilderextends AbstractStringBuilder {
public StringBuilder () {super (16);
}
@Overridepublic StringBuilder append(String str) {
super.append(str);return this;
}
// ...}
![Page 37: 3. Объекты, классы и пакеты в Java](https://reader034.vdocuments.site/reader034/viewer/2022051404/58786f1b1a28ab497b8b5ab1/html5/thumbnails/37.jpg)
java.lang.Object
package java.lang;
public final class String /* extends Object */ {
// ...
}
![Page 38: 3. Объекты, классы и пакеты в Java](https://reader034.vdocuments.site/reader034/viewer/2022051404/58786f1b1a28ab497b8b5ab1/html5/thumbnails/38.jpg)
package java.lang;
public class Object {
public String toString () {return getClass (). getName () + "@"
+ Integer.toHexString(hashCode ());}
public boolean equals(Object obj) {return this == obj;
}
public native int hashCode ();
// ...}
![Page 39: 3. Объекты, классы и пакеты в Java](https://reader034.vdocuments.site/reader034/viewer/2022051404/58786f1b1a28ab497b8b5ab1/html5/thumbnails/39.jpg)
package java.lang;
public final class String {
@Overridepublic boolean equals(Object anObject) {
if (this == anObject) {return true;
}if (anObject instanceof String) {
String other = (String)anObject;// ...
}return false;
}// ...
}
![Page 40: 3. Объекты, классы и пакеты в Java](https://reader034.vdocuments.site/reader034/viewer/2022051404/58786f1b1a28ab497b8b5ab1/html5/thumbnails/40.jpg)
I Liskov Substitution Principle (LSP)
I Barbara Liskov
![Page 41: 3. Объекты, классы и пакеты в Java](https://reader034.vdocuments.site/reader034/viewer/2022051404/58786f1b1a28ab497b8b5ab1/html5/thumbnails/41.jpg)
Интерфейсы
public abstract class OrderService {
public abstract Order[] getOrdersByClient(long clientId );
}
![Page 42: 3. Объекты, классы и пакеты в Java](https://reader034.vdocuments.site/reader034/viewer/2022051404/58786f1b1a28ab497b8b5ab1/html5/thumbnails/42.jpg)
Интерфейсы
public interface OrderService {
Order[] getOrdersByClient(long clientId );
}
![Page 43: 3. Объекты, классы и пакеты в Java](https://reader034.vdocuments.site/reader034/viewer/2022051404/58786f1b1a28ab497b8b5ab1/html5/thumbnails/43.jpg)
Интерфейсы
import java.time.LocalDate;
public interface OrderService {
Order [] getOrdersByClient(long clientId );
default Order[] getOrdersByClient(long clientId , LocalDate date) {
Order [] allOrders = getOrdersByClient(clientId );Order [] orders = // ... filter by datereturn orders;
}}
![Page 44: 3. Объекты, классы и пакеты в Java](https://reader034.vdocuments.site/reader034/viewer/2022051404/58786f1b1a28ab497b8b5ab1/html5/thumbnails/44.jpg)
Интерфейсы
public class OrderServiceImplextends ServiceBaseimplements OrderService {
public Order[] getOrdersByClient(long clientId) {
// ...}
}
![Page 45: 3. Объекты, классы и пакеты в Java](https://reader034.vdocuments.site/reader034/viewer/2022051404/58786f1b1a28ab497b8b5ab1/html5/thumbnails/45.jpg)
Интерфейсы
package java.lang;
public interface CharSequence {
int length ();
char charAt(int index);
CharSequence subSequence(int start , int end);
}
![Page 46: 3. Объекты, классы и пакеты в Java](https://reader034.vdocuments.site/reader034/viewer/2022051404/58786f1b1a28ab497b8b5ab1/html5/thumbnails/46.jpg)
Интерфейсы
package java.lang;
public interface Appendable {
Appendable append(CharSequence csq);
Appendable append(CharSequence csq ,int start , int end);
Appendable append(char c);}
![Page 47: 3. Объекты, классы и пакеты в Java](https://reader034.vdocuments.site/reader034/viewer/2022051404/58786f1b1a28ab497b8b5ab1/html5/thumbnails/47.jpg)
Интерфейсы
package java.lang;
@FunctionalInterfacepublic interface Runnable {
void run();}
![Page 48: 3. Объекты, классы и пакеты в Java](https://reader034.vdocuments.site/reader034/viewer/2022051404/58786f1b1a28ab497b8b5ab1/html5/thumbnails/48.jpg)
Интерфейсы
package java.lang;
@FunctionalInterfacepublic interface Comparator <T> {
int compare(T o1, T o2);}