Java Object-oriented Programming 1 HWs Redux HW 3 HW 4 CS - - PowerPoint PPT Presentation

java object oriented programming 1 hws redux
SMART_READER_LITE
LIVE PREVIEW

Java Object-oriented Programming 1 HWs Redux HW 3 HW 4 CS - - PowerPoint PPT Presentation

Java Object-oriented Programming 1 HWs Redux HW 3 HW 4 CS 6452: Prototyping Interactive Systems 2 Learning Objectives Java classes and objects Instance data Methods Constrcutors Visibility Scope Static CS


slide-1
SLIDE 1

Java Object-oriented Programming 1

slide-2
SLIDE 2

CS 6452: Prototyping Interactive Systems

HWs Redux

  • HW 3
  • HW 4

2

slide-3
SLIDE 3

CS 6452: Prototyping Interactive Systems

Learning Objectives

  • Java classes and objects

− Instance data − Methods − Constrcutors − Visibility − Scope − Static

3

slide-4
SLIDE 4

CS 6452: Prototyping Interactive Systems

Modeling Objects

  • Car

− General attributes: year, color, VIN #, horsepower, speed, mpg, … − Behaviors: drive, brake, wash, park

  • Individual instances of a car

− Hayley’s, Larry’s, …

4

slide-5
SLIDE 5

CS 6452: Prototyping Interactive Systems 5

class Car

int year; double mpg; Color col; … drive() wash() main() park()

Data
 declarations Methods

A class is a “type” All class members

  • Data (instance vars)
  • Methods
slide-6
SLIDE 6

CS 6452: Prototyping Interactive Systems

Instance Data

  • Put values inside class but not in method
  • Each object that gets instantiated for a

class receives its own copy of them

  • Variables are automatically initialized, but

good practice to do it manually (in constructor)

6

slide-7
SLIDE 7

CS 6452: Prototyping Interactive Systems 7

Car c1 = new Car();

Use the new operator to
 create an instance Access fields through the
 . operator

c1.year c1.vin c1.mpg c1.col c1.speed

c1

year vin mpg col speed

slide-8
SLIDE 8

CS 6452: Prototyping Interactive Systems

Methods

  • Functions/procedures (behaviors) within a

class

  • When we do c1.drive(20); control

flows to method, through it, then returns

8

public double drive(int time) { double distance; distance = time * speed; return distance; }

slide-9
SLIDE 9

CS 6452: Prototyping Interactive Systems

Methods

  • return statement – Control immediately

goes back (need not be at end of method)

  • Local variables – declared inside a method

and only visible there (e.g., distance)

9

public double drive(int time) { double distance; distance = time * speed; return distance; }

slide-10
SLIDE 10

CS 6452: Prototyping Interactive Systems

Methods

  • Other code
  • The method drive returns a double that

added to 100.0 and copied into total

10

public double drive(int time) { double distance; distance = time * speed; return distance; } double total; total = 100.0 + c1.drive(24);

slide-11
SLIDE 11

CS 6452: Prototyping Interactive Systems

Methods

  • Parameters – values passed in to method

− Formal params – Names of params in header − Actual params – Values passed in when running

  • Formal params are just local variables

literally

11

public double drive(int time) { double distance; distance = time * speed; return distance; }

slide-12
SLIDE 12

CS 6452: Prototyping Interactive Systems

Methods

  • At execution time, values copied into

formal parameters

  • Parameters passed in call by value method

12

int a; a = 12; total = 100.0 + c1.drive(a+3); // elsewhere public double drive(int time) { time = 1; return time; }

slide-13
SLIDE 13

CS 6452: Prototyping Interactive Systems

Methods

  • Nothing in front of speed
  • Which speed?
  • The instance variable within the object

upon which this method was called

13

public double drive(int time) { double distance; distance = time * speed; return distance; }

slide-14
SLIDE 14

CS 6452: Prototyping Interactive Systems

Methods

14

double d; Car c3 = new Car(); d = c3.drive(50); // in this case, it uses c3’s speed

Other code It’s like

  • r
  • r

distance = time * <thecallingobject>.speed; distance = time * (c3).speed; distance = time * this.speed;

slide-15
SLIDE 15

CS 6452: Prototyping Interactive Systems

Methods

  • this – java reserved word used inside

methods

− It refers to object upon which method was invoked

  • These type of method calls always

performed in the context of an object

15

distance = time * this.speed;

slide-16
SLIDE 16

CS 6452: Prototyping Interactive Systems

Example Program

  • RollingDice

− chap 4

16

slide-17
SLIDE 17

CS 6452: Prototyping Interactive Systems

Encapsulation

  • Objects should be responsible for

themselves

  • Don’t want outsiders modifying instance

data

  • Specify certain methods for outsiders

(other classes) to use

− Called the class interface

17

slide-18
SLIDE 18

CS 6452: Prototyping Interactive Systems 18

class Car

int year; double mpg; Color col; …

instance data client interface externally used methods internally used methods

slide-19
SLIDE 19

CS 6452: Prototyping Interactive Systems

Visibility

  • How do we specify what is externally

visible?

− Use modifiers

  • Visibility modifiers – Control access

− public, private, protected

19

  • utsiders
  • nly in


class (later)

slide-20
SLIDE 20

CS 6452: Prototyping Interactive Systems

Access

20

public variables methods private

X

natural service
 to clients internal
 class support

Class has access to all private members

slide-21
SLIDE 21

CS 6452: Prototyping Interactive Systems 21 public class Car { private int vin,year; private double speed, mpg; public void drive() { … } public int getYear() { return year; } public void setYear(int y) { year = y; } public Car() { … } private void diagnose() { … } public static void main (String[] args) { … } }

Internal method “Accessor” method “Modifier” method Constructor

slide-22
SLIDE 22

CS 6452: Prototyping Interactive Systems

Constructor

  • Special method called when objects are

instantiated

  • Same name as the class
  • Their primary use is to initialize instance

variables

22

slide-23
SLIDE 23

CS 6452: Prototyping Interactive Systems

Constructors

  • What if we did

23

public Car(int y, double s, double m) { year = y; speed = s; mpg = m; } public Car(int year, double speed, double mpg) { year = year; speed = speed; mpg = mpg; }

slide-24
SLIDE 24

CS 6452: Prototyping Interactive Systems

Constructors

  • How to correct that?

24

public Car(int year, double speed, double mpg) { this.year = year; this.speed = speed; this.mpg = mpg; }

slide-25
SLIDE 25

CS 6452: Prototyping Interactive Systems

Variable Scope

  • What is the scope of a variable?

− Region of a program where it's visible

  • Formal parameter

− The method in which it is a parameter

  • Local variable

− The method in which it is defined

  • Instance variable

− Entire class

25

slide-26
SLIDE 26

CS 6452: Prototyping Interactive Systems

Questions

  • Legal?
  • No, compile error

− Two local variable declarations of a

26

public void foo(int a) { int a; … }

slide-27
SLIDE 27

CS 6452: Prototyping Interactive Systems

Method Overloading

  • Use of same method name with different

parameter lists to create multiple versions

  • f method
  • How does it know which is called?

− Looks at call and matches

− c1.drive(5, 23.4);

27

public int drive(int a) { … } public int drive(int a, double d) { … }

slide-28
SLIDE 28

CS 6452: Prototyping Interactive Systems

Example Program

  • Account & Transactions

− chap 4

28

slide-29
SLIDE 29

CS 6452: Prototyping Interactive Systems

Static Variables

  • Another modifier
  • So far, seen local vars and instance vars
  • Another kind: static (class) variable

− One copy shared by all instances of class

− private static int count = 0;

− Memory space for it is in class, not instances − Useful for object counters

29

slide-30
SLIDE 30

CS 6452: Prototyping Interactive Systems

Example Program

  • Slogan

− chap 6

30

slide-31
SLIDE 31

CS 6452: Prototyping Interactive Systems

Static Methods

  • Do not operate in the context of a

particular object (no this)

− So they cannot reference instance variables − Typically worker functions, often mathematical

  • Look at Slogan again

− static getCount() cannot access phrase

31

slide-32
SLIDE 32

CS 6452: Prototyping Interactive Systems

null

32

public class Worker { private String name; private int id; public Worker(name, id) { this.name = name; this.id = id; } } Worker w1; w1 = new Worker("Mary", 12);

After declaration, what is w1?

null

After instantiation: w1

slide-33
SLIDE 33

CS 6452: Prototyping Interactive Systems

Quiz

33 int x = 3; int y = 7; y = x; Worker mary = new Worker("Mary", 3); Worker jane = new Worker("Jane", 7); jane = mary; jane.id = 33; System.out.println(mary.id);

mary jane

Mary 3 Jane 7

slide-34
SLIDE 34

CS 6452: Prototyping Interactive Systems

Quiz

34 int x = 3; int y = 7; y = x; Worker mary = new Worker("Mary", 3); Worker jane = new Worker("Jane", 7); jane = mary; jane.id = 33; System.out.println(mary.id);

mary jane

Mary 3 Jane 7

slide-35
SLIDE 35

CS 6452: Prototyping Interactive Systems

Quiz

35 int x = 3; int y = 7; y = x; Worker mary = new Worker("Mary", 3); Worker jane = new Worker("Jane", 7); jane = mary; jane.id = 33; System.out.println(mary.id);

mary jane

Mary 33 Jane 7

slide-36
SLIDE 36

CS 6452: Prototyping Interactive Systems

Example Program

  • RationalNumber

− chap 6

36

slide-37
SLIDE 37

CS 6452: Prototyping Interactive Systems

Learning Objectives

  • Java classes and objects

− Instance data − Methods − Constrcutors − Visibility − Scope − Static

37

slide-38
SLIDE 38

CS 6452: Prototyping Interactive Systems

Next Time

  • More with classes and OOP

− inheritance & hierarchies − interfaces − abstract classes − dynamic binding

38