<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jsberry</id>
	<title>Expertiza_Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jsberry"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Jsberry"/>
	<updated>2026-05-23T00:22:01Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch7_7b_JB&amp;diff=43419</id>
		<title>CSC/ECE 517 Fall 2010/ch7 7b JB</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch7_7b_JB&amp;diff=43419"/>
		<updated>2010-12-11T04:40:44Z</updated>

		<summary type="html">&lt;p&gt;Jsberry: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Information Expert Pattern=&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Information Expert Pattern is a principle for assigning responsibility in object-oriented design.  The fundamental idea is to identify the class with the most information (expertise) and assign responsibility to it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GRASP==&lt;br /&gt;
&lt;br /&gt;
In object-oriented design, the overall problems of assigning responsibility are dealt with by [http://en.wikipedia.org/wiki/GRASP_%28object-oriented_design%29 GRASP 1], or General Responsibility Assignment Software Patterns (or Principles). GRASP has nine principles: &lt;br /&gt;
# Information Expert&lt;br /&gt;
# Creator&lt;br /&gt;
# Low Coupling&lt;br /&gt;
# High Cohesion&lt;br /&gt;
# Controller&lt;br /&gt;
# Polymorphysm&lt;br /&gt;
# Pure Fabrication&lt;br /&gt;
# Indirection&lt;br /&gt;
# Protected Variations&lt;br /&gt;
&lt;br /&gt;
There are often situations in programming object-oriented designs when data needed by an object is spread out across several other objects.  Rather than access each object individually and sequentially to get the details one at a time, the Information Expert pattern can be used to keep the program organized and straightforward.  This will help to enable later extension of the program to enable new functionality without adding a lot of complexity.&lt;br /&gt;
&lt;br /&gt;
==Process==&lt;br /&gt;
Using this approach, the programmer would:&lt;br /&gt;
# Identify a responsibility &lt;br /&gt;
# Determine what information is needed to fulfill it,&lt;br /&gt;
# Locate where that information is stored&lt;br /&gt;
# Identify which class contains the largest subset of the required data&lt;br /&gt;
# Assign responsibility to that class to gather the remaining data&lt;br /&gt;
&lt;br /&gt;
In some circumstances, this method could be used in a tree structure to have a small number of experts who are responsible for specific types of data.  Each contacts a subset of the group of objects containing the needed data and may do some simple processing or combination of the data before passing it back to the original caller.&lt;br /&gt;
&lt;br /&gt;
An example of when this might be retrieval of a database record.  The record may be comprised of data from many different databases.  One object would be the assigned as the caller.  It would be responsible for fetching the necessary data and building the final record.  It would contact each database controller, which may each be asked to retrieve records from one or more tables.  They would return the requested records (possibly after some minor editing of them).  The caller would then extract the fields it needed and build the new record from them.  This new record would be returned.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
# [http://en.wikipedia.org/wiki/GRASP_%28object-oriented_design%29 Wikipedia's GRASP article 1]&lt;br /&gt;
# [http://cs.armstrong.edu/hsu/Course/CSCI3321/PracticalSoftwareEngineering/html/ch10s04.html Information Expert Pattern overview with diagrams 2]&lt;br /&gt;
# [http://programmersnotes.info/2009/03/28/creator-and-information-expert-grasp-design-pattern-series/#expert Creator and Information Expert Principles with sample code 3]&lt;/div&gt;</summary>
		<author><name>Jsberry</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch7_7b_JB&amp;diff=43418</id>
		<title>CSC/ECE 517 Fall 2010/ch7 7b JB</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch7_7b_JB&amp;diff=43418"/>
		<updated>2010-12-11T04:31:56Z</updated>

		<summary type="html">&lt;p&gt;Jsberry: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Information Expert Pattern=&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Information Expert Pattern is a principle for assigning responsibility in object-oriented design.  The fundamental idea is to identify the class with the most information (expertise) and assign responsibility to it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GRASP==&lt;br /&gt;
&lt;br /&gt;
In object-oriented design, the overall problems of assigning responsibility are dealt with by [http://en.wikipedia.org/wiki/GRASP_%28object-oriented_design%29 GRASP 1], or General Responsibility Assignment Software Patterns (or Principles). GRASP has nine principles: &lt;br /&gt;
# Information Expert&lt;br /&gt;
# Creator&lt;br /&gt;
# Low Coupling&lt;br /&gt;
# High Cohesion&lt;br /&gt;
# Controller&lt;br /&gt;
# Polymorphysm&lt;br /&gt;
# Pure Fabrication&lt;br /&gt;
# Indirection&lt;br /&gt;
# Protected Variations&lt;br /&gt;
&lt;br /&gt;
There are often situations in programming object-oriented designs when data needed by an object is spread out across several other objects.  Rather than access each object individually and sequentially to get the details one at a time, the Information Expert pattern can be used to keep the program organized and straightforward.  This will help to enable later extension of the program to enable new functionality without adding a lot of complexity.&lt;br /&gt;
&lt;br /&gt;
==Process==&lt;br /&gt;
Using this approach, the programmer would:&lt;br /&gt;
# Identify a responsibility &lt;br /&gt;
# Determine what information is needed to fulfill it,&lt;br /&gt;
# Locate where that information is stored&lt;br /&gt;
# Identify which class contains the largest subset of the required data&lt;br /&gt;
# Assign responsibility to that class to gather the remaining data&lt;br /&gt;
&lt;br /&gt;
In some circumstances, this method could be used in a tree structure to have a small number of experts who are responsible for specific types of data.  Each contacts a subset of the group of objects containing the needed data and may do some simple processing or combination of the data before passing it back to the original caller.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
# [http://en.wikipedia.org/wiki/GRASP_%28object-oriented_design%29 Wikipedia's GRASP article 1]&lt;br /&gt;
# [http://cs.armstrong.edu/hsu/Course/CSCI3321/PracticalSoftwareEngineering/html/ch10s04.html Information Expert Pattern overview with diagrams 2]&lt;br /&gt;
# [http://programmersnotes.info/2009/03/28/creator-and-information-expert-grasp-design-pattern-series/#expert Creator and Information Expert Principles with sample code 3]&lt;/div&gt;</summary>
		<author><name>Jsberry</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch7_7b_JB&amp;diff=43417</id>
		<title>CSC/ECE 517 Fall 2010/ch7 7b JB</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch7_7b_JB&amp;diff=43417"/>
		<updated>2010-12-11T04:29:05Z</updated>

		<summary type="html">&lt;p&gt;Jsberry: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Information Expert Pattern=&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Information Expert Pattern is a principle for assigning responsibility in object-oriented design.  The fundamental idea is to identify the class with the most information (expertise) and assign responsibility to it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GRASP==&lt;br /&gt;
&lt;br /&gt;
In object-oriented design, the overall problems of assigning responsibility are dealt with by [http://en.wikipedia.org/wiki/GRASP_%28object-oriented_design%29 GRASP 1], or General Responsibility Assignment Software Patterns (or Principles). GRASP has nine principles: &lt;br /&gt;
# Information Expert&lt;br /&gt;
# Creator&lt;br /&gt;
# Low Coupling&lt;br /&gt;
# High Cohesion&lt;br /&gt;
# Controller&lt;br /&gt;
# Polymorphysm&lt;br /&gt;
# Pure Fabrication&lt;br /&gt;
# Indirection&lt;br /&gt;
# Protected Variations&lt;br /&gt;
&lt;br /&gt;
There are often situations in programming object-oriented designs when data needed by an object is spread out across several other objects.  Rather than access each object individually and sequentially to get the details one at a time, the Information Expert pattern can be used to keep the program organized and straightforward.  This will help to enable later extension of the program to enable new functionality without adding a lot of complexity.&lt;br /&gt;
&lt;br /&gt;
==Process==&lt;br /&gt;
Using this approach, the programmer would:&lt;br /&gt;
# Identify a responsibility &lt;br /&gt;
# Determine what information is needed to fulfill it,&lt;br /&gt;
# Locate where that information is stored&lt;br /&gt;
# Identify which class contains the largest subset of the required data&lt;br /&gt;
# Assign responsibility to that class&lt;br /&gt;
# Assign the responsible class to recursively apply the Information Expert Pattern for acquiring any data still missing.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
# [http://en.wikipedia.org/wiki/GRASP_%28object-oriented_design%29 Wikipedia's GRASP article 1]&lt;br /&gt;
# [http://cs.armstrong.edu/hsu/Course/CSCI3321/PracticalSoftwareEngineering/html/ch10s04.html Information Expert Pattern overview with diagrams 2]&lt;br /&gt;
# [http://programmersnotes.info/2009/03/28/creator-and-information-expert-grasp-design-pattern-series/#expert Creator and Information Expert Principles with sample code 3]&lt;/div&gt;</summary>
		<author><name>Jsberry</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch7_7b_JB&amp;diff=43416</id>
		<title>CSC/ECE 517 Fall 2010/ch7 7b JB</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch7_7b_JB&amp;diff=43416"/>
		<updated>2010-12-11T04:15:12Z</updated>

		<summary type="html">&lt;p&gt;Jsberry: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Information Expert Pattern=&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Information Expert Pattern is a principle for assigning responsibility in object-oriented design.  The fundamental idea is to identify the class with the most information (expertise) and assign responsibility to it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GRASP==&lt;br /&gt;
&lt;br /&gt;
In object-oriented design, the overall problems of assigning responsibility are dealt with by GRASP[http://en.wikipedia.org/wiki/GRASP_%28object-oriented_design%29 1], or General Responsibility Assignment Software Patterns (or Principles). GRASP has nine principles, of which Information Expert is one. The others are: &lt;br /&gt;
#Creator [http://en.wikipedia.org/wiki/GRASP_%28object-oriented_design%29#Creator 2]&lt;br /&gt;
#Low Coupling [http://en.wikipedia.org/wiki/GRASP_%28object-oriented_design%29#Low_Coupling 3]&lt;br /&gt;
#High Cohesion [http://en.wikipedia.org/wiki/GRASP_%28object-oriented_design%29#High_Cohesion 4] &lt;br /&gt;
#Controller [http://en.wikipedia.org/wiki/GRASP_%28object-oriented_design%29#Controller 5]&lt;br /&gt;
#Polymorphysm [http://en.wikipedia.org/wiki/GRASP_%28object-oriented_design%29#Polymorphism 6]&lt;br /&gt;
#Pure Fabrication [http://en.wikipedia.org/wiki/GRASP_%28object-oriented_design%29#Pure_Fabrication 7]&lt;br /&gt;
#Indirection [http://en.wikipedia.org/wiki/GRASP_%28object-oriented_design%29#Indirection 8]&lt;br /&gt;
#Protected Variations [http://en.wikipedia.org/wiki/GRASP_%28object-oriented_design%29#Protected_Variations 9]&lt;br /&gt;
&lt;br /&gt;
==Process==&lt;br /&gt;
Using this approach, the programmer would:&lt;br /&gt;
# Identify a responsibility &lt;br /&gt;
# Determine what information is needed to fulfill it,&lt;br /&gt;
# Locate where that information is stored&lt;br /&gt;
# Identify which class contains the largest subset of the required data&lt;br /&gt;
# Assign responsibility to that class&lt;br /&gt;
# Assign the responsible class to recursively apply the Information Expert Pattern for acquiring any data still missing.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
# [http://en.wikipedia.org/wiki/GRASP_%28object-oriented_design%29 Wikipedia's GRASP article 10]&lt;br /&gt;
# [http://cs.armstrong.edu/hsu/Course/CSCI3321/PracticalSoftwareEngineering/html/ch10s04.html Information Expert Pattern overview with diagrams 11]&lt;br /&gt;
# [http://programmersnotes.info/2009/03/28/creator-and-information-expert-grasp-design-pattern-series/#expert Creator and Information Expert Principles with sample code 12]&lt;/div&gt;</summary>
		<author><name>Jsberry</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch1_S10_ms&amp;diff=43325</id>
		<title>CSC/ECE 517 Fall 2010/ch1 S10 ms</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch1_S10_ms&amp;diff=43325"/>
		<updated>2010-12-02T06:33:36Z</updated>

		<summary type="html">&lt;p&gt;Jsberry: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*[[CSC/ECE 517 Fall 2010/ch1 1a vc]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch1 1a br]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch1 1b mg]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch1 1c JF]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch1 1e az]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch1 1e bb]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch1 1f vn]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch1 25 ag]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch2 2b dg]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch1 2e RI]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch1 S6 aa]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch1 S6 km]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch1 S10 GP]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch1 S10 MS]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch1 S10 MM]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch1 S10 PH]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch2 2a CB]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch2 2a mw]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch2 2c ck]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch2 S23 GP]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch2 S24 NS]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch2 S23 SS]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch2 S23 NR]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch2 S20 TT]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch2 2d AS]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch2 S24 rm]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch3 3a SN]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch3 3b ka]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch3 3e br]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch3 3f lj]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch3 3h az]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch3 3h PW]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch3 3i IC]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch3 3i MM]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch3 3j KS]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch3 S30 SK]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch3 4b mt]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch4 4e ms]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch4 4f sv]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch4 4g HW]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch4 4g km]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch4 4h am]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch5 5b mt]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch5 5b jz]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch5 5c ck]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch5 5c IC]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch5 5f SN]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch5 5a KR]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch5 5b RR]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch5 5e ms]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/chd 6d isb]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch6 6b SK]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch6 6c AW]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch6 6d bb]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch6 6h AS]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch6 6f AZ]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch6 6b AK]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch6 6g ss]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch6 6d NM]]&lt;br /&gt;
&lt;br /&gt;
*[[ CSC/ECE 517 Fall 2010/ch6 6a PC]]&lt;br /&gt;
&lt;br /&gt;
*[[ CSC/ECE 517 Fall 2010/ch2 4d RB]]&lt;br /&gt;
&lt;br /&gt;
*[[ CSC/ECE 517 Fall 2010/ch7 71 ed]]&lt;br /&gt;
&lt;br /&gt;
*[[ CSC/ECE 517 Fall 2010/ch7 7c ed]]&lt;br /&gt;
&lt;br /&gt;
*[[ CSC/ECE 517 Fall 2010/ch7 7e GP]]&lt;br /&gt;
&lt;br /&gt;
*[[ CSC/ECE 517 Fall 2010/ch7 7e GS]]&lt;br /&gt;
&lt;br /&gt;
*[[ CSC/ECE 517 Fall 2010/ch7 7f PW]]&lt;br /&gt;
&lt;br /&gt;
*[[ CSC/ECE 517 Fall 2010/ch7 7g ms]]&lt;br /&gt;
&lt;br /&gt;
*[[ CSC/ECE 517 Fall 2010/ch7 7i sr]]&lt;br /&gt;
&lt;br /&gt;
*[[ CSC/ECE_517_Fall_2010/ch7 7b JB]]&lt;br /&gt;
&lt;br /&gt;
*[[ CSC/ECE_517_Fall_2010/ch7 S36 JB]]&lt;/div&gt;</summary>
		<author><name>Jsberry</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch7_S36_JB&amp;diff=43323</id>
		<title>CSC/ECE 517 Fall 2010/ch7 S36 JB</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch7_S36_JB&amp;diff=43323"/>
		<updated>2010-12-02T06:27:40Z</updated>

		<summary type="html">&lt;p&gt;Jsberry: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=O-O packages for implementing office suite APIs=&lt;br /&gt;
==Introduction==&lt;br /&gt;
Office suite software has been around now for many years.  The first was Microsoft Office, released in 1989, which included a word processor, a spreadsheet, and a presentation program.  These were separate programs which were integrated together into a single package.  For many years, Microsoft has remained the dominant player in the game, but not the only one.  Others have come (and sometimes gone) that have had their own popularity.  Although all of them have tried to provide every function they thought their users might need and/or want, none of them are perfect.&lt;br /&gt;
Many users have identified shortcomings or wished for special features that are not available in their favorite office suites.  Some of the suite providers have recognized this and now offer Application Interfaces (APIs) that allow people to access core functions of their software from outside of the program, using separate scripts or programs.  This chapter is a review of the APIs available in various suites and some of the packages that are available to different Object Oriented (OO) languages for implementing this API.&lt;br /&gt;
&lt;br /&gt;
==The Office Suites==&lt;br /&gt;
There are many different office suites.  Below we review a few of the more popular ones that can be easily found today.&lt;br /&gt;
===OpenOffice===&lt;br /&gt;
[http://www.openoffice.org OpenOffice] is a free office suite provided as [http://en.wikipedia.org/wiki/Open_source_software Open-source Software] (OSS) by [http://www.oracle.com Oracle] (previously by [http://www.sun.com Sun Microsystems] and before that by Star Division as Star Office).  It is available for many different operating systems on many different platforms.&lt;br /&gt;
====API====&lt;br /&gt;
Through the [http://wiki.services.openoffice.org/wiki/Documentation/BASIC_Guide/API_Intro OpenOffice API], a user can manipulate files created by OpenOffice using the language of their choice.  OpenOffice uses the [http://udk.openoffice.org/common/man/uno.html Universal Network Objects] (UNO) interface to provide this functionality.&lt;br /&gt;
====Language Support====&lt;br /&gt;
In addition to supporting several non-OO languages, OpenOffice supports the following OO languages:&lt;br /&gt;
* Perl&lt;br /&gt;
* Java&lt;br /&gt;
* C++&lt;br /&gt;
* Python&lt;br /&gt;
* Others&lt;br /&gt;
===Google Docs===&lt;br /&gt;
[http://www.google.com Google Docs] is also a free office suite.  It follows the recent trend of transferring more executables online, making them easily available from anywhere with an Internet connection.&lt;br /&gt;
====API====&lt;br /&gt;
According to the [http://code.google.com/apis/documents/docs/developers_guide.html Google Docs Developer's Guide], &amp;quot;The Google Documents List Data API allows client applications to request a list of a user's documents, query the content of a user's documents, upload/download documents, modify the sharing permissions, view the revision history, and file documents within folders.&amp;quot;&lt;br /&gt;
====Language Support====&lt;br /&gt;
* Java&lt;br /&gt;
* .Net&lt;br /&gt;
* PHP&lt;br /&gt;
* Python&lt;br /&gt;
===Microsoft Word===&lt;br /&gt;
[http://www.microsoft.com Microsoft] has long had a reputation for being closed and anti-competitive and entered the API game very late.  It is now trying to catch up with the big boys.&lt;br /&gt;
====API====&lt;br /&gt;
The [http://msdn.microsoft.com/en-us/library/aa165081%28office.10%29.aspx Microsoft Office] API provides support for accessing its documents through external scripts and programs.&lt;br /&gt;
====Language Support====&lt;br /&gt;
* VBA&lt;br /&gt;
* .Net?&lt;br /&gt;
==Conclusion==&lt;br /&gt;
Not all APIs are created equal!  Some office suites have been built around their APIs, while others put them in as afterthoughts.  A well-defined API can be used by a large number of different programming languages, allows many different file formats to be modified, and provides many ways to manipulate those files.&lt;br /&gt;
==References==&lt;br /&gt;
# [http://www.openoffice.org OpenOffice.org API]&lt;br /&gt;
# [http://www.google.com Google Docs]&lt;br /&gt;
# [http://www.microsoft.com Microsoft Word]&lt;/div&gt;</summary>
		<author><name>Jsberry</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch7_S36_JB&amp;diff=43321</id>
		<title>CSC/ECE 517 Fall 2010/ch7 S36 JB</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch7_S36_JB&amp;diff=43321"/>
		<updated>2010-12-02T06:19:47Z</updated>

		<summary type="html">&lt;p&gt;Jsberry: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=O-O packages for implementing office suite APIs=&lt;br /&gt;
==Introduction==&lt;br /&gt;
Office suite software has been around now for many years.  The first was Microsoft Office, released in 1989, which included a word processor, a spreadsheet, and a presentation program.  These were separate programs which were integrated together into a single package.  For many years, Microsoft has remained the dominant player in the game, but not the only one.  Others have come (and sometimes gone) that have had their own popularity.  Although all of them have tried to provide every function they thought their users might need and/or want, none of them are perfect.&lt;br /&gt;
Many users have identified shortcomings or wished for special features that are not available in their favorite office suites.  Some of the suite providers have recognized this and now offer Application Interfaces (APIs) that allow people to access core functions of their software from outside of the program, using separate scripts or programs.  This chapter is a review of the APIs available in various suites and some of the packages that are available to different Object Oriented (OO) languages for implementing this API.&lt;br /&gt;
&lt;br /&gt;
==The Office Suites==&lt;br /&gt;
There are many different office suites.  Below we review a few of the more popular ones that can be easily found today.&lt;br /&gt;
===OpenOffice===&lt;br /&gt;
[http://www.openoffice.org OpenOffice] is a free office suite provided as [http://en.wikipedia.org/wiki/Open_source_software Open-source Software] (OSS) by [http://www.oracle.com Oracle] (previously by [http://www.sun.com Sun Microsystems] and before that by Star Division as Star Office).  It is available for many different operating systems on many different platforms.&lt;br /&gt;
====API====&lt;br /&gt;
Through the [http://wiki.services.openoffice.org/wiki/Documentation/BASIC_Guide/API_Intro OpenOffice API], a user can manipulate files created by OpenOffice using the language of their choice.  OpenOffice uses the [http://udk.openoffice.org/common/man/uno.html Universal Network Objects] (UNO) interface to provide this functionality.&lt;br /&gt;
====Language Support====&lt;br /&gt;
===Google Docs===&lt;br /&gt;
[http://www.google.com Google Docs] is also a free office suite.  It follows the recent trend of transferring more executables online, making them easily available from anywhere with an Internet connection.&lt;br /&gt;
====API====&lt;br /&gt;
According to the [http://code.google.com/apis/documents/docs/developers_guide.html Google Docs Developer's Guide], &amp;quot;The Google Documents List Data API allows client applications to request a list of a user's documents, query the content of a user's documents, upload/download documents, modify the sharing permissions, view the revision history, and file documents within folders.&amp;quot;&lt;br /&gt;
====Language Support====&lt;br /&gt;
===Microsoft Word===&lt;br /&gt;
[http://www.microsoft.com Microsoft] has long had a reputation for being closed and anti-competitive and entered the API game very late.  It is now trying to catch up with the big boys.&lt;br /&gt;
====API====&lt;br /&gt;
The [http://msdn.microsoft.com/en-us/library/aa165081%28office.10%29.aspx Microsoft Office] API provides support for accessing its documents through external scripts and programs.&lt;br /&gt;
====Language Support====&lt;br /&gt;
==Conclusion==&lt;br /&gt;
Not all APIs are created equal!  Some office suites have been built around their APIs, while others put them in as afterthoughts.  A well-defined API can be used by a large number of different programming languages, allows many different file formats to be modified, and provides many ways to manipulate those files.&lt;br /&gt;
==References==&lt;br /&gt;
# [http://www.openoffice.org OpenOffice.org API]&lt;br /&gt;
# [http://www.google.com Google Docs]&lt;br /&gt;
# [http://www.microsoft.com Microsoft Word]&lt;/div&gt;</summary>
		<author><name>Jsberry</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch7_7b_JB&amp;diff=43320</id>
		<title>CSC/ECE 517 Fall 2010/ch7 7b JB</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch7_7b_JB&amp;diff=43320"/>
		<updated>2010-12-02T06:16:30Z</updated>

		<summary type="html">&lt;p&gt;Jsberry: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Information Expert Pattern=&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Information Expert Pattern is a principle for assigning responsibility in object-oriented design.  The fundamental idea is to identify the class with the most information (expertise) and assign responsibility to it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GRASP==&lt;br /&gt;
&lt;br /&gt;
In object-oriented design, the overall problems of assigning responsibility are dealt with by GRASP[http://en.wikipedia.org/wiki/GRASP_%28object-oriented_design%29], or General Responsibility Assignment Software Patterns (or Principles). GRASP has nine principles, of which Information Expert is one. The others are: &lt;br /&gt;
#Creator [http://en.wikipedia.org/wiki/GRASP_%28object-oriented_design%29#Creator]&lt;br /&gt;
#Low Coupling [http://en.wikipedia.org/wiki/GRASP_%28object-oriented_design%29#Low_Coupling]&lt;br /&gt;
#High Cohesion [http://en.wikipedia.org/wiki/GRASP_%28object-oriented_design%29#High_Cohesion] &lt;br /&gt;
#Controller [http://en.wikipedia.org/wiki/GRASP_%28object-oriented_design%29#Controller]&lt;br /&gt;
#Polymorphysm [http://en.wikipedia.org/wiki/GRASP_%28object-oriented_design%29#Polymorphism]&lt;br /&gt;
#Pure Fabrication [http://en.wikipedia.org/wiki/GRASP_%28object-oriented_design%29#Pure_Fabrication]&lt;br /&gt;
#Indirection [http://en.wikipedia.org/wiki/GRASP_%28object-oriented_design%29#Indirection]&lt;br /&gt;
#Protected Variations [http://en.wikipedia.org/wiki/GRASP_%28object-oriented_design%29#Protected_Variations]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Process==&lt;br /&gt;
&lt;br /&gt;
Using this approach, the programmer would:&lt;br /&gt;
# Identify a responsibility &lt;br /&gt;
# Determine what information is needed to fulfill it,&lt;br /&gt;
# Locate where that information is stored&lt;br /&gt;
# Identify which class contains the largest subset of the required data&lt;br /&gt;
# Assign responsibility to that class&lt;br /&gt;
# Assign the responsible class to recursively apply the Information Expert Pattern for acquiring any data still missing.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
# [http://en.wikipedia.org/wiki/GRASP_%28object-oriented_design%29 Wikipedia's GRASP article]&lt;br /&gt;
# [http://cs.armstrong.edu/hsu/Course/CSCI3321/PracticalSoftwareEngineering/html/ch10s04.html Information Expert Pattern overview with diagrams]&lt;br /&gt;
# [http://programmersnotes.info/2009/03/28/creator-and-information-expert-grasp-design-pattern-series/#expert Creator and Information Expert Principles with sample code]&lt;/div&gt;</summary>
		<author><name>Jsberry</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch7_S36_JB&amp;diff=43319</id>
		<title>CSC/ECE 517 Fall 2010/ch7 S36 JB</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch7_S36_JB&amp;diff=43319"/>
		<updated>2010-12-02T06:03:25Z</updated>

		<summary type="html">&lt;p&gt;Jsberry: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=O-O packages for implementing office suite APIs=&lt;br /&gt;
==Introduction==&lt;br /&gt;
Office suite software has been around now for many years.  The first was Microsoft Office, released in 1989, which included a word processor, a spreadsheet, and a presentation program.  These were separate programs which were integrated together into a single package.  For many years, Microsoft has remained the dominant player in the game, but not the only one.  Others have come (and sometimes gone) that have had their own popularity.  Although all of them have tried to provide every function they thought their users might need and/or want, none of them are perfect.&lt;br /&gt;
Many users have identified shortcomings or wished for special features that are not available in their favorite office suites.  Some of the suite providers have recognized this and now offer Application Interfaces (APIs) that allow people to access core functions of their software from outside of the program, using separate scripts or programs.  This chapter is a review of the APIs available in various suites and some of the packages that are available to different Object Oriented (OO) languages for implementing this API.&lt;br /&gt;
&lt;br /&gt;
==The Office Suites==&lt;br /&gt;
There are many different office suites.  Below we review a few of the more popular ones that can be easily found today.&lt;br /&gt;
===OpenOffice===&lt;br /&gt;
[http://www.openoffice.org OpenOffice] is a free office suite provided as [http://en.wikipedia.org/wiki/Open_source_software Open-source Software] (OSS) by [http://www.oracle.com Oracle] (previously by [http://www.sun.com Sun Microsystems] and before that by Star Division as Star Office).  It is available for many different operating systems on many different platforms.&lt;br /&gt;
====API====&lt;br /&gt;
Through the [http://wiki.services.openoffice.org/wiki/Documentation/BASIC_Guide/API_Intro OpenOffice API], a user can manipulate files created by OpenOffice using the language of their choice.  OpenOffice uses the [http://udk.openoffice.org/common/man/uno.html Universal Network Objects] (UNO) interface to provide this functionality.&lt;br /&gt;
====Language Support====&lt;br /&gt;
===Google Docs===&lt;br /&gt;
[http://www.google.com Google Docs] is also a free office suite.  It follows the recent trend of transferring more executables online, making them easily available from anywhere with an Internet connection.&lt;br /&gt;
====API====&lt;br /&gt;
According to the [http://code.google.com/apis/documents/docs/developers_guide.html Google Docs Developer's Guide], &amp;quot;The Google Documents List Data API allows client applications to request a list of a user's documents, query the content of a user's documents, upload/download documents, modify the sharing permissions, view the revision history, and file documents within folders.&amp;quot;&lt;br /&gt;
====Language Support====&lt;br /&gt;
===Microsoft Word===&lt;br /&gt;
[http://www.microsoft.com Microsoft] has long had a reputation for being closed and anti-competitive and entered the API game very late.  It is now trying to catch up with the big boys.&lt;br /&gt;
====API====&lt;br /&gt;
The [http://msdn.microsoft.com/en-us/library/aa165081%28office.10%29.aspx Microsoft Office] API provides support for accessing its documents through external scripts and programs.&lt;br /&gt;
====Language Support====&lt;br /&gt;
==Conclusion==&lt;br /&gt;
==References==&lt;br /&gt;
# [http://www.openoffice.org OpenOffice.org API]&lt;br /&gt;
# [http://www.google.com Google Docs]&lt;br /&gt;
# [http://www.microsoft.com Microsoft Word]&lt;/div&gt;</summary>
		<author><name>Jsberry</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch7_S36_JB&amp;diff=43313</id>
		<title>CSC/ECE 517 Fall 2010/ch7 S36 JB</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch7_S36_JB&amp;diff=43313"/>
		<updated>2010-12-02T05:41:29Z</updated>

		<summary type="html">&lt;p&gt;Jsberry: /* API */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=O-O packages for implementing office suite APIs=&lt;br /&gt;
==Introduction==&lt;br /&gt;
Office suite software has been around now for many years.  The first was Microsoft Office, released in 1989, which included a word processor, a spreadsheet, and a presentation program.  These were separate programs which were integrated together into a single package.  For many years, Microsoft has remained the dominant player in the game, but not the only one.  Others have come (and sometimes gone) that have had their own popularity.  Although all of them have tried to provide every function they thought their users might need and/or want, none of them are perfect.&lt;br /&gt;
Many users have identified shortcomings or wished for special features that are not available in their favorite office suites.  Some of the suite providers have recognized this and now offer Application Interfaces (APIs) that allow people to access core functions of their software from outside of the program, using separate scripts or programs.  This chapter is a review of the APIs available in various suites and some of the packages that are available to different Object Oriented (OO) languages for implementing this API.&lt;br /&gt;
&lt;br /&gt;
==The Office Suites==&lt;br /&gt;
There are many different office suites.  Below we review a few of the more popular ones that can be easily found today.&lt;br /&gt;
===OpenOffice===&lt;br /&gt;
[http://www.openoffice.org OpenOffice] is a free office suite provided as [http://en.wikipedia.org/wiki/Open_source_software Open-source Software] (OSS) by [http://www.oracle.com Oracle] (previously by [http://www.sun.com Sun Microsystems] and before that by Star Division as Star Office).  It is available for many different operating systems on many different platforms.&lt;br /&gt;
====API====&lt;br /&gt;
Through the [http://wiki.services.openoffice.org/wiki/Documentation/BASIC_Guide/API_Intro OpenOffice API], a user has access to manipulate files created by OpenOffice using the language of their choice.  OpenOffice uses the [http://udk.openoffice.org/common/man/uno.html Universal Network Objects] (UNO) interface for this.&lt;br /&gt;
&lt;br /&gt;
====Language Support====&lt;br /&gt;
===Google Docs===&lt;br /&gt;
[http://www.google.com Google Docs] is also a free office suite.  It follows the recent trend of transferring more executables online, making them easily available from anywhere with an Internet connection.&lt;br /&gt;
====API====&lt;br /&gt;
The API for Google Docs, like for OpenOffice, is well thought out and supported.  It allows for external modification and control of the suite software by programs written in various languages.&lt;br /&gt;
====Language Support====&lt;br /&gt;
===Microsoft Word===&lt;br /&gt;
[http://www.microsoft.com Microsoft] has long had a reputation for being closed and anti-competitive and entered the API game very late.  It is now trying to catch up with the big boys.&lt;br /&gt;
====API====&lt;br /&gt;
Microsoft's API stinks!&lt;br /&gt;
====Language Support====&lt;br /&gt;
==Conclusion==&lt;br /&gt;
==References==&lt;br /&gt;
# [http://www.openoffice.org OpenOffice.org API]&lt;br /&gt;
# [http://www.google.com Google Docs]&lt;br /&gt;
# [http://www.microsoft.com Microsoft Word]&lt;/div&gt;</summary>
		<author><name>Jsberry</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch7_S36_JB&amp;diff=43312</id>
		<title>CSC/ECE 517 Fall 2010/ch7 S36 JB</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch7_S36_JB&amp;diff=43312"/>
		<updated>2010-12-02T05:41:01Z</updated>

		<summary type="html">&lt;p&gt;Jsberry: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=O-O packages for implementing office suite APIs=&lt;br /&gt;
==Introduction==&lt;br /&gt;
Office suite software has been around now for many years.  The first was Microsoft Office, released in 1989, which included a word processor, a spreadsheet, and a presentation program.  These were separate programs which were integrated together into a single package.  For many years, Microsoft has remained the dominant player in the game, but not the only one.  Others have come (and sometimes gone) that have had their own popularity.  Although all of them have tried to provide every function they thought their users might need and/or want, none of them are perfect.&lt;br /&gt;
Many users have identified shortcomings or wished for special features that are not available in their favorite office suites.  Some of the suite providers have recognized this and now offer Application Interfaces (APIs) that allow people to access core functions of their software from outside of the program, using separate scripts or programs.  This chapter is a review of the APIs available in various suites and some of the packages that are available to different Object Oriented (OO) languages for implementing this API.&lt;br /&gt;
&lt;br /&gt;
==The Office Suites==&lt;br /&gt;
There are many different office suites.  Below we review a few of the more popular ones that can be easily found today.&lt;br /&gt;
===OpenOffice===&lt;br /&gt;
[http://www.openoffice.org OpenOffice] is a free office suite provided as [http://en.wikipedia.org/wiki/Open_source_software Open-source Software] (OSS) by [http://www.oracle.com Oracle] (previously by [http://www.sun.com Sun Microsystems] and before that by Star Division as Star Office).  It is available for many different operating systems on many different platforms.&lt;br /&gt;
====API====&lt;br /&gt;
Through the [http://wiki.services.openoffice.org/wiki/Documentation/BASIC_Guide/API_Intro OpenOffice API], a user has access to manipulate files created by OpenOffice using the language of their choice.  OpenOffice uses the [http://udk.openoffice.org/common/man/uno.html Universal Network Objects] (UNO) interface for this.&lt;br /&gt;
====Language Support====&lt;br /&gt;
===Google Docs===&lt;br /&gt;
[http://www.google.com Google Docs] is also a free office suite.  It follows the recent trend of transferring more executables online, making them easily available from anywhere with an Internet connection.&lt;br /&gt;
====API====&lt;br /&gt;
The API for Google Docs, like for OpenOffice, is well thought out and supported.  It allows for external modification and control of the suite software by programs written in various languages.&lt;br /&gt;
====Language Support====&lt;br /&gt;
===Microsoft Word===&lt;br /&gt;
[http://www.microsoft.com Microsoft] has long had a reputation for being closed and anti-competitive and entered the API game very late.  It is now trying to catch up with the big boys.&lt;br /&gt;
====API====&lt;br /&gt;
Microsoft's API stinks!&lt;br /&gt;
====Language Support====&lt;br /&gt;
==Conclusion==&lt;br /&gt;
==References==&lt;br /&gt;
# [http://www.openoffice.org OpenOffice.org API]&lt;br /&gt;
# [http://www.google.com Google Docs]&lt;br /&gt;
# [http://www.microsoft.com Microsoft Word]&lt;/div&gt;</summary>
		<author><name>Jsberry</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch7_S36_JB&amp;diff=43307</id>
		<title>CSC/ECE 517 Fall 2010/ch7 S36 JB</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch7_S36_JB&amp;diff=43307"/>
		<updated>2010-12-02T05:25:34Z</updated>

		<summary type="html">&lt;p&gt;Jsberry: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=O-O packages for implementing office suite APIs=&lt;br /&gt;
==Introduction==&lt;br /&gt;
Office suite software has been around now for many years.  The first was Microsoft Office, released in 1989, which included a word processor, a spreadsheet, and a presentation program.  These were separate programs which were integrated together into a single package.  For many years, Microsoft has remained the dominant player in the game, but not the only one.  Others have come (and sometimes gone) that have had their own popularity.  Although all of them have tried to provide every function they thought their users might need and/or want, none of them are perfect.&lt;br /&gt;
Many users have identified shortcomings or wished for special features that are not available in their favorite office suites.  Some of the suite providers have recognized this and now offer Application Interfaces (APIs) that allow people to access core functions of their software from outside of the program, using separate scripts or programs.  This chapter is a review of the APIs available in various suites and some of the packages that are available to different Object Oriented (OO) languages for implementing this API.&lt;br /&gt;
&lt;br /&gt;
==The Office Suites==&lt;br /&gt;
There are many different office suites.  Below we review a few of the more popular ones that can be easily found today.&lt;br /&gt;
===OpenOffice===&lt;br /&gt;
[http://www.openoffice.org OpenOffice 1] is a free office suite provided as [http://en.wikipedia.org/wiki/Open_source_software Open-source Software] (OSS) by [http://www.oracle.com Oracle] (previously by [http://www.sun.com Sun Microsystems] and before that by Star Division as Star Office).  It is available for many different operating systems on many different platforms.&lt;br /&gt;
====API====&lt;br /&gt;
The API for OpenOffice allows for external programs in various programming languages to provide support for functions not available in the suite.  This API is well defined and supported by the OpenOffice.org project.&lt;br /&gt;
===Google Docs===&lt;br /&gt;
[http://www.google.com Google Docs 2] is also a free office suite.  It follows the recent trend of transferring more executables online, making them easily available from anywhere with an Internet connection.&lt;br /&gt;
====API====&lt;br /&gt;
The API for Google Docs, like for OpenOffice, is well thought out and supported.  It allows for external modification and control of the suite software by programs written in various languages.&lt;br /&gt;
===Microsoft Word===&lt;br /&gt;
[http://www.microsoft.com Microsoft 3] has long had a reputation for being closed and anti-competitive and entered the API game very late.  It is now trying to catch up with the big boys.&lt;br /&gt;
====API====&lt;br /&gt;
Microsoft's API stinks!&lt;br /&gt;
==Conclusion==&lt;br /&gt;
==References==&lt;br /&gt;
# [http://www.openoffice.org OpenOffice.org API]&lt;br /&gt;
# [http://www.google.com Google Docs]&lt;br /&gt;
# [http://www.microsoft.com Microsoft Word]&lt;/div&gt;</summary>
		<author><name>Jsberry</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch7_7b_JB&amp;diff=43302</id>
		<title>CSC/ECE 517 Fall 2010/ch7 7b JB</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch7_7b_JB&amp;diff=43302"/>
		<updated>2010-12-02T04:55:52Z</updated>

		<summary type="html">&lt;p&gt;Jsberry: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Information Expert Pattern=&lt;/div&gt;</summary>
		<author><name>Jsberry</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch7_S36_JB&amp;diff=43299</id>
		<title>CSC/ECE 517 Fall 2010/ch7 S36 JB</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch7_S36_JB&amp;diff=43299"/>
		<updated>2010-12-02T04:53:33Z</updated>

		<summary type="html">&lt;p&gt;Jsberry: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=O-O packages for implementing office suite APIs=&lt;br /&gt;
==Introduction==&lt;br /&gt;
Office suite software has been around now for many years.  The first was Microsoft Office, released in 1989, which included a word processor, a spreadsheet, and a presentation program.  These were separate programs which were integrated together into a single package.  For many years, Microsoft has remained the dominant player in the game, but not the only one.  Others have come (and sometimes gone) that have had their own popularity.  Although all of them have tried to provide every function they thought their users might need and/or want, none of them are perfect.&lt;br /&gt;
Many users have identified shortcomings or wished for special features that are not available in their favorite office suites.  Some of the suite providers have recognized this and now offer Application Interfaces (APIs) that allow people to access core functions of their software from outside of the program, using separate scripts or programs.  This chapter is a review of the APIs available in various suites and some of the packages that are available to different Object Oriented (OO) languages for implementing this API.&lt;br /&gt;
&lt;br /&gt;
==Office Suites==&lt;br /&gt;
===OpenOffice===&lt;br /&gt;
[http://www.openoffice.org OpenOffice 1] is a free office suite based on Star Office.&lt;br /&gt;
===Google Docs===&lt;br /&gt;
[http://www.google.com Google Docs 2] is also a free office suite.  It follows the recent trend of transferring more executables online, making them easily available from anywhere with an Internet connection.&lt;br /&gt;
===Microsoft Word===&lt;br /&gt;
[http://www.microsoft.com Microsoft 3] has long had a reputation for being closed and anti-competitive and entered the API game very late.  It is now trying to catch up with the big boys.&lt;br /&gt;
==Conclusion==&lt;br /&gt;
==References==&lt;br /&gt;
# [http://www.openoffice.org OpenOffice.org API]&lt;br /&gt;
# [http://www.google.com Google Docs]&lt;br /&gt;
# [http://www.microsoft.com Microsoft Word]&lt;/div&gt;</summary>
		<author><name>Jsberry</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch7_S36_JB&amp;diff=43266</id>
		<title>CSC/ECE 517 Fall 2010/ch7 S36 JB</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch7_S36_JB&amp;diff=43266"/>
		<updated>2010-12-02T04:10:44Z</updated>

		<summary type="html">&lt;p&gt;Jsberry: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=O-O packages for implementing office suite APIs=&lt;br /&gt;
==Introduction==&lt;br /&gt;
==Office Suites==&lt;br /&gt;
===OpenOffice===&lt;br /&gt;
[http://www.openoffice.org OpenOffice 1] is a free office suite based on Star Office.&lt;br /&gt;
===Google Docs===&lt;br /&gt;
[http://www.google.com Google Docs 2] is also a free office suite.  It follows the recent trend of transferring more executables online, making them easily available from anywhere with an Internet connection.&lt;br /&gt;
===Microsoft Word===&lt;br /&gt;
[http://www.microsoft.com Microsoft 3] has long had a reputation for being closed and anti-competitive and entered the API game very late.  It is now trying to catch up with the big boys.&lt;br /&gt;
==Conclusion==&lt;br /&gt;
==References==&lt;br /&gt;
# [http://www.openoffice.org OpenOffice.org API]&lt;br /&gt;
# [http://www.google.com Google Docs]&lt;br /&gt;
# [http://www.microsoft.com Microsoft Word]&lt;/div&gt;</summary>
		<author><name>Jsberry</name></author>
	</entry>
</feed>