JAVA Programming Practice OOP Class and...

57
JAVA Programming Practice OOP Class and Method What is OOP? Defining Classes Using Classes References vs. Values Encapsulate 1 Prof. Hwansoo Han T.A. Minseop Jeong T.A. Hwiwon Kim

Transcript of JAVA Programming Practice OOP Class and...

Page 1: JAVA Programming Practice OOP Class and Methodarcs.skku.edu/pmwiki/uploads/Courses/SWPractice1/04... · 2020-03-31 · JAVA Programming Practice OOP ± Class and Method What is OOP?

JAVA Programming Practice

OOP – Class and Method

What is OOP?

Defining Classes

Using Classes

References vs. Values

Encapsulate

1

Prof. Hwansoo Han

T.A. Minseop Jeong

T.A. Hwiwon Kim

Page 2: JAVA Programming Practice OOP Class and Methodarcs.skku.edu/pmwiki/uploads/Courses/SWPractice1/04... · 2020-03-31 · JAVA Programming Practice OOP ± Class and Method What is OOP?

Objects in real world

Represent the real world

2

Baby

Page 3: JAVA Programming Practice OOP Class and Methodarcs.skku.edu/pmwiki/uploads/Courses/SWPractice1/04... · 2020-03-31 · JAVA Programming Practice OOP ± Class and Method What is OOP?

Objects in real world

Represent the real world

3

Baby

Name

Gender

Weight

Page 4: JAVA Programming Practice OOP Class and Methodarcs.skku.edu/pmwiki/uploads/Courses/SWPractice1/04... · 2020-03-31 · JAVA Programming Practice OOP ± Class and Method What is OOP?

Objects in real world

4

Name

Weight

Gender

cry

Baby

Page 5: JAVA Programming Practice OOP Class and Methodarcs.skku.edu/pmwiki/uploads/Courses/SWPractice1/04... · 2020-03-31 · JAVA Programming Practice OOP ± Class and Method What is OOP?

Objects in real world

5

Name = “a” Weight = 1

Gender

cry

Baby1

Name = “b” Weight = 4

Gender

cry

Baby2

Name = “c” Weight = 3

Gender

cry

Baby3

More Babies …

Page 6: JAVA Programming Practice OOP Class and Methodarcs.skku.edu/pmwiki/uploads/Courses/SWPractice1/04... · 2020-03-31 · JAVA Programming Practice OOP ± Class and Method What is OOP?

Objects in real world

6

Baby1

Baby2

Baby3 Nursery

Babies

Nurses

Page 7: JAVA Programming Practice OOP Class and Methodarcs.skku.edu/pmwiki/uploads/Courses/SWPractice1/04... · 2020-03-31 · JAVA Programming Practice OOP ± Class and Method What is OOP?

Objects in real world

7

Baby1

Baby2

Baby3 Nursery

Babies

Nurses

Nurse1

Nurse2

Nurse3

Page 8: JAVA Programming Practice OOP Class and Methodarcs.skku.edu/pmwiki/uploads/Courses/SWPractice1/04... · 2020-03-31 · JAVA Programming Practice OOP ± Class and Method What is OOP?

Objects in real world

8

Baby1

Baby2

Baby3

Nursery

Babies

Nurses

Nurse1

Nurse2

Nurse3

ER

… … …

Hospital

Page 9: JAVA Programming Practice OOP Class and Methodarcs.skku.edu/pmwiki/uploads/Courses/SWPractice1/04... · 2020-03-31 · JAVA Programming Practice OOP ± Class and Method What is OOP?

Objects in real world

9

Baby1

Baby2

Baby3

Nursery

Babies

Nurses

Nurse1

Nurse2

Nurse3

ER

… … …

Hospital

What do we need to model this objects

with programming language?

Page 10: JAVA Programming Practice OOP Class and Methodarcs.skku.edu/pmwiki/uploads/Courses/SWPractice1/04... · 2020-03-31 · JAVA Programming Practice OOP ± Class and Method What is OOP?

Object Oriented Programming

Definition

• A method of programming based on a hierarchy of

classes, with well-defined, cooperating objects.

Class – a structure that defines

• the fields to store the data

• the methods to work on that data

Object – an executable copy of a class

10

Page 11: JAVA Programming Practice OOP Class and Methodarcs.skku.edu/pmwiki/uploads/Courses/SWPractice1/04... · 2020-03-31 · JAVA Programming Practice OOP ± Class and Method What is OOP?

11

Object Oriented Programming

Page 12: JAVA Programming Practice OOP Class and Methodarcs.skku.edu/pmwiki/uploads/Courses/SWPractice1/04... · 2020-03-31 · JAVA Programming Practice OOP ± Class and Method What is OOP?

Object Oriented Programming

A class

• can be inherited by only one other class

• can implement one or more interfaces

An object

• can establish the relationship with other objects

through the reference

• encapsulates some fields or methods

for hiding them from other objects

12

Page 13: JAVA Programming Practice OOP Class and Methodarcs.skku.edu/pmwiki/uploads/Courses/SWPractice1/04... · 2020-03-31 · JAVA Programming Practice OOP ± Class and Method What is OOP?

DEFINING CLASSES

13

Page 14: JAVA Programming Practice OOP Class and Methodarcs.skku.edu/pmwiki/uploads/Courses/SWPractice1/04... · 2020-03-31 · JAVA Programming Practice OOP ± Class and Method What is OOP?

Class definition

public class Baby {

String name;

boolean gender;

double weight;

int numPoops = 0;

void poop() {

numPoops += 1;

System.out.println (“Dear mother, “ + “I have pooped. Ready the diaper.”); }

}

14

Page 15: JAVA Programming Practice OOP Class and Methodarcs.skku.edu/pmwiki/uploads/Courses/SWPractice1/04... · 2020-03-31 · JAVA Programming Practice OOP ± Class and Method What is OOP?

Let’s declare a baby! public class Baby {

}

15

Fields

Methods

Page 16: JAVA Programming Practice OOP Class and Methodarcs.skku.edu/pmwiki/uploads/Courses/SWPractice1/04... · 2020-03-31 · JAVA Programming Practice OOP ± Class and Method What is OOP?

Baby fields

public class Baby {

// Declare

TYPE var_name; // Declare && Initialize

TYPE var_name = some_value;

}

16

Page 17: JAVA Programming Practice OOP Class and Methodarcs.skku.edu/pmwiki/uploads/Courses/SWPractice1/04... · 2020-03-31 · JAVA Programming Practice OOP ± Class and Method What is OOP?

Baby fields

public class Baby {

String name;

boolean gender;

double weight = 5.0;

int numPoops = 0;

}

17

Page 18: JAVA Programming Practice OOP Class and Methodarcs.skku.edu/pmwiki/uploads/Courses/SWPractice1/04... · 2020-03-31 · JAVA Programming Practice OOP ± Class and Method What is OOP?

Baby Siblings?

public class Baby {

String name;

boolean gender;

double weight = 5.0;

int numPoops = 0;

Baby[] siblings;

}

18

Page 19: JAVA Programming Practice OOP Class and Methodarcs.skku.edu/pmwiki/uploads/Courses/SWPractice1/04... · 2020-03-31 · JAVA Programming Practice OOP ± Class and Method What is OOP?

Baby methods

public class Baby {

String name = “Slim Shady”;

...

void sayHi() {

System.out.println (

“Hi, my name is.. “ + name);

}

}

19

Page 20: JAVA Programming Practice OOP Class and Methodarcs.skku.edu/pmwiki/uploads/Courses/SWPractice1/04... · 2020-03-31 · JAVA Programming Practice OOP ± Class and Method What is OOP?

Baby methods

public class Baby {

double weight = 5.0;

...

void eat(double foodWeight) {

if (foodWeight >= 0 &&

foodWeight < weight) {

weight += foodWeight;

}

}

}

20

Page 21: JAVA Programming Practice OOP Class and Methodarcs.skku.edu/pmwiki/uploads/Courses/SWPractice1/04... · 2020-03-31 · JAVA Programming Practice OOP ± Class and Method What is OOP?

Baby class

public class Baby {

String name;

boolean gender;

double weight;

int numPoops = 0;

Baby[] siblings;

void sayHi() {...}

void eat(double foodWeight) {...}

}

21

Page 22: JAVA Programming Practice OOP Class and Methodarcs.skku.edu/pmwiki/uploads/Courses/SWPractice1/04... · 2020-03-31 · JAVA Programming Practice OOP ± Class and Method What is OOP?

Ok, let’s make this baby!

Baby myBaby = new Baby();

22

But what about his/her name? gender?

Page 23: JAVA Programming Practice OOP Class and Methodarcs.skku.edu/pmwiki/uploads/Courses/SWPractice1/04... · 2020-03-31 · JAVA Programming Practice OOP ± Class and Method What is OOP?

Constructors

public class CLASSNAME {

CLASSNAME ( ) {

}

CLASSNAME ( [PARAMETERS] ) {

}

}

CLASSNAME obj1 = new CLASSNAME();

CLASSNAME obj2 = new CLASSNAME([ARGUMENTS]);

23

Page 24: JAVA Programming Practice OOP Class and Methodarcs.skku.edu/pmwiki/uploads/Courses/SWPractice1/04... · 2020-03-31 · JAVA Programming Practice OOP ± Class and Method What is OOP?

Constructors

Constructor name == the class name

No return type – never returns anything

Usually initialize fields

All classes need at least one constructor

• If you don’t write one, defaults to

24

CLASSNAME () {

}

Page 25: JAVA Programming Practice OOP Class and Methodarcs.skku.edu/pmwiki/uploads/Courses/SWPractice1/04... · 2020-03-31 · JAVA Programming Practice OOP ± Class and Method What is OOP?

Baby constructor

public class Baby {

String name;

boolean gender;

Baby(){}

Baby(String myName, boolean myGender) {

name = myName;

gender = myGender;

}

}

25

Page 26: JAVA Programming Practice OOP Class and Methodarcs.skku.edu/pmwiki/uploads/Courses/SWPractice1/04... · 2020-03-31 · JAVA Programming Practice OOP ± Class and Method What is OOP?

Final Baby class

public class Baby {

String name;

boolean gender;

double weight;

int numPoops = 0;

Baby[] siblings;

Baby() {...}

void sayHi() {...}

void eat(double foodWeight) {...}

}

26

Page 27: JAVA Programming Practice OOP Class and Methodarcs.skku.edu/pmwiki/uploads/Courses/SWPractice1/04... · 2020-03-31 · JAVA Programming Practice OOP ± Class and Method What is OOP?

Classes and Instances

// class Definition

public class Baby { … }

// class Instances

Baby shiloh = new Baby (“Shilo Jolie-Pitt”, true);

Baby knox = new Baby (“Knox Jolie-Pitt”, true);

27

Page 28: JAVA Programming Practice OOP Class and Methodarcs.skku.edu/pmwiki/uploads/Courses/SWPractice1/04... · 2020-03-31 · JAVA Programming Practice OOP ± Class and Method What is OOP?

Accessing fields

Object.FIELDNAME

Baby shiloh = new Baby (“Shiloh Jolie-Pitt”, true);

System.out.println (shiloh.name);

System.out.println (shiloh.numPoops);

28

Page 29: JAVA Programming Practice OOP Class and Methodarcs.skku.edu/pmwiki/uploads/Courses/SWPractice1/04... · 2020-03-31 · JAVA Programming Practice OOP ± Class and Method What is OOP?

Accessing fields

Object.METHODNAME([ARGUMENTS])

Baby shiloh = new Baby (“Shiloh Jolie-Pitt”, true);

shiloh.sayHi(); // “Hi, my name is.. Shiloh Jolie-Pitt”

shiloh.eat(1);

29

Page 30: JAVA Programming Practice OOP Class and Methodarcs.skku.edu/pmwiki/uploads/Courses/SWPractice1/04... · 2020-03-31 · JAVA Programming Practice OOP ± Class and Method What is OOP?

Do it yourself!

Open Eclipse, implement your baby class,

create objects, and test accessing

members of the objects

30

Page 31: JAVA Programming Practice OOP Class and Methodarcs.skku.edu/pmwiki/uploads/Courses/SWPractice1/04... · 2020-03-31 · JAVA Programming Practice OOP ± Class and Method What is OOP?

REFERENCES VS. VALUES

31

Page 32: JAVA Programming Practice OOP Class and Methodarcs.skku.edu/pmwiki/uploads/Courses/SWPractice1/04... · 2020-03-31 · JAVA Programming Practice OOP ± Class and Method What is OOP?

Primitives vs. References

Primitive types are basic java types

• int, long, double, boolean, char, short, byte, float

• The actual values are stored in the variable

Reference types are arrays and objects

• String, int[], Baby, …

32

Page 33: JAVA Programming Practice OOP Class and Methodarcs.skku.edu/pmwiki/uploads/Courses/SWPractice1/04... · 2020-03-31 · JAVA Programming Practice OOP ± Class and Method What is OOP?

How java stores primitives

Variables are like fixed size cups

Primitives are small enough that they just

fit into the cup

33

int double char boolean

Page 34: JAVA Programming Practice OOP Class and Methodarcs.skku.edu/pmwiki/uploads/Courses/SWPractice1/04... · 2020-03-31 · JAVA Programming Practice OOP ± Class and Method What is OOP?

How java stores objects

Objects are too big to fit in a variable

• Stored somewhere else

• Variable stores an address that locates the object

34

Object

Page 35: JAVA Programming Practice OOP Class and Methodarcs.skku.edu/pmwiki/uploads/Courses/SWPractice1/04... · 2020-03-31 · JAVA Programming Practice OOP ± Class and Method What is OOP?

How java stores objects

Objects are too big to fit in a variable

• Stored somewhere else

• Variable stores an address that locates the object

35

Object’s

location Object Object Object

Object Object Object

Page 36: JAVA Programming Practice OOP Class and Methodarcs.skku.edu/pmwiki/uploads/Courses/SWPractice1/04... · 2020-03-31 · JAVA Programming Practice OOP ± Class and Method What is OOP?

References

The object’s location is called a reference

== compares the references

Baby shiloh1 = new Baby(“Shiloh”);

Baby shiloh2 = new Baby(“Shiloh”);

Does shiloh1 == shiloh2?

36

Page 37: JAVA Programming Practice OOP Class and Methodarcs.skku.edu/pmwiki/uploads/Courses/SWPractice1/04... · 2020-03-31 · JAVA Programming Practice OOP ± Class and Method What is OOP?

References

The object’s location is called a reference

== compares the references

Baby shiloh1 = new Baby(“Shiloh”);

Baby shiloh2 = new Baby(“Shiloh”);

Does shiloh1 == shiloh2?

37

NO!

Page 38: JAVA Programming Practice OOP Class and Methodarcs.skku.edu/pmwiki/uploads/Courses/SWPractice1/04... · 2020-03-31 · JAVA Programming Practice OOP ± Class and Method What is OOP?

References

Baby shiloh1 = new Baby(“Shiloh”);

Baby shiloh2 = new Baby(“Shiloh”);

38

reference reference

shiloh1 shiloh2

Name=“Shiloh”

Name=“Shiloh”

Page 39: JAVA Programming Practice OOP Class and Methodarcs.skku.edu/pmwiki/uploads/Courses/SWPractice1/04... · 2020-03-31 · JAVA Programming Practice OOP ± Class and Method What is OOP?

References

Baby shiloh1 = new Baby(“Shiloh”);

Baby shiloh2 = new Baby(“Shiloh”);

39

reference reference

shiloh1 shiloh2

Name=“Shiloh”

Name=“Shiloh”

Page 40: JAVA Programming Practice OOP Class and Methodarcs.skku.edu/pmwiki/uploads/Courses/SWPractice1/04... · 2020-03-31 · JAVA Programming Practice OOP ± Class and Method What is OOP?

Relations between objects

1. using ==

• shiloh1 == shiloh2

• Check two variables reference exactly same

2. using field

• shiloh1.name == shiloh2.name

• Compare a field of the object

3. using user-defined method

• shiloh1.equals (shiloh2)

• Used when the objects are different, but determine the

same or not by the fields stored in the object

40

Page 41: JAVA Programming Practice OOP Class and Methodarcs.skku.edu/pmwiki/uploads/Courses/SWPractice1/04... · 2020-03-31 · JAVA Programming Practice OOP ± Class and Method What is OOP?

References

Using = updates the reference

baby1 = baby2; //?

41

baby1

location

baby1

baby2

location

baby2

baby1

object

baby2

object

Page 42: JAVA Programming Practice OOP Class and Methodarcs.skku.edu/pmwiki/uploads/Courses/SWPractice1/04... · 2020-03-31 · JAVA Programming Practice OOP ± Class and Method What is OOP?

References

Using = updates the reference

baby1 = baby2;

42

baby1

baby2

location

baby2

baby1

object

baby2

object

Page 43: JAVA Programming Practice OOP Class and Methodarcs.skku.edu/pmwiki/uploads/Courses/SWPractice1/04... · 2020-03-31 · JAVA Programming Practice OOP ± Class and Method What is OOP?

References

Baby myBaby = new Baby(“Davy”, true);

43

myBaby‘s

location

name = “Davy” gender = true

Page 44: JAVA Programming Practice OOP Class and Methodarcs.skku.edu/pmwiki/uploads/Courses/SWPractice1/04... · 2020-03-31 · JAVA Programming Practice OOP ± Class and Method What is OOP?

References

Baby myBaby = new Baby(“Davy”, true);

myBaby.name = “David”;

44

myBaby‘s

location

name = “Davy” gender = true

Page 45: JAVA Programming Practice OOP Class and Methodarcs.skku.edu/pmwiki/uploads/Courses/SWPractice1/04... · 2020-03-31 · JAVA Programming Practice OOP ± Class and Method What is OOP?

References

Baby myBaby = new Baby(“Davy”, true);

myBaby.name = “David”;

45

myBaby‘s

location

name = “David” gender = true

Page 46: JAVA Programming Practice OOP Class and Methodarcs.skku.edu/pmwiki/uploads/Courses/SWPractice1/04... · 2020-03-31 · JAVA Programming Practice OOP ± Class and Method What is OOP?

Self reference

Java class has a special way to access itself

class Baby {

String name;

void setName (String name) {

name = name; // ???????????

}

}

46

Page 47: JAVA Programming Practice OOP Class and Methodarcs.skku.edu/pmwiki/uploads/Courses/SWPractice1/04... · 2020-03-31 · JAVA Programming Practice OOP ± Class and Method What is OOP?

Self reference

Java class has a special way to access itself

class Baby {

String name;

void setName (String name) {

this.name = name; // !!!!!!

}

}

47

Page 48: JAVA Programming Practice OOP Class and Methodarcs.skku.edu/pmwiki/uploads/Courses/SWPractice1/04... · 2020-03-31 · JAVA Programming Practice OOP ± Class and Method What is OOP?

Methods and references

void doSomething(int x, int[] ys, Baby b) {

x = 99;

ys[0] = 99;

b.name = “99”; }

… int i = 0;

int[] j = { 0 };

Baby k = new Baby(“50”, true); doSomething (i, j, k);

i = ? j[0] = ? k.name = ?

48

Page 49: JAVA Programming Practice OOP Class and Methodarcs.skku.edu/pmwiki/uploads/Courses/SWPractice1/04... · 2020-03-31 · JAVA Programming Practice OOP ± Class and Method What is OOP?

Methods and references

void doSomething(int x, int[] ys, Baby b) {

x = 99;

ys[0] = 99;

b.name = “99”; }

… int i = 0;

int[] j = { 0 };

Baby k = new Baby(“50”, true); doSomething (i, j, k);

i = 0 j[0] = 99 k.name = “99”

49

Page 50: JAVA Programming Practice OOP Class and Methodarcs.skku.edu/pmwiki/uploads/Courses/SWPractice1/04... · 2020-03-31 · JAVA Programming Practice OOP ± Class and Method What is OOP?

ENCAPSULATE

50

Page 51: JAVA Programming Practice OOP Class and Methodarcs.skku.edu/pmwiki/uploads/Courses/SWPractice1/04... · 2020-03-31 · JAVA Programming Practice OOP ± Class and Method What is OOP?

Encapsulation

In real world, there are huge # of objects

and all of them have privacy.

Electric objects, too!

51

Page 52: JAVA Programming Practice OOP Class and Methodarcs.skku.edu/pmwiki/uploads/Courses/SWPractice1/04... · 2020-03-31 · JAVA Programming Practice OOP ± Class and Method What is OOP?

Public and Private

public

• Able to access/modify it whoever having the object

public class Baby {

public String nickname;

}

public class Stranger {

void makeNicknameOf (Baby b) {

b.nickname = “cuty”; }

}

52

Page 53: JAVA Programming Practice OOP Class and Methodarcs.skku.edu/pmwiki/uploads/Courses/SWPractice1/04... · 2020-03-31 · JAVA Programming Practice OOP ± Class and Method What is OOP?

Public and Private

private

• Only the object itself can access it

public class Baby {

private String nickname;

}

public class Stranger {

void makeNicknameOf (Baby b) {

b.nickname = “cuty”; // Error!

}

}

53

Page 54: JAVA Programming Practice OOP Class and Methodarcs.skku.edu/pmwiki/uploads/Courses/SWPractice1/04... · 2020-03-31 · JAVA Programming Practice OOP ± Class and Method What is OOP?

How to access private data? public class Baby {

private String nickname;

public void setNickname (String nickname, Object o) {

// check if the object is instance of [Stranger] or not

if (o instanceOf Stranger) {

return;

}

this.nickname = nickname;

}

}

public class Stranger {

void makeNicknameOf (Baby b) {

b.setNickname (“cuty”, this);

}

}

54

Page 55: JAVA Programming Practice OOP Class and Methodarcs.skku.edu/pmwiki/uploads/Courses/SWPractice1/04... · 2020-03-31 · JAVA Programming Practice OOP ± Class and Method What is OOP?

Then, what is String in java?

Built-in class for handling the sequence of characters in high level abstraction

Usage

String name = “Simon”; char[] data = {‘s’, ‘i’, ‘n’, ‘g’, ‘l’, ‘e’}; String state = new String (data);

// String concatenate

System.out.println (name + “ is a ” + state); // Simon is single

// access the substring with the range of indexes

System.out.println (state.substring (1)); // ingle

System.out.println (state.substring (2,4)); // ngl

55

Page 56: JAVA Programming Practice OOP Class and Methodarcs.skku.edu/pmwiki/uploads/Courses/SWPractice1/04... · 2020-03-31 · JAVA Programming Practice OOP ± Class and Method What is OOP?

Then, what is String in java?

Built-in class for handling the sequence of characters in high level abstraction

Usage

String name = “Simon”; char[] data = {‘s’, ‘i’, ‘n’, ‘g’, ‘l’, ‘e’}; String state = new String (data);

// comparison

System.out.println (name == “Simon”); // false

System.out.println (name.compareTo (“Simon”)); // true

// get length of a string

System.out.println (name.length ()); // 5

System.out.println(name.charAt(2)); // m

56

Page 57: JAVA Programming Practice OOP Class and Methodarcs.skku.edu/pmwiki/uploads/Courses/SWPractice1/04... · 2020-03-31 · JAVA Programming Practice OOP ± Class and Method What is OOP?

[Lab – Practice #3]

Modeling Book and Library

• class Book {}

• class Library {}

Books can be one of the following states

• States • Borrowed • Returned (not borrowed, exists in the library)

• The state of the book should exists in book objects (by member variables, etc.)

Library

• Keeps track of books, total 10 books. All books must be ‘returned’ state when initializing Library

• Member methods

• borrowBook(int n) : borrow n-th book. If already borrowed, print any error message.

If it can be borrowed, then mark the n-th book as borrowed

• returnBook(int n) : return n-th book. If already returned, print any error message. If it can be returned, then mark the n-th book as returned (not borrowed)

• Hint: use Book[] (array)

What to submit

• Java source code(s) that implemented 2 classes described above.

• No execution result (input / output) is needed. Leave the main() method empty. The codes will be checked if

• 2 classes are implemented properly, according to indications above

• The source code(s) can be compiled without error

57