COURSE Object Oriented Analysis and Design Using Unified Modeling Language (UML) www.tesis-oys.com.ar 1 Cantidad de Horas Tipo Idioma 24 Teórico Practico Inglés Objetivo del curso Introduction to Object Technology Benefits and methods The purpose of the UML Refining Class Designs Creating detailed class specifications Java language support for classes Object-Oriented Principles Objects and classes Relationships between objects Preparing For Implementation Using inheritance in design Identifying abstract classes Dealing with multiple inheritance Polymorphism Object Development Processes and Technology Project life cycles Pros and cons: Smalltalk, C++ and Java Starting Analysis: System Behavior System boundaries Identifying actors Modeling use cases Developing Scenarios Deriving scenarios from use cases Documentation The Domain Object Model: Classes Discovering and describing classes From Analysis to Design OOA versus OOD Moving into design Defining the Technical Architecture Logical and physical software architecture Making architectural decisions Applying UML notations Adding Design Detail to the Class Model The design model CRC cards Sequence diagrams Finding associations and operations Modeling Object Lifetimes State diagrams and sequence diagrams Modeling activities Designing Object Relationships Association detail Transient object interactions Multiplicity Collections Aggregation www.tesis-oys.com.ar 2 Temario Lesson 1 Today’s Challenges How Can Object Technology Help? The Promise of Object Orientation Where Can Objects be Used? Development Methods and Tools What Is an Object Oriented Method? Modeling the Real World Examples of OO Methods New Terms, Old Ideas What is UML? Closing Thoughts Lesson 2 What Is an Object? A Database Analogy Objects Perform Operations Objects Remember Values Objects Are an Abstraction Encapsulation and Information-Hiding Examples and Benefits Class Discussion: Spot the Operations and Attributes How Objects Interact -- Messages The Donut Diagram Objects Associate with Each Other How Many Objects Are in an Association? Object Composition More on Composition Where Objects Come From -- Classes Why Do We Need Classes? Classes Versus Objects Class Discussion: What Classes Could These Objects Belong To? Classification and Inheritance Subclasses and Superclasses Inheritance Example Class Hierarchy More on Inheritance Generalization The “Is-a-Kind-of” Relationship Polymorphism Polymorphism II Example of Polymorphism Introduction to UML Notation What Objects Are Involved? More About the Allocation Manager Allocation Manager Operations More About Room Types Room Category Operations More About Rooms Room Operations Playing the Game Sample Allocation of Roles Playing the Game Extensions Lesson 3 Phases of a Project The Traditional Waterfall Life Cycle The Iterative Life Cycle Iterative Development Incremental Delivery OO Development—The Micro Process OO Development—The Macro Process Goals of OO Analysis and Design OO Analysis Overview OOA—People and Tools OO Design Overview Design Overview, continued OOD—People and Tools OO Implementation Overview Implementation—People and Tools Implementation Languages and Tools Popular OO Programming Languages Smalltalk C++ Java Benefits of Java Lesson 4 The Problem of Misunderstood Scope Specifying System Behavior Use Cases Solution What Is an Actor? Actors Describing Actors Sample Actor The Cars’R’Us Case Study The Cars’R’Us Case Study Practice 4:1 Identifying Actors Introducing Use Cases What is a Use Case? Identifying Use Cases Purpose of Use Cases Purpose of Use Cases, Part 2 Developing Use Cases Documenting Use Cases Describing Use Cases Sample Use Case Use Case Diagrams Advanced Topic: Managing Complexity Generalizing and Specializing Actors Packaging Use Cases Generalization of Use Cases (Uses) The “Extend” Relationship Stereotypes Meta-Classification Lesson 5 Facts About Scenarios Sample Scenarios More About Scenarios Purpose of Scenarios To Infinity and Beyond www.tesis-oys.com.ar 3 When to Stop Defining Scenarios Sample Scenarios Always Model the Logical Interface Developing Scenarios Lesson 6 Domain Object Model Class Models A Class Diagram Class Diagrams Compared to ER Diagrams Classes in UML UML Class Diagrams - Association A Class Is a Blueprint for Objects Discovering Classes Identifying Classes Nouns and Noun Phrases Whiteboard and Post-It Notes Organizing Classes Spatially Removing Synonyms Remember the System Boundary Demoting Unimportant Nouns Brainstorming New Classes Additional Filtering Criteria Documenting the Domain Model Describing Classes How Much Detail is Needed? Revised List of Supermarket Classes What is Left in the Class Diagram? Example: Class Descriptions Practice 6: Identifying Classes Identifying Associations Lesson 7 Review of OO Analysis Moving into OO Design Exploratory Design Activities Refining the Design Design Artifacts OO Analysis or OO Design? Example of OOA Versus OOD OO Design Map Designing Classes and Associations Designing for Inheritance Designing for Reuse Patterns What is a Pattern? Lesson 8 Why Architecture? Technical Architecture Issues Additional Technical Architecture The Project Architect Subsystems Subsystems and Packages Logical Software Architecture Packages Package Contents Referencing Package Design Service Packages Identifying Packages Physical Software Architecture Hardware Architecture Deployment Diagrams Software Deployment Considering Deployment Options A Three-tier Architecture Object Persistence Database Connectivity Object-Relational Mapping Persistence Layers Lesson 9 The Design Model Design Classes Well-Formed Classes Discovering Design Classes CRC Cards New Classes Guidelines For Assigning Class Responsibilities Guidelines for Collaborations Collaboration Patterns Sequence Diagrams A Sequence Diagram Another Sequence Diagram Objects in Sequence Diagrams Messages in a Sequence Diagram Creating Sequence Diagrams Controller Objects 99Looking for Hidden Objects Guidelines for Sequence Diagrams Practice 9: Creating a Sequence Diagram Finding Associations Naming Associations Finding Operations Naming Operations Guidelines for Operations Practice : Defining Parameters Sample Solution Lesson 10 State Definition State States and Events UML State Transition Diagrams State Diagramming Notation Example: State Transition Diagram Identifying States and Events Identifying States and Events First Cut State Diagram State Diagram, Alternative Courses Events and Behavior Example: Action-Expressions Entry and Exit Actions Example: Entry and Exit Actions Guard Conditions Automatic Transitions Guarded Automatic Transitions Internal Actions Self Transitions www.tesis-oys.com.ar 4 State Variables State Box with Regions State Transition Table Example: State Transition Table Summary of Actions Activity Diagrams Activity Diagram Symbols An Activity Diagram Designing Attributes Designing Attributes for Java Constraints Designing Attributes Encapsulation and Information-Hiding Visibility in UML Attribute Visibility and Access Class Variables and Methods Lesson 11 Associations: A Recap Object Links Collaboration Diagrams Links in Collaboration Diagrams Designing Associations Classifying Relationships Association Directionality (Navigability) Multiplicity Multiplicity Notation Class Discussion: Multiplicity Examples Implications Of Multiplicity Determining Multiplicity Class Practice: Multiplicity Exercise Class Practice: Sample Solution Multiplicity and Collections Collections Using Collection Classes Class Discussion: Which Collection? Constraints and Notes Association Classes Reflexive Associations Aggregation in UML Aggregation Composite Aggregation Composite Aggregation–Example 1 Composite Aggregation–Example 2 Shared Aggregation Class Discussion: Shared or Composite? Using Composite Aggregation Using Shared Aggregation or Association The Need to Define Associations Lesson 13 What is Inheritance? Inheritance in Analysis and Design Sample Inheritance Hierarchy Inheritance Terminology Notation for Inheritance Specifying Inheritance in Java Finding Inheritance: Specialization Finding Inheritance: Generalization Abstract Classes Alternative Representation Abstract Operations Abstract Classes and Methods in Java Multilevel Inheritance Hierarchies The Substitution Rule Goals of Inheritance Refining Inheritance Practice 13:Identifying Inheritance Relationships Multiple Inheritance Multiple Inheritance Interfaces Instead of Multiple Inheritance Interfaces Interfaces in Java What Is Polymorphism? Advantages of Polymorphism Static Binding Versus Dynamic Binding Example of Polymorphism in Java A Subsystem Identifying Subsystems Refinement Summary Lesson 12 Design Refinement Language Support for Classes Creating Classes in Java Using Classes in Java Packages in Java Class Specifications Class Discussion: Specifying Classes Partial Class Specification Class Design Checklist Designing Operations Stereotypes Stereotyping Operations Attributes Lesson 14 A Succession of Models Object Oriented Methods OO Analysis OO Design OO Implementation Code Generation Testing Oracle JDeveloper Iterative Development OO Methodology The Promise of Object Orientation How Are Objects Different? How Are Objects Different, continued El contenido dictado durante el curso puede variar o ser recortado a discreción del instructor dependiendo del avance del curso sin ningún perjuicio al correcto dictado del mismo ni derecho a reclamo. www.tesis-oys.com.ar 5 www.tesis-oys.com.ar 6