cs445 - object oriented design and programming oop

49
CS445 - Object Oriented Design and Programming OOP

Post on 19-Dec-2015

248 views

Category:

Documents


11 download

TRANSCRIPT

CS445 - Object Oriented Design and Programming

OOP

CS445 - Object Oriented Design and Programming

ScheduleWed, 06:25-09:05PM

Rice Campus - Wheaton Room RI 148

CS445 - Object Oriented Design and Programming

Java Must Have To write your first program, you need:

• The JavaTM 5 Platform, Standard Edition. • A text editor. Notepad, the simple editor included

with the Windows platforms.

You can and should use an IDE– Eclipse– Jbuilder– JDeveloper

CS445 - Object Oriented Design and Programming

Class Goals• Explain and justify the principles of Object

Oriented concepts:• (review abstraction & abstract data types,

encapsulation, inheritance, polymorphism, aggregation)

• Analyze and identify the strengths (and weaknesses) of in-depth areas of the Object Oriented paradigm.

• Analyze, explain, & compare the qualities of Object Oriented languages and how well they support the object model.

• Explain and analyze the key points of Object Oriented analysis.

CS445 - Object Oriented Design and Programming

Class Goals Explain and analyze the key points of Object

Oriented design. Design, implement, test and debug multi-phased

Object Oriented application. Explain and utilize contemporary Object

Oriented methodologies (data-driven methodology and behavior-driven methodology)

Utilize recent notation (Unified Modeling Language) to express the artifacts of Object Oriented Analysis & Design (class design, class relationships, object interaction, object states, etc.)

CS445 - Object Oriented Design and Programming

Class Goals Perform Object Oriented Analysis & Design on a

real-world problem. Explain and Utilize Complex Design Patterns. Create an implementation of the resultant

Object Oriented design. Examine new & contemporary concepts in

Object Orientation. Communicate the deliverables of a software

development project.

CS445 - Object Oriented Design and Programming

Laboratory Projects A 2-part large-scale Object Oriented software

development project is required by each student in which the student will experience designing, coding, testing and debugging a significant Object Oriented application.

The combined parts of the course project are generally range from 5000 - 10000 lines of code.

– Part 1 (6 weeks): object-oriented analysis and design of the software system.

– Part 2 (6 weeks): object-oriented detailed design, implementation using object oriented language, and testing of the software system.

CS445 - Object Oriented Design and Programming

Text Book TEXTBOOK (REQUIRED)

– Object-Oriented Software Development Using Java

– Xiaoping Jia, Second Edition

CS445 - Object Oriented Design and Programming

Contact Information Class Home Page,

http://www.csam.iit.edu/~oaldawud/cs445/

Omar Aldawud [email protected]

CS445 - Object Oriented Design and Programming

Introduction

Chapter 1

CS445 - Object Oriented Design and Programming

SE Generic Activities

Communication Planning

Modeling

ConstructionDeployment

analysis

designcode

test

project initiation

requirement gathering estimating

scheduling

tracking

delivery

support

feedback

SW Engineering is the:

Analysis, Design, Construction, Verification and Management of Software.

CS445 - Object Oriented Design and Programming

SE Waterfall Model

CS445 - Object Oriented Design and Programming

Evolutionary Models: The Spiral

communication

planning

modeling

constructiondeployment delivery feedback

start

analysis design

code test

estimation scheduling risk analysis

CS445 - Object Oriented Design and Programming

Rational Unified Process

a “use-case driven, architecture-centric, iterative and incremental” software process closely aligned with the Unified Modeling Language (UML)

Tools are used to describe customer views (use cases)

Used mainly for OO based methodologies Runs in phases

CS445 - Object Oriented Design and Programming

inceptioninception

The Unified Process (UP)

software increment

Release

Inception

Elaboration

construction

transition

production

inception

elaborationPhase 1

Communication + Planning

Phase 2

Planning + Modeling

Phase 3

Coding, unit test & integrate Components

Phase 4 Deployment

result

Construction

Transition

Production

CS445 - Object Oriented Design and Programming

UP Phases

Inception Elaboration Construction Transition Production

UP Phases

Workflows

Requirements

Analysis

Design

Implementation

Test

Iterations #1 #2 #n-1 #n

Support

CS445 - Object Oriented Design and Programming

UP Work ProductsInception phase

Elaboration phase

Construction phase

Transition phase

Vision document Init ial use-case model Init ial project glossaryInit ial business case Init ial risk assessment. Project plan, phases and iterations. Business model, if necessary. One or more prototypes Incept io n

Use-case modelSupplementary requirements including non-functional Analysis model Software architecture Descript ion. Executable architectural prototype. Preliminary design model Revised risk listProject plan including iteration plan adapted workflows milestones technical work products Preliminary user manual

Design modelSoftware components Integrated software increment Test plan and procedure Test cases Support documentation user manuals installat ion manuals descript ion of current increment

Delivered software increment Beta test reports General user feedback

CS445 - Object Oriented Design and Programming

Extreme Programming (XP) The most widely used agile process, originally

proposed by Kent Beck. It encompasses the following activities:

1. XP Planning– Begins with the creation of “user stories”– Agile team assesses each story and assigns a cost– Stories are grouped to form a deliverable increment– A commitment is made on delivery date– After the first increment “project velocity” is used to

help define subsequent delivery dates for other increments

• Project Velocity is a measure of the number of stories implemented in the first release

CS445 - Object Oriented Design and Programming

Extreme Programming (XP)2. XP Design

– Follows the KIS principle – Simple Design– Design provide implementation guidelines for a story– Encourage the use of CRC cards or class diagram– For difficult design problems, suggests the creation of “spike

solutions”—a design prototype

3. XP Coding– Recommends the construction of a unit test for a story before

coding– Encourages “pair programming” for stories– Integration Team – integrates all stories

4. XP Testing– All unit tests are executed daily– “Acceptance tests” are defined by the customer and

executed to assess customer visible functionality

CS445 - Object Oriented Design and Programming

Extreme Programming (XP)

unit test continuous integration

acceptance testing

pair programming

Release

user stories values acceptance test criteria iteration plan

simple design CRC cards

spike solutions prototypes

refactoring

software incrementproject velocity computed

CS445 - Object Oriented Design and Programming

Modeling the Real World

Components of a software system is an interpretation of the real world

– Model – Algorithm

Object Orientation is a software development model that makes use of objects as a representation of the real world

CS445 - Object Oriented Design and Programming

Object Orientation OO development processes is similar to those of the waterfall

model (What Booch calles Macro Process)– Conceptualization – requirements gathering– OO Analysis and Modeling

• Goal to build models of the system’s behavior using UML• A model should capture the essential and relevent aspects of the real

world– OO Design

• Goal to create an architecture for implementation– Implementation

• Use OO programming language (such as Java) to implement the design• Coding, testing and debugging

– Maintenance• Evolution support

CS445 - Object Oriented Design and Programming

Booch [94] Approach Proposed an iterative SW development process for

OOSD The approach consist of a number of successive

iterations (micro process):– Identify the classes– Identify the semantics (attributes and behavior)– Identify the relationships– Define class interfaces– Implementing the class

Booch’s approach adopted by RUP and XP

CS445 - Object Oriented Design and Programming

High Level Programming Languages

Java Introduction

CS445 - Object Oriented Design and Programming

High-Level Languages Compiled

– Compiler converts source code (instructions and data) into machine language, then program is executed

Interpreted– Interpreter converts instructions into machine

language at run time as instructions are executed – Usually executes more slowly than compiled program

CS445 - Object Oriented Design and Programming

High-Level Languages Are portable Are translated into machine code by compilers Instructions are written in language similar to

natural language Examples -- FORTRAN, COBOL, Pascal,

C, C++ Many are standardized by ISO/ANSI to provide

an official description of the language

CS445 - Object Oriented Design and Programming

Java Combination of compiler and interpreter Compiler converts source code into byte codes

(an instruction set for a virtual, machine-independent processor)

At run time, the Java Virtual Machine (JVM) interprets the byte codes and converts them into the machine language on which the program is running.

CS445 - Object Oriented Design and Programming

Programming a Computer: Java The Java Programming Language

– A high-level language– Java compiler translates to Java bytecodes for

execution on a Java Virtual Machine (JVM)

Ok ...

J a va V i r tu a lM a c h in e

T ra n s la to r

1011 0000 0001 00000000 0100 0001 01111010 0010 0100 1000 0000 0000

sum = 16 + 23;J a va

C o m p i l e r

J V MM a c h in e

L a n g u a g e

CS445 - Object Oriented Design and Programming

Java Portability

Windows PCrunning JVM

Windows PCrunning JVM

Java Program

Java Program Unix box

running JVM

Unix boxrunning JVM

Macintoshrunning JVM

Macintoshrunning JVM

Java Bytecode

Java Bytecode

CS445 - Object Oriented Design and Programming

Java Achieves portability by using both a compiler and an

interpreter

Java compiler translates a Java program into an intermediate Bytecode--not machine language

An interpreter program called the Java Virtual Machine (JVM) translates each successive instruction in the Bytecode program to machine language and

immediately runs it

CS445 - Object Oriented Design and Programming

The Java Language Created by Sun Microsystems in 1995 Syntax based on C++ Object-Oriented Support for Internet applications Extensive library of prewritten classes Portability among platforms Built-in networking

CS445 - Object Oriented Design and Programming

Java Programs Applets

– Small programs designed to add interactivity to Web sites

– Downloaded with the Web page and launched by the Internet browser

Servlets– Run by Web server on the server– Typically generate Web content

Applications– Programs that run standalone on a client

CS445 - Object Oriented Design and Programming

An Introduction to Programming

Programming Basics Program Design with Pseudocode Developing a Java Application

CS445 - Object Oriented Design and Programming

Programming Basics Programming is translating a problem into

ordered steps consisting of operations a computer can perform:

– Input– Calculations– Comparisons of values– Moving data– Output

The order of execution of instructions is called flow of control

CS445 - Object Oriented Design and Programming

Program Design with Pseudocode

Pronounced sue-dough-code English-like language for specifying the design

of a program Programmer can concentrate on design of

program without worrying about Java language rules (syntax)

Then convert pseudocode into Java code

CS445 - Object Oriented Design and Programming

Four Types of Flow of Control Sequential Processing

– Execute instructions in order

Method Call– Jump to code in method, then return

Selection– Choose code to execute based on data value

Looping or Iteration– Repeat operations for multiple data values

CS445 - Object Oriented Design and Programming

Sequential Processing The pseudocode for calculating the sum of two

numbers would look like this:

read first number

read second number

set total to (first number + second number)

output total

Statement Statement Statement . . .

CS445 - Object Oriented Design and Programming

Method Call Calling the method executes the method Methods can take arguments (data to use) and

return values Here is pseudocode for calculating the square

root of an integer:  read an integer

call the square root method, with integer as argument

output the square root

CS445 - Object Oriented Design and Programming

Methods

SUBPROGRAM1 a meaningful collection

of SEQUENCE, SELECTION, LOOP,

SUBPROGRAM

sqroot method . . .

CS445 - Object Oriented Design and Programming

Selection The pseudocode for determining if a number is

positive or negative is: read a number

if the number is greater than or equal to 0

write "Number is positive."

else

write "Number is negative." Statement

Statement

Condition . . .

True

False

IF Condition THEN Statement1 ELSE Statement2

Statement

CS445 - Object Oriented Design and Programming

Looping The pseudocode for finding the sum of a set of

numbers is:

set total to 0 read a number while there was a number to

read, add number to total read the next number

write total

WHILE Condition DO Statement1

Statement

. . .False

True

Condition

CS445 - Object Oriented Design and Programming

EVENT

EVENTHANDLER

a subprogram executed when an event occurs

ASYNCHRONOUS CONTROL

CS445 - Object Oriented Design and Programming

Object-oriented Programming (OOP)

Class – tool for encapsulating data and operations (methods) into one

package– defines a template or model for creating and manipulating objects

Objects– data created using the class and its methods– an object is an instance of the class– creating an object is instantiation– A software components consists of variables and methods. – A mechanism for encapsulation. – modularity – information hiding

CS445 - Object Oriented Design and Programming

Object-oriented Programming (OOP)

Message– Objects communicate via message passing. – A message consists of an object (the recipient), a

method, and optional parameters. Inheritance

– A mechanism to organize classes by commonalities.

• subclasses, specialization • superclass, generalization

CS445 - Object Oriented Design and Programming

Classes and Objects Examples Date class

– data: month, day, year– operations to set and return month, day,

year

a Date object– Aug– 28– 2007

CS445 - Object Oriented Design and Programming

Classes and Objects An object:

point1 Attributes or fields:

int x, y; A method:

void move(int dx, int dy) A message:

point1.move(10, 10)

CS445 - Object Oriented Design and Programming

Classes and Objects Inheritance Example: Student GradStudent MSStudent PhDStudent UGStudent

CS445 - Object Oriented Design and Programming

OOP Advantage: Reuse Well-written classes can be reused in new

applications Shortens development time because

programmers don't need to write new code Programs are more robust because the class

code is already tested

CS445 - Object Oriented Design and Programming

An Object of class Time

Set

Increment

Write . . .

Time

OPERATIONS DATA

Private data:

hrs 8

mins 25

secs 42