Stéphane Ducasse«ChapterNr».1 Arthur Riel Design Heuristics from Object-Oriented Design Heuristics by Arthur Riel Read the Heuristics… –Find reasons why.

Slides:



Advertisements
Similar presentations
4. Object-Oriented Programming Procedural programming Structs and objects Object-oriented programming Concepts and terminology Related keywords.
Advertisements

Software Engineering Class design. Class design – ADT Abstract Data Types:  Why use ADT? Hidden implementation details Changes do not affect whole program.
Solutions to Review Questions. 4.1 Define object, class and instance. The UML Glossary gives these definitions: Object: an instance of a class. Class:
Inheritance Java permits you to use your user defined classes to create programs using inheritance.
The Bridge Pattern.. Intent Decouple an abstraction from its implementation so that the two can vary independently Also known as: Handle/Body.
OOAD Using the UML - Use-Case Analysis, v 4.2 Copyright  Rational Software, all rights reserved 1/18 Use Case Analysis – continued Control Classes.
Smalltalk Coding Patterns mostly from Smalltalk Best Practice Patterns Kent Beck Prentice-Hall, 1997.
Practical Object-Oriented Design with UML 2e Slide 1/1 ©The McGraw-Hill Companies, 2004 PRACTICAL OBJECT-ORIENTED DESIGN WITH UML 2e Chapter 5: Restaurant.
May-June 2001 ISISTAN Research Institute – Tandil, Argentina Software Design Methodologies: UML in Action Dr. Mohamed Fayad, J.D. Edwards Professor Department.
THE OBJECT-ORIENTED DESIGN WORKFLOW Interfaces & Subsystems.
Slide 1 Systems Analysis & Design CS183 Spring Semester 2008 Dr. Jonathan Y. Clark Course Website:
November 13, 2006ECEN 5543 / CSCI 5548 – Testing OO University of Colorado, Boulder 1 Testing Object-Oriented Software Principles Summary ECEN 5543 / CSCI.
Stéphane Ducasse6.1 Essential Concepts Why OO? What is OO? What are the benefits? What are the KEY concepts? Basis for all the lectures.
The Relationships Between Classes & Objects Presented by Tim Sweeney.
1 Evan Korth New York University Inheritance and Polymorphism Professor Evan Korth New York University.
Lecturer: Dr. AJ Bieszczad Chapter 66-1 Object-Oriented analysis and design Special nature of OO development Use cases Design with UML OO system design.
1 Evan Korth New York University Inheritance and Polymorphism Professor Evan Korth New York University.
Chapter 10 Class and Method Design
L6-1-S1Design Heuristics - 1 © M.E. Fayad SJSU -- CmpE Software System Engineering Dr. M.E. Fayad, Professor Computer Engineering Department,
Slide 1 Chapter 10 Class and Method Design. Slide 2 REVISITING THE BASIC CHARACTERISTICS OF OBJECT-ORIENTATION.
CSE 403 Lecture 7 UML Class Diagrams Reading:
1 Object-Oriented Software Engineering CIS 375 Bruce R. Maxim UM-Dearborn.
BACS 287 Basics of Object-Oriented Programming 1.
1 CSE 403 Object-Oriented Design Reading: Object Oriented Design Heuristics Ch. 2-3, by Authur Riel These lecture slides are copyright (C) Marty Stepp,
UFCEUS-20-2 : Web Programming Lecture 5 : Object Oriented PHP (1)
Practical Object-Oriented Design with UML 2e Slide 1/1 ©The McGraw-Hill Companies, 2004 PRACTICAL OBJECT-ORIENTED DESIGN WITH UML 2e Chapter 2: Modelling.
Recap (önemli noktaları yinelemek) from last week Paradigm Kay’s Description Intro to Objects Messages / Interconnections Information Hiding Classes Inheritance.
An Introduction to Design Patterns. Introduction Promote reuse. Use the experiences of software developers. A shared library/lingo used by developers.
1 CSE 331 Object-Oriented Design Heuristics slides created by Marty Stepp based on materials by M. Ernst, S. Reges, D. Notkin, R. Mercer
11 Chapter 11 Object-Oriented Databases Database Systems: Design, Implementation, and Management 4th Edition Peter Rob & Carlos Coronel.
CSE 425: Object-Oriented Programming I Object-Oriented Programming A design method as well as a programming paradigm –For example, CRC cards, noun-verb.
Relational Databases and Transaction Design Lecture 27.
S.Ducasse Stéphane Ducasse 1 Design Heuristics.
Class Diagrams Identifying and representing Classes Object Web, Bapayya Choudhary Maganti.
Basic OOP Concepts and Terms. In this class, we will cover: Objects and examples of different object types Classes and how they relate to objects Object.
Object-Oriented Design Justin Callanan CS 597. Object-Oriented Basics ● Data is stored and processed in “objects” ● Objects represent generalized real.
Chapter 12 Support for Object oriented Programming.
Objects & Dynamic Dispatch CSE 413 Autumn Plan We’ve learned a great deal about functional and object-oriented programming Now,  Look at semantics.
CIS224 Software Projects: Software Engineering and Research Methods Lecture 1b Object concepts (Based on Stevens and Pooley (2006), Chapter 2) David Meredith.
Relationships Relationships between objects and between classes.
CSC 131 Fall 2006 Lecture # 6 Object-Oriented Concepts.
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Chapter 26 - Java Object-Based Programming Outline 26.1Introduction.
CS451 - Lecture 2 1 CS451 Lecture 2: Introduction to Object Orientation Yugi Lee STB #555 (816) * Acknowledgement:
1 TCSS 360, Spring 2005 Lecture Notes Design Guidelines 2 Relevant Reading: Object-Oriented Design Heuristics Arthur Riel.
Internet and Intranet Protocols and Applications Lecture 5a: HTTP Client-Server Design and Implementation February 15, 2005 Arthur Goldberg Computer Science.
Object-Oriented Principles Applications to Programming.
Classes and Objects: The Building Blocks of the Object-Oriented Paradigm Presented by Tara Struble.
AP Computer Science A – Healdsburg High School 1 Unit 9 - Why Use Classes - Anatomy of a Class.
Chapter 4 Basic Object-Oriented Concepts. Chapter 4 Objectives Class vs. Object Attributes of a class Object relationships Class Methods (Operations)
Analysis Yaodong Bi. Introduction to Analysis Purposes of Analysis – Resolve issues related to interference, concurrency, and conflicts among use cases.
CMSC 345 Fall 2000 OO Design. Characteristics of OOD Objects are abstractions of real-world or system entities and manage themselves Objects are independent.
Object Oriented Programming. OOP  The fundamental idea behind object-oriented programming is:  The real world consists of objects. Computer programs.
Object-Oriented Software Engineering Practical Software Development using UML and Java Modelling with Classes.
Fusion Design Overview Object Interaction Graph Visibility Graph Class Descriptions Inheritance Graphs Fusion: Design The overall goal of Design is to.
Exceptions Lecture 11 COMP 401, Fall /25/2014.
PowerPoint Presentation for Dennis, Wixom, & Tegarden Systems Analysis and Design with UML, 5th Edition Copyright © 2015 John Wiley & Sons, Inc. All rights.
1 TCSS 360, Spring 2005 Lecture Notes Design Guidelines Relevant Reading: Object-Oriented Design Heuristics Arthur Riel.
Communication Diagrams Lecture 8. Introduction  Interaction Diagrams are used to model system dynamics  How do objects change state?  How do objects.
Lecture 12 Implementation Issues with Polymorphism.
COP 4331 – OOD&P Lecture 7 Object Concepts. What is an Object Programming language definition: An instance of a class Design perspective is different.
CSCE 240 – Intro to Software Engineering Lecture 3.
Object-oriented programming (OOP) is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their.
TIM 58 Chapter 8: Class and Method Design
Apply Expert, Creator, Controller, Low Coupling, High Cohesion
CIS 375 Bruce R. Maxim UM-Dearborn
Object Oriented Analysis and Design
CS 112 Programming 2 Lecture 02 Abstract Classes & Interfaces (2)
CSE 403 Object-Oriented Design Reading:
Jim Fawcett CSE687 – Object Oriented Design Spring 2014
Design.
Presentation transcript:

Stéphane Ducasse«ChapterNr».1 Arthur Riel Design Heuristics from Object-Oriented Design Heuristics by Arthur Riel Read the Heuristics… –Find reasons why –We will discuss them during the lectures

Stéphane Ducasse«ChapterNr».2 Different Relationship Uses Contains Specializes

Stéphane Ducasse«ChapterNr».3 Hidding Data All data should be hidden within its class

Stéphane Ducasse«ChapterNr».4 No Dependence on Clients Users of a class must be dependent on its public interface, but a class should not be dependent on its users

Stéphane Ducasse«ChapterNr».5 Support Class = one Clear Responsibility Minimize the number of messages in the protocol of a class

Stéphane Ducasse«ChapterNr».6 Supporting Polymorphism and Communication Implement a minimal interface that all classes understand To send the same message to different objects To be able to substitute them Remember: grObjects do: [:each | each translate: Example: Object>>printString, Object>>copy…

Stéphane Ducasse«ChapterNr».7 Clear Public Interface Do not put implementations details such as common-code private functions into the public interface of a class Example: –Private/protected in C++ –Private method categories in Smalltalk Do not clutter the public interface of a class with items that clients are not able to use or are not interested in using

Stéphane Ducasse«ChapterNr».8 Minimize Classes Interdependencies A class should only use operations in the public interface of another class or have nothing to do with that class

Stéphane Ducasse«ChapterNr».9 Support a Class = one Responsibility A class should capture one and only one key abstraction

Stéphane Ducasse«ChapterNr».10 Strengthen Encapsulation Keep related data and behavior in one place Spin off non related information into another class -> Move Data Close to Behavior

Stéphane Ducasse«ChapterNr».11 Object: a Cohesive Entity Most of the methods defined on a class should be using most of the instance variables most of the time

Stéphane Ducasse«ChapterNr».12 Roles vs. Classes Be sure the abstractions you model are classes and not the roles objects play Are mother and father classes or role of Person? No magic answer: Depend on the domain Do they have different behavior? So they are more distinct classes

Stéphane Ducasse«ChapterNr».13 Support one Class = one Responsibility Distribute system intelligence horizontally as uniformly as possible, i.e., the top-level classes in a design should share the work

Stéphane Ducasse«ChapterNr».14 Support one Class = one Responsibility Do not create god classes/objects (classes that control all other classes). Be very suspicious of class whose names contains Driver, Manager, System, SubSystem

Stéphane Ducasse«ChapterNr».15 Model and Interfaces Model should never be dependent on the interface that represents it. The interface should be dependent on the model What is happening if you want two different Uis for the same model?

Stéphane Ducasse«ChapterNr».16 Basic Checks for God Class Detection Beware of classes that have many accessor methods defined in their public interface. May imply that data and behavior is not being kept at the same place Beware of classes having methods that only operate on a proper subset of the instance variables.

Stéphane Ducasse«ChapterNr».17 One Class: One Responsibility One responbility: coordinating and using other objects –OrderedCollection maintains a list of objects sorted by arrival order: two indexes and a list Class should not contain more objects than a developper can fit in his short-term memory. (6 or 7 is the average value)

Stéphane Ducasse«ChapterNr».18 Classes Evaluation Model the real world whenever possible Eliminate irrelevant classes Eliminate classes that are outside of the system A method is not a class. Be suspicious of any class whose name is a verb or derived from a verb, especially those that only one piece of meaningful behavior

Stéphane Ducasse«ChapterNr».19 Minimizing Coupling between Classes Minimize the number of classes with which another class collaborates Minimize the number of messages sent between a class and its collaborators –Counter example: Visitor patterns Minimize the number of different messages sent between a class and its collaborators

Stéphane Ducasse«ChapterNr».20 About the Use Relationship When an object use another one it should get a reference on it to interact with it Ways to get references –(containment) instance variables of the class –Passed has argument –Ask to a third party object (mapping…) –Create the object and interact with it (coded in class: kind of DNA)

Stéphane Ducasse«ChapterNr».21 Containment and Uses If a class contains object of another class, then the containing class should be sending messages to the contained objects (the containment relationship should always imply a uses relationships) A object may know what it contains but it should not know who contains it.

Stéphane Ducasse«ChapterNr».22 Representing Semantics Constraints How do we represent possibilities or constraints between classes? –Appetizer, entrée, main dish… –No peas and corn together… It is best to implement them in terms of class definition but this may lead to class proliferation => implemented in the creation method

Stéphane Ducasse«ChapterNr».23 Objects define their logic When implementing semantic constraints in the constructor of a class, place the constraint definition as far down a containment hierarchy as the domain allows => Objects should contain the semantic constraints about themselves

Stéphane Ducasse«ChapterNr».24 Third party constraint holder If the logic of a constraint is volatile, then it is better to

Stéphane Ducasse«ChapterNr».25 Classes - Subclasses Superclass should not know its subclasses Subclasses should not use directly data of superclasses If two or more classes have common data and behavior, they should inherit from a common class that captures those data and behavior

Stéphane Ducasse«ChapterNr».26 Controversial All abstract classes must be base classes All base classes should be abstract classes –> Not true they can have default value method

Stéphane Ducasse«ChapterNr».27 **Fundamental**: Avoid Type Checks Explicit case analysis on the type of an objects is usually an error. An object is responsible of deciding how to answer to a message A client should send message and not discriminate messages sent based on receiver type