Top Banner
Object-Oriented Design and Programming (Java)
37

Object-Oriented Design and Programming (Java). 2 Topics Covered Today 2.1 Implementing Classes –2.1.3 Method equals and Method toString –1.2.6 Implementing.

Jan 18, 2016

Download

Documents

Gyles Miles
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Object-Oriented Design and Programming (Java). 2 Topics Covered Today 2.1 Implementing Classes –2.1.3 Method equals and Method toString –1.2.6 Implementing.

Object-Oriented Design and Programming (Java)

Page 2: Object-Oriented Design and Programming (Java). 2 Topics Covered Today 2.1 Implementing Classes –2.1.3 Method equals and Method toString –1.2.6 Implementing.

2

Topics Covered Today

• 2.1 Implementing Classes – 2.1.3 Method equals and Method toString – 1.2.6  Implementing Classes the Library System

Page 3: Object-Oriented Design and Programming (Java). 2 Topics Covered Today 2.1 Implementing Classes –2.1.3 Method equals and Method toString –1.2.6 Implementing.

3

The Object Class

• Java defines the class java.lang.Object that is defined as a superclass for all classes.

• If a class doesn’t specify explicitly which class it is derived from, then it will be implicitly derived from class Object.

• So, in the previous example, Employee was derived from Person which in turn was derived from Object.

Page 4: Object-Oriented Design and Programming (Java). 2 Topics Covered Today 2.1 Implementing Classes –2.1.3 Method equals and Method toString –1.2.6 Implementing.

4

Person

Employee

Object

Class Hierarchy Diagram

Page 5: Object-Oriented Design and Programming (Java). 2 Topics Covered Today 2.1 Implementing Classes –2.1.3 Method equals and Method toString –1.2.6 Implementing.

5

Method toString in Object Class

• The Object class defines a set of methods that are inherited by all classes.

• One of these is the toString() method that is used whenever we want to get a String representation of an object.

• The version of toString method defined in class Object returns a String with the following format: ClassName@number

• When you define a new class, you can override the toString() method in order to have a suitable representation of the new type of objects as Strings.

Page 6: Object-Oriented Design and Programming (Java). 2 Topics Covered Today 2.1 Implementing Classes –2.1.3 Method equals and Method toString –1.2.6 Implementing.

6

Point

public class Point { private int x,y;

public Point(int initialX, int initialY) {x = initialX;y = initialY;

}public int getX() { return x; }public int getY() { return y; }

public String toString() {return "(" + getX() + "," + getY() + ")";

} }

Page 7: Object-Oriented Design and Programming (Java). 2 Topics Covered Today 2.1 Implementing Classes –2.1.3 Method equals and Method toString –1.2.6 Implementing.

7

Method toString

Point pointOne = new Point(10, 100);

Point pointTwo = new Point(-20, 200);

Point pointThree = new Point(50, -500);

System.out.println(pointOne);

System.out.println(pointTwo);

System.out.println(pointThree);

System.out.println();

Output :(10,100)

(-20,200)

(50,-500)

Page 8: Object-Oriented Design and Programming (Java). 2 Topics Covered Today 2.1 Implementing Classes –2.1.3 Method equals and Method toString –1.2.6 Implementing.

8

Method equals

• In JAVA, all classes inherit the equals() method of Object class.

• This default implementation is exactly the same as obj1 == obj2 (compare pointers)

• boolean equals(Object obj)

Page 9: Object-Oriented Design and Programming (Java). 2 Topics Covered Today 2.1 Implementing Classes –2.1.3 Method equals and Method toString –1.2.6 Implementing.

9

Compare Point objectsPoint pointOne = new Point(10, 100);

Point pointTwo = new Point(10, 100);

Point pointThree = pointOne;

if (pointOne.equals(pointTwo)) {

System.out.println("pointOne and pointTwo are equal");

} else {

System.out.println("pointOne and pointTwo are different");

}

if (pointOne.equals(pointThree)) {

System.out.println("pointOne and pointThree are equal");

} else {

System.out.println("pointOne and pointThree are different");}

Page 10: Object-Oriented Design and Programming (Java). 2 Topics Covered Today 2.1 Implementing Classes –2.1.3 Method equals and Method toString –1.2.6 Implementing.

10

Compare Point objects

pointOne pointTwo pointThree(null) (null)

Point pointOne = new Point(10, 100);Point pointTwo = new Point(10, 100);

Point pointThree = pointOne;

Page 11: Object-Oriented Design and Programming (Java). 2 Topics Covered Today 2.1 Implementing Classes –2.1.3 Method equals and Method toString –1.2.6 Implementing.

11

Compare Point objects

pointOnepointThree(null)

Point pointOne = new Point(10, 100);Point pointTwo = new Point(10, 100);

Point pointThree = pointOne;

pointTwo

Page 12: Object-Oriented Design and Programming (Java). 2 Topics Covered Today 2.1 Implementing Classes –2.1.3 Method equals and Method toString –1.2.6 Implementing.

12

Compare Point objects

pointOnepointThree

Point pointOne = new Point(10, 100);Point pointTwo = new Point(10, 100);

Point pointThree = pointOne;

pointTwo

Page 13: Object-Oriented Design and Programming (Java). 2 Topics Covered Today 2.1 Implementing Classes –2.1.3 Method equals and Method toString –1.2.6 Implementing.

13

Compare Point objects

Point pointOne = new Point(10, 100);Point pointTwo = new Point(10, 100);

Point pointThree = pointOne;

pointOne

pointThree X=10Y=100

pointTwo

X=10Y=100

Page 14: Object-Oriented Design and Programming (Java). 2 Topics Covered Today 2.1 Implementing Classes –2.1.3 Method equals and Method toString –1.2.6 Implementing.

14

Override method equals

public boolean equals(Object object) {

if (object instanceof Point) {

Point point = (Point) object;

return point.getX() == getX() &&

point.getY() == getY();

} else {

return false;

} }

• 在大部分类中继承自 Object 类的 equals() 方法都不太适用,因此每个类都需要重写该方法;

• 该方法比较两个对象,只有当两个对象的状态都一样时,返回 true ;

Page 15: Object-Oriented Design and Programming (Java). 2 Topics Covered Today 2.1 Implementing Classes –2.1.3 Method equals and Method toString –1.2.6 Implementing.

15

Override method equals

Point pointOne = new Point(10, 100);

Point pointTwo = new Point(10, 100);

Point pointThree = new Point(50, 500);

if (pointOne.equals(pointTwo)) {

System.out.println("pointOne and pointTwo are equal");

} else {

System.out.println("pointOne and pointTwo are different");

}

if (pointOne.equals(pointThree)) {

System.out.println("pointOne and pointThree are equal");

} else {

System.out.println("pointOne and pointThree are different");

}

Page 16: Object-Oriented Design and Programming (Java). 2 Topics Covered Today 2.1 Implementing Classes –2.1.3 Method equals and Method toString –1.2.6 Implementing.

overload和override的区别

16

override (重写) 1 、方法名、参数、返回值相同。2 、子类方法不能缩小父类方法的访问权限。3 、子类方法不能抛出比父类方法更多的异常 ( 但子类方法可以不抛出异常 ) 。4 、存在于父类和子类之间。5 、方法被定义为 final 不能被重写。

overload (重载)1 、参数类型、个数、顺序至少有一个不相同。 2 、不能重载只有返回值不同的方法名。3 、存在于父类和子类、同类中。

Page 17: Object-Oriented Design and Programming (Java). 2 Topics Covered Today 2.1 Implementing Classes –2.1.3 Method equals and Method toString –1.2.6 Implementing.

17

1.2.6  Implementing Classes the Library System

Page 18: Object-Oriented Design and Programming (Java). 2 Topics Covered Today 2.1 Implementing Classes –2.1.3 Method equals and Method toString –1.2.6 Implementing.

18

Part of Class Diagram

Page 19: Object-Oriented Design and Programming (Java). 2 Topics Covered Today 2.1 Implementing Classes –2.1.3 Method equals and Method toString –1.2.6 Implementing.

19

Class CatalogItempublic class CatalogItem { /* Code of the item. */ private String code;

/* Title of the item. */ private String title;

/* Year the item was published. */ private int year;

/* Indicates if the item is available */

private boolean available;

Page 20: Object-Oriented Design and Programming (Java). 2 Topics Covered Today 2.1 Implementing Classes –2.1.3 Method equals and Method toString –1.2.6 Implementing.

20

Class CatalogItem /**

* Constructs a <code>CatalogItem</code> object.

* <p>

* Sets the instance variable <code>available</code>

* to <code>true</code>.

* <p>

*

* @param initialCode the code of the item.

* @param initialTitle the title of the item.

* @param initialyear the year the item was published.

*/

public CatalogItem(String initialCode, String initialTitle, int initialyear) {

code = initialCode;

title = initialTitle;

year = initialyear;

available = true;

}

Page 21: Object-Oriented Design and Programming (Java). 2 Topics Covered Today 2.1 Implementing Classes –2.1.3 Method equals and Method toString –1.2.6 Implementing.

21

Class CatalogItem/*** Returns the code of this item.

* * @return the code of this item. */

public String getCode() { return code;}

/** * Returns the title of this item. * * @return the title of this item. */

public String getTitle() { return title; }

/** * Returns the year this item was published. * * @return the year this item was published. */

public int getYear() { return year; }

Page 22: Object-Oriented Design and Programming (Java). 2 Topics Covered Today 2.1 Implementing Classes –2.1.3 Method equals and Method toString –1.2.6 Implementing.

22

Class CatalogItem/**

* Sets the value of instance variable <code>available</code>. * * @param value the new value. */ public void setAvailable(boolean value) {

available = value;}

/** * Returns <code>true</code> if the item is available. * * @return <code>true</code> if the item is available; * <code>false</code> otherwise. */ public boolean isAvailable() { return available; }

Page 23: Object-Oriented Design and Programming (Java). 2 Topics Covered Today 2.1 Implementing Classes –2.1.3 Method equals and Method toString –1.2.6 Implementing.

23

Class CatalogItem /**

* Returns <code>true</code> if the code of this catalog item

* is equal to the code of the argument

* </p>

*

* @param object object with which this catalog item is compared.

* @return <code>true</code> if the code of this catalog item is

* equal to the code of the argument; <code>false</code>

* otherwise.

*/

public boolean equals(Object object) {

return object instanceof CatalogItem &&

getCode().equals(((CatalogItem) object).getCode());

}

Page 24: Object-Oriented Design and Programming (Java). 2 Topics Covered Today 2.1 Implementing Classes –2.1.3 Method equals and Method toString –1.2.6 Implementing.

24

Class CatalogItem/**

* Returns the string representation of this catalog item.

*

* @return the string representation of this catalog item.

*/

public String toString() {

return getCode() + "_" + getTitle() + "_" + getYear() + "_" + isAvailable();

}

}

Page 25: Object-Oriented Design and Programming (Java). 2 Topics Covered Today 2.1 Implementing Classes –2.1.3 Method equals and Method toString –1.2.6 Implementing.

25

Class Bookpublic class Book extends CatalogItem { /* Author of the book.*/ private String author;

/* Number of pages in the book.*/ private int numberOfPages;

Page 26: Object-Oriented Design and Programming (Java). 2 Topics Covered Today 2.1 Implementing Classes –2.1.3 Method equals and Method toString –1.2.6 Implementing.

26

Class Book /** * Constructs a <code>Book</code> object.

* * @param initialCode the code of the book. * @param initialTitle the title of the book. * @param initialYear the year the book was published. * @param initialAuthor the author of the book. * @param initialNumberOfPages the number of pages in the book. */ public Book(String initialCode, String initialTitle, int initialYear, String initialAuthor, int initialNumberOfPages) { super(initialCode, initialTitle, initialYear); author = initialAuthor; numberOfPages = initialNumberOfPages; }

Page 27: Object-Oriented Design and Programming (Java). 2 Topics Covered Today 2.1 Implementing Classes –2.1.3 Method equals and Method toString –1.2.6 Implementing.

27

Class Book/*** Returns the author of this book.*

* @return the author of this book. */ public String getAuthor() {

return author;}

/** * Returns the number of pages in this book. * * @return the number of pages in this book. */

public int getNumberOfPages() { return numberOfPages; }

Page 28: Object-Oriented Design and Programming (Java). 2 Topics Covered Today 2.1 Implementing Classes –2.1.3 Method equals and Method toString –1.2.6 Implementing.

28

Class Book/**

* Returns the string representation of this book. * * @return the string representation of this book. */ public String toString() {

return super.toString() + "_" + getAuthor() + "_" + getNumberOfPages();

}}

Page 29: Object-Oriented Design and Programming (Java). 2 Topics Covered Today 2.1 Implementing Classes –2.1.3 Method equals and Method toString –1.2.6 Implementing.

29

Class Recording/** * This class models a recording. It extends {@link CatalogItem} and * adds the following information: * <ol> * <li>the performer of the recording, a <code>String</code></li> * <li>the format of the recording, a <code>String</code></li> * </ol> * * @author author name * @version 1.0.0 * @see CatalogItem */public class Recording extends CatalogItem { /* Performer of the recording. */ private String performer;

/* Format of the recording. */ private String format;

Page 30: Object-Oriented Design and Programming (Java). 2 Topics Covered Today 2.1 Implementing Classes –2.1.3 Method equals and Method toString –1.2.6 Implementing.

30

Class Recording/**

* Constructs an <code>Recording</code> object. * * @param initialCode the code of the catalog item. * @param initialTitle the title of the catalog item. * @param initialYear the year of the catalog item. * @param initialPerformer the performer of the recording. * @param initialFormat the format of the recording. */

public Recording(String initialCode, String initialTitle, int initialYear, String initialPerformer, String initialFormat) {

super(initialCode, initialTitle, initialYear); performer = initialPerformer; format = initialFormat; }

Page 31: Object-Oriented Design and Programming (Java). 2 Topics Covered Today 2.1 Implementing Classes –2.1.3 Method equals and Method toString –1.2.6 Implementing.

31

Class Recording/*** Returns the performer of this recording.

* * @return the performer of this recording. */ public String getPerformer() { return performer; }

/** * Returns the format of this recording. * * @return the format of this recording. */ public String getFormat() { return format; }

Page 32: Object-Oriented Design and Programming (Java). 2 Topics Covered Today 2.1 Implementing Classes –2.1.3 Method equals and Method toString –1.2.6 Implementing.

32

Class Recording/**

* Returns the string representation of this recording. * * @return the string representation of this recording. */ public String toString() { return super.toString() + "_" + getPerformer() + "_“ + getFormat(); }}

Page 33: Object-Oriented Design and Programming (Java). 2 Topics Covered Today 2.1 Implementing Classes –2.1.3 Method equals and Method toString –1.2.6 Implementing.

33

Class Borrower/** * This class models a library user. It contains the following * information: * <ol> * <li>the id of the borrower, a <code>String</code></li> * <li>the name of the borrower, a <code>String</code></li> * </ol> * * @author author name * @version 1.0.0 */public class Borrower { /* Identification number of the borrower.*/ private String id;

/* Name of the borrower.*/ private String name;

Page 34: Object-Oriented Design and Programming (Java). 2 Topics Covered Today 2.1 Implementing Classes –2.1.3 Method equals and Method toString –1.2.6 Implementing.

34

Class Borrower /**

* Constructs a <code>Borrower</code> object. * * @param initialId the identification number of the borrower. * @param initialName the name of the borrower. */ public Borrower(String initialId, String initialName) {

id = initialId; name = initialName;

}

Page 35: Object-Oriented Design and Programming (Java). 2 Topics Covered Today 2.1 Implementing Classes –2.1.3 Method equals and Method toString –1.2.6 Implementing.

35

Class Borrower /** * Returns the identification number of this borrower.

* * @return the identification number of this borrower. */ public String getId() { return id; } /** * Returns the name of this borrower. * * @return the name of this borrower. */ public String getName () { return name; }

Page 36: Object-Oriented Design and Programming (Java). 2 Topics Covered Today 2.1 Implementing Classes –2.1.3 Method equals and Method toString –1.2.6 Implementing.

36

Class Borrower /**

* Returns <code>true</code> if the id of this borrower is * equal to the id of the argument. * </p> * * @param object object with which this borrower is compared. * @return <code>true</code> if the id of this borrower is * equal to the id of the argument; <code>false</code> * otherwise. */ public boolean equals(Object object) { return object instanceof Borrower && getId().equals(((Borrower) object).getId()); }

Page 37: Object-Oriented Design and Programming (Java). 2 Topics Covered Today 2.1 Implementing Classes –2.1.3 Method equals and Method toString –1.2.6 Implementing.

37

Class Borrower /**

* Returns the string representation of this borrower. * * @return the string representation of this borrower. */ public String toString() { return getId() + "_" + getName(); }}