1 / 33

CHAPTER 7 — Unit C

Object-Oriented and Classical Software Engineering Sixth Edition, WCB/McGraw-Hill, 2005 Stephen R. Schach srs@vuse.vanderbilt.edu. CHAPTER 7 — Unit C. FROM MODULES TO OBJECTS. Continued from Unit 7B. 7.5 Abstract Data Types. The problem with both implementations

gordy
Télécharger la présentation

CHAPTER 7 — Unit C

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Object-Oriented and Classical Software EngineeringSixth Edition, WCB/McGraw-Hill, 2005Stephen R. Schachsrs@vuse.vanderbilt.edu

  2. CHAPTER 7 — Unit C FROM MODULES TO OBJECTS

  3. Continued from Unit 7B

  4. 7.5 Abstract Data Types • The problem with both implementations • There is only one queue, not three • We need: • Data type + operations performed on instantiations of that data type • Abstract data type

  5. Abstract Data Type Example • (Problems caused by public attributes solved later) Figure 7.24

  6. Another Abstract Data Type Example Figure 7.25 • (Problems caused by public attributes solved later)

  7. 7.6 Information Hiding • Data abstraction • The designer thinks at the level of an ADT • Procedural abstraction • Define a procedure — extend the language • Both are instances of a more general design concept, information hiding • Design the modules in a way that items likely to change are hidden • Future change is localized • Changes cannot affect other modules

  8. Information Hiding (contd) • C++ abstract data type implementation with information hiding Figure 7.26

  9. Information Hiding (contd) • Effect of information hiding via private attributes Figure 7.27

  10. Major Concepts of Chapter 7 Figure 7.28

  11. 7.7 Objects • First refinement • The product is designed in terms of abstract data types • Variables (“objects”) are instantiations of abstract data types • Second refinement • Class: an abstract data type that supports inheritance • Objects are instantiations of classes

  12. Inheritance • Define HumanBeing to be a class • A HumanBeing has attributes, such as • age, height, gender • Assign values to the attributes when describing an object

  13. Inheritance (contd) • Define Parent to be a subclass of HumanBeing • AParenthas all the attributes of a HumanBeing, plus attributes of his/her own • nameOfOldestChild, numberOfChildren • AParentinherits all attributes of a HumanBeing

  14. Inheritance (contd) • The property of inheritance is an essential feature of all object-oriented languages • Such as Smalltalk, C++, Ada 95, Java • But not of classical languages • Such as C, COBOL or FORTRAN

  15. Inheritance (contd) • UML notation • Inheritance is represented by a large open triangle Figure 7.29

  16. Java Implementation Figure 7.30

  17. Aggregation • UML notation for aggregation — open diamond Figure 7.31

  18. Association • UML notation for association — line • Optional navigation triangle Figure 7.32

  19. Equivalence of Data and Action • Classical paradigm • record_1.field_2 • Object-oriented paradigm • thisObject.attributeB • thisObject.methodC ()

  20. 7.8 Inheritance, Polymorphism and Dynamic Binding • Classical paradigm • We must explicitly invoke the appropriate version Figure 7.33a

  21. Inheritance, Polymorphism and Dynamic Binding (contd) • Object-oriented paradigm Figure 7.33(b)

  22. Inheritance, Polymorphism and Dynamic Binding (contd) • Classical code to open a file • The correct method is explicitly selected Figure 7.34(a)

  23. Inheritance, Polymorphism and Dynamic Binding (contd) • Object-oriented code to open a file • The correct method is invoked at run-time (dynamically) • Methodopencan be applied to objects of different classes • “Polymorphic” Figure 7.34(b)

  24. Inheritance, Polymorphism and Dynamic Binding (contd) • Method checkOrder (b : Base) can be applied to objects of any subclass ofBase Figure 7.35

  25. Inheritance, Polymorphism and Dynamic Binding (contd) • Polymorphism and dynamic binding • Can have a negative impact on maintenance • The code is hard to understand if there are multiple possibilities for a specific method • Polymorphism and dynamic binding • A strength and a weakness of the object-oriented paradigm

  26. 7.9 The Object-Oriented Paradigm • Reasons for the success of the object-oriented paradigm • The object-oriented paradigm gives overall equal attention to data and operations • At any one time, data or operations may be favored • A well-designed object (high cohesion, low coupling) models all the aspects of one physical entity • Implementation details are hidden

  27. The Object-Oriented Paradigm (contd) • The reason why the structured paradigm worked well at first • The alternative was no paradigm at all

  28. The Object-Oriented Paradigm (contd) • How do we know that the object-oriented paradigm is the best current alternative? • We don’t • However, most reports are favorable • Experimental data (e.g., IBM [1994]) • Survey of programmers [2000]

  29. The Object-Oriented Paradigm (contd) • How do we know that the object-oriented paradigm is the best current alternative? • We don’t • However, most reports are favorable • Experimental data (e.g., IBM [1994]) • Survey of programmers [2000]

  30. Weaknesses of the Object-Oriented Paradigm • Development effort and size can be large • One’s first object-oriented project can be larger than expected • Even taking the learning curve into account • Especially if there is a GUI • However, some classes can frequently be reused in the next project • Especially if there is a GUI

  31. Weaknesses of the Object-Oriented Paradigm (contd) • Inheritance can cause problems • The fragile base class problem • To reduce the ripple effect, all classes need to be carefully designed up front • Unless explicitly prevented, a subclass inherits all its parent’s attributes • Objects lower in the tree can become large • “Use inheritance where appropriate” • Exclude unneeded inherited attributes

  32. Weaknesses of the Object-Oriented Paradigm (contd) • As already explained, the use of polymorphism and dynamic binding can lead to problems • It is easy to write bad code in any language • It is especially easy to write bad object-oriented code

  33. The Object-Oriented Paradigm (contd) • Someday, the object-oriented paradigm will undoubtedly be replaced by something better • Aspect-oriented programming is one possibility • But there are many other possibilities

More Related