Talk:Object Oriented Software Design
Discuss Object Oriented Software Design here. Opened 19:00, 3 November 2006 (UTC)
UML
editI was pleased to see some interest in the Unified Modeling Language so I went ahead and started our own local UML resource.
Background: I first learned of OO back in the late 90s while working with Visio tm at my engineering job in the Rail industry. That's where I first learned of Grady Booch and the OMG. I've experimented with Gentleware's Poseidon for UML tool and the UML tools that come with Dia. I've also tried working with the Eclipse IDE but my current yard-sale computer just lacks the resources to run it.
Objectives: I'd like to get back into UML diagramming, but in a more focused way with collaborators. I'm leaning toward Applied Computer Science (listed as a red link at School:Computer Science) and would like to be part of such a group, if it forms. As i've stated in other places, I think a UML treatment of MediaWiki and Wikiversity would be cool.
You really need other heads in there with ya on endeavers like this or it'll eat you alive! CQ 19:29, 3 November 2006 (UTC)
Design Pattern Model - A Corpus
editI have found a design pattern model I think we can "use productively somewhere in a real design". I haven't yet discovered any actual "detailed design documentation related to the pattern" yet but I do believe that a scad of it exists. The topic is Computational linguistics and I have an ally or two here at Wikiversity that share an interest in developing an original corpus custom-built for Wikiversity translations. This is a real-world example that is close to home, here.
We start with a finite scope based in MediaWiki and its application here (see above post). The constraints of the practical model are established at the outset by the fact that Wikiversity is implemented in only three languages. The implementation diagram, therefore has a well-scoped finite constrained initiallization that is represented by {{translators}}:
This template has a built-n classifier that establishes relationships between English, Spanish and German Languages. This classifier functions "out-of-the-box" through MediaWiki's Categories. The thoughtfulness exhibited early-on by Wikversity founders' naming conventions helped set a useful precedent which allows a robust extention to the core classifier which is already illustrated nicely:
Most all of the elements of the UML backbone are represented by these two objects. We now have a set of Actors - Wikiversity participants - each of whom speak and write in one or more languages. The actors create objects:
- pages, sections, templates, categories, files, etc.
These objects have properties and attributes and as part of a dynamic application (MediaWiki) and a robust community (Wikiversity) are capable of traversing domains on many levels:
- top-level .org domain - generally reserved for a non-profit organization.
- mid-level wikimedia.org domain - defined and constrained by the Wikimedia Foundation and its organizational principles and inclusive of Wiktionary (essentially a corpus), Wikipedia (a massive interlingual activity), the Wikimedia Commons (a repository of objects [images and media files]) and other sister projects.
- lower-mid-level wikiversity.org domain - a self-organizing multi-lingual entity which is host to this very idea expressed here at...
- low-level (specialized) Object Oriented Software Design domain - by the...
- bottom-level (specialist) domain - the English-speaking actor — me.
Now we have a finite progression from a generalized global context to a specialized personal context through a composite design pattern. (perspective of a UML diagrammer). From this, we can establish a constrained set of:
- rules, methods, procedures, objects, containers, activities, implementations, interactions, states, relationships, componants, and most importantly, collaborations.
...all of which lend well to diagrammatics and built on an existing product and group — the MediaWiki Project.
These collaborations are configured at the most fine-grained level by each actor within this domain of Object Oriented Software Design. I shall now add stubs outwardly from my experiential design pattern model through an interface domain (object container for machine translator and CAT toolbox) — Computational linguistics which will in turn be pointed at my first product — Wikipedia:WikiProject_Keywords... finally! (I knew I started that silly project for some reason) See also Computational sociology • CQ 00:25, 1 December 2006 (UTC)
My 2 cents
editI know I'm an annonymous editor though I think I can help with peer reviewing the article. My little comment is about the fact that one who is reading the page has to systematically change page to find the material to read and in that view, it is really frustrating to have to reload a new page to "go on with the class". This can be seen as going from one classroom to another in order to get the all of what the class is worth. Also, one doesn't get the idea of what the class is by just looking at the page so maybe an overview for this page or an introductory page would be nice. 70.81.23.223 14:39, 3 December 2006 (UTC)
- Thanks for the ante, anonymous. The links are provided for background, pre-requisite knowledge and other context the writer thought you should be aware of. Sometimes, these links appear too profusely and assumtions are made by the contributor that the reader has a familiarity with the subject matter. I shall review the lesson page and try to make sure the material is more clear. I will see your 2 cents and raise you a nickle. CQ 00:30, 4 December 2006 (UTC)
Style and Focus
editI just edited the page to make some serious style changes—can we be a bit more careful about how we link? Standard wiki (and Internet) practice is to make a statement and link the relevant part of the text:
Not:
- This here link talks about mammals: [1]. Which is what lemurs are, described by this here link: [2].
Also, I think we need to tighten this page up quite a bit. A lot of the resources are far too specific to be mentioned on a page that's supposed to be discussing OO development. We have to remember that the people that come to this page are looking to understand the basics of OO software design. If they're looking for information on design patterns, they'll go to a page on design patterns. We can write other pages and cross-link here as part of this topic, but we should focus on this topic here.
Behavior
editIt is currently written: "We can also define behaviors that all dogs share such as eat(), sleep(), bark(), and run(). The behaviors we define may use the state stored in the variables to determine how to correctly carry out the behavior"
I think that these examples are misleading because afaik a behavior is a responsability that the objects carry out when solicited by other entities. So eat(), sleep() and run() seem operations that the dogs do and not operations that the invokers can do with dogs. For instance, if we were speaking about a videogame, these operations would animate digital dogs. But, because this is not the case, I suggest to identify operations like pet(), feed(), wash() and so on...
- I had the same problem the first time i heard about the "responsabilities" of some object. It led me to some confutions... whenever i wanted to design a class, i spotted some actions that must be made. I didn't know where this actions must be coded. I think the problem you say must be consider, and the reader must be warned about the importance of the "context" in spotting the responsabilities of an object... Vengadora (discuss • contribs) 03:28, 17 July 2013 (UTC)