The first order of business in our December meeting was officer nominations and the passing of the keyboard ceremony. Thanks to Mike for his work as president since 2001, and thank Cathy for taking over the reigns. The run down of the officer’s for this upcoming year are as follows:
Thanks to Mike Timpe who volunteered to bring homemade muffins, very yummy and four kinds, Wow!
Devcon dates for next year have been announced as:
Advisor DevCon, June 12-16, Las Vegas
DevTeach, June 18-22, Montreal
Our speaker for the December meeting was Bill Anderson, the President of L.A. FoxPro User group (http://www.lafox.org/) . Bill has been a software engineer for many years and can frequently be found posting on the ProFox list. Use the link: http://www.leafe.com/mailman/listinfo/profox for more information regarding ProFox. He highly recommends the Frankfurt conference as very nice Devcon to attend. http://devcon.dfpug.de/ for more information.
Bill’s topic was Using Software Design Patterns. The recommended reading for this topic was: Design Patterns, Elements of Resusable Object-Oriented Software:
By Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, referred to as the “Gang of 4”. (http://www.amazon.com/gp/reader/0201633612/ref=sib_dp_pt/002-3546007-8700806#reader-link) There have also been numerous articles written on the subject through the years which can be located through the foxpro wiki (http://fox.wikis.com), FoxTalk, Advisor and CoDe Magazine as well as many others.
Design patterns can be applied to many different languages, although Bill’s examples were FoxPro based. In a very short synapse, the patterns discussed at the meeting were:
Bridge Pattern: Decouple an abstraction from the implementation so the two can vary independently. This is a fundamental design pattern and is the foundation for all other pattern.
Decorator Pattern: (aka Wrapper): Attach additional responsibilities to an object dynamically. Decorator provides a flexible alternative to subclassing for extending functionality. Heuristic: Subclass all “black box” objects. If you have subclassed a control and changed its behavior – then you know the pattern.
Adapter Pattern: Convert the interface of a class into another interface clients expect. Adapters modify interfaces to an object (unlike decorators, which modify behavior of an object). Makes an object look like another.
Template Method: Definition: Define the skeleton of an algorithm in an operation, deferring some steps to subclasses. Template method lets subclasses redefine certain steps of an algorithm without changing the algorithm’s structure.
Iterator Pattern: Definition: Provide a way to access elements of an aggregate object sequentially without exposing it’s underlying representation. Means of traversal handled by iterator object. Should be a container. VFP collection class is ideal. Similar to traversing an array.
Observer Pattern: Define a one-to-many dependency so when object changes state, all objects are notified and updated automatically. Two types of observers: active (voyeur) and passive (publish and subscribe).
Memento pattern: Without violating encapsulating, capture and externalize an object’s internal state so the object can be restored later. Use this pattern for VFP housekeeping chores – SET settings, ON settings, work areas, etc.
Chain of Responsibility: Avoid coupling request sender to the receiver by giving more than one object a chance to handle the request. Chain the receiving objects. Pattern often used in hierarchies – Error handling, processing import data, multi-tier applications, etc.
Abstract Factory Pattern: Provide an interface for creating families of related or dependent objects without specifying their concrete classes. Avoid NewObject and CreateObject methods – let factory handle it. VFP data access performance is ideal for implementing this pattern.
What was stressed throughout the talk was:
Use software patterns to keep an application as flexible as possible.
Think in Patterns:
You’re already familiar with most patterns
Use pattern heuristics as a guideline
Understand pattern usage
Don’t get lost in formal definitions
Use all the great resources available (mentioned above.)
Glad everyone who could attend was present, hope to see you and MORE at the next meeting.
January 8, 2005
We don’t have an official speaker yet for January meeting, but we may pull a webcast from FoxCast.org. If you would like to see something particular from here: http://www.foxcast.org/ please let us know.Sharon Hodgson GRAFUG Secretary Optimal Solutions, Inc.
NOTE: If you’d like to be removed from our mailing list just reply to this message and let me know.