mark dixon soft 131page 1 12 – object oriented analysis, design, and programming

23
Mark Dixon SOFT 131 Page 1 12 – Object Oriented Analysis, Design, and Programming

Upload: alfred-bishop

Post on 21-Jan-2016

222 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Mark Dixon SOFT 131Page 1 12 – Object Oriented Analysis, Design, and Programming

Mark Dixon SOFT 131 Page 1

12 – Object Oriented Analysis, Design, and Programming

Page 2: Mark Dixon SOFT 131Page 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

Page 3: Mark Dixon SOFT 131Page 1 12 – Object Oriented Analysis, Design, and Programming

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>

Page 4: Mark Dixon SOFT 131Page 1 12 – Object Oriented Analysis, Design, and Programming

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

Page 5: Mark Dixon SOFT 131Page 1 12 – Object Oriented Analysis, Design, and Programming

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

Page 6: Mark Dixon SOFT 131Page 1 12 – Object Oriented Analysis, Design, and Programming

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

Page 7: Mark Dixon SOFT 131Page 1 12 – Object Oriented Analysis, Design, and Programming

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

Page 8: Mark Dixon SOFT 131Page 1 12 – Object Oriented Analysis, Design, and Programming

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

Page 9: Mark Dixon SOFT 131Page 1 12 – Object Oriented Analysis, Design, and Programming

Mark Dixon SOFT 131 Page 9

Properties: Animals

• Class: Animal• Properties: Name, Species, Gender• Instances: myPet, yourPet

Page 10: Mark Dixon SOFT 131Page 1 12 – Object Oriented Analysis, Design, and Programming

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

Page 11: Mark Dixon SOFT 131Page 1 12 – Object Oriented Analysis, Design, and Programming

Mark Dixon SOFT 131 Page 11

Methods: Students

• Method: Clear

Page 12: Mark Dixon SOFT 131Page 1 12 – Object Oriented Analysis, Design, and Programming

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

Page 13: Mark Dixon SOFT 131Page 1 12 – Object Oriented Analysis, Design, and Programming

Mark Dixon SOFT 131 Page 13

Example: Ball Bounce v5• Multiple instances:

Page 14: Mark Dixon SOFT 131Page 1 12 – Object Oriented Analysis, Design, and Programming

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

Page 15: Mark Dixon SOFT 131Page 1 12 – Object Oriented Analysis, Design, and Programming

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

Page 16: Mark Dixon SOFT 131Page 1 12 – Object Oriented Analysis, Design, and Programming

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

Page 17: Mark Dixon SOFT 131Page 1 12 – Object Oriented Analysis, Design, and Programming

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.

Page 18: Mark Dixon SOFT 131Page 1 12 – Object Oriented Analysis, Design, and Programming

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.

Page 19: Mark Dixon SOFT 131Page 1 12 – Object Oriented Analysis, Design, and Programming

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

Page 20: Mark Dixon SOFT 131Page 1 12 – Object Oriented Analysis, Design, and Programming

Mark Dixon SOFT 131 Page 20

Scenario 1: detail• Nouns: drinks, order, cost

• Verbs: describe, calculate cost

Page 21: Mark Dixon SOFT 131Page 1 12 – Object Oriented Analysis, Design, and Programming

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.

Page 22: Mark Dixon SOFT 131Page 1 12 – Object Oriented Analysis, Design, and Programming

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.

Page 23: Mark Dixon SOFT 131Page 1 12 – Object Oriented Analysis, Design, and Programming

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)