object oriented analysis and design l.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Object-Oriented Analysis and Design PowerPoint Presentation
Download Presentation
Object-Oriented Analysis and Design

Loading in 2 Seconds...

play fullscreen
1 / 25

Object-Oriented Analysis and Design - PowerPoint PPT Presentation


  • 200 Views
  • Uploaded on

Object-Oriented Analysis and Design. Introduction Tom Perkins. Head First Object-Oriented Analysis and Design. by Brett McLaughlin, Gary Pollice, David West. Publisher: O'Reilly. Pub Date: November 2006. Print ISBN-10: 0-596-00867-8. Print ISBN-13: 978-0-59-600867-3. Pages: 634.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Object-Oriented Analysis and Design' - JasminFlorian


Download Now An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide2

Head First Object-Oriented Analysis and Design

by Brett McLaughlin, Gary Pollice, David West

Publisher: O'Reilly

Pub Date: November 2006

Print ISBN-10: 0-596-00867-8

Print ISBN-13: 978-0-59-600867-3

Pages: 634

head first chapters
Head First Chapters
  • Great Software Begins Here
  • Gathering Requirements
  • Requirements Change
  • Analysis
  • Handling Change
    • Small Changes lead to Big Problems
    • Incorporating Flexibility
  • Software Architecture
  • Bringing Order to Chaos
  • Design Principles
  • Iterating and Testing
  • An OOAD Software Process
obstacles
Obstacles
  • Not the “perfect” Introduction to Object Orientation book
  • Examples in Java
    • Rework in VB.NET or C#.NET
  • Approach too “Juvenile”
    • Maybe
    • Incorporates many different features drawn from learning theory and cognitive psychology
  • Not a course for “object oriented gurus”
  • Yet assumes some familiarity with object-oriented coding
approach
Approach
  • Stick close to the book
  • As much code as possible
  • Walkthru’s
  • Get your hands dirty, become involved
  • Do the book exercises
  • Work with someone where possible
  • Participate in class discussions
  • Team Learning Experiments
welcome to objectville

Welcome to Objectville

“Foist, youse gotta speak da language!”

learning objectives
Learning Objectives
  • Be able to read and interpret a UML class diagram
  • Be able to write a simple class in VB.NET or C#.Net
  • Be able to write a class that inherits from another class, changes some behavior and adds some behavior to the base class
  • Be able to define polymorphism
  • Be able to identify what encapsulation is and why it is important
points of interest
Points of Interest

set

set

set

set

set

Inheritance

UML

Polymorphism

Encapsulation

uml and class diagrams

Airplane

speed: int

getSpeed(): int

setSpeed(int)

UML and Class Diagrams

Class Diagram

Name

Member Variables

name:type

Methods

name(parameters the method uses): return type

basic airplane class
Basic Airplane Class

C#.NET

using System;

using System.Collections.Generic;

using System.Text;

namespace Objectville_Demo_CS

{

public class Airplane

{

private int speed;

public Airplane(){ // constructor

}

public virtual void setSpeed(int speed) {

this.speed = speed;

}

public virtual int getSpeed() {

return speed;

}

}

}

VB.NET

Public Class Airplane

Private mSpeed As Integer

Sub New()

End Sub

PublicSub SetSpeed(ByVal value As Integer)

mSpeed = value

End Sub

Public Function GetSpeed() As Integer

Return mSpeed

End Function

End Class

what doesn t the class diagram give you
What doesn’t the Class Diagram give you?
  • Variable scope – public, private, friend, etc
    • Full-blown UML does
    • Not usually needed
  • Information about the constructor method for the class
  • Details of what each method does
inheritance
Inheritance
  • Once class inherits behavior from another class
  • Code keywords
    • VB: Inherits
    • C# uses : (colon) to indicate inheritance
  • “Derived” class, subclass
  • “Base” class, superclass (vb – MyBase)
inheritance13
Inheritance

VB.NET

Public Class Jet

Inherits Airplane

Private Const MULTIPLIER = 2

Public Sub New()

MyBase.New()

End Sub

Public Overrides Sub SetSpeed(ByVal value As Integer)

MyBase.SetSpeed(value * MULTIPLIER)

End Sub

Public Sub Accelerate()

MyBase.SetSpeed(GetSpeed() * 2)

End Sub

End Class

C#.NET

public class Jet:Airplane

{

private const int MULTIPLIER = 2;

public Jet() : base()

{

}

public override void setSpeed(int speed)

{

base.setSpeed(speed * MULTIPLIER);

}

public void accelerate()

{

base.setSpeed(getSpeed() * 2);

}

}

base class modifications net
Base Class Modifications (.NET)

Public Class Airplane

Private mSpeed As Integer

Sub New()

End Sub

Public Overridable Sub SetSpeed(ByVal value As Integer)

mSpeed = value

End Sub

Public OverridableFunction GetSpeed() As Integer

Return mSpeed

End Function

End Class

public class Airplane

{

private int speed;

public Airplane() // constructor

{

}

public virtual void setSpeed(int speed)

{

this.speed = speed;

}

public virtualint getSpeed()

{

return speed;

}

}

putting the classes to work start with a biplane
Putting the classes to workStart with a biplane

static void Main(string[] args)

{

FlyTest1();

}

public static void FlyTest1()

{

Airplane biplane = new Airplane();

biplane.setSpeed(212);

Console.WriteLine(biplane.getSpeed());

Console.ReadLine();

}

Module Module1

Sub Main()

FlyTest()

End Sub

Public Sub FlyTest()

Dim biplane As New Airplane

biplane.SetSpeed(212)

Console.WriteLine( _ biplane.GetSpeed())

Console.Read()

End Sub

End Module

slide16

Module Module1 ‘Puzzle 1 (VB)

Sub Main()

FlyTest()

End Sub

Public Sub FlyTest()

Dim biplane As New Airplane

biplane.SetSpeed(___)

Console.WriteLine(_________________)

Dim boeing As New Jet

boeing.SetSpeed(___)

Console.WriteLine(_________________)

______

While _______

___________________

Console.WriteLine(________________)

If (________________ > 5000) Then

________________(________________ * 2)

Else

_________________

End If

_________

End While

Console.WriteLine(biplane.GetSpeed)

Console.Read()

End Sub

End Module

Code snippets:

212 Dim x = 0 boeing.GetSpeed

biplane.GetSpeed() biplane.SetSpeed

boeing.GetSpeed biplane.Accelerate()

biplane.GetSpeed 422 x < 5

x < 4 boeing.SetSpeed x = 0 x < 3

x = x + 1 424

boeing.Accelerate() x-- x = 1

Desired output:

212

844

1688

6752

13504

27008

1696

slide17

static void Main(string[] args) // puzzle 1 C#

{

FlyTest1();

}

public static void FlyTest1()

{

Airplane biplane = new Airplane();

biplane.setSpeed(___);

Console.WriteLine(____________);

Jet boeing = new Jet();

boeing.setSpeed(___);

Console.WriteLine(________________);

_________;

while (________)

{

_________________;

Console.WriteLine(_____________________);

if ( ______________ > 5000)

{

__________________(______________ * 2);

}

else

{

______________________;

}

___________;

}

Console.WriteLine(biplane.getSpeed());

Console.ReadLine();

}

Code Snippets:

212 boeing.getSpeed()

biplane.getSpeed() 422 x = 0

int x = 0; x < 4 boeing.accelerate() biplane.setSpeed x-- x = 1 x < 3

boeing.getSpeed() boeing.accelerate()

boeing.getSpeed() biplane.getSpeed()

x++ 424 x < 5

Desired output:

212

844

1688

6752

13504

27008

1696

slide18

DEMO

“Walkthru” of solution

a toonce of polymorphism

Airplane

Jet

speed: int

MULTIPLIER: int

getSpeed(): int

setSpeed(int)

accelerate()

A “toonce” of Polymorphism

“inherits from”

Airplane plane = new Airplane();

Airplane plane = new Airplane();

Airplane plane = new Jet();

Airplane plane = new Rocket();

encapsulation escapades
Encapsulation Escapades
  • Hiding information from the rest of your application
  • Hide the details within the object; use “Public” sparingly
  • Demo – change the internal speed variable from “private” to “public”
    • Run FlyTest2 and FlyTest3
rick s guitar shop application uml class diagrams
Rick’s Guitar Shop ApplicationUML Class Diagrams

Guitar

Inventory

serialNumber:string

price: double

builder:string

type:string

backWood:string

topWood:string

Guitars: List

addGuitar(string,double,string,string,

string,string,string)

getGuitar(string):Guitar

search(Guitar):Guitar

initializeInventory:

printInventory()

getSerialNumber():string

getPrice():double

setPrice():double

getBuilder():double

getModel():string

getType():double

getBackWood():string

getTopWood():string

slide22

Main Application

Inv:Inventory

g:Guitar

whatErinLikes:Guitar

initializeInventory(Inventory)

slide23

Demo

Walkthru Rick’s Guitar Shop Application

problems
Problems
  • Search routine does not work
  • Should use constants or enums instead of strings
  • Search should return multiple guitars
  • Architecture could use some restructuring
  • What would you do first with Rick’s app?
assignment
Assignment
  • If your’re new to object oriented programming, read Appendix ii: Welcome to Objectville
  • Work through exercises in Chapter 1
  • Download Rick’s App from class site
  • Modify it to:
    • Fix the search routine
    • Use enums instead of strings