title: Single Responsibility(SRP) vs Tell Don't Ask(TDA)?
body: <p>I understand that many design principles conflict with each other in some cases . So, we have to weigh them and see which one is more beneficial.
  Till now I was aware of SRP principle and did my lot of designs solely based on that but internally I was feeling sometimes wrong while following
  this principle. Now I came to know about TDA , My feeling got more support with that :)</p>
  
  <p><strong>SRP :-</strong> Object should be worried about its own concern not anyone else</p>
  
  <p><strong>TDA :-</strong> Behavior  (which is dependent only on its object state) should be kept inside the object itself</p>
  
  <p><strong>Example :-</strong>  I have different Shapes  like Rectangle, Square, Circle etc. Now i have to calculate area.</p>
  
  <p><strong>My design till now :-</strong> I was following SRP where I had AreaCalculatorService class which will ask state of shape and calculate the area. The reasoning behind this design
  was shape should not be worried about area calculation as it's not shape responsibility. But ideally i used to think area calc code should reside under each shape
  as if down the line if new shape comes up I have to modify AreaCalculatorService class(which violates the Open for extension and closed for modification principle(OECM)).
  But always gave preference to SRP. That seems to be wrong</p>
  
  <p><strong>Myth is broken(At least mine) :-</strong> With TDA, looks like my feeling was correct where I should not ask about the state of the object but tell the shape to calculate it's area. Though
  it will violate the SRP principle but  will support OECM principle. As I said design principles conflict with each other some times, but I believe where behavior
  is completely dependent on its object state, behavior and state should be together.</p>
  
  <p><strong>Another Example :-</strong> say I have to calculate the salary of all departments of all Employees in an organization, then we should follow the SRP where SalaryCalculatorService
  will depend on department and employees. </p>
  
  <p>It will ask the salary of each employee and then do summation on all salaries. So here I am asking for state of employee but
  still not violating TDA calcSalary is not dependent only on salary of each employee.</p>
  
  <p>Let me know if my interpretation of both these principle is correct or not where I should follow TDA in first case but SRP in second  ?</p>