Object-Oriented Programming 2023/24

Exercise 8


back


Project

Present the working version of your program as instructed by the teachers.

Continue working on the project. Make a code revision – so-called refactorization – for the purposes of increasing the quality of the applied object-oriented design.

^


Tasks

  1. Try the example with circle and ellipse from the lecture. Make sure you understand why deriving a circle from an ellipse leads to violating the Liskov substitution principle and design by contract. Change the example so that both circle and ellipse are derived from a common supertype. Note this prevents the increaseEllipse() method from being applied to circles.
  2. Recall task 6 from Exercise 6 (exceptions in overriding). Note how this is related to the Liskov substitution principle: extending a set of exceptions that a method draws in practice weakens postconditions because by this the method narrows a set of cases in which it ends favorably and by returning an expected result. This would constitute a problem for the client code, but, fortunately, unlike with a common Liskov substitution principle violation, the compiler directly warns against this mistake.

If necessary, go back to the tasks from previous exercises and discuss any uncertainties.

^



Valentino Vranić
vranic at stuba.sk