tag:blogger.com,1999:blog-51540917951422160692024-03-13T08:35:00.220-07:00Hassan IbrahimHassan Ibrahimhttp://www.blogger.com/profile/06201022647941200256noreply@blogger.comBlogger3125tag:blogger.com,1999:blog-5154091795142216069.post-67491243686573225332008-11-05T17:55:00.000-08:002008-11-05T18:00:25.050-08:00Why using workflows<ol dir="ltr"><li><div align="left">Workflows can handle long running work by persisting to a durable store, such as a database, when idle and loading again once there is work to do.</div></li><li><div align="left">Workflows are a declarative way of writing programs by linking together pre-defined activities rather than an imperative programming model of writing lines of code.</div></li><li><div align="left">Workflows allow you to declare <a class="mw-redirect" title="Business rules" href="http://en.wikipedia.org/wiki/Business_rules"><span style="color:#000000;">business rules</span></a> that are separated from your code making it easier for you to modify them in the future.</div></li><li><div align="left">Workflows support different styles of systems with sequential and state machine workflows.</div></li><li><div align="left">An instance of a workflow can be modified dynamically while running in the event that new conditions require the workflow to behave differently than it did when it was created</div></li></ol>Hassan Ibrahimhttp://www.blogger.com/profile/06201022647941200256noreply@blogger.com1tag:blogger.com,1999:blog-5154091795142216069.post-57727862266840680602008-10-24T17:26:00.000-07:002008-11-05T18:01:43.418-08:00Problem- Solution- Pattern Triology<div dir="ltr" align="left"></div><ul dir="ltr"><li><div align="left">Seeking for better raises problems.</div></li><li><div align="left">Problems encourage beautifull minds to find solutions.</div></li><li><div align="left">Solutions may be objects or actions.</div></li><li><div align="left">Objects and actions some times follow patterns, so beatifull minds again encoutaged to discover these patterns.</div></li><li><div align="left">Discovering patterns lead to speed development of other solutions that folow these patterns.</div></li><li><div align="left">But there is no best solution ever so the solution itself can have another problems inside it</div></li><li><div align="left">Applying the solution raise these problems.</div></li><li><div align="left">And we start over again and again<br /></div></li></ul>Hassan Ibrahimhttp://www.blogger.com/profile/06201022647941200256noreply@blogger.com0tag:blogger.com,1999:blog-5154091795142216069.post-66614432661789403482008-10-24T15:35:00.000-07:002008-11-05T18:02:01.652-08:00Hints in OOP and design patterns<p dir="ltr" align="left"></p><p dir="ltr" align="left"><span style="font-size:130%;color:#000066;"><strong>Abstraction</strong></span></p><ul dir="ltr"><li><div align="left">Abstraction is all about breaking your approach to a problem into natural segments. This is where you come up with the objects that divide the problem into manageable parts. In other words, abstracting a problem simply.</div></li></ul><ul dir="ltr"><li><div align="left">Abstraction Means thinking of how to tackle that problem in terms of object-oriented code. The data items needed by each object become that object’s properties, whether public or private, and the actions each object needs to perform in the real world become its actions in code.</div></li></ul><p align="left"><span style="font-size:130%;color:#000066;"><strong></strong></span></p><p align="left"><span style="font-size:130%;color:#000066;"><strong>OOP Principles</strong></span></p><ul dir="ltr"><li><div align="left">Objects should represents real life entities.</div></li><li><div align="left">Single responsibility — a class should have only one thing to do.</div></li><li><div align="left">As possible as you can Make your code closed for modification, open for extension.</div></li><li><div align="left">Maintenance should not cost a lot</div></li><li><div align="left">Principle of least know: separate entities (classes of objects) have not to know too much about each other. As much as possible, you should lock away the details inside each class or object and make the coupling between entities as loose as possible If one object needs to know too much about another make their coupling loose (Always go for the loosest coupling you can.).</div></li><li><div align="left">Pure inheritance : inherit every thing</div></li></ul><p align="left"></p><p dir="ltr" align="left"></p><p dir="ltr" align="left"><span style="font-size:130%;color:#000066;"><strong>Object relationships</strong></span></p><ul dir="ltr"><li><div align="left">Inheritance = "IS A" Relationship</div></li><li><div align="left">Composition = "Has A" Relationship</div></li><li><div align="left">Aggregation = "Has A" Relationship</div></li></ul><p align="left"></p><p align="left"><span style="font-size:130%;color:#000066;"><strong>Design Patterns</strong></span></p><ul dir="ltr"><li><div align="left">In problem solving we use the essence of previous problem’s solution to solve the new one (thinking in problem-solution pairs).<br />Abstracting from specific problem-solution pairs and distilling out common factors leads to patterns: These problem-solution pairs tend to fall into families of similar problems and solutions with each family exhibiting a pattern in both the problems and the solutions.<br />Every pattern deals with a specific, recurring problem in the design or implementation of a software system.</div></li><li><div align="left">Patterns can be used to construct software architectures with specific properties.</div></li><li><div align="left">Design Patterns are solutions for well known programming problems</div></li><li><div align="left">Help making your code closed for modification but open for extension</div></li><li><div align="left">Much of what design patterns are all about has to do with making sure you’re setting up the way you attack the problem correctly. Working with design patterns often means spending more time on the abstraction part of the process than on the concrete classes part.</div></li></ul>Hassan Ibrahimhttp://www.blogger.com/profile/06201022647941200256noreply@blogger.com0