java object oriented programming 1 hws redux
play

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


  1. Java Object-oriented Programming 1

  2. HWs Redux • HW 3 • HW 4 CS 6452: Prototyping Interactive Systems 2

  3. Learning Objectives • Java classes and objects − Instance data − Methods − Constrcutors − Visibility − Scope − Static CS 6452: Prototyping Interactive Systems 3

  4. 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, … CS 6452: Prototyping Interactive Systems 4

  5. class Car int year; Data 
 double mpg; declarations Color col; … wash() A class is a “type” park() drive() Methods All class members - Data (instance vars) main() - Methods CS 6452: Prototyping Interactive Systems 5

  6. 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) CS 6452: Prototyping Interactive Systems 6

  7. Car c1 = new Car(); Use the new operator to 
 create an instance year Access fields through the 
 vin . operator mpg c1.year c1 col c1.vin c1.mpg speed c1.col c1.speed CS 6452: Prototyping Interactive Systems 7

  8. Methods • Functions/procedures (behaviors) within a class public double drive(int time) { double distance; distance = time * speed; return distance; } • When we do c1.drive(20); control flows to method, through it, then returns CS 6452: Prototyping Interactive Systems 8

  9. Methods public double drive(int time) { double distance; distance = time * speed; return distance; } • 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 ) CS 6452: Prototyping Interactive Systems 9

  10. Methods public double drive(int time) { double distance; distance = time * speed; return distance; } • Other code double total; total = 100.0 + c1.drive(24); • The method drive returns a double that added to 100.0 and copied into total CS 6452: Prototyping Interactive Systems 10

  11. Methods public double drive(int time) { double distance; distance = time * speed; return distance; } • 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 CS 6452: Prototyping Interactive Systems 11

  12. Methods int a; a = 12; total = 100.0 + c1.drive(a+3); // elsewhere public double drive(int time) { time = 1; return time; } • At execution time, values copied into formal parameters • Parameters passed in call by value method CS 6452: Prototyping Interactive Systems 12

  13. Methods public double drive(int time) { double distance; distance = time * speed; return distance; } • Nothing in front of speed • Which speed? • The instance variable within the object upon which this method was called CS 6452: Prototyping Interactive Systems 13

  14. Methods Other code double d; Car c3 = new Car(); d = c3.drive(50); // in this case, it uses c3’s speed It’s like distance = time * <thecallingobject>.speed; or distance = time * (c3).speed; or distance = time * this.speed; CS 6452: Prototyping Interactive Systems 14

  15. Methods distance = time * this.speed; • 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 CS 6452: Prototyping Interactive Systems 15

  16. Example Program • RollingDice − chap 4 CS 6452: Prototyping Interactive Systems 16

  17. 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 CS 6452: Prototyping Interactive Systems 17

  18. class Car int year; double mpg; instance data Color col; … client externally used methods interface internally used methods CS 6452: Prototyping Interactive Systems 18

  19. Visibility • How do we specify what is externally visible? − Use modifiers • Visibility modifiers – Control access − public, private, protected outsiders only in 
 (later) class CS 6452: Prototyping Interactive Systems 19

  20. Access public private X natural variables service 
 internal 
 methods to clients class support Class has access to all private members CS 6452: Prototyping Interactive Systems 20

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

  22. Constructor • Special method called when objects are instantiated • Same name as the class • Their primary use is to initialize instance variables CS 6452: Prototyping Interactive Systems 22

  23. Constructors public Car(int y, double s, double m) { year = y; speed = s; mpg = m; } • What if we did public Car(int year, double speed, double mpg) { year = year; speed = speed; mpg = mpg; } CS 6452: Prototyping Interactive Systems 23

  24. Constructors • How to correct that? public Car(int year, double speed, double mpg) { this.year = year; this.speed = speed; this.mpg = mpg; } CS 6452: Prototyping Interactive Systems 24

  25. 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 CS 6452: Prototyping Interactive Systems 25

  26. Questions • Legal? public void foo(int a) { int a; … } • No, compile error − Two local variable declarations of a CS 6452: Prototyping Interactive Systems 26

  27. Method Overloading • Use of same method name with different parameter lists to create multiple versions of method public int drive(int a) { public int drive(int a, double d) { … … } } • How does it know which is called? − Looks at call and matches − c1.drive(5, 23.4); CS 6452: Prototyping Interactive Systems 27

  28. Example Program • Account & Transactions − chap 4 CS 6452: Prototyping Interactive Systems 28

  29. 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 CS 6452: Prototyping Interactive Systems 29

  30. Example Program • Slogan − chap 6 CS 6452: Prototyping Interactive Systems 30

  31. 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 CS 6452: Prototyping Interactive Systems 31

  32. null public class Worker { private String name; Worker w1; private int id; w1 = new Worker("Mary", 12); public Worker(name, id) { this.name = name; this.id = id; After declaration, what is w1? } } null After instantiation: w1 CS 6452: Prototyping Interactive Systems 32

  33. Quiz int x = 3; int y = 7; y = x; Worker mary = new Worker("Mary", 3); Worker jane = new Worker("Jane", 7); mary jane = mary; Mary 3 jane.id = 33; jane System.out.println(mary.id); Jane 7 CS 6452: Prototyping Interactive Systems 33

  34. Quiz int x = 3; int y = 7; y = x; Worker mary = new Worker("Mary", 3); Worker jane = new Worker("Jane", 7); mary jane = mary; Mary 3 jane.id = 33; jane System.out.println(mary.id); Jane 7 CS 6452: Prototyping Interactive Systems 34

  35. Quiz int x = 3; int y = 7; y = x; Worker mary = new Worker("Mary", 3); Worker jane = new Worker("Jane", 7); mary jane = mary; Mary 33 jane.id = 33; jane System.out.println(mary.id); Jane 7 CS 6452: Prototyping Interactive Systems 35

  36. Example Program • RationalNumber − chap 6 CS 6452: Prototyping Interactive Systems 36

  37. Learning Objectives • Java classes and objects − Instance data − Methods − Constrcutors − Visibility − Scope − Static CS 6452: Prototyping Interactive Systems 37

  38. Next Time • More with classes and OOP − inheritance & hierarchies − interfaces − abstract classes − dynamic binding CS 6452: Prototyping Interactive Systems 38

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend