Download presentation
Presentation is loading. Please wait.
Published byTodd Ronald Stafford Modified over 9 years ago
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
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.