Upload
alfred-bishop
View
222
Download
0
Embed Size (px)
Citation preview
Mark Dixon SOFT 131 Page 1
12 – Object Oriented Analysis, Design, and Programming
Mark Dixon SOFT 131 Page 2
Session Aims & Objectives• Aims
– To introduce the fundamental ideas of object orientation
• Objectives,by end of this week’s sessions, you should be able to:
– create a class definition, which includes• properties, and• methods
– create an object instance, for the class– use the object instance, by
• assigning values to its properties, and• calling its methods
Mark Dixon SOFT 131 Page 3
Example: Ball Bounce v1<html> <head><title>Ball Bounce</title></head> <body style="margin: 0;"> <img id=imgBall src=Ball.gif style="position: absolute;" /> </body></html>
<script language=vbscript>Option ExplicitDim xDim yDim xIncDim yInc
Sub window_onLoad() window.setinterval "Main", 20 xInc = 5 yInc = 3 End Sub
Sub Main() x = imgBall.style.pixelLeft + xInc If x <= 0 Or x >= document.body.clientWidth - imgBall.width Then xInc = -xInc Else imgBall.style.pixelLeft = x End If y = imgBall.style.pixelTop + yInc If y <= 0 Or y >= document.body.clientHeight - imgBall.height Then yInc = -yInc Else imgBall.style.pixelTop = y End If End Sub</script>
Mark Dixon SOFT 131 Page 4
Structured Paradigm• Program made up of
– data structures, and – routines (procedures and functions) that
process the data within those structures.
• Each routine should perform a single, clearly identifiable operation.
• Each routine should be self-contained
• Go to statements replaced by structures
• Abstract data type = structure + procedures
Mark Dixon SOFT 131 Page 5
Example: Ball Bounce v2Option ExplicitDim xDim yDim xIncDim yInc
Sub Init(tmpXInc, tmpYInc) xInc = tmpXInc yInc = tmpYIncEnd Sub
Sub Move(img) x = img.style.pixelLeft + xInc If x <= 0 Or x >= document.body.clientWidth - img.width Then xInc = -xInc Else img.style.pixelLeft = x End If y = img.style.pixelTop + yInc If y <= 0 Or y >= document.body.clientHeight - img.height Then yInc = -yInc Else img.style.pixelTop = y End IfEnd Sub
<html> <head><title>Ball Bounce</title></head> <body style="margin: 0;"> <img id=imgBall src=Ball.gif style="position: absolute;" /> </body></html>
<script language=vbscript src=Sprite.vbs></script><script language=vbscript>Option Explicit
Sub window_onLoad() window.setinterval "Main", 20 Init 5, 3 End Sub
Sub Main() Move imgBall End Sub</script>
BallBounce.htm
Sprit.vbs
Mark Dixon SOFT 131 Page 6
Object-Oriented Paradigm• A program is made up of a number of objects that
communicate with each other by passing messages
• Each object contains– attributes/properties that represent its state, and– operations/methods that represent its behaviour
• Objects often mirror the real world– Customers– Students– Patients
Mark Dixon SOFT 131 Page 7
Classes and Instances• Object Classes
– general descriptions of types of objects,e.g. student, product, customer, lecturer, and room.
• Object Instances– specific items of a given class, e.g.
• each of you could be an instance of the student class• Room 214 could be an instance of the room class• I could be an instance of the lecturer class• Bolt could be an instance of the part class
Mark Dixon SOFT 131 Page 8
Object Concepts - Implementation
• Properties – implemented as– data structures (variables, and arrays)
• Methods – implemented as either– a procedure (to perform some processing), or– a function (to return a value)
• Object oriented paradigm builds on (rather than replaces) the structured paradigm
Mark Dixon SOFT 131 Page 9
Properties: Animals
• Class: Animal• Properties: Name, Species, Gender• Instances: myPet, yourPet
Mark Dixon SOFT 131 Page 10
Example: Ball Bounce v3Option Explicit
Class Sprite Dim x Dim y Dim xInc Dim yIncEnd Class
Sub Init(spr, tmpXInc, tmpYInc) spr.xInc = tmpXInc spr.yInc = tmpYIncEnd Sub
Sub Move(spr, img) spr.x = img.style.pixelLeft + spr.xInc If spr.x <= 0 Or spr.x >= document.body.clientWidth - img.width Then spr.xInc = -spr.xInc Else img.style.pixelLeft = spr.x End If spr.y = img.style.pixelTop + spr.yInc If spr.y <= 0 Or spr.y >= document.body.clientHeight - img.height Then spr.yInc = -spr.yInc Else img.style.pixelTop = spr.y End IfEnd Sub
<html> …</html>
<script language=vbscript src=Sprite.vbs></script><script language=vbscript>Option ExplicitDim ball
Sub window_onLoad() window.setinterval "Main", 20 Set ball = New Sprite Init ball, 5, 3 End Sub
Sub Main() Move ball, imgBall End Sub</script>
BallBounce.htm
Sprit.vbs
Class Definition
Mark Dixon SOFT 131 Page 11
Methods: Students
• Method: Clear
Mark Dixon SOFT 131 Page 12
Example: Ball Bounce v4Option Explicit
Class SpriteDim xDim yDim xIncDim yInc
Sub Init(tmpXInc, tmpYInc) xInc = tmpXInc yInc = tmpYInc End Sub
Sub Move(img) x = img.style.pixelLeft + xInc If x <= 0 Or x >= document.body.clientWidth - img.width Then xInc = -xInc Else img.style.pixelLeft = x End If y = img.style.pixelTop + yInc If y <= 0 Or y >= document.body.clientHeight - img.height Then yInc = -yInc Else img.style.pixelTop = y End If End SubEnd Class
<html> …</html>
<script language=vbscript src=Sprite.vbs></script><script language=vbscript>Option ExplicitDim ball
Sub window_onLoad() window.setinterval "Main", 20 Set ball = New Sprite ball.Init 5, 3 End Sub
Sub Main() ball.Move imgBall End Sub</script>
BallBounce.htm
Sprit.vbs
Mark Dixon SOFT 131 Page 13
Example: Ball Bounce v5• Multiple instances:
Mark Dixon SOFT 131 Page 14
Example: Ball Bounce v5<html> <head><title>Ball Bounce</title></head> <body style="margin: 0;"> <img id=imgBall src=Ball.gif style="position: absolute;" /> <img id=imgFace src=BallChar2.GIF style="position: absolute;" /> </body></html>
<script language=vbscript src=Sprite.vbs></script><script language=vbscript>Option ExplicitDim ballDim face
Sub window_onLoad() window.setinterval "Main", 20 Set ball = New Sprite ball.Init 5, 3 Set face = New Sprite face.Init 1, 12 End Sub
Sub Main() ball.Move imgBall face.Move imgFace End Sub</script>
• Now have easy way of:– creating &
using multiple sprites
– each with own identity (separate characteristics)
– only a few (4) lines of code
Mark Dixon SOFT 131 Page 15
Questions: OOP
• Name a– class– property– method– instance
Class House Dim number Dim road Dim district
Sub ChangeDist(newDist) district = newDist End SubEnd Class
Dim h Set h = New House
Mark Dixon SOFT 131 Page 16
Benefits of OOP in code• Procedures and Functions are part of object
– encapsulation
• Related Data and Operations together
• Private keyword – restrict access to data
• Clearer code• Reduces chance of accidental interference• Less prone to error
Mark Dixon SOFT 131 Page 17
Object Oriented Analysis• Look for nouns in text, either
– object classes, or– object properties
• Look for verbs in text,– object methods
The students' Union bar needs a computer system for recording the purchase of drinks. Typically, a student will stagger to the bar and describe their order, consisting of one or (usually) more drinks.The bar staff will then prepare the drinks and calculate the cost of the order.
Mark Dixon SOFT 131 Page 18
Identify all nouns and verbs
• Nouns: student's Union bar, computer system, drinks, student, bar, order, bar staff, cost.
• Verbs: recording the purchase, stagger, describe, prepare drinks, calculate cost
The students' Union bar needs a computer system for recording the purchase of drinks. Typically, a student will stagger to the bar and describe their order, consisting of one or (usually) more drinks.The bar staff will then prepare the drinks and calculate the cost of the order.
Mark Dixon SOFT 131 Page 19
Identify relevant nouns and verbs• What is relevant?
– depends on project scope, duration, budget
• Scenario 1: small project, limited automation– Nouns: drinks, order, cost– Verbs: describe, calculate cost
• Scenario 2: large project, high automation– Nouns: student's Union bar, drinks, student,
bar, order, bar staff, cost.– Verbs: recording the purchase, describe,
prepare drinks, calculate cost
Mark Dixon SOFT 131 Page 20
Scenario 1: detail• Nouns: drinks, order, cost
• Verbs: describe, calculate cost
Mark Dixon SOFT 131 Page 21
Tutorial Exercise: Ball Bounce• Learning Objective: To create and use your own
class.
• Task 1: Get the Ball Bounce examples (1, 2, and 5) from the lecture working.
• Task 2: Add a hit method to the sprite class, which detects the collision with another sprite.
• Task 3: Modify your page to count the number of hits between the two sprites.
• Task 4: Modify your page to make sprites bounce off each other.
• Task 5: Add another sprite.
Mark Dixon SOFT 131 Page 22
Tutorial Exercise: Bar• Task 1: Continue the analysis of the bar
example in the lecture, and implement a simple object oriented bar drinks calculation program.
Mark Dixon SOFT 131 Page 23
Tutorial Exercise: Interceptor• Learning Objective: To create and use your
own classes.
• Task 1: Re-write your Interceptor example (from last week) to use object oriented concepts (classes, properties, methods, and instances)