Classes and Objects
CS 240 – Advanced Programming Concepts
Classes and Objects Overview
Topics
Class Example
package SimpleClassExample;��import java.util.Date;��public class Person {�� private String firstName;� private String lastName;� private Date birthDate;�� public String getFirstName() {� return firstName;� }�� public void setFirstName(String firstName) {� this.firstName = firstName;� }��
public String getLastName() {� return lastName;� }�� public void setLastName(String lastName) {� this.lastName = lastName;� }�� public Date getBirthDate() {� return birthDate;� }�� public void setBirthDate(Date birthDate) {� this.birthDate = birthDate;� }�}
Classes and Objects Introduction
BLANK SLIDE
Object References
Object References Diagram
Stack or Heap
dt
0x123
Heap
day
1
month
1
year
2018
Date dt;
dt = new Date();
Object References
Reference Equality vs. Object Equality
Reference Equality
Person p1 = new Person();�p1.setFirstName("Jerod");�p1.setLastName("Wilkerson");��Person p2 = p1;��if(p1 == p2){� // True or False?�}��p2 = new Person();�p2.setFirstName("Jerod");�p2.setLastName("Wilkerson");��if(p1 == p2){� // True or False?�}�
Object Equality
Person p1 = new Person();�p1.setFirstName("Jerod");�p1.setLastName("Wilkerson");��Person p2 = p1;��if(p1.equals(p2)){� // True or False?�}��p2 = new Person();�p2.setFirstName("Jerod");�p2.setLastName("Wilkerson");��if(p1.equals(p2)){� // True or False?�}�
Citations (Object References)
Citations (Object References)
Diagrams created by Jerod Wilkerson
Static Variables and Methods
Instance vs. Static Variables
Instance Variables
Static Variables
Instance vs. Static Methods
Instance Methods
Static Methods
Static Method Example (won’t work)
public class StaticExampleWrong1 {�� private int myInstanceVariable;�� public static void main(String [] args) {� myInstanceVariable = 10;� myInstanceMethod();� }�� public void myInstanceMethod() {�� }�}
Static Example (will work, but still wrong)
public class StaticExampleWrong2 {�� private static int myInstanceVariable;�� public static void main(String [] args) {� myInstanceVariable = 10;� myInstanceMethod();� }�� public static void myInstanceMethod() {�� }�}
Static Example (right way)
public class StaticExample3 {�� private int myInstanceVariable;�� public static void main(String [] args) {� StaticExample3 instance = new StaticExample3();� instance.myInstanceVariable = 10;� instance.myInstanceMethod();� }�� public void myInstanceMethod() {�� }�}
BLANK SLIDE
Accessors and Mutators
(Getters and Setters)
Getters / Setters (Accessors / Mutators)
BLANK SLIDE
Constructor Methods
Constructors
BLANK SLIDE
Inheritance
Inheritance
BLANK SLIDE
Method Overriding
Method Overriding
Common Methods to Override
BLANK SLIDE
Implementing a Hashcode Method
The hashCode() Method
The general contract of hashCode :
Implementing a HashCode() Method
hashCode() Method Example
public int hashCode() {
int hash = 7;
hash = 31 * hash + (int) id;
hash = 31 * hash + (name == null ? 0 : name.hashCode());
hash = 31 * hash + (email == null ? 0 : email.hashCode());
return hash;
}
Source: Guide to hashCode() in Java
BLANK SLIDE
Method Overloading
Method Overloading
public class PrintWriter extends Writer {
public void print(boolean)
public void print(char)
public void print(char[])
public void print(double)
public void print(float)
public void print(int)
public void print(long)
public void print(Object)
public void print(String)
public void println(boolean)
public void println(char)
…
}
BLANK SLIDE
The Final Keyword
Creating constants and non-virtual methods
Final
BLANK SLIDE
The 'this' Reference
The ‘this’ Reference
BLANK SLIDE
Enums
Enums
public enum Gender {� Male, Female;�� @Override� public String toString() {� return this == Male ? "m" : "f";� }� }
Enum Example
Without Enum
public class Person {� private String firstName;� private String lastName;� private String gender;�� …�� // Problem: Gender can be set to any
// String, even if we only consider m and f
//to be valid� public void setGender(String gender) {� this.gender = gender;� }�}
With Enum
public class Person {� private String firstName;� private String lastName;� private Gender gender;�� …�� // Problem solved. Now gender can only
// be set to Gender.Male or
//Gender.Female� public void setGender(Gender gender) {� this.gender = gender;� }�}
BLANK SLIDE
Object-Oriented Design Overview
Object-Oriented Design
Class Design Guidelines
Standard Class Structure
public class MyClass {
// Static Variables
// Instance Variables
// Main Method (if it exists)
// Constructors
// Methods
// (grouped by functionality, not by accessibility, not by static vs
// instance, etc)
}
BLANK SLIDE