Workshop: Elements of Object-Oriented Design

Maja Bozic Categories: News Date 20-Mar-2017

Table of contents

    Last Saturday we had a very useful workshop with Zoran Horvat. The topic was: Elements of Object-Oriented Design.

    Zoran Horvat is an architect and software designer, independent consultant and software architecture coach. Zoran has more than 15 years of experience in developing software. Since 2014 he has also been the author at, where he prepares a series of courses on design patterns. In recent years he has been devoted to studying different approaches to software architecture, primarily those that help maintain large business applications.


    Zoran Horvat, speaker

    Workshop objective
    The objective of the workshop was to grasp which elements of design are significant, so that such elements can be properly addressed and implemented in a manner which is correct and has long-term sustainability

    The workshop covered the following fields:
    - Emergent Objects - Introductory lesson that shows how objects are created as a result of the need to define a certain concept more closely; this process is contrary to classic technique which analyzes requests and then models classes that implement the requests. Participants will gain an insight into how a specific design appears as a result of solving immediate problems and inabilities of the current code. Thus obtained design corresponds user demands in a better way while being more flexible on those axes that are essential to the user.

    - Branching and Looping - After the introduction, the audience will be ready to move to specific refactoring which aims to simplify code and clearly highlight certain concepts. This lesson shows that looping and branching are nearly always unnecessary, since they complicate the implementation, and are almost certainly harmful.

    - Mapreduce Principle - In this lesson, we will raise our prior knowledge to a higher level and introduce LINQ. We will refactor the previous code so that it includes a map-reduce pattern. Imperative structures are replaced with functional structures that show greater flexibility and readability.

    - Strategies - After a longer period of refactoring code into a form that is more based on functional principles, we return to the imperative code and introduce strategies as a special source of flexibility. After this lesson, the code will be transformed completely and will almost totally differ from the code which we used at the beginning of the workshop. The audience will become aware of the principles of coding and designing which have been applied so that the code can become clearer, simpler and more accurate.

    This was our first in a series of guest workshops so, if you are familiar with any other interesting speaker or if you have participated in a similar workshop, please let us know at, we would like to hear more about your experience.

    Maja Bozic Partner and CSMO

    Maja's nonstandard approach to marketing has developed over the last half decade. She can hear the heart beat of the Internet.