Software Engineering for Smart Data Analytics & Smart Data Analytics for Software Engineering

User Tools

Site Tools

Daniel's [[talks|Talk]] about Type Constraints

How to find out, if you might like this talk

  • Have a look at the paper listed bellow. You might find it hard to understand. But it's interesting. So if you want to give it a chance I suggest the follwing steps:
  • Examine the example code on the slides or in the paper.
  • Do you understand why the usage of the interface is not possible in some places? (Hint: fields are accessed or methods are called which are not part of the interface)
  • Do you understand, why prohibition to use the interface might imply the prohibition at another place? (Hint: e.g. assignments)
  • If you understood these two things look at the figure 3 in the paper. Realize that this is a formal description of what you allready understood. Can you see this?

Suggested structure

  • Explain the List/Bag example for Extract Interface
  • Explain how type constraints prohibit the use of more general types in some places
    • Origins of the prohibitions
    • Propagation of them
  • Be prepared to guide us through figure 3
  • Explain how the set of “bad declarations” is calculated.
  • (Explain how this theory extends to the refactoring “Pull Up Members”, Chapter 4)


  • Frank Tip, Adam Kiezun, and Dirk Bäumer: Refactoring for generalization using type constraints . In Object-Oriented Programming Systems, Languages, and Applications (OOPSLA 2003), (Anaheim, CA, USA), November 6-8, 2003, pp. 13-26.
  • Chapter 2 and 3 of some slides Daniel prepared about this paper.
  • You may test this refactorings in Eclipse: Extract Interface, Use General Type Where Possible
teaching/labs/xp/2004b/talktypeconstraints.txt · Last modified: 2018/05/09 01:59 (external edit)

SEWiki, © 2020