Docstoc

Java Object Oriented Programming

Document Sample
Java Object Oriented Programming Powered By Docstoc
					                    Department of Computer and Information Science,
                               School of Science, IUPUI




Object Oriented Programming using Java

                                    - Introduction

    Dale Roberts, Lecturer
    Computer Science, IUPUI
    E-mail: droberts@cs.iupui.edu




                                      Dale Roberts
      Software Orientation over Time
1960’s, 1970’s – Process-Orientation –
Process models – Data Flow Diagrams,
Flow Charts
1980’s – Data-Orientation – Data models –
Entity-Relationship (ER) Diagrams
1990’s – Object-Orientation – Object models
– Class Diagrams, Event Diagrams
2000’s – Unified Modeling Language – an
attempt to standardize all the models into a
single standard. Synthesizing models is
still maturing.




                            Dale Roberts
                      Overview
What are object-oriented (OO) methods?
  OO methods provide a set of techniques for analyzing,
  decomposing, and modularizing software system architectures.
  In general, OO methods are characterized by structuring the
  system architecture around objects (and classes of objects)
  rather than the actions it performs.
  This contrasts object-oriented programming from procedural
  programming.
What are the benefits of OO?
  OO enhances key software quality factos of a system and its
  constituent components
What is the rationale for using OO?
  In general, systems evolve and functionality changes, but
  objects and classes tend to remain more stable over time.


                        Dale Roberts
             Software Quality Factors
   Object-oriented techniques enhance key
   external and internal software quality factors
1. External (visible to end-users)
   a)   Correctness
   b)   Robustness and reliability
   c)   Performance
2. Internal (visible to developers)
    Modularity
    a) Flexibility/Extensibility
    b) Reusability
    c) Compatibility (via standard/uniform interfaces)


                           Dale Roberts
           OOA, OOD and OOP
Object-oriented methods may be applied to
different phases of the software development
life cycle.
  Analysis, Design, Implementation, etc.
OO analysis (OOA) is a process of discovery.
  Where a development team models and understands the
  requirements of the system in terms of actors.
OO design (OOD) is a process of invention and
adaptation
  Where the development team created abstractions and
  mechanisms necessary to meet the system’s behavioral
  requirements determined during analysis.

                      Dale Roberts
     OOA, OOD and OOP (cont.)
OO programming (OOP) implements an OOD in
a particular programming language.
  The more consistent the OOD and OOP techniques, the
  easier the implementation
Because of the wide use of OOD and OOP
terminology, it is useful to distinguish between
the two.
  OOD is relatively language independent.
  OOP is language dependent and primarily concerned with
  software implementation details of OOD concepts (like
  class definitions, inheritance and polymorphism.)


                     Dale Roberts
               Basic Definitions
Object-Oriented Design
  A method of decomposing software architectures based
  on the objects that every systems or subsystem
  manipulates.
    Rather than the functionality that is meant to be delivered.
Object-Oriented Programming
  The construction of software systems as structured
  collections of Abstract Data Type (ADT) implementations
  plus inheritance and dynamic binding (polymorphism).




                          Dale Roberts
   Object-Oriented Design Topics
Object-oriented design concepts include
  Decomposition/Composition
  Abstraction
    Modularity
    Information Hiding (Encapsulation)
    Virtual Machine Hierarchies
  Separating Policy and Mechanism
  Subset Identification and Program Families
  Reusability
Main purpose of these design concepts is to
manage software system complexity by
improving software quality factors.

                        Dale Roberts
Object-Oriented Programming Topics
Object-oriented programming features include
  Data abstraction, Information Hiding (Encapsulation)
  Active (rather than passive) types
  Genericity
  Inheritance and dynamic binding (Polymorphism)
  Assertions and exception handling
This courses focuses on how these OOP topics
improve software quality
  Correctness, reusability, extensibility, reliability, etc.
Advanced courses focus on OOD topics
  Factoring, Class Diagrams, Use Cases, Design Patterns,
  etc.
                         Dale Roberts
                Acknowledgements
http://www.cs.wustl.edu/~schmidt/PDF/ood-overview4.pdf




                             Dale Roberts