100 likes | 342 Views
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. Software Orientation over Time.
E N D
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
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.
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.
Software Quality Factors • Object-oriented techniques enhance key external and internal software quality factors • External (visible to end-users) • Correctness • Robustness and reliability • Performance • Internal (visible to developers) Modularity • Flexibility/Extensibility • Reusability • Compatibility (via standard/uniform interfaces)
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.
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.)
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).
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.
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.
Acknowledgements • http://www.cs.wustl.edu/~schmidt/PDF/ood-overview4.pdf