<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-10288022</id><updated>2011-11-27T17:00:49.879-08:00</updated><title type='text'>Design Patterns</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://oopatterns.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10288022/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://oopatterns.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Alex Smith</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_PFZaYg8xvmA/TVL1Jy88gwI/AAAAAAAAAXI/aHxW-gpdr7o/s220/laughing-man.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>10</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-10288022.post-110853381079520978</id><published>2005-02-15T21:49:00.000-08:00</published><updated>2005-02-15T22:10:53.203-08:00</updated><title type='text'>Initial Class Diagrams</title><content type='html'>This is a very brief view of what we have so far.&lt;br /&gt;Send me an email if I missed something. &lt;br /&gt;&lt;br /&gt;You can click on the image to see an enlarged version.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/65184223@N00/4887518/" title="Photo Sharing"&gt;&lt;img src="http://photos3.flickr.com/4887518_a1bab2de95.jpg" width="400" height="308" alt="GOL - Class Diagrams" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10288022-110853381079520978?l=oopatterns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oopatterns.blogspot.com/feeds/110853381079520978/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10288022&amp;postID=110853381079520978' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10288022/posts/default/110853381079520978'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10288022/posts/default/110853381079520978'/><link rel='alternate' type='text/html' href='http://oopatterns.blogspot.com/2005/02/initial-class-diagrams.html' title='Initial Class Diagrams'/><author><name>Mitchell Hall</name><uri>http://www.blogger.com/profile/13919426616166056601</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10288022.post-110841279087609743</id><published>2005-02-14T12:24:00.000-08:00</published><updated>2005-02-14T12:26:30.916-08:00</updated><title type='text'>Sourceforge Project Approved!</title><content type='html'>Our project was approved by sourceforge so now we can make use of their facilities! The project homepage will be kept at &lt;a href"http://oopuno.sourceforge.net"&gt;http://oopuno.sourceforge.net&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10288022-110841279087609743?l=oopatterns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oopatterns.blogspot.com/feeds/110841279087609743/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10288022&amp;postID=110841279087609743' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10288022/posts/default/110841279087609743'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10288022/posts/default/110841279087609743'/><link rel='alternate' type='text/html' href='http://oopatterns.blogspot.com/2005/02/sourceforge-project-approved.html' title='Sourceforge Project Approved!'/><author><name>Alex Smith</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_PFZaYg8xvmA/TVL1Jy88gwI/AAAAAAAAAXI/aHxW-gpdr7o/s220/laughing-man.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10288022.post-110836002974054942</id><published>2005-02-13T21:45:00.000-08:00</published><updated>2005-02-13T21:47:09.740-08:00</updated><title type='text'>Sourceforge Project</title><content type='html'>I put in a project request on sourceforge under the name OO Patterns UNO, and it will take about 2 days for the project to get approval.  Hopefully they won't deny us, but if they do, I still have a CVS server we can use.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10288022-110836002974054942?l=oopatterns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oopatterns.blogspot.com/feeds/110836002974054942/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10288022&amp;postID=110836002974054942' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10288022/posts/default/110836002974054942'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10288022/posts/default/110836002974054942'/><link rel='alternate' type='text/html' href='http://oopatterns.blogspot.com/2005/02/sourceforge-project.html' title='Sourceforge Project'/><author><name>Alex Smith</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_PFZaYg8xvmA/TVL1Jy88gwI/AAAAAAAAAXI/aHxW-gpdr7o/s220/laughing-man.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10288022.post-110835990929055021</id><published>2005-02-13T21:42:00.000-08:00</published><updated>2005-02-13T21:45:09.293-08:00</updated><title type='text'>Solution to Spawning!</title><content type='html'>I thought of a way to solve the spawning problem!&lt;br /&gt;&lt;br /&gt;Our spawner can simply create dead cells in the unoccupied points around any living cells.  Then the world can iterate through the cell set so that each cell decides its own life or death.  Then the world cycles and the job is done!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10288022-110835990929055021?l=oopatterns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oopatterns.blogspot.com/feeds/110835990929055021/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10288022&amp;postID=110835990929055021' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10288022/posts/default/110835990929055021'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10288022/posts/default/110835990929055021'/><link rel='alternate' type='text/html' href='http://oopatterns.blogspot.com/2005/02/solution-to-spawning.html' title='Solution to Spawning!'/><author><name>Alex Smith</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_PFZaYg8xvmA/TVL1Jy88gwI/AAAAAAAAAXI/aHxW-gpdr7o/s220/laughing-man.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10288022.post-110809273847193859</id><published>2005-02-10T19:08:00.000-08:00</published><updated>2005-02-10T19:36:31.880-08:00</updated><title type='text'>Conway Game World</title><content type='html'>I think the world can easily be represented as a set of Cells, and we can think about a layout or topography as just a rule for where a Cell is allowed to be placed.  I don't like the idea of using any 2 dimensional lists, arrays, or the like, because that becomes a mess and is much harder to change later if it's in use.&lt;br /&gt;&lt;br /&gt;Thinking about the features of a Cell, a Cell should probably have a Position.  A Position could be a point in 2 or 3 dimensional space (or maybe additional dimensions as well in case I'm being short sighted).  The important feature of a Position should be that it can calculate distance from another Position.  Cells can use this distance to figure out who their neighbors are.  Consider this code:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;class Cell {&lt;br /&gt;&lt;br /&gt;   ...&lt;br /&gt;&lt;br /&gt;   public boolean isNeighbor(Cell c){&lt;br /&gt;      /* this assumes the neigbor distance limit is 1 unit &lt;br /&gt;          as in Conway's Life */&lt;br /&gt;      return (this.position().distanceTo(c.position()) &lt;= 1.0)&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   public Position position(){&lt;br /&gt;      return p;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   private Position p;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Can also create subsets of our Game World's Cell set by filtering on Cell's isNeighbor(Cell) function, thereby just having to get the size of the subset to determine the number of neighbors.&lt;br /&gt;&lt;br /&gt;And thinking about what the presentation will need to display the Game World, I think the model will need to have a query to get a copy of the Cell set.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10288022-110809273847193859?l=oopatterns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oopatterns.blogspot.com/feeds/110809273847193859/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10288022&amp;postID=110809273847193859' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10288022/posts/default/110809273847193859'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10288022/posts/default/110809273847193859'/><link rel='alternate' type='text/html' href='http://oopatterns.blogspot.com/2005/02/conway-game-world.html' title='Conway Game World'/><author><name>Alex Smith</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_PFZaYg8xvmA/TVL1Jy88gwI/AAAAAAAAAXI/aHxW-gpdr7o/s220/laughing-man.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10288022.post-110809132975422777</id><published>2005-02-10T18:51:00.000-08:00</published><updated>2005-02-10T19:08:49.756-08:00</updated><title type='text'>Top Down Approach</title><content type='html'>I have two reasons for wanting to do a top-down approach.&lt;br /&gt;&lt;br /&gt;1)  By the building from top to bottom, it forces us to think more about what features our underlying model should have.  This is the same principle behind test-driven design.&lt;br /&gt;&lt;br /&gt;2)  We have something executable that we can build, use, and demonstrate with, even if it doesn't provide full functionality at first.  An executable provides us a structured way to examine the functionality and design of our program without having to turn to the source code, which is especially useful for dealing with customers who don't program or haven't already seen the source code.&lt;br /&gt;&lt;br /&gt;Also, a top-down approach doesn't mean we ignore the model.  As said above, top down will make us think about what we want our model to do.  So, we can specify, or implement mock, objects to hold a foundation while we build the top.  Then when we're satisfied with that layer, then we take a step down to implement our mock objects, and this becomes our new top layer, thus iterating the process.  If we work in this way, we will have to think about the model a great deal, and we'll be thinking about it from the point of view of a client, which is what we want.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10288022-110809132975422777?l=oopatterns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oopatterns.blogspot.com/feeds/110809132975422777/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10288022&amp;postID=110809132975422777' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10288022/posts/default/110809132975422777'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10288022/posts/default/110809132975422777'/><link rel='alternate' type='text/html' href='http://oopatterns.blogspot.com/2005/02/top-down-approach.html' title='Top Down Approach'/><author><name>Alex Smith</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_PFZaYg8xvmA/TVL1Jy88gwI/AAAAAAAAAXI/aHxW-gpdr7o/s220/laughing-man.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10288022.post-110809027433271292</id><published>2005-02-10T18:45:00.000-08:00</published><updated>2005-02-10T18:51:14.333-08:00</updated><title type='text'>Meeting 2/10</title><content type='html'>In today's meeting, we mainly discussed the Game of Life project, including possible changes to anticipate, patterns to accommodate those changes, and general design issues.&lt;br /&gt;&lt;br /&gt;We set an agenda to begin building the Game of Life program.&lt;br /&gt;&lt;br /&gt;We scheduled our next meeting for the regular meeting time of Tuesday 3PM next week (Feb. 15th).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10288022-110809027433271292?l=oopatterns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oopatterns.blogspot.com/feeds/110809027433271292/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10288022&amp;postID=110809027433271292' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10288022/posts/default/110809027433271292'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10288022/posts/default/110809027433271292'/><link rel='alternate' type='text/html' href='http://oopatterns.blogspot.com/2005/02/meeting-210.html' title='Meeting 2/10'/><author><name>Alex Smith</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_PFZaYg8xvmA/TVL1Jy88gwI/AAAAAAAAAXI/aHxW-gpdr7o/s220/laughing-man.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10288022.post-110757538670000268</id><published>2005-02-04T19:41:00.000-08:00</published><updated>2005-02-04T19:49:46.700-08:00</updated><title type='text'>Conway Game of Life</title><content type='html'>I found a link (&lt;a href="http://www.tech.org/%7Estuart/life/rules.html"&gt;http://www.tech.org/~stuart/life/rules.html&lt;/a&gt;) for the rules for the game, and the game is so simple that I doubt we'll need much else.&lt;br /&gt;&lt;br /&gt;I think we should write a use case for the usage of the program and then start with a top-down approach by implementing the GUI components first.&lt;br /&gt;&lt;br /&gt;We should also investigate getting a project at sourceforge so that we have a common place to keep our code.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10288022-110757538670000268?l=oopatterns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oopatterns.blogspot.com/feeds/110757538670000268/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10288022&amp;postID=110757538670000268' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10288022/posts/default/110757538670000268'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10288022/posts/default/110757538670000268'/><link rel='alternate' type='text/html' href='http://oopatterns.blogspot.com/2005/02/conway-game-of-life.html' title='Conway Game of Life'/><author><name>Alex Smith</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_PFZaYg8xvmA/TVL1Jy88gwI/AAAAAAAAAXI/aHxW-gpdr7o/s220/laughing-man.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10288022.post-110737002964701120</id><published>2005-02-02T10:42:00.000-08:00</published><updated>2005-02-03T18:44:24.466-08:00</updated><title type='text'>Weekly Meeting 2/02</title><content type='html'>Topics discussed:  Programming Languages' Popularity&lt;br /&gt;&lt;br /&gt;Reading for next week:  &lt;a href="http://www.paulgraham.com/popular.html"&gt;Language Popularity&lt;/a&gt;, GoF Design Patterns Workbook&lt;br /&gt;&lt;br /&gt;Next Meeting Time:  Thursday, Feb. 10, 3PM&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10288022-110737002964701120?l=oopatterns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oopatterns.blogspot.com/feeds/110737002964701120/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10288022&amp;postID=110737002964701120' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10288022/posts/default/110737002964701120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10288022/posts/default/110737002964701120'/><link rel='alternate' type='text/html' href='http://oopatterns.blogspot.com/2005/02/weekly-meeting-202.html' title='Weekly Meeting 2/02'/><author><name>Alex Smith</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_PFZaYg8xvmA/TVL1Jy88gwI/AAAAAAAAAXI/aHxW-gpdr7o/s220/laughing-man.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10288022.post-110626107031782503</id><published>2005-01-20T14:43:00.000-08:00</published><updated>2005-01-20T14:44:30.316-08:00</updated><title type='text'>Hello World!</title><content type='html'>Hello World!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10288022-110626107031782503?l=oopatterns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oopatterns.blogspot.com/feeds/110626107031782503/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10288022&amp;postID=110626107031782503' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10288022/posts/default/110626107031782503'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10288022/posts/default/110626107031782503'/><link rel='alternate' type='text/html' href='http://oopatterns.blogspot.com/2005/01/hello-world.html' title='Hello World!'/><author><name>Mitchell Hall</name><uri>http://www.blogger.com/profile/13919426616166056601</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
