Transcript Illinois Institute of Technology
OOP Class 2
CS445 - Object Oriented Design and Programming
An Object of
c
lass Time
OPERATIONS DATA
Set Increment Write .
.
.
Time Private data: hrs 8 mins 25 secs 42 CS445 - Object Oriented Design and Programming
Definitions
CS445 - Object Oriented Design and Programming
Definitions
Definitions of object on the Web: a tangible and visible entity; an entity that can cast a shadow; "it was full of rackets, balls and other objects" Definitions of object-oriented on the Web “object-oriented ... techniques where data carries with itself the "methods" (also known as "functions") used to handle that data. An OO programmer, for instance, can write a statement such as "
object.print()"
procedural code…” without having to be concerned about what kind of object will be involved at "run time" or what its printing method is. Object-oriented code is both more flexible and more organized, so it is far easier to write, read, and change than www.3dartist.com/WP/dempy/help/glossary.htm
“… A style of software development and packaging based on how real world objects relate to one another. Data and procedures are combined in objects; objects communicate with each other via messages; similar objects are grouped together into classes; data and procedures are inherited through a class hierarchy…” www.olenick.com/html/glossary.html
CS445 - Object Oriented Design and Programming
Definitions
Definitions of object-oriented design on the Web: entails transforming the analysis model into a feasible design. kaykeys.net/science/computerwork/oodesign/ A software design method that models the characteristics of abstract or real objects using classes and objects. software.allindiansite.com/java/ojava.html
Object-oriented design (OOD) is a design method in which a system is modeled as a collection of cooperating objects and individual objects are treated as instances of a class within a class hierarchy. en.wikipedia.org/wiki/Object-oriented_design
CS445 - Object Oriented Design and Programming
Definitions of object-oriented analysis on the Web:
Object-oriented analysis
– builds a model of a system that is composed of objects. The behavior of the system is achieved through collaboration between these objects, and the state of the system is the combined state of all the objects in it. Collaboration between objects involves them sending messages to each other. Definitions of object-oriented programming on the Web: – “… A programming approach based on the concepts of data abstraction and inheritance. Unlike procedural programming techniques, …” – “… Style of programming characterized by the use of separate "objects" to perform different tasks within a program. These "objects" usually consist of an abstract data type or class, along with the methods used to manipulate that abstract data type …” – “… A programming methodology built around objects and based on sending messages back and forth between those objects. The basic concepts of object-oriented programming are encapsulation, inheritance, and polymorphism …”
CS445 - Object Oriented Design and Programming
Modeling the Real World
Components of a software system is an interpretation of the real world – Model , a representation of parts of the real world – Algorithm, capture the computation needed to manipulate the model Object Orientation is a software development model that makes use of objects as a representation of the real world – An object represents anything in the real world that can be distinctly identified.
– A class represents a set of objects with similar characteristics and behavior
CS445 - Object Oriented Design and Programming
50’s – 60’s 70’s – 80’s
History
Focus Algorithm –solving computation problems and –researching efficient algorithms Data complexity Model Used Computation- Oriented Control Flow Data-Oriented Data Flow OO Balanced view of data and computation OO models made of objects which contain data and algorithms
CS445 - Object Oriented Design and Programming
Module Structure Chart
Main Prepare File for Reading Get Data Print Data Find Weighted Average Print Weighted Average Print Heading CS445 - Object Oriented Design and Programming
Two Design Strategies
FUNCTIONAL DECOMPOSITION FUNCTION OBJECT-ORIENTED DESIGN OBJECT FUNCTION . .
.
OBJECT FUNCTION .
.
. CS445 - Object Oriented Design and Programming .
.
. OBJECT
Software Process Models
CS445 - Object Oriented Design and Programming
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
The Unified Process (UP)
Phase 1 Communication + Planning Phase 2 Planning + Modeling result
Release soft ware increment
pr o duct io n inception CS445 - Object Oriented Design and Programming Phase 3 Coding, unit test & integrate Components co nst r uct ion t r ansit ion Phase 4 Deployment
UP Phases
UP Phases
Incept ion Elaborat ion Const ruct ion Transit ion
Workflows
Requirements Analysis Design Implementation Test Support
Iterations
#1 #2 #n-1 #n Product ion
CS445 - Object Oriented Design and Programming
Incept ion phase Vision document Init ial use-case model Init ial project glossary Init ial business case Init ial risk assessment . Project plan, phases and it erat ions. Business model, if necessary . One or more prot ot y pes
I n c e p t i o n
UP Work Products
Elaborat ion phase Const ruct ion phase Use-case model Supplement ary requirement s including non-funct ional Analy sis model Soft ware archit ect ure Descript ion. Execut able archit ect ural prot ot y pe. Preliminary design model Rev ised risk list Project plan including it erat ion plan adapt ed workflows milest ones t echnical work product s Preliminary user manual Design model Soft ware component s Int egrat ed soft ware increment Test plan and procedure Test cases Support document at ion user manuals inst allat ion manuals descript ion of current increment Transit ion phase Deliv ered soft ware increment Bet a t est report s General user feedback
CS445 - Object Oriented Design and Programming
Agile Development
CS445 - Object Oriented Design and Programming
The Manifesto for Agile Software Development
“We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:
•
Individuals and interactions over processes and tools
•
Working software over comprehensive documentation
•
Customer collaboration over contract negotiation
•
Responding to change over following a plan That is, while there is value in the items on the right, we value the items on the left more.”
Kent Beck et al
CS445 - Object Oriented Design and Programming
What is “Agility”?
Effective (rapid and adaptive) response to change Effective communication among all stakeholders Organizing a team so that it is in control of the work performed
Yielding …
Drawing the customer onto the team Rapid, incremental delivery of software
CS445 - Object Oriented Design and Programming
An Agile Process
Is driven by customer descriptions of what is required (scenarios) Recognizes that plans are short-lived Develops software iteratively with a heavy emphasis on construction activities Delivers multiple ‘software increments’ Adapts as changes occur
CS445 - Object Oriented Design and Programming
Extreme Programming (XP)
The most widely used agile process, originally proposed by Kent Beck XP Planning – Begins with the creation of “ user stories ” – Agile team assesses each story and assigns a cost – Stories are grouped to for 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
CS445 - Object Oriented Design and Programming
Extreme Programming (XP)
XP Design – Follows the KIS principle – Encourage the use of
CRC
cards (see Chapter 8) – For difficult design problems, suggests the creation of “ spike solutions ”— a design prototype – Encourages “ refactoring ”—an iterative refinement of the internal program design XP Coding – Recommends the construction of a unit test commences – Encourages “ pair programming ” for a store
before
coding 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)
spike solut ions simple design
prot ot ypes CRC cards
user st ories
values accept ance t est crit eria
it erat ion plan ref act oring Release sof t ware increment
project velocit y comput ed
unit t est cont inuous int egrat ion accept ance t est ing
CS445 - Object Oriented Design and Programming
pair programming
OO Design & Programming Java Basics
CS445 - Object Oriented Design and Programming
Classes and Objects
Class Point {
An object:
Int x, y;
Attributes or fields: point1
Public void move (intd dx, int dy) { x +=dx; y +=dy;
int x, y;
}
A method:
}
void move(int dx, int dy) A message: point1.move(10, 10)
CS445 - Object Oriented Design and Programming
An Object of
c
lass Time
OPERATIONS DATA
Set Increment Write .
.
.
Time Private data: hrs 8 mins 25 secs 42
Modularity Abstraction Encapsulation Inheritance Polymorphism Message Passing
CS445 - Object Oriented Design and Programming
Developing a Java Application
1.
2.
3.
• • • Write the source code Using an Integrated Development Environment (IDE) or text editor Save in a
.java
file Compile the source code:
javac ClassName.java
Creates
.class
file • Execute the application:
java ClassName
Run by the Java Virtual Machine (JVM)
CS445 - Object Oriented Design and Programming
A First Application
1 // First program in Java 2 // FirstProgram.java
3 4 public class
FirstProgram
5 { 6 public static void
main
( String [] args ) 7 { 8 System.out.println( "Programming is not " 9 + " a spectator sport!" ); 10 System.exit( 0 ); 11 12 } }
CS445 - Object Oriented Design and Programming
Class:
FirstProgram
Method:
main
(...) Statement: System.out.println(...) Comments: – // a comment – /* another comment */ Source file:
FirstProgram
.java
CS445 - Object Oriented Design and Programming
Program Errors
Compiler errors – Found by the compiler. – Usually caused by incorrect syntax or spelling Run-time errors – Reported by the JVM – Usually caused by incorrect use of prewritten classes or invalid data Logic errors – Found by testing the program – Incorrect program design or incorrect execution of the design
CS445 - Object Oriented Design and Programming
Edit Think
Program Life Cycle
Source Program Compile Link Load Execute Library routines Other object files
CS445 - Object Oriented Design and Programming
Introduction: Java Platform
Java TM platform is based on the idea that the same software should run on many different kinds of computers, consumer gadgets, and other devices. Portability – Java platform allows you to run the same Java application on lots of different kinds of computers.
CS445 - Object Oriented Design and Programming
JVM
Java virtual machine or "JVM
TM
” – a translator that turns general Java platform instructions into tailored commands that make the devices do their work
CS445 - Object Oriented Design and Programming
Java Program Phases
1.
2.
3.
4.
5.
– Edit IDE, vi, emacs, notepad – Compile javac – Load Class Loader – Verify Verifier (Security and Validation) – Execute Java Interpreter (java or appletviewer)
CS445 - Object Oriented Design and Programming
The java Compiler
javac – Creates bytecodes – Stored on disk as .class
– Each file contains bytecode for one and only one class
CS445 - Object Oriented Design and Programming
The java Class Loader
Loads bytecodes in memory – Loads .class
files from disk into memory
CS445 - Object Oriented Design and Programming
The java Bytecode Verifier
Confirms that all bytecodes are: – Valid and – Don't violate Java’s Security restrictions Works on bytecodes from memory
CS445 - Object Oriented Design and Programming
The java Interpreter
Reads bytecodes and translate them into a language that is relevant to the targeted computer architecture – PC – Machintosh – Cell Phone For applets execution its built into the browser or the appletviewer
CS445 - Object Oriented Design and Programming
Your first program:
HelloWorldApp
.java
Displays the greeting "Hello world!". To create this program, you will: Create a source file
–
A source file contains text, written in Java. Compile the source file into a bytecode file .
–
The compiler,
javac
, converts these instructions into a bytecode file CS445 - Object Oriented Design and Programming
Your first program:
HelloWorldApp
Run the program contained in the bytecode file
– –
The Java interpreter implements the Java VM This interpreter takes your bytecode file and carries out the instructions by translating them into instructions that your computer can understand.
CS445 - Object Oriented Design and Programming
JRE
CS445 - Object Oriented Design and Programming
JAVA Program
public class HelloWorldApp { public static void main (String[] args) {
System.out.println("Hello World");
} }
CS445 - Object Oriented Design and Programming
Steps
1.
2.
3.
Save the file as
HellowWordApp.java
–
Compile
Javac HellowWordApp.
java HellowWordApp.
class –
Run the program
Java HellowWordApp
CS445 - Object Oriented Design and Programming
Output
CS445 - Object Oriented Design and Programming
What Can be a Class?
Physical Objects – equipments, devices, products People – Students, Faculty, Customers Organizations – Universities, Companies, Departments, Bank Places – Buildings, Rooms, Seats Events – Mouse click, order request, purchase orders Concepts – Transaction The domain determines the classes
CS445 - Object Oriented Design and Programming
What Features Should a Class Have?
Actions should be modeled as methods of a class Verb phrases Underline the verbs and nouns in the description of the requirements and use cases Nouns are candidate classes or attributes Verbs are candidate methods
CS445 - Object Oriented Design and Programming
Java Programming Language
Java Basics OO Basics UML Basics
CS445 - Object Oriented Design and Programming
Data Types, Variables, and Constants
We use Symbolic Names to refer to data We must assign a data type for very identifier (symbolic name) Declaring Variables Primitive Data Types Initial Values and Literals String Literals and Escape Sequences Constants
CS445 - Object Oriented Design and Programming
Data Types
For all data, assign a name (identifier) and a data type Data type tells compiler: – How much memory to allocate – Format in which to store data – Types of operations you will perform on data Compiler monitors use of data – Java is a "strongly typed" language Java "primitive data types"
byte, short, int, long, float, double, char, boolean CS445 - Object Oriented Design and Programming
Declaring Variables
Every Variable must be given a name and a data type Variables hold one value at a time, but that value can change Syntax: or
dataType identifier;
dataType identifier1, identifier2, …;
Naming convention for variable names: – first letter is lowercase – embedded words begin with uppercase letter
CS445 - Object Oriented Design and Programming
Java Primitive Data Types
byte, short, int, long , float, double, char, boolean primitive integral boolean floating point byte char short int long float double CS445 - Object Oriented Design and Programming
OO Design
CS445 - Object Oriented Design and Programming
Topics
Class Basics and Benefits Creating Objects Using Constructors Calling Methods Using Object References
CS445 - Object Oriented Design and Programming
Object-Oriented Programming
Classes combine data and the methods (code) to manipulate the data Classes are a template used to create specific objects All Java programs consist of at least one class.
Two types of classes – Application/Applet classes – Service classes
CS445 - Object Oriented Design and Programming
Example
Student
class – Data: name, year, and grade point average – Methods: store/get the value of each piece of data, promote to next year, etc.
Student
Object: student1 – Data: Maria Gonzales, Sophomore, 3.5
CS445 - Object Oriented Design and Programming
Some Terminology
Object reference
: identifier of the object
Instantiating an object
: creating an object of a class
Instance of the class
: the object
Methods:
the code to manipulate the object data
Calling a method
: invoking a service for an object.
CS445 - Object Oriented Design and Programming
Class Data
Instance variables
: variables defined in the class and given values in the object
Fields
: instance variables and
static
(we'll define
static
later) variables
Members
methods of a class: the class's fields and Fields can be: – any primitive data type (
int
,
double
, etc.) – objects
CS445 - Object Oriented Design and Programming
Encapsulation
Implementation of a module should be separated from its users.
Instance variables are usually declared to be
private
, which means users of the class must reference the data of an object by calling methods of the class.
Thus the methods provide a protective shell around the data. We call this
encapsulation
.
Benefit: the class methods can ensure that the object data is always valid.
CS445 - Object Oriented Design and Programming
Modularity
Divide-and-conquer Decompose a complex system into a highly cohesive loosely coupled modules.
– Cohesion single-mind-ness of a module • Each module should small and simple – Coupling the degree of connectivity between modules • Interactions between modules should be simple
CS445 - Object Oriented Design and Programming
Abstraction
Separating the essential from the nonessential The behaviors of a module should be characterized in a precise way using its interfaces.
Server provider for example is a client that provide services (methods) to it’s clients.
– Clients need to know only the contract API.
CS445 - Object Oriented Design and Programming
Polymorphism
Many shapes Same method many ways to call it (dynamic) Replacing an object with its parent
CS445 - Object Oriented Design and Programming
Reusability
Reuse
: class code is already written and tested, so you build a new application faster and it is more reliable Example: A
Date
class could be used in a calendar program, appointment-scheduling program, online shopping program, etc.
CS445 - Object Oriented Design and Programming
How To Reuse A Class
You don't need to know how the class is written. You do need to know the
application programming interface
(
API
) of the class.
The API is published and tells you: – How to create objects – What methods are available – How to call the methods
CS445 - Object Oriented Design and Programming
Declare an Object Reference
Syntax: ClassName objectReference; or ClassName objectRef1, objectRef2…; Object reference holds address of object Example: Date d1;
CS445 - Object Oriented Design and Programming
Instantiate an Object
Objects MUST be instantiated before they can be used Call a constructor using
new
keyword Constructor has same name as class.
Syntax: objectReference = new ClassName( arg list );
Arg list
(argument list) is comma-separated list of initial values to assign to object data
CS445 - Object Oriented Design and Programming
}
Constructor
Constructor method special method with the same name as the class that is used with
new
when a class is instantiated
public class name
{
public name(String frst,String lst) { first = frst; last = lst; } Name name; name = new Name(“john”, “Dewey”);
CS445 - Object Oriented Design and Programming
Date
Class API
constructor
: special method that creates an object and assigns initial values to data
Date
Class Constructor Summary Date( ) creates a
Date
object with initial month, day, and year values of 1, 1, 2000 Date( int mm, int dd, int yy ) creates a
Date
object with initial month, day, and year values of
mm
,
dd
, and
yy
CS445 - Object Oriented Design and Programming
Instantiation Examples
Date independenceDay; independenceDay = new Date( 7, 4, 1776 ); Date graduationDate = new Date( 5, 15, 2008 ); Date defaultDate = new Date( );
} {
Constructors.java
public class Constructors } { public static void main( String [] args ) Date independenceDay; independenceDay = new Date( 7, 4, 1776 ); Date graduationDate = new Date( 5, 15, 2008 ); Date defaultDate = new Date( );
Objects After Instantiation
CS445 - Object Oriented Design and Programming
Calling a Method
CS445 - Object Oriented Design and Programming
Method Classifications
Accessor
methods – get… – gives values of object data
Mutator
– set… methods – change values of object data
CS445 - Object Oriented Design and Programming
Return value
Date
Class Methods
Method name and argument list
int int int void void void getMonth( )
returns the value of month
getDay( )
returns the value of day
getYear( )
returns the value of year
setMonth( int mm )
sets the value of month to
mm
setDay( int dd )
sets the value of day to
dd
setYear( int yy )
sets the value of year to
yy
CS445 - Object Oriented Design and Programming
The Argument List in an API
Pairs of dataType variableName Specify – Order of arguments – Data type of each argument Arguments can be: – Any expression that evaluates to the specified data type
CS445 - Object Oriented Design and Programming
Modeling Relationships and Structures
UML
CS445 - Object Oriented Design and Programming
UML Class Diagram
Used to model the static structure and relationships among the classes of an OO software system A class diagram is made of: – Nodes (Classes and Interfaces) – Links (Relationships)
CS445 - Object Oriented Design and Programming
Relationships
Inheritance – Extension Relationship (specialization and generalization) – Extension between two interfaces – Implementation (when a class implements an interface) – UML uses hollow triangle pointing toward the super class – See Page 30 for an example Association Aggregation and Composition Dependency
CS445 - Object Oriented Design and Programming
Read Ahead
Chapter 2 including the case study on page 44
CS445 - Object Oriented Design and Programming