Presentation is loading. Please wait.

Presentation is loading. Please wait.

______________________________________________________________________________________ SCHOOL OF INTERACTIVE ARTS + TECHNOLOGY [SIAT] | WWW.SIAT.SFU.CA.

Similar presentations


Presentation on theme: "______________________________________________________________________________________ SCHOOL OF INTERACTIVE ARTS + TECHNOLOGY [SIAT] | WWW.SIAT.SFU.CA."— Presentation transcript:

1 ______________________________________________________________________________________ SCHOOL OF INTERACTIVE ARTS + TECHNOLOGY [SIAT] | WWW.SIAT.SFU.CA IAT 265 Objects IAT 2651

2 Outline  Object-oriented programming –Object components –Rocket –Primitive types and Object References  Objects, another metaphor  Why objects? May 28, 2015IAT 2652

3 Classes vs Objects  A Class is a blueprint for a bicycle  An Object is a bicycle  Many bicycles, one blueprint May 28, 2015IAT 2653

4 May 28, 2015IAT 2654 Parts of a class  Classes define fields, constructors and methods  Fields are the variables that will appear inside every instance of the class –Each instance has its own values  Constructors are special methods that define how to build instances (generally, how to set the initial values of fields)  Methods are how you do things to instances

5 May 28, 2015IAT 2655 Defining the rocket class class Rocket { // fields float rotation = 0; float xPos; float yPos; final int halfWidth = 10; final int halfHeight= 10; // constructor Rocket( int initialX, int initialY, float initialRot ) { xPos = initialX; yPos = initialY; rotation = initialRot; } void draw() { pushMatrix(); translate(xPos, yPos); rotate(rotation); triangle(0, -halfHeight, -halfWidth, halfHeight, halfWidth, halfHeight); rectMode(CORNERS); rect(-halfWidth + 5, halfHeight, -halfWidth + 8, halfHeight + 3); rect(halfWidth - 8, halfHeight, halfWidth - 5, halfHeight + 3); popMatrix(); }

6 May 28, 2015IAT 2656 Using the class to create instances  Classes define a type  You can now declare variables of this type and initialize them using the constructor  Like arrays, the keyword new is used to tell Java to create a new object Rocket r1, r2 ; void setup() { r1 = new Rocket(75, 10, 0); r2 = new Rocket(50, 50, PI/2); } void draw() { r1.draw(); r2.draw(); }

7 May 28, 2015IAT 2657 Primitive types  Primitive types are determined by machine architecture byte: 8bitsreference: (JVM Dependent) short:16bits int: 32bits long:64bits float:32bits double:64bits

8 May 28, 2015IAT 2658 Reference  Like a remote control  a reference is a primitive thing that points at objects  the new keyword causes the reference to point at a new instance of the object

9 May 28, 2015IAT 2659

10 May 28, 2015IAT 26510 Arrays  int[] nums = new int[7] ;

11 May 28, 2015IAT 26511 Array of objects  Dog[] pets = new Dog[7];  It starts as an array of null references

12 May 28, 2015IAT 26512 Array of objects Dog[] pets = new Dog[7] ; pets[0] = new Dog(); pets[1] = new Dog();

13 Objects May 28, 2015IAT 26513

14 Real Objects  Real-world objects have –State –Behavior  Bicycle –State selected gear, current pedal cadence, speed –Behavior Change Gear, Set Cadence, Apply Brakes May 28, 2015IAT 26514

15 Software Object  State int gear ; float speed ; float cadence ;  Behavior ChangeGears(int g); Brake( float level ); ChangeCadence( float c ); int GetGear(); float GetSpeed(); … May 28, 2015IAT 26515

16 Java directly supports Objects  Java has direct syntactic and semantic support for Objects Syntax: class Bicycle { private int cadence = 0; private int speed = 0; private int gear = 1; void changeCadence(int newValue) { cadence = newValue; } void changeGear(int newValue) { gear = newValue; } IAT 26516

17 Java directly supports Objects  Java has direct syntactic and semantic support for Objects Semantics: class Bicycle { private int cadence = 0; private int speed = 0; private int gear = 1; void changeCadence(int newValue) { cadence = newValue; } void changeGear(int newValue) { gear = newValue; } IAT 26517 Only these methods can read or write Bicycle private data

18 Java Semantic support  Programming usually takes place with objects: ClockThing clock = new ClockThing(); clock.setSecond( 12 ); clock.setMinute( 18 ); clock.setHour( 3 ); May 28, 2015IAT 26518

19 Even Arrays are objects int[] bob = new int[10] ; bob[4] = 123 ; println( bob.size() ); Bicycle[]bikes = new Bicycle[10] ; bikes[0] = new Bicycle(); May 28, 2015IAT 26519

20 Sets and Gets  what can you do with private data? –to set it: setVarName( varType newValue) –to get it: varType getVarName()  Why? May 28, 2015IAT 26520

21 Temperature object class temp // constructor not shown { private floatkelvin ; void setCelsius( float C ); { if( C < -273.15 ) return ;// perhaps an error message would be in order else kelvin = C + 273.15 ; } float getCelsius() { return( kelvin - 273.15 ); } float setKelvin( float k ) { if( k < 0 ) return ; else kelvin = k ; } IAT 26521

22 Temperature object  Controls access  Ensures correctness –can only run a setXYZ() to change temp –can only do getXYZ() to get the value in the desired scale  Who cares? May 28, 2015IAT 26522

23 Who cares?  When you want to: –Solve the problem once and forget it –Reuse the solution elsewhere –Establish rules for use and change of data  The principle: –Information hiding –By interacting only with an object's methods, the details of its internal implementation remain hidden from the outside world. May 28, 2015IAT 26523

24 Principle: Code re-use  If an object already exists, you can use that object in your program.  Specialists build, you use May 28, 2015IAT 26524

25 Principle: Define the Interface  Define the interface: –The list of methods with Defined Operation  The interface is the thing that other people use  If you have the same interface with the same meaning –You can plug in a better implementation! May 28, 2015IAT 26525

26 Define the Interface  If you have the same interface with the same meaning –You can plug in a better implementation! –You can plug in a More Interesting implementation! May 28, 2015IAT 26526

27 Summary of principles  Hide unnecessary details  Clearly define the interface  Allow and support code re-use  Build on the work of others May 28, 2015IAT 26527


Download ppt "______________________________________________________________________________________ SCHOOL OF INTERACTIVE ARTS + TECHNOLOGY [SIAT] | WWW.SIAT.SFU.CA."

Similar presentations


Ads by Google