Академический Документы
Профессиональный Документы
Культура Документы
4/9/2013
Previous lecture:
Structure & structure array
Todays lecture:
Introduction to objects and classes
Announcements:
Discussion this week in classrooms, not UP B7 P5 due Thursday at 11pm; late submission accepted until Friday 11pm with a late penalty of 1 point Prelim 2 on Tues, Apr16, at 7:30pm
A structures field can hold a structure A = MakePoint(2,3) B = MakePoint(4,5) L = struct(P,A,Q,B) This could be used to represent a line segment with endpoints P and Q Q, for instance Given the MakePoint function to create a point structure, what is x below? x = L.P.y;
A:2 B:3 C:4 D:5
Lecture20
Packaging data, and the instructions that work on those data, into an object
A program is the interaction among objects Object-oriented programming (OOP) focuses on the design of data-instructions groupings
3
E: error
Deck
Property: P t array of f Cards C d Actions: shuffle, deal, get #cards left
think of nouns
Deck
Property: P t array of f Cards C d Actions: shuffle, deal, get #cards left
Hand Player
Hand Player
Procedural programming: focus on the algorithm, i.e., the procedures, necessary for solving a problem
Then write the gamethe Object-oriented algorithmusing objects programming: focus on of the the aboveof classes design the objects (data
+ actions) necessary for solving a problem
CS1112Lecture21
4/9/2013
Notice the two steps involved in OOP? Define the classes (of the objects)
Identify the properties (data) and actions (methods, i.e., functions) of each class
C Create the h objects b (from (f the h classes) l ) that h are then usedthat interact with one another
Methods (actions):
Methods (actions):
Show (e.g., display in hh:mm:ss format) Advance (e.g., advance current time by some amount)
Area Perimeter Draw Intersect (the intersection between two rectangles is a rectangle!)
Methods (actions):
show
We have been writing procedural programs focusing on the algorithm, implemented as a set of functions We have used objects in Matlab as well, e.g., graphics hi A plot is a handle graphics object
Can produce plots without knowing about objects Knowing about objects gives more possibilities
CS1112Lecture21
4/9/2013
The plot handle graphics object in Matlab x=; y=; plot(x,y) creates a graphics object
link to object
I In the h past we focused f d on the h visual i l produced d d by that command. If we want the visual to look different we make another plot. We can actually hold on to the graphics objectstore its handleso that we can later make changes to that object.
SeedemoPlotObj.m
objects (plots) The values of the properties are different for the individual objects
handle... 'holdon' h1=plot(x,y) Objects of the same class have the same properties disp(get(x,y)) - get x= of 1:10; info (x,u) % Two separate graphics objects: get(h1, 'Ydata', y/2, plot(x, sin(x), k-) plot(x(1:5), 2.^x, m-*) 'linewidth', 3 keeping xvalue --> Both objects j have some x-data, , some y y-data, , some line style, and some change the valuesmarker style. These are inthe h1properties of one kind, or class, of the
To specify the properties & methods of an object is classdef Interval < handle to define its class
An interval has two endpoints We may want to perform these actions: scale and shift individual intervals Determine whether two intervals overlap Add and subtract two intervals
properties left right end methods function = scale( ) ... end function = overlap( ) ... end function = add( ) ... end ... end end
for k = 1:length(x) set(hns(2),'XData', x(k), 'Ydata', y(k)) pause(0.2) Simplified Interval class end
To create an Interval object, use its class name as a function call: p = Interval(3,7)
167.32
classdef Interval<handle %AnIntervalhasaleftendandarightend properties left right end methods function Inter=Interval(lt,rt) %Constructor:constructanIntervalobj Inter left=lt; Inter.left= Inter.right=rt; end function scale(self,f) %Scaletheintervalbyafactorf w=self.right self.left; self.right=self.left +w*f; end end end
167.32
177.54
167.32
177.54
% p references an Interval object % s stores the same reference as p % change value inside object % 2 is displayed
167.32
left 3 right 7
167.32
Interval() scale()
CS1112Lecture21
4/9/2013
In fact, storing storing-by-value by value is true of all non non-handle-object handle object variables. You already know this from before
a=5; b=a+1; a=8; disp(b) % b stores the value 6, not % the definition a+1 % Changing a does not change b % 6 is displayed