Download presentation
Presentation is loading. Please wait.
Published byDennis Glenn Modified over 9 years ago
1
Object-Oriented Analysis and Design Introduction Tom Perkins
2
Pages: 634 Pub Date: November 2006 Publisher: O'Reilly by Brett McLaughlin, Gary Pollice, David West Head First Object-Oriented Analysis and Design Print ISBN-13: 978-0-59-600867-3 Print ISBN-10: 0-596-00867-8
3
Head First Chapters 1.Great Software Begins Here 2.Gathering Requirements 3.Requirements Change 4.Analysis 5.Handling Change 1.Small Changes lead to Big Problems 2.Incorporating Flexibility 6.Software Architecture 7.Bringing Order to Chaos 8.Design Principles 9.Iterating and Testing 10.An OOAD Software Process
4
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 Major problem: Getting you involved!
5
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
6
Welcome to Objectville “Foist, youse gotta speak da language!”
7
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
8
Points of Interest UML Inheritance set Polymorphism Encapsulation
9
UML and Class Diagrams Airplane speed: int getSpeed(): int setSpeed(int) Class Diagram Member Variables name:type Name Methods name(parameters the method uses): return type
10
Basic Airplane Class VB.NET Public Class Airplane Private mSpeed As Integer Sub New() End Sub Public Sub SetSpeed(ByVal value As Integer) mSpeed = value End Sub Public Function GetSpeed() As Integer Return mSpeed End Function End 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; }
11
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
12
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)
13
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); }
14
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 Overridable Function 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 virtual int getSpeed() { return speed; }
15
Putting the classes to work Start with a biplane 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 static void Main(string[] args) { FlyTest1(); } public static void FlyTest1() { Airplane biplane = new Airplane(); biplane.setSpeed(212); Console.WriteLine(biplane.getSpeed()); Console.ReadLine(); }
16
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 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 212 844 1688 6752 13504 27008 1696 Code snippets: Desired output:
17
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(); } 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 Code Snippets: 212 844 1688 6752 13504 27008 1696 Desired output:
18
Class Exercise 1 Divide into 2 groups –C# –VB Divide into “teams” of 3-4 Get the “proper” puzzle Place the code snippets into the blank lines in the code You can use the same snippet more than once There are some (“trick/decoy”) snippets that you won’t need. Goal: create a class that will produce the desired output.
19
DEMO “Walkthru” of solution
20
A “toonce” of Polymorphism Airplane speed: int getSpeed(): int setSpeed(int) Jet MULTIPLIER: int accelerate() “inherits from” Airplane plane = new Airplane(); Airplane plane = new Jet(); Airplane plane = new Rocket();
21
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
22
Rick’s Guitar Shop Application UML Class Diagrams Guitar serialNumber:string price: double builder:string type:string backWood:string topWood:string getSerialNumber():string getPrice():double setPrice():double getBuilder():double getModel():string getType():double getBackWood():string getTopWood():string Inventory Guitars: List addGuitar(string,double,string,string, string,string,string) getGuitar(string):Guitar search(Guitar):Guitar initializeInventory: printInventory()
23
Main Application Inv:Inventory g:Guitar whatErinLikes:Guitar initializeInventory(Inventory)
24
Demo Walkthru Rick’s Guitar Shop Application
25
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?
26
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
27
FINIS
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.