100 likes | 214 Views
This course, led by Dale Roberts from the Department of Computer and Information Science at IUPUI, provides a comprehensive overview of object-oriented programming (OOP) and its principles. From the evolution of software orientation from process to object-oriented approaches, this course covers OOP methods, their benefits, and their impact on software quality factors. Students will learn how to analyze, design, and implement software systems using OOP techniques, enhancing modularity, reusability, and extensibility. Gain a solid understanding of OOP concepts, including abstraction, inheritance, and polymorphism.
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