Author Topic: .  (Read 2235 times)

Jenova's Witness

  • Right Wing Safety Squads
  • *
  • Posts: 471
  • I ♥ SCIENCE
    • View Profile
.
« on: 2015-02-23 19:04:15 »
.
« Last Edit: 2015-11-16 07:34:49 by Jenova's Witness »

quantumpencil

  • *
  • Posts: 72
    • View Profile
Re: Coupling and orthogonality
« Reply #1 on: 2015-03-22 20:34:42 »
Orthogonality in the context of object oriented design is used to mean "independent," which will make intuitive since if you've studied any form of mathematics that deals with a notion of "independent" or "not redundant" objects (linear algebra for example, a set of vectors independent if they contribute some direction to the space which no other vector did.) Orthogonality maximizes this independence. If two vectors are orthogonal, then there is no component of one vector which depends on the other. Similarly In orthogonal design, each component (module, class) handles its own task independently of other components. I can then modify specific components of my software without worrying about breaking other components because the functionality of each component is "contained" within itself and talks to other parts of the software through a separately defined interface. Each module doesn't need to care about the implementation details of any other module; those can be freely modified and the software will continue to work as long as the interface is consistent.

Coupling is pretty much the opposite -- there is dependency between components on implementation details of other components. Changing the way one part of your software does something can impact other components due to this dependency. Minimizing Coupling between software components improves the orthogonality of you design.
« Last Edit: 2015-03-22 20:45:23 by quantumpencil »