Title: OOP Class 2
1 2An Object of class Time
OPERATIONS DATA
Set
Private data hrs 8 mins 25 secs
42
Increment
Write . . .
Time
3 4Definitions
- 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()" 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 procedural code
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 hierarchywww.olenick.com/html/gl
ossary.html
5Definitions
- 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/ja
va/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
6Definitions 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
7Modeling 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
8History
9Module Structure Chart
Main
Get Data
Prepare File for Reading
Print Data
Print Heading
10Two Design Strategies
FUNCTIONAL OBJECT-ORIENTED
DECOMPOSITION DESIGN
OBJECT
11 12Unified 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
13The Unified Process (UP)
inception
Phase 1 Communication Planning
Phase 2 Planning Modeling
elaboration
inception
Phase 3 Coding, unit test integrate Components
result
Phase 4 Deployment
14UP Phases
15UP Work Products
16Agile Development
17The 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
18What is Agility?
- Effective (rapid and adaptive) response to change
- Effective communication among all stakeholders
- Drawing the customer onto the team
- Organizing a team so that it is in control of the
work performed - Yielding
- Rapid, incremental delivery of software
19An 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
20Extreme 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
21Extreme 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 solutionsa design prototype - Encourages refactoringan iterative refinement
of the internal program design - XP Coding
- Recommends the construction of a unit test for a
store before coding commences - Encourages pair programming
- XP Testing
- All unit tests are executed daily
- Acceptance tests are defined by the customer
and executed to assess customer visible
functionality
22Extreme Programming (XP)
23- OO Design Programming
- Java Basics
24Classes and Objects
Class Point Int x, y Public void move
(intd dx, int dy) x dx
y dy
- An object
- point1
- Attributes or fields
- int x, y
- A method
- void move(int dx, int dy)
- A message
- point1.move(10, 10)
25An Object of class Time
OPERATIONS DATA
Modularity Abstraction Encapsulation Inheritance P
olymorphism Message Passing
Set
Private data hrs 8 mins 25 secs
42
Increment
Write . . .
Time
26Developing a Java Application
- 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)
27A 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
28- Class FirstProgram
- Method main(...)
- Statement System.out.println(...)
- Comments
- // a comment
- / another comment /
- Source file FirstProgram.java
29Program 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
30Program Life Cycle
31Introduction Java Platform
- JavaTM 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.
32JVM
- Java virtual machine or "JVMTM
- a translator that turns general Java platform
instructions into tailored commands that make the
devices do their work
33Java Program Phases
- Edit
- IDE, vi, emacs, notepad
- Compile
- javac
- Load
- Class Loader
- Verify
- Verifier (Security and Validation)
- Execute
- Java Interpreter (java or appletviewer)
34The java Compiler
- javac
- Creates bytecodes
- Stored on disk as .class
- Each file contains bytecode for one and only one
class
35The java Class Loader
- Loads bytecodes in memory
- Loads .class files from disk into memory
36The java Bytecode Verifier
- Confirms that all bytecodes are
- Valid and
- Don't violate Javas Security restrictions
- Works on bytecodes from memory
37The 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
38Your 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
39Your 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.
40JRE
41JAVA Program
- public class HelloWorldApp
- public static void main(String args)
-
- System.out.println("Hello World")
-
-
42Steps
- Save the file as HellowWordApp.java
- Compile
- Javac HellowWordApp.java ? HellowWordApp.class
- Run the program
- Java HellowWordApp
43Output
44What 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
45What 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
46Java Programming Language
- Java Basics
- OO Basics
- UML Basics
47Data 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
48Data 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
49Declaring 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
- dataType identifier
- or
- dataType identifier1, identifier2,
- Naming convention for variable names
- first letter is lowercase
- embedded words begin with uppercase letter
50Java Primitive Data Types
- byte, short, int, long , float, double, char,
boolean
51OO Design
52Topics
- Class Basics and Benefits
- Creating Objects Using Constructors
- Calling Methods
- Using Object References
53Object-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
54Example
- 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
55Some 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.
56Class Data
- Instance variables variables defined in the
class and given values in the object - Fields instance variables and static variables
(we'll define static later) - Members of a class the class's fields and
methods - Fields can be
- any primitive data type (int, double, etc.)
- objects
57Encapsulation
- 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.
58Modularity
- 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
59Abstraction
- 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 its clients. - Clients need to know only the contract API.
60Polymorphism
- Many shapes
- Same method many ways to call it (dynamic)
- Replacing an object with its parent
61Reusability
- 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.
62How 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
63Declare an Object Reference
- Syntax
- ClassName objectReference
- or
- ClassName objectRef1, objectRef2
- Object reference holds address of object
- Example
- Date d1
64Instantiate 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
65Constructor
- 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)
66Date Class API
- constructor special method that creates an
object and assigns initial values to data -
67Instantiation Examples
- Date independenceDay
- independenceDay new Date( 7, 4, 1776 )
- Date graduationDate
- new Date( 5, 15, 2008 )
- Date defaultDate new Date( )
Example Next Slide
68Constructors.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( )
-
Figure Next Slide
69Objects After Instantiation
70Calling a Method
71Method Classifications
- Accessor methods
- get
- gives values of object data
- Mutator methods
- set
- change values of object data
72Date Class Methods
73The 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
74Modeling Relationships and Structures
75UML 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)
76Relationships
- 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
77Read Ahead
- Chapter 2 including the case study on page 44