From vnkt6318@cs.uh.edu  Fri Jan 27 04:20:35 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 89784F985; Fri, 27 Jan 2006 04:20:35 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id EF14EF97C; Fri, 27 Jan 2006 04:20:28 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id FLT71847
        for <uhcosc6318@list.prudentlearning.com>; Fri, 27 Jan 2006 02:18:47 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id A6777F97C
	for <uhcosc6318@list.prudentlearning.com>; Fri, 27 Jan 2006 04:18:57 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k0RAIvN21570
	for uhcosc6318@list.prudentlearning.com; Fri, 27 Jan 2006 04:18:57 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200601271018.k0RAIvN21570@leibnitz.cs.uh.edu>
Subject: UML books (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Fri, 27 Jan 2006 04:18:57 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Dr Venkat:

Hi

No need to address as Dr. Please feel free to address as Venkat.

>  I am a student of the OOAD course. Could you please suggest some books 
>or links which would help me learn about UML diagrams as well as useful 
>web resources for C#.
>   
>  Thank You

Books for UML: I suggest UML Distilled by Martin Fowler.
URLs for UML:

http://www-106.ibm.com/developerworks/rational/library/content/RationalEdge/nov03/t_modelinguml_db.pdf
http://www.omg.org/docs/formal/03-03-10.pdf
http://www.omg.org/technology/documents/formal/uml_2.htm
http://www-106.ibm.com/developerworks/rational/library/769.html
http://www3.software.ibm.com/ibmdl/pub/software/rational/web/whitepapers/2003/intro_rdn.pdf
http://www-306.ibm.com/software/rational/uml/resources/uml2/index.html
http://www-306.ibm.com/software/rational/uml/index.html

Web resources for C#: 
This is a hard one as you are dealing with entire language.
I can suggest MSDN, but that is more of a documentation.
I have not looked for a online book. If someone knows (legal and free)
online books or resources that teach C#, please let me know.

Regards,

Venkat

From vnkt6318@cs.uh.edu  Fri Jan 27 04:39:54 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id BFC88F97C; Fri, 27 Jan 2006 04:39:53 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 420F4F991; Fri, 27 Jan 2006 04:39:42 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id FLN45357
        for <uhcosc6318@list.prudentlearning.com>; Fri, 27 Jan 2006 02:38:57 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 70B83F97C
	for <uhcosc6318@list.prudentlearning.com>; Fri, 27 Jan 2006 04:39:07 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k0RAd7q21623
	for uhcosc6318@list.prudentlearning.com; Fri, 27 Jan 2006 04:39:07 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200601271039.k0RAd7q21623@leibnitz.cs.uh.edu>
Subject: questions (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Fri, 27 Jan 2006 04:39:07 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Hi Dr. Subramaniam

Hi

Please address me as Venkat, no need for formalities.

>This is ...name delete.... On the last lecture you
>told us you can give links to articles on why "get"
>and "set" methods are not that good and why
>"inheritance" is not good also. 
>Can you, please, send that to me. On google I can find
>only some little expressions about it.

"Why getter and setter methods are evil - Make your code more 
maintainable by avoiding accessors" by By Allen Holub
http://www.javaworld.com/javaworld/jw-09-2003/jw-0905-toolbox.html

"Why extends is evil - Improve your code by replacing concrete base 
classes with interfaces," by Allen Holub
http://www.javaworld.com/javaworld/jw-08-2003/jw-0801-toolbox.html

"Composition versus Inheritance - A Comparative Look at Two Fundamental 
Ways to Relate Classes" by Bill Venners
http://www.artima.com/designtechniques/compoinh.html

"Some Object Oriented Design Principles" by Bob Tarr
Refer to Coad Rule on Page 22.
http://www.research.umbc.edu/~tarr/dp/lectures/OOPrinciples-2pp.pdf

"Interface Based Programming!" by Venkat Subramaniam
http://www.agiledeveloper.com/articles/ibp082002.pdf

>Thank you very much.
>Have a good day,

I promise to try my best :)

Regards,

Venkat

From vnkt6318@cs.uh.edu  Fri Jan 27 04:45:08 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 2DF52F985; Fri, 27 Jan 2006 04:45:08 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 02886F97C; Fri, 27 Jan 2006 04:45:04 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id FLT35914
        for <uhcosc6318@list.prudentlearning.com>; Fri, 27 Jan 2006 02:44:14 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 6526CF983
	for <uhcosc6318@list.prudentlearning.com>; Fri, 27 Jan 2006 04:44:24 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k0RAiOs21681
	for uhcosc6318@list.prudentlearning.com; Fri, 27 Jan 2006 04:44:24 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200601271044.k0RAiOs21681@leibnitz.cs.uh.edu>
Subject: Greetings
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Fri, 27 Jan 2006 04:44:24 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: RO

Hi

Welcome to the COSC 6318 mailing list.

We will use this email to ask questions, answer questions, discuss,
disagree!, ponder,...

This list is only as useful as you make it. So, do not hesitate, 
send email, discuss, exchange ideas, and learn.

To send email to the list, email to vnkt6318@cs.uh.edu. I will add comments,
remove your name (unless you ask specifically to publish your name),
and forward it to the class.

Regards,

Venkat

From vnkt6318@cs.uh.edu  Fri Jan 27 08:12:59 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id CAF71F988; Fri, 27 Jan 2006 08:12:58 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 901C0F97C; Fri, 27 Jan 2006 08:12:50 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id FPN10901
        for <uhcosc6318@list.prudentlearning.com>; Fri, 27 Jan 2006 06:12:01 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id D2E59F97C
	for <uhcosc6318@list.prudentlearning.com>; Fri, 27 Jan 2006 08:12:10 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k0RECAj22158
	for uhcosc6318@list.prudentlearning.com; Fri, 27 Jan 2006 08:12:10 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200601271412.k0RECAj22158@leibnitz.cs.uh.edu>
Subject: Re: UML books (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Fri, 27 Jan 2006 08:12:10 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: RO

>Hi Venkat,

Thanks for this information. This is of great help.

Folks, please make good use of this. If you have not used it,
give it a try and write me a comment about how you find it.

Regards,

Venkat

>U of H has something called skillport elearning which has online books for
>most of the programming languages and courses.
>
>here goes the link
>http://www.uh.edu/ittraining/elearning
>
>the instructions for accessing this site are clearly given in the site
>itself.
>
>hope this information was useful !
>
>
>On 1/27/06, vnkt6318@cs.uh.edu <vnkt6318@cs.uh.edu> wrote:
>
> >Dr Venkat:
>
> Hi
>
> No need to address as Dr. Please feel free to address as Venkat.
>
> >  I am a student of the OOAD course. Could you please suggest some books
> >or links which would help me learn about UML diagrams as well as useful
> >web resources for C#.
> >
> >  Thank You
>
> Books for UML: I suggest UML Distilled by Martin Fowler.
> URLs for UML:
>
>
> http://www-106.ibm.com/developerworks/rational/library/content/RationalEd=
ge/nov03/t_modelinguml_db.pdf
> http://www.omg.org/docs/formal/03-03-10.pdf
> http://www.omg.org/technology/documents/formal/uml_2.htm
> http://www-106.ibm.com/developerworks/rational/library/769.html
>
> http://www3.software.ibm.com/ibmdl/pub/software/rational/web/whitepapers/=
2003/intro_rdn.pdf
> http://www-306.ibm.com/software/rational/uml/resources/uml2/index.html
> http://www-306.ibm.com/software/rational/uml/index.html
>
> Web resources for C#:
> This is a hard one as you are dealing with entire language.
> I can suggest MSDN, but that is more of a documentation.
> I have not looked for a online book. If someone knows (legal and free)
> online books or resources that teach C#, please let me know.
>
> Regards,
>
> Venkat

From vnkt6318@cs.uh.edu  Sun Jan 29 06:39:23 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 0811FF994; Sun, 29 Jan 2006 06:39:23 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id CAA3AF991; Sun, 29 Jan 2006 06:39:18 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id HNN60944
        for <uhcosc6318@list.prudentlearning.com>; Sun, 29 Jan 2006 04:36:44 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 5F45FF991
	for <uhcosc6318@list.prudentlearning.com>; Sun, 29 Jan 2006 06:36:55 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k0TCatK28011
	for uhcosc6318@list.prudentlearning.com; Sun, 29 Jan 2006 06:36:55 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200601291236.k0TCatK28011@leibnitz.cs.uh.edu>
Subject: DVDs from class
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Sun, 29 Jan 2006 06:36:55 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

Greetings,

Here is a message from Phil, manager of the ITV studio:

>The DVDs of the class are placed in the reserves/Reference area of the
>library. It is located on the first floor to the right of the main
>entrance.

If you have any questions, please let me know.

Regards,

Venkat

From vnkt6318@cs.uh.edu  Sun Jan 29 06:39:34 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 074FDF994; Sun, 29 Jan 2006 06:39:34 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id C675CF991; Sun, 29 Jan 2006 06:39:29 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id HNO76538
        for <uhcosc6318@list.prudentlearning.com>; Sun, 29 Jan 2006 04:37:38 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id E6991F991
	for <uhcosc6318@list.prudentlearning.com>; Sun, 29 Jan 2006 06:37:49 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k0TCbnq28019
	for uhcosc6318@list.prudentlearning.com; Sun, 29 Jan 2006 06:37:49 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200601291237.k0TCbnq28019@leibnitz.cs.uh.edu>
Subject: skillport elearning (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Sun, 29 Jan 2006 06:37:49 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Regarding this "skillport elearning," do we have to be registered somewhere?
>I try to log in as it says, and I get this error:  "Error: Your username has
>been deactivated, contact your training administrator."
>
>I have no idea who my "training administrator" is.   Should I be addressing
>this to the IT support?
>
>Thanks,

Any one who has tried and has an answer? 

Thanks

Venkat

From vnkt6318@cs.uh.edu  Sun Jan 29 06:51:45 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 18BB1F993; Sun, 29 Jan 2006 06:51:45 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 69B9BF979; Sun, 29 Jan 2006 06:51:40 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id HNB71846
        for <uhcosc6318@list.prudentlearning.com>; Sun, 29 Jan 2006 04:50:46 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id A367AF979
	for <uhcosc6318@list.prudentlearning.com>; Sun, 29 Jan 2006 06:50:57 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k0TCovu28079
	for uhcosc6318@list.prudentlearning.com; Sun, 29 Jan 2006 06:50:57 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200601291250.k0TCovu28079@leibnitz.cs.uh.edu>
Subject: Re: how to manage big methods
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Sun, 29 Jan 2006 06:50:57 -0600 (CST)
In-Reply-To: <482532475.1138474004860.JavaMail.root@localhost> from "Sravan.Vadakattu@mail.uh.edu" at Jan 28, 2006 12:46:44 PM
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>hello Mr.venkat,

Hi 

No need to call me Mr., Dr., Sir, etc. No need for such obfuscation. Keep it
simple and call me Venkat.

>In wednesday's class we discussed that it always better to write methods 
>which are not too big.

Actually, big methods (too big means it is ok to be big).

>In case of .NET if the project demands that on the click of a button some 
>data should be written to four different tables in a database and also some 
>other action like moving of files must take place. i want to know what is 
>the efficient way of writing such a method so that it is easy to maintain 
>it in the future.
>
>thank you,

The first rule of thumb, let the UI not do any actual work.
Let it simply pass the control to a business logic class and 
let that deal with the actual work. It then takes the response and
displays it.

Second, rather than thinking about updating tables and moving files,
ask, logically, what the action is supposed to be. If you an break
that into logical sequence of meaningful tasks, then the business logic
can be taken care in one or more classes. The actual update of database
and moving file can the be taken care by lower level classes and methods.

Further, anytime you write a method, name the method so that it conveys
what that method does. Then ask if that does one thing or one too many
things. If it does one thing that is good. If it does more than one thing,
then it is time to break it into smaller methods each doing one thing.

Here is an example:

When a user clicks a button, update row 1 of deposits table, update row
2 of withdrawal table, update row 200 of customer table, update row 323 of
customer table.

The above did not really say what my intent is. My intent is to transfer
money from one account to another.

I can bring this down to (psudocode not showing error checking):

public void transferButton_Click(...)
{
	AccountTransactionsControl.Transfer(details...);
}

...In AccountTransactionsControl class...
public void Transfer(...)
{
	BeginTransaction();
	DepositMoney();
	WithdrawMoney();
	EndTransaction();
}

Each of these methods further will focus on what they need to do at the
database level.

Hope this helps.

Venkat

From vnkt6318@cs.uh.edu  Sun Jan 29 08:52:50 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id F3A97F993; Sun, 29 Jan 2006 08:52:49 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 6A8B8F991; Sun, 29 Jan 2006 08:52:44 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id HPD34304
        for <uhcosc6318@list.prudentlearning.com>; Sun, 29 Jan 2006 06:52:04 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 1909FF979
	for <uhcosc6318@list.prudentlearning.com>; Sun, 29 Jan 2006 08:52:15 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k0TEqE428322
	for uhcosc6318@list.prudentlearning.com; Sun, 29 Jan 2006 08:52:14 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200601291452.k0TEqE428322@leibnitz.cs.uh.edu>
Subject: Re: DVDs from class
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Sun, 29 Jan 2006 08:52:14 -0600 (CST)
In-Reply-To: <BAY102-DAV1B657AF913685C9988576B6160@phx.gbl> from "Ulvi" at Jan 29, 2006 08:39:41 AM
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Hi Venkat,
>
>ITV manager, Mr Phil mentioned first day of class that beside DVDs, the 
>class videos will be available online.
>Is there any URL for that?

Yes there is! Here is the information I got. I have not visited this
or tried to view it. If you have questions, let me know and I will
forward it to the staff and get you an answer.

--forwarded message...
Hello,

here are the streaming video links for your course.
we will continue to send the links upon completion of each lecture.

http://mediaweb.tss.uh.edu/academic/vsubra/cosc6318/cosc6318_vsubra_01_20060118_lan.qtl
http://mediaweb.tss.uh.edu/academic/vsubra/cosc6318/cosc6318_vsubra_02_20060123_lan.qtl 
http://mediaweb.tss.uh.edu/academic/vsubra/cosc6318/cosc6318_vsubra_03_20060125_lan.qtl
--end forwarded message...

Regards,

Venkat

>Thanks.
>----- Original Message ----- 
>From: <vnkt6318@cs.uh.edu>
>To: "COSC 6318 Mailing List" <uhcosc6318@list.prudentlearning.com>
>Sent: Sunday, January 29, 2006 6:36 AM
>Subject: DVDs from class
>
>
>> Greetings,
>>
>> Here is a message from Phil, manager of the ITV studio:
>>
>>>The DVDs of the class are placed in the reserves/Reference area of the
>>>library. It is located on the first floor to the right of the main
>>>entrance.
>>
>> If you have any questions, please let me know.
>>
>> Regards,
>>
>> Venkat
>> 

From vnkt6318@cs.uh.edu  Sun Jan 29 16:33:45 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id BA993F980; Sun, 29 Jan 2006 16:33:44 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 8A981F96E; Sun, 29 Jan 2006 16:33:38 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id HXJ12552
        for <uhcosc6318@list.prudentlearning.com>; Sun, 29 Jan 2006 14:32:52 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 23290F96E
	for <uhcosc6318@list.prudentlearning.com>; Sun, 29 Jan 2006 16:31:52 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k0TMVpf28896
	for uhcosc6318@list.prudentlearning.com; Sun, 29 Jan 2006 16:31:51 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200601292231.k0TMVpf28896@leibnitz.cs.uh.edu>
Subject: VSS vs Subversion (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Sun, 29 Jan 2006 16:31:51 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Hi,
>
>   In the last class, you seemed very pro-subversion & anti-VSS.
>
>My personal experience with Subversion wasn't so great. In my previous
>company, we decided to give Subversion a trial. It happened a number of
>times that I'd check in code & another guy with an older version of the
>class would check in his file & my changes would just disappear (I don't
>know how this happened, I expected subversion to merge the changes).
>Also, I found VSS to be much more user-friendly (intuitive) - with
>subversion, one almost needs a training session to use it.
>We also followed a practice of daily builds & my TL found VSS useful becaus=
>e
>it enabled him to keep track of who was making changes to which class.
>Ultimately, after around 3 months of using subversion, it was a unanimous
>decision to switch back to VSS. I personally didn't like subversion much.
>
>I would like to know the reasons for your preference of subversion.
>
>Thanks very much,

My experience is totally opposite. VSS is well know in the industry as
probably the worst version control system. I am sure if you talk to 
folks at Microsoft, they would admit it :) [I am glad to see a better
version control system in Visual Studio Team System]. On large scale 
applications, I have seen several times when VSS has either lost files 
or we had to deal with corruption. Note that I have used VSS for several
years, but used svn for much shorter time relatively speaking. I have used 
subversion (svn) fairly extensively for over 14 months now and I am very 
happy with it. In fact, I used it very extensively during my month long 
trip to India and I was able to access it from the other side of the world 
without realizing that I was at a distance. Merging files is always a pain 
and you need to be careful with it, no matter which version control you use. 
There are minor headaches you have to go through, no matter what you use.  
For instance, I don't like the fact that you have to add a file and then
check it in when using svn. However, I have gotten used to it now.
On windows, I mostly use TortoiseSVN which is pretty friendly and
easier to use than VSS was.

Have you used TortoiseSVN or did you use svn directly?

What about the experience of others in the class?

Venkat

From vnkt6318@cs.uh.edu  Mon Jan 30 04:11:19 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 8369DF995; Mon, 30 Jan 2006 04:11:18 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 4E9A7F98A; Mon, 30 Jan 2006 04:11:14 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id ILO85941
        for <uhcosc6318@list.prudentlearning.com>; Mon, 30 Jan 2006 02:10:41 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id C3F47F98A
	for <uhcosc6318@list.prudentlearning.com>; Mon, 30 Jan 2006 04:10:52 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k0UAAq229971
	for uhcosc6318@list.prudentlearning.com; Mon, 30 Jan 2006 04:10:52 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200601301010.k0UAAq229971@leibnitz.cs.uh.edu>
Subject: Re: Problem with streaming video
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Mon, 30 Jan 2006 04:10:52 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: RO

>Venkat
>I'm trying to watch the streaming video for the 3rd lecture but it aint
>working, I don't know why ?
>There is nothing wrong with the 1st and the 2nd its only the 3rd lecture.
>Thanks.

Anyone else having trouble with this? I will let you know what I find.

Venkat

From vnkt6318@cs.uh.edu  Tue Jan 31 04:03:00 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 06E33F981; Tue, 31 Jan 2006 04:03:00 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id C207CF97C; Tue, 31 Jan 2006 04:02:54 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id JLH70322
        for <uhcosc6318@list.prudentlearning.com>; Tue, 31 Jan 2006 02:02:22 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 44DB1F97C
	for <uhcosc6318@list.prudentlearning.com>; Tue, 31 Jan 2006 04:02:32 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k0VA2Wp02758
	for uhcosc6318@list.prudentlearning.com; Tue, 31 Jan 2006 04:02:32 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200601311002.k0VA2Wp02758@leibnitz.cs.uh.edu>
Subject: RE: skillport elearning (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Tue, 31 Jan 2006 04:02:32 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>You just have to use your cougarnet userID as your username and your 
>Birthdate as your pasword. Format for your birthdate is MM/DD/YYYY.
>

Thanks.

>
>>From: <vnkt6318@cs.uh.edu>
>>To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
>>Subject: skillport elearning (fwd)
>>Date: Sun, 29 Jan 2006 06:37:49 -0600 (CST)
>>
>> >Regarding this "skillport elearning," do we have to be registered 
>>somewhere?
>> >I try to log in as it says, and I get this error:  "Error: Your username 
>>has
>> >been deactivated, contact your training administrator."
>> >
>> >I have no idea who my "training administrator" is.   Should I be 
>>addressing
>> >this to the IT support?
>> >
>> >Thanks,
>>
>>Any one who has tried and has an answer?
>>
>>Thanks
>>
>>Venkat

From vnkt6318@cs.uh.edu  Tue Jan 31 04:05:04 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 96517F980; Tue, 31 Jan 2006 04:05:03 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 7C868F97C; Tue, 31 Jan 2006 04:04:57 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id JLJ82822
        for <uhcosc6318@list.prudentlearning.com>; Tue, 31 Jan 2006 02:04:22 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id D0032F97D
	for <uhcosc6318@list.prudentlearning.com>; Tue, 31 Jan 2006 04:04:34 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k0VA4Yb02782
	for uhcosc6318@list.prudentlearning.com; Tue, 31 Jan 2006 04:04:34 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200601311004.k0VA4Yb02782@leibnitz.cs.uh.edu>
Subject: Re: Problem with streaming video (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Tue, 31 Jan 2006 04:04:34 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>>Venkat
>>I'm trying to watch the streaming video for the 3rd lecture but it aint
>>working, I don't know why ?
>>There is nothing wrong with the 1st and the 2nd its only the 3rd lecture.
>>Thanks.
>
>Anyone else having trouble with this? I will let you know what I find.
>
>Venkat

I have placed a link to the video from the course web site
http://www.cs.uh.edu/~svenkat/spring2006OOAD
Click on the link "Streaming Videos."

I was able to view all three lectures. If you have trouble with any of
the lectures, let me know the specfic error or problom you are having.

Regards,

Venkat

From vnkt6318@cs.uh.edu  Tue Jan 31 11:16:53 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 5BA70F987; Tue, 31 Jan 2006 11:16:53 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id B6471F984; Tue, 31 Jan 2006 11:16:46 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id JSU34306
        for <uhcosc6318@list.prudentlearning.com>; Tue, 31 Jan 2006 09:15:06 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id CCDC4F98A
	for <uhcosc6318@list.prudentlearning.com>; Tue, 31 Jan 2006 11:15:17 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k0VHFHK03735
	for uhcosc6318@list.prudentlearning.com; Tue, 31 Jan 2006 11:15:17 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200601311715.k0VHFHK03735@leibnitz.cs.uh.edu>
Subject: RE: skillport elearning (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Tue, 31 Jan 2006 11:15:17 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Unfortunately, I've tried that format along with MMDDYYYY and I get the same
>response.  I went the 2nd day of classes to get an account, so I should be
>good on that front.  I guess I should talk to tech support?
>
>Thanks for your help.

I think it is better to contact support regarding this. This will
be the last email on this topic. We need to keep this mailing group
as technical discussions oriented as possible.

Thanks

Venkat

>-----Original Message-----
>From: vnkt6318@cs.uh.edu [mailto:vnkt6318@cs.uh.edu]
>Sent: Tuesday, January 31, 2006 4:03 AM
>To: COSC 6318 Mailing List
>Subject: RE: skillport elearning (fwd)
>
>
>>You just have to use your cougarnet userID as your username and your
>>Birthdate as your pasword. Format for your birthdate is MM/DD/YYYY.
>>

From vnkt6318@cs.uh.edu  Sat Feb  4 07:50:08 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 730B7F98D; Sat,  4 Feb 2006 07:50:08 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 37AEAF97A; Sat,  4 Feb 2006 07:50:00 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id IPB48412
        for <uhcosc6318@list.prudentlearning.com>; Sat, 4 Feb 2006 05:49:12 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 4337AF97A
	for <uhcosc6318@list.prudentlearning.com>; Sat,  4 Feb 2006 07:49:27 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k14DnRN23780
	for uhcosc6318@list.prudentlearning.com; Sat, 4 Feb 2006 07:49:27 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200602041349.k14DnRN23780@leibnitz.cs.uh.edu>
Subject: HW1 posted
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Sat, 4 Feb 2006 07:49:27 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

Greetings,

I have posted HW1.

Please visit http://www2.cs.uh.edu/~svenkat/spring2006OOAD/
and click on the link "HWs/Assigns." to find out more.

Happy learning.

Venkat

From vnkt6318@cs.uh.edu  Sun Feb  5 06:36:06 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 743E6F979; Sun,  5 Feb 2006 06:36:06 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 19162F97A; Sun,  5 Feb 2006 06:35:58 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id JOM26513
        for <uhcosc6318@list.prudentlearning.com>; Sun, 5 Feb 2006 04:33:13 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 32B32F97A
	for <uhcosc6318@list.prudentlearning.com>; Sun,  5 Feb 2006 06:32:18 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k15CWIo25398
	for uhcosc6318@list.prudentlearning.com; Sun, 5 Feb 2006 06:32:18 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200602051232.k15CWIo25398@leibnitz.cs.uh.edu>
Subject: Links for UML (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Sun, 5 Feb 2006 06:32:17 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Hi Venkat,
>
>Is there any specific link/links that would could
>suggest to read more about UML?
>
>Thanks and Regards,

Hi

I have some information in the mailing list.

You can take a look at mails sent to the mailing list so far 
by clicking on the "Mails to the class" link in the course web site
http://www.cs.uh.edu/~svenkat/spring2006SE

In that page, find UML to get the information you are looking for.

Regards,

Venkat

From vnkt6318@cs.uh.edu  Sun Feb  5 10:09:12 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id DFA9FF97A; Sun,  5 Feb 2006 10:09:11 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 8E97BF96E; Sun,  5 Feb 2006 10:09:07 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id JSM64049
        for <uhcosc6318@list.prudentlearning.com>; Sun, 5 Feb 2006 08:07:49 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id EE159F96E
	for <uhcosc6318@list.prudentlearning.com>; Sun,  5 Feb 2006 10:08:04 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k15G84G26003
	for uhcosc6318@list.prudentlearning.com; Sun, 5 Feb 2006 10:08:04 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200602051608.k15G84G26003@leibnitz.cs.uh.edu>
Subject: Re: Questions about UML class diagram
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Sun, 5 Feb 2006 10:08:04 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Hi Venkat,
>
>Regarding the UML class diagram:
>
>1. are two arrows and no arrows bi-direction associations equivalent?

Hi

No they are not. One line with no arrow represents one relationship
with bi-directional navigation. Two arrows represent two relationships
each with unidirectional navigation.

>2. what is the difference between dependency and association?

If an object utilizes the service of another object, you say it
is associated. If, however, the relationship is weaker, you can
say that there is dependency. For instance, I may create an exception
and throw it. I may say that my class depends on the exception class
it throws.

>3. how to input interface implementation relationship in Visio? I can see
>only extends.
>
>Thank you!

The same notation can be used for both extends and implements.

Venkat

From vnkt6318@cs.uh.edu  Sun Feb  5 11:49:43 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id E49BEF97E; Sun,  5 Feb 2006 11:49:42 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id A2225F979; Sun,  5 Feb 2006 11:49:38 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id JTB93725
        for <uhcosc6318@list.prudentlearning.com>; Sun, 5 Feb 2006 09:48:25 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id F35EFF97C
	for <uhcosc6318@list.prudentlearning.com>; Sun,  5 Feb 2006 11:48:40 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k15HmeV26149
	for uhcosc6318@list.prudentlearning.com; Sun, 5 Feb 2006 11:48:40 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200602051748.k15HmeV26149@leibnitz.cs.uh.edu>
Subject: UML Homework (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Sun, 5 Feb 2006 11:48:40 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: RO

>Do we need to do this HW in Visio or Rose (or some other tool), or is
>paper/pencil good enough?

Any and all of those are your choices. It does not matter to me
if you turn in a print out or a hand drawn sketch.

Venkat

From vnkt6318@cs.uh.edu  Tue Feb  7 05:37:50 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 0AB40F97E; Tue,  7 Feb 2006 05:37:50 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id AD9BAF97A; Tue,  7 Feb 2006 05:37:44 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id LNS23405
        for <uhcosc6318@list.prudentlearning.com>; Tue, 7 Feb 2006 03:37:05 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 3BFA5F97A
	for <uhcosc6318@list.prudentlearning.com>; Tue,  7 Feb 2006 05:37:21 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k17BbLV00547
	for uhcosc6318@list.prudentlearning.com; Tue, 7 Feb 2006 05:37:21 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200602071137.k17BbLV00547@leibnitz.cs.uh.edu>
Subject: doubt (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Tue, 7 Feb 2006 05:37:20 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>venkat,
>what is the difference between an activity diagram and a sequence diagram?
>
>from what i understood from the books i read...i think an activity diagram is 
>low level and sequence diaram is a high level diagram(technically).
>is it true???
>
>Regards,

I think Martin Fowler sums this up well in "UML Distilled":

"You should use interaction diagrams when you waant to look at the
behavior of several objects within a single use case. Interaction 
diagrams are good at showing collaborations among the objects; they
are not so good at precise definition of the behavior.

"If you want to look at the behavior of a single object across many use
cases, use a state diagram. If you want to look at behavior across
many use cases or many threads, consider an activity diagram."

The above is from UML Distilled.

An activity diagram is useful to understand parallelism or concurrency.
In one form (when there is only sequential flow) it may look like a flow chart,
but in general it is more interesting when you need to think about
parallel behavior of an object.

Interaction diagram (collaboration diagram and sequence diagram)
on the other hand generally focuses on sequential flow in one use case.

Venkat

From vnkt6318@cs.uh.edu  Tue Feb  7 06:38:31 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id A693EF97E; Tue,  7 Feb 2006 06:38:30 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 95429F97C; Tue,  7 Feb 2006 06:38:25 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id LOS23420
        for <uhcosc6318@list.prudentlearning.com>; Tue, 7 Feb 2006 04:37:20 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id A7A4AF97A
	for <uhcosc6318@list.prudentlearning.com>; Tue,  7 Feb 2006 06:37:36 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k17CbaO00828
	for uhcosc6318@list.prudentlearning.com; Tue, 7 Feb 2006 06:37:36 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200602071237.k17CbaO00828@leibnitz.cs.uh.edu>
Subject: Midterm 1
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Tue, 7 Feb 2006 06:37:36 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

Midterm 1 will be held on Feb. 22nd.
Topics for the exam will be everything we cover in class until Feb. 15th.

If you are a student registered at a remote site and want to
take the exam at the remote site, let me know that by Feb. 10th.
If you will take the exam on main campus, that is fine, but let me
know to be sure we're on the same page.

Thanks,

Venkat

From vnkt6318@cs.uh.edu  Wed Feb  8 04:53:25 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id CA5F3F987; Wed,  8 Feb 2006 04:53:24 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 7D13EF97D; Wed,  8 Feb 2006 04:53:20 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id MMI76531
        for <uhcosc6318@list.prudentlearning.com>; Wed, 8 Feb 2006 02:52:31 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id D8153F97D
	for <uhcosc6318@list.prudentlearning.com>; Wed,  8 Feb 2006 04:52:48 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k18Aqm005273
	for uhcosc6318@list.prudentlearning.com; Wed, 8 Feb 2006 04:52:48 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200602081052.k18Aqm005273@leibnitz.cs.uh.edu>
Subject: Project proposal
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Wed, 8 Feb 2006 04:52:48 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

Greetings,

Please find information here about what I expect 
from your team (only one submission from each team please).

1. Project proposal in doc, plain text, or pdf format. (email it as an 
attachment. If you would rather send me a link, the link must have
these file formats downloadable)

2. Your proposal should have 
	o a project title.
	o an optional group name
	o must have names and email address of each member of the team
	o must be 2 to five pages long
	o must not tell me how you plan to implement the project
	o must contain details of what the application will do from the user
		point of view.
	o include any additional details I have required in the syllabus page.

3. When you email your project proposal, cc each member of your team.

It is due by midnight.

Venkat

From vnkt6318@cs.uh.edu  Wed Feb  8 09:56:20 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id BF574F97D; Wed,  8 Feb 2006 09:56:19 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 51994F988; Wed,  8 Feb 2006 09:56:11 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id MRK84333
        for <uhcosc6318@list.prudentlearning.com>; Wed, 8 Feb 2006 07:54:33 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id B171AF988
	for <uhcosc6318@list.prudentlearning.com>; Wed,  8 Feb 2006 09:54:50 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k18Fsod05819
	for uhcosc6318@list.prudentlearning.com; Wed, 8 Feb 2006 09:54:50 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200602081554.k18Fsod05819@leibnitz.cs.uh.edu>
Subject: Re: Project proposal (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Wed, 8 Feb 2006 09:54:50 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Does the project proposal have to be double-spaced? It was not clear if 
>this is a report as defined in the syllabus. How accurate does the time 
>estimate need to be?

Whatever you can get in 2 to 5 pages is good. I don't really have
a preference for page size, font size, line spacing, etc.
Use your judgement.

The estimation has to be accurate to the microseconds, of course :)

Oh, just a rough estimation... it is intended more for you to think
and reflect on it later than anything else.

Venkat

From vnkt6318@cs.uh.edu  Sat Feb 11 08:40:43 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 20117F98F; Sat, 11 Feb 2006 08:40:43 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id A72CCF98C; Sat, 11 Feb 2006 08:40:34 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id PQX21821
        for <uhcosc6318@list.prudentlearning.com>; Sat, 11 Feb 2006 06:38:21 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id DAB09F981
	for <uhcosc6318@list.prudentlearning.com>; Sat, 11 Feb 2006 08:38:38 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k1BEccj14920
	for uhcosc6318@list.prudentlearning.com; Sat, 11 Feb 2006 08:38:38 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200602111438.k1BEccj14920@leibnitz.cs.uh.edu>
Subject: implements vs. realizes (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Sat, 11 Feb 2006 08:38:38 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

Good questions.

>I first noticed at agilemodeling.com (specifically at  
>http://www.agilemodeling.com/style/interface.htm) the use of a line with 
>a circle at the end to show the implementation of an interface.  Then 
>while using Dia to draw a diagram I noticed the same line with a circle, 
>where it says "implements" ... then it also has a dashed-line with the 
>open triangle at the end to show "realizes" both having to do with 
>interfaces.
>
>Is there a difference?  If so, what?

There are different notations to communicate these concepts. There
are quite some similarities between the notations and some differences 
as well.

An interface, as you know, specifies some contract but does not have
any implementation. There are two ways you can indicate that a class
implements an interface. You can use the traditional class diagram
notation and show an interface like it is a class, show a class that
implements this interface and a line that runs from the class to
the interface with a pointed open triangle towards the interface.
This will allow you to show methods of the interface as well, if you like.
A simpler notation, but quite equivalent, is to trade the class
notation for interface with a circle (some call this the lollypop notation).
The lollypop represents the interface, but you can't really show any
methods of the interface in this case.

In both the notations I've described above the line is solid.

What does it mean if you put dashed lines with pointed triangle?

This stands for realization. What does realization mean?
You understand inheritance. You may use inheritance to
implement an interface. Inheritance is one way to implement (or realize
if you will) an interface. There are other techniques that you can use
to implement an interface without using inheritance. For example, you can
use tearoff interfaces (like in COM). You can assimilate interfaces (for
instance using some AOP techniques). The realization notation says that
you are implementing an interface without using inheritance or
not being restricted to inheritance.

>Finally, is the difference between inheritance and implementing 
>interfaces only due to the fact that an interface should have no 
>implementation in itself?

When you inherit a class from another class, you are inheriting
its interface and implementation. Since you don't have any
implementation in an interface, you are inheriting only the interface.
In this case, you are forced to implement the methods of an interface.
If you inherit a class, you may or may not override the base methods.
In the case of interface, you are required to implement the interface
methods, and hence the difference in terminology.

>Also, in java does a class have to be "abstract" for another class to 
>inherit from it?  

No, you can inherit (singly) from either a class or an abstract class.

>What is the significance of abstract if not?  (I haven't much experience 
>in java)

Abstract classes are in C++ as much as Java. An abstract class provides
some common implementation, but requires that certain methods (or 
characteristics) be implemented by the derived classes. Abstract classes
can define a common contract, provide some partial implementation and
allow for (and require) derived classes to fulfil the rest.

If an abstract class does not have any implementation, then it becomes an
interface. 

Keep those good questions coming. 

Venkat

From vnkt6318@cs.uh.edu  Sat Feb 11 08:40:57 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 514BBF98C; Sat, 11 Feb 2006 08:40:57 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id EDB49F981; Sat, 11 Feb 2006 08:40:50 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id PQZ21801
        for <uhcosc6318@list.prudentlearning.com>; Sat, 11 Feb 2006 06:40:01 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 1D048F981
	for <uhcosc6318@list.prudentlearning.com>; Sat, 11 Feb 2006 08:40:19 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k1BEeJ214938
	for uhcosc6318@list.prudentlearning.com; Sat, 11 Feb 2006 08:40:19 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200602111440.k1BEeJ214938@leibnitz.cs.uh.edu>
Subject: interfaces (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Sat, 11 Feb 2006 08:40:18 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>I reviewed the notes and didn't notice this notation, but the 
>agilemodeling.com site mentioned that an interface would have the class 
>name on one line, followed by "<<interface>>"
>
>Are they correct, or should we just leave it looking like a normal class?

It is your choise. These are variations like I discussed in the 
previous email. Use what makes the most sense for what you are tyring to
express.

Venkat

From vnkt6318@cs.uh.edu  Sat Feb 11 08:53:54 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 48259F992; Sat, 11 Feb 2006 08:53:54 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id CBA4EF98C; Sat, 11 Feb 2006 08:53:49 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id PQM50001
        for <uhcosc6318@list.prudentlearning.com>; Sat, 11 Feb 2006 06:53:01 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 5BD7FF98C
	for <uhcosc6318@list.prudentlearning.com>; Sat, 11 Feb 2006 08:53:19 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k1BErJS14971
	for uhcosc6318@list.prudentlearning.com; Sat, 11 Feb 2006 08:53:19 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200602111453.k1BErJS14971@leibnitz.cs.uh.edu>
Subject: RE: Questions about UML class diagram (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Sat, 11 Feb 2006 08:53:19 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Regarding this issue of "2 relationships each with unidirectional
>navigation," I was wondering when such a case might occur.  In particular, I
>was reading the UML User's Guide (by Booch, Jacobson, & Rumbaugh) that
>dependencies usually happen when one class uses another only as a parameter
>to a method.  Would this "2 relationships each with unidirectional
>navigation" come in to play if both classes only use each other as
>parameters to methods?

Not necessarily.  You are mixing dependency with association in your thoughts 
above.

Can I have to unidirectional navigation association in opposite
direction between two classes? Yes, and here is an example:

	    owner
      *  <------------ *
Person                   House
        ------------>
      *     rents   0-1

In the above example, a House is owned by one or more persons.
Ownership of house is a very different relationship from renting a house.
Another person (or another group of persons) may be renting the same house.

A house, in this example, is referring to the owner(s). The Person or
Persons are referring to the House they rent.

I can have one relationship without the other.

Venkat

>-----Original Message-----
>From: vnkt6318@cs.uh.edu [mailto:vnkt6318@cs.uh.edu]
>Sent: Sunday, February 05, 2006 10:08 AM
>To: COSC 6318 Mailing List
>Subject: Re: Questions about UML class diagram
>
>
>>Hi Venkat,
>>
>>Regarding the UML class diagram:
>>
>>1. are two arrows and no arrows bi-direction associations equivalent?
>
>Hi
>
>No they are not. One line with no arrow represents one relationship
>with bi-directional navigation. Two arrows represent two relationships
>each with unidirectional navigation.
>
>>2. what is the difference between dependency and association?
>
>If an object utilizes the service of another object, you say it
>is associated. If, however, the relationship is weaker, you can
>say that there is dependency. For instance, I may create an exception
>and throw it. I may say that my class depends on the exception class
>it throws.
>
>>3. how to input interface implementation relationship in Visio? I can see
>>only extends.
>>
>>Thank you!
>
>The same notation can be used for both extends and implements.
>
>Venkat

From vnkt6318@cs.uh.edu  Sun Feb 12 07:41:29 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 12F5DF97F; Sun, 12 Feb 2006 07:41:29 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id A53AEF979; Sun, 12 Feb 2006 07:41:23 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id QOP31215
        for <uhcosc6318@list.prudentlearning.com>; Sun, 12 Feb 2006 04:55:15 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 956EAF97F
	for <uhcosc6318@list.prudentlearning.com>; Sun, 12 Feb 2006 06:55:32 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k1CCtW216847
	for uhcosc6318@list.prudentlearning.com; Sun, 12 Feb 2006 06:55:32 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200602121255.k1CCtW216847@leibnitz.cs.uh.edu>
Subject: use case (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Sun, 12 Feb 2006 06:55:32 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Hi, Venkat,
>
>Robert Martin in his article says that keep simple and do not use include 
>and extension relationships for use-cases.  However, other documents explain 
>these cases much.  Which approach would you advice?

Hi

The one that makes sense for the given situation on hand.
Keep the focus on what the objective is - to communicate and
get everyone involved to understand. There is no reason to optimize,
there is reason to keep things simple and effective.

>Also, you mentioned primary and secondary use cases, can you give examples 
>to both?
>
>Thanks.

In the example of gate access system, the guest at the gate is primary
actor. Administrators facilitating the creation of necessary accounts or
numbers is secondary.

Venkat

From vnkt6318@cs.uh.edu  Sun Feb 12 07:48:39 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 651F0F982; Sun, 12 Feb 2006 07:48:39 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id CACA2F97F; Sun, 12 Feb 2006 07:48:34 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id QPH43759
        for <uhcosc6318@list.prudentlearning.com>; Sun, 12 Feb 2006 05:47:59 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 4A3D7F97F
	for <uhcosc6318@list.prudentlearning.com>; Sun, 12 Feb 2006 07:48:17 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k1CDmH616936
	for uhcosc6318@list.prudentlearning.com; Sun, 12 Feb 2006 07:48:17 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200602121348.k1CDmH616936@leibnitz.cs.uh.edu>
Subject: Doubts in UML (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Sun, 12 Feb 2006 07:48:17 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Hi Venkat,
>
>I had a few doubts in UML. Please excuse me if these
>doubts are trivial.

There is no trivial double.

>1. If a method in a class accepts a parameter as an
>object of another class to perform some function, is
>it possible that the classes are associated? 

Generally if an object is received as a parameter and used
only in that method call, you may show it as dependency.
However, if you will store a reference to this object and use
it later on in other methods, then you may elevate this dependency
into something more stronger, like an association or even aggregation.

>2. Is it possible for an interface and a class to be
>associated or dependent or aggregated? is it possible
>to have 2 interfaces to be
>associated or dependent?

Yes and yes. Interface is an abstraction without any implementation.
You are expressing that whatever class(es) implements this interface(s),
you expect the implementation(s) to implement this relationship as well.

>3. I find the difference between association and
>dependency quite subtle. 

And it is.

>could you please help me with the difference?
>
>I understand association as a close relation between
>the classes and dependency as, change in one class may
>require change in the other.
>Thanks and Regards,

Association is a bit stronger than dependency. 
If you are not really using the services of an object extensively
(for example, you don't hold a reference to it, you simply receive
an instance of the class as a parameter in a method call and use
it only in that method, use a class like an exception class) then you 
may express this relationship as simply a dependency.
A dependency may be expressed much stronger in terms of assocation,
aggreagation, composition or even inheritance.

Venkat

From vnkt6318@cs.uh.edu  Tue Feb 14 04:48:41 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 08EEBF989; Tue, 14 Feb 2006 04:48:41 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id A5CA1F983; Tue, 14 Feb 2006 04:48:33 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id SMH42159
        for <uhcosc6318@list.prudentlearning.com>; Tue, 14 Feb 2006 02:45:59 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 67BDAF980
	for <uhcosc6318@list.prudentlearning.com>; Tue, 14 Feb 2006 04:46:17 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k1EAkHd24192
	for uhcosc6318@list.prudentlearning.com; Tue, 14 Feb 2006 04:46:17 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200602141046.k1EAkHd24192@leibnitz.cs.uh.edu>
Subject: Question on Class Diagrams (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Tue, 14 Feb 2006 04:46:17 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Hello Venkat;
>
>I have a question on the relationship defined on a base class or an
>Interface. I am wondering whether we can define any kind of relationship 
>for a base class  or an interface or not. For example, if a base class
>uses another class as one of its method then, in the class diagramk, we
>should draw that dependency relationship in the base class level or
>derived class level. What about an interface?
>
>Thank you

Hi,

Notation wise, if you express a relationship at the base class level
or the interface level, you don't have to repeat that in the derived
class level. The relationships at the base level are carried by the
derived.

Venkat

From vnkt6318@cs.uh.edu  Tue Feb 14 04:50:22 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 18104F983; Tue, 14 Feb 2006 04:50:22 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id E24EFF97C; Tue, 14 Feb 2006 04:50:17 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id SML59341
        for <uhcosc6318@list.prudentlearning.com>; Tue, 14 Feb 2006 02:49:41 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id CA955F980
	for <uhcosc6318@list.prudentlearning.com>; Tue, 14 Feb 2006 04:49:59 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k1EAnxl24212
	for uhcosc6318@list.prudentlearning.com; Tue, 14 Feb 2006 04:49:59 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200602141049.k1EAnxl24212@leibnitz.cs.uh.edu>
Subject: A quick clarification on HW 1
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Tue, 14 Feb 2006 04:49:59 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

Greetings,

I mentioned about students pairing up for HWs. I want to clarify.
That does not apply to HW 1. HW 1 is still an individual work.

For HW2, you will pair up with someone in class who does not belong to your
project group. If you don't find a member to pair up with, raise the question
in class (no emails) and we can figure out.

Regards,

Venkat

From vnkt6318@cs.uh.edu  Tue Feb 14 04:58:05 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id A68AEF983; Tue, 14 Feb 2006 04:58:04 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 31D51F97C; Tue, 14 Feb 2006 04:58:00 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id SMT78122
        for <uhcosc6318@list.prudentlearning.com>; Tue, 14 Feb 2006 02:57:22 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id B6EECF97C
	for <uhcosc6318@list.prudentlearning.com>; Tue, 14 Feb 2006 04:57:40 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k1EAveO24238
	for uhcosc6318@list.prudentlearning.com; Tue, 14 Feb 2006 04:57:40 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200602141057.k1EAveO24238@leibnitz.cs.uh.edu>
Subject: Questions related to homework 1 (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Tue, 14 Feb 2006 04:57:40 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Venkat,
>
>I have completed my first draft of homework 1, and in the process I have 
>arrived at a number of questions:
>
>1. Should the number of classes in the diagram be limited to the eight 
>classes mentioned in the homework description?  

No.

>To elaborate, I assume that 
>showing inheritance to java.lang.object and relationships with classes like 
>String is unnecessary.  

I agree.

>Less obvious is what to do about TestFailure's 
>... relationship with java.lang.Throwable, since it is a 
>pretty significant "part-of" the TestFailure class.

If something is not obvious, then it is better to show it.
Use your judgment.

>2. Do dependencies have to be shown when a stronger relationship exists 
>between two classes?  For example, a Car class may have an aggregation 
>relationship with an Engine class.  However, it might also use the Engine 
>class in "weaker" ways, for example as parameters to some of its methods. 
>Should such weaker dependencies also be shown?

It Car has more than  one relationship with Engine in your example, you
need to show it. If it only has one relationship, but multiple methods
of the class receive this object, then the answer is no, you will only 
show one.

>3. Do dependencies have to have labels?  It seems difficult to come up with 
>labels that are both concise and meaningful for dependencies that are, say, 
>based on the fact that some class is used as a parameter to a method, or is 
>used somewhere deep inside the implementation of a method.

Only if the names help clarify and not confuse.

>4. I am using Microsoft Visio to build my class diagram, and it seems to 
>want to put a multiplier by the diamond end of aggregation/composition links 
>(and I can't find a way to omit this multiplier).  Unfortunately, the class 
>slides and literature I've read never seem to put multipliers at the diamond 
>end, so I have found little guidance as to what multiplier to use (although 
>I am leaning to just leaving it at the default value of 1).  Your advice?

If the tool does not cooperate, leave it as 1 as that is (as you have pointed
out) is what is expected.

>5. A question about aggregation vs. composition: It can be argued that a 
>human has a compositional relationship with a heart, since generally the 
>heart is born and dies with the human.  However, there is a remote chance 
>that the heart may be transplanted, and thus doesn't die with the human, so 
>one could argue that the relationship is aggregational, not compositional. 

In the case of aggregation, the owner generally cleans up what it has.
Composition is that plus, you can not replace.

>Thus, if B is part of A, is their relationship aggregational if there is ANY 
>chance that some third object C may still have a reference to B after A is 
>destroyed?

Not really. People argue about these kinds of things quite a bit.
I generally treat aggregation as what I own and when my object goes away
it cleans up what it owns. I would consider references on this object
left behind are problematic.

>Any feedback you could offer on these questions would be greatly 
>appreciated.
>
>Thanks,

Glad to see these relevant questions.

Venkat

From vnkt6318@cs.uh.edu  Tue Feb 14 17:23:22 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 81E6CF983; Tue, 14 Feb 2006 17:23:22 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id B8578F97C; Tue, 14 Feb 2006 17:23:17 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id SZK65639
        for <uhcosc6318@list.prudentlearning.com>; Tue, 14 Feb 2006 15:22:39 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id BC5C1F97C
	for <uhcosc6318@list.prudentlearning.com>; Tue, 14 Feb 2006 17:22:57 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k1ENMvZ26920
	for uhcosc6318@list.prudentlearning.com; Tue, 14 Feb 2006 17:22:57 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200602142322.k1ENMvZ26920@leibnitz.cs.uh.edu>
Subject: RE: Questions related to homework 1 (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Tue, 14 Feb 2006 17:22:57 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Now I'm confused!!  In the HW description it says "Draw one UML class
>diagram showing the relationship between the following" (and then lists the
>classes to be diagrammed) and it also says to show "Only the relationships
>between the types mentioned above" (in reference to those same classes).
>
>Now, I gather from this email that we should also be showing classes not
>listed there (such as Throwable mentioned in the email below)?
>
>Am I reading something wrong?  Which one?

Here is what I said
If something is not obvious, then it is better to show it.
Use your judgment.

So, use your judgment :)

Venkat

>-----Original Message-----
>From: vnkt6318@cs.uh.edu [mailto:vnkt6318@cs.uh.edu]
>Sent: Tuesday, February 14, 2006 4:58 AM
>To: COSC 6318 Mailing List
>Subject: Questions related to homework 1 (fwd)
>
>
>>Venkat,
>>
>>I have completed my first draft of homework 1, and in the process I have
>>arrived at a number of questions:
>>
>>1. Should the number of classes in the diagram be limited to the eight
>>classes mentioned in the homework description?
>
>No.
>
>>To elaborate, I assume that
>>showing inheritance to java.lang.object and relationships with classes like
>>String is unnecessary.
>
>I agree.
>
>>Less obvious is what to do about TestFailure's
>>... relationship with java.lang.Throwable, since it is a
>>pretty significant "part-of" the TestFailure class.
>
>If something is not obvious, then it is better to show it.
>Use your judgment.
>
>>2. Do dependencies have to be shown when a stronger relationship exists
>>between two classes?  For example, a Car class may have an aggregation
>>relationship with an Engine class.  However, it might also use the Engine
>>class in "weaker" ways, for example as parameters to some of its methods.
>>Should such weaker dependencies also be shown?
>
>It Car has more than  one relationship with Engine in your example, you
>need to show it. If it only has one relationship, but multiple methods
>of the class receive this object, then the answer is no, you will only
>show one.
>
>>3. Do dependencies have to have labels?  It seems difficult to come up with
>>labels that are both concise and meaningful for dependencies that are, say,
>>based on the fact that some class is used as a parameter to a method, or is
>>used somewhere deep inside the implementation of a method.
>
>Only if the names help clarify and not confuse.
>
>>4. I am using Microsoft Visio to build my class diagram, and it seems to
>>want to put a multiplier by the diamond end of aggregation/composition
>links
>>(and I can't find a way to omit this multiplier).  Unfortunately, the class
>>slides and literature I've read never seem to put multipliers at the
>diamond
>>end, so I have found little guidance as to what multiplier to use (although
>>I am leaning to just leaving it at the default value of 1).  Your advice?
>
>If the tool does not cooperate, leave it as 1 as that is (as you have
>pointed
>out) is what is expected.
>
>>5. A question about aggregation vs. composition: It can be argued that a
>>human has a compositional relationship with a heart, since generally the
>>heart is born and dies with the human.  However, there is a remote chance
>>that the heart may be transplanted, and thus doesn't die with the human, so
>>one could argue that the relationship is aggregational, not compositional.
>
>In the case of aggregation, the owner generally cleans up what it has.
>Composition is that plus, you can not replace.
>
>>Thus, if B is part of A, is their relationship aggregational if there is
>ANY
>>chance that some third object C may still have a reference to B after A is
>>destroyed?
>
>Not really. People argue about these kinds of things quite a bit.
>I generally treat aggregation as what I own and when my object goes away
>it cleans up what it owns. I would consider references on this object
>left behind are problematic.
>
>>Any feedback you could offer on these questions would be greatly
>>appreciated.
>>
>>Thanks,
>
>Glad to see these relevant questions.
>
>Venkat

From vnkt6318@cs.uh.edu  Tue Feb 14 17:26:31 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id A8A8CF987; Tue, 14 Feb 2006 17:26:30 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id BA1A7F97D; Tue, 14 Feb 2006 17:26:22 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id SZN39047
        for <uhcosc6318@list.prudentlearning.com>; Tue, 14 Feb 2006 15:25:47 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id A10A3F97D
	for <uhcosc6318@list.prudentlearning.com>; Tue, 14 Feb 2006 17:25:58 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k1ENPwN26938
	for uhcosc6318@list.prudentlearning.com; Tue, 14 Feb 2006 17:25:58 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200602142325.k1ENPwN26938@leibnitz.cs.uh.edu>
Subject: Re: Questions related to homework 1 (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Tue, 14 Feb 2006 17:25:58 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Venkat,
>
>Thank you for your prompt response to my questions.  However, there is one 
>answer you gave that I was hoping you could elaborate on:
>
>>>5. A question about aggregation vs. composition: It can be argued that a
>>>human has a compositional relationship with a heart, since generally the
>>>heart is born and dies with the human.  However, there is a remote chance
>>>that the heart may be transplanted, and thus doesn't die with the human, 
>>>so
>>>one could argue that the relationship is aggregational, not compositional.
>>
>> In the case of aggregation, the owner generally cleans up what it has.
>> Composition is that plus, you can not replace.
>>
>
>I'm a little confused by the line "Composition is that plus, you can not 
>replace."  Continuing with the human-organ analogy, would a human have an 
>aggregate relationship with kidneys (which can be replaced) and a 
>compositional relationship with brain (which cannot (at least with the 
>current state of medical technology) be replaced)?  

Correct. Both aggregation and composition refer to ownership.
Composition is where, so to use the word, you are stuck with it.

>Also, in more concrete 
>OOP "get/set" terms, there would be no "set" method for a compositional 
>relationship, whereas there might be for aggregational?
>
>Thanks again,

Yes, set or replace, if you will.

Venkat

From vnkt6318@cs.uh.edu  Wed Feb 15 05:23:49 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 833CFF990; Wed, 15 Feb 2006 05:23:48 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 4964CF989; Wed, 15 Feb 2006 05:23:44 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id TNL25053
        for <uhcosc6318@list.prudentlearning.com>; Wed, 15 Feb 2006 03:22:53 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id A82E0F989
	for <uhcosc6318@list.prudentlearning.com>; Wed, 15 Feb 2006 05:23:11 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k1FBNBP27809
	for uhcosc6318@list.prudentlearning.com; Wed, 15 Feb 2006 05:23:11 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200602151123.k1FBNBP27809@leibnitz.cs.uh.edu>
Subject: Doubt in HW1 (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Wed, 15 Feb 2006 05:23:11 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Hi Venkat,
>
>One more doubt,
>
>If a class implements an interface and if a relation
>exists between another class and the interface can i
>safely ignore showing the relation between the two
>classes if a similar or weaker relation exists between
>the classes? If a stronger relation exists then it
>will have to be shown?
>
>Thanks and Regards,

Hi

A relationship (we're talking about the "same" relationship, not
similar, little different, weaker, stronger, etc.) shown in the base 
is not shown between the derived.

If the derived has some other relationships that the base does not have,
then you will show those in the derived.

Venkat

From vnkt6318@cs.uh.edu  Fri Feb 17 05:39:32 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id BB83FF97E; Fri, 17 Feb 2006 05:39:31 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 08D7AF97C; Fri, 17 Feb 2006 05:39:25 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id VNC60939
        for <uhcosc6318@list.prudentlearning.com>; Fri, 17 Feb 2006 03:37:39 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 0CB19F97C
	for <uhcosc6318@list.prudentlearning.com>; Fri, 17 Feb 2006 05:37:58 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k1HBbvI03376
	for uhcosc6318@list.prudentlearning.com; Fri, 17 Feb 2006 05:37:57 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200602171137.k1HBbvI03376@leibnitz.cs.uh.edu>
Subject: boundary, entity, and control classes (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Fri, 17 Feb 2006 05:37:57 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Venkat,
>
>I was thinking about how I might apply what you taught in class today, 
>but couldn't really decide.  Take as an example a system described as 
>follows:
>
>User can buy content (and thus adds thier own info (say login/password) 
>to be stored in a DB)
>Administrator can give away user accounts (so the admin can add users too)
>Both user and Admin can edit user accounts (user can edit his own, admin 
>can edit anyones)
>Among other information, it keeps  track of an expiration date  for the 
>account, which it  calculates based on the date of sign up and the 
>amount paid (or what the admin enters as paid - say they phone in the 
>orders) -- added this requirement to demonstrate business logic.
>
>Now, based on what you said today, we want the forms the user and admin 
>fill out to be in boundary classes.  Calculating the expiration date 
>should be done in a control class, and the info should be 
>inserted/updated in the DB in an entity class.
>
>It makes a lot of sense, of course, because we might want to write this 
>application using the web as an UI or even a windows desktop.  
>Therefore, the business logic is not tied to the presentation.  Also, we 
>might want at one point to store information in some other way than a 
>DB, so we dont need to change our UI or business logic if that becomes 
>the case. 

I like your observation, explanation, and discussion.

>However, I am not clear on how we could do such things without high 
>coupling.  If we have the class UserAccount as follows:
>
>class UserAccount
>{
>    some members;
>    some methods;
>    updateUser(int userID, datetime expiration, various otherMembers); 
>// which takes a userID and new data to be written to DB
>    insertUser(...); // similar to above but inserting into DB instead 
>of Updating;
>    calculateExpiration(datetime today, moneyPaid);
>    showForm(); // shows the form to the User or Admin
>};
>
>I would have thought this class would be cohesive (in that everything it 
>does is everything the UserAccount needs done)
>
>Now, applying the boundary, entity, and control we would need 3 classes 
>do do the job of this one simple one, right?

Now, go back and ask what is the "simple job" of this one class.
If the job of this class is to do everything, then it would not remain
simple any more, isn't it?

>The meat of the matter is that I don't understand how I would break that 
>up into the 3.  It seems wierd to have say a GUI class that would have 
>methods  like drawUserAccountForm() and 
>drawSomethingElseForSomeOtherPartOfTheSystem()... this seems to lead to 
>a lot of coupling.  It even seems wierd to have like a UserAccountGUI 
>class (and then another "GUI" class for each of the other parts of the 
>system)... and then similar for the DB end.
>
>I guess I understand the need but I have no clue  about how to go about 
>implementing  this.  Could you try to shed some light on it? 
>
>I figured this was a little too detailed to ask in class, and the list 
>seemed perfect for it.
>
>Thanks!

Does the code by going through the above approach have coupling.
Potentially yes. But does it increase coupling or decrease coupling?
If your UserAccount is doing everything, then that one class is heavily
coupled to everything. However, by having the code to display data
separated from the code to access database, each code is coupled still,
but to a lesser extent. Further, you can think about what you want to
depend on. YOur UI code may depend on User Account. That is one option.
Or it may depend on some form of data object (like a DataSet or RecordSet)
which simply is a holder of data (any data) and it can display that data.
You can apply some thing like reflection or some code generation facility
to generate part of the UI code so you can reduce coupling further.

Once you figure out that you need the separation, then it is the question
of figuring out how to do that. However, if we don't know that we need
the separation, then there is no use of knowing how to do it.

Like I mention in class, while separation is an important approach, we
must be careful. There are applications (you may even argue most application)
where that is the right thing to do. However, you must evaluate to decide
that it is right for application you are developing. I would say this about
any application you deal with.

Good questions.

Venkat

From vnkt6318@cs.uh.edu  Fri Feb 17 05:44:44 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 2950BF987; Fri, 17 Feb 2006 05:44:44 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id B67A8F96E; Fri, 17 Feb 2006 05:44:39 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id VNJ79604
        for <uhcosc6318@list.prudentlearning.com>; Fri, 17 Feb 2006 03:44:04 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 4AC21F96E
	for <uhcosc6318@list.prudentlearning.com>; Fri, 17 Feb 2006 05:44:23 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k1HBiNX03404
	for uhcosc6318@list.prudentlearning.com; Fri, 17 Feb 2006 05:44:23 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200602171144.k1HBiNX03404@leibnitz.cs.uh.edu>
Subject: Thoughts about hw1 (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Fri, 17 Feb 2006 05:44:23 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Hi Venkat,
>
>Looks like I finished the homework1, and I just want
>to share my thoughts about it. Not actually about the
>homework itself, but about the JUnit.Framework.
>It looks to me that this Framework was created by some
>really crazy guy, because what I can see from my
>diagram (if I did it correctly) is there are
>dependencies almost everywhere. Huge degree of
>coupling especially among Test,TestResult, TestSuite,
>TestCase.
>For example TestSuite is a composite of Tests (by
>defenition from the documentation). So it has Tests in
>it and manages them using methods like AddTest(...),
>Run(...), TestAt(..), but still there is another way
>to do Test without adding it, using method
>RunTest(Test, TestResult). Why?. If we need to run
>Test we just can call Run method of Test. Also
>TestResult has a method of runing tests.
>It is very complecated.
>
>Thank you for reading this.

It is a right attitude to question. I will, any day, prefer developers 
who ask critical questions like you have asked than those who simply 
accept what's given. From that point of view, you have earned my respect.

Now, that does not mean what you are saying is right 
and I am not saying your wrong. :) We will have to discuss this
further.

Very soon we will discuss TDD in class. Generally I ask students if we 
should use Java or C# when I write the examples. However, since you raised
this question, I will use JUnit to create the example. After I am
done with that example, please write back to me if you still think this is 
way too complex or if what you have mentioned actually gives you flexibility.

Thanks for thinking.

Venkat

From vnkt6318@cs.uh.edu  Sat Feb 18 06:43:26 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 9C953F97F; Sat, 18 Feb 2006 06:43:25 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 9AF34F96E; Sat, 18 Feb 2006 06:43:20 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id WOI51536
        for <uhcosc6318@list.prudentlearning.com>; Sat, 18 Feb 2006 04:42:36 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id B596CF96E
	for <uhcosc6318@list.prudentlearning.com>; Sat, 18 Feb 2006 06:42:54 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k1ICgsp06154
	for uhcosc6318@list.prudentlearning.com; Sat, 18 Feb 2006 06:42:54 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200602181242.k1ICgsp06154@leibnitz.cs.uh.edu>
Subject: RE: Thoughts about hw1 (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Sat, 18 Feb 2006 06:42:54 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: RO

>At first I was confused as well, but in the end I found the framework (or
>what we saw of it anyway) to make sense.  I also had been reading about TDD
>in the Agile Development book, and I plan to start using it.  It sounds like
>a great idea, and I'm upset I haven't heard of it until now.

:) TDD is a very powerful concept and we will delve into it further
in the course.

>The one thing I found strange about the part of the framework we looked at
>was the number of dependencies to associations.  I found almost no
>associations (i think 1 assoc and 1 aggregation if I remember correctly).  I
>keep thinking I've done the HW completely wrong because of it (I probably
>have too!).

Actually I found fewer dependencies and more associations :)
Knowing this requires context. We will discuss this. 

>I do have a question:  What sort of questions would we expect to see on the
>exam?  

Only the easy ones!

>I would assume a UML question, but I mean would we see something like
>"Discuss the differences between composition and aggregation?" or things
>similar?

All the questions asked in the past are on the web. Start at
http://www.cs.uh.edu/~svenkat/classes.

Do note that the syllabus for the exams is not the same in each semester.
So, some questions you see in midterm 1 of past semesters may not be relevant 
to your exam. Some questions in midterm 2 of past semesters may be.

Venkat

>-----Original Message-----
>From: vnkt6318@cs.uh.edu [mailto:vnkt6318@cs.uh.edu]
>Sent: Friday, February 17, 2006 5:44 AM
>To: COSC 6318 Mailing List
>Subject: Thoughts about hw1 (fwd)
>
>
>>Hi Venkat,
>>
>>Looks like I finished the homework1, and I just want
>>to share my thoughts about it. Not actually about the
>>homework itself, but about the JUnit.Framework.
>>It looks to me that this Framework was created by some
>>really crazy guy, because what I can see from my
>>diagram (if I did it correctly) is there are
>>dependencies almost everywhere. Huge degree of
>>coupling especially among Test,TestResult, TestSuite,
>>TestCase.
>>For example TestSuite is a composite of Tests (by
>>defenition from the documentation). So it has Tests in
>>it and manages them using methods like AddTest(...),
>>Run(...), TestAt(..), but still there is another way
>>to do Test without adding it, using method
>>RunTest(Test, TestResult). Why?. If we need to run
>>Test we just can call Run method of Test. Also
>>TestResult has a method of runing tests.
>>It is very complecated.
>>
>>Thank you for reading this.
>
>It is a right attitude to question. I will, any day, prefer developers
>who ask critical questions like you have asked than those who simply
>accept what's given. From that point of view, you have earned my respect.
>
>Now, that does not mean what you are saying is right
>and I am not saying your wrong. :) We will have to discuss this
>further.
>
>Very soon we will discuss TDD in class. Generally I ask students if we
>should use Java or C# when I write the examples. However, since you raised
>this question, I will use JUnit to create the example. After I am
>done with that example, please write back to me if you still think this is
>way too complex or if what you have mentioned actually gives you
>flexibility.
>
>Thanks for thinking.
>
>Venkat

From vnkt6318@cs.uh.edu  Sun Feb 19 19:09:34 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 7F4EEF980; Sun, 19 Feb 2006 19:09:34 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id D3280F96E; Sun, 19 Feb 2006 19:09:29 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id YDA21810
        for <uhcosc6318@list.prudentlearning.com>; Sun, 19 Feb 2006 17:06:10 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 6A6CAF980
	for <uhcosc6318@list.prudentlearning.com>; Sun, 19 Feb 2006 19:06:13 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k1K16DQ09268
	for uhcosc6318@list.prudentlearning.com; Sun, 19 Feb 2006 19:06:13 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200602200106.k1K16DQ09268@leibnitz.cs.uh.edu>
Subject: Use Case Report (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Sun, 19 Feb 2006 19:06:13 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Hello,
>I have a question about the use case report...
>
>A Use Case report should contain use case diagrams showing actors and use
>cases. It should also include basic flow of events for each use case. The
>report should in detail describe the overall functionality of the system
>in terms of what the system does.
>
>The basic flow of events, is that like a data-flow diagram, a state
>diagram, or just text??

I would expect it to be text unless you have an application  that requires
to be expressed using something more sophisticated.

>and the description of the overall functionality again, should that like
>be in text or some diagram.. 

Use your judgement on this, there is no hard and fast rule.

>and should we include the basic,alternate,
>pre/post conditions,ect that we spoke about in class for each usecase?
>
>thank you,

Yes.

Venkat

From vnkt6318@cs.uh.edu  Tue Feb 21 03:32:14 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 71A7BF980; Tue, 21 Feb 2006 03:32:14 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 2D845F97C; Tue, 21 Feb 2006 03:32:10 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id ZLY17146
        for <uhcosc6318@list.prudentlearning.com>; Tue, 21 Feb 2006 01:29:46 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 83CCDF97C
	for <uhcosc6318@list.prudentlearning.com>; Tue, 21 Feb 2006 03:29:03 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k1L9T3J15692
	for uhcosc6318@list.prudentlearning.com; Tue, 21 Feb 2006 03:29:03 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200602210929.k1L9T3J15692@leibnitz.cs.uh.edu>
Subject: About Use Case (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Tue, 21 Feb 2006 03:29:03 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Venkat, 
>     
>    I was going thru the lectures and I have a doubt   regarding the use case.
>    Can a "System" which sends some information to the   user be an Actor, for eg.-
>    
>  In a registration process the system may generate   a link having some key value, which would be used to confirm the   user.
>      Or
>  A system performing daily   activities..
>  
>  
>    In these cases will the System be a   Actor
>     
>    Thanks, 

Actor is external to the system you are developing. An Actor
interacts with your system. In that context, what you describe
above is not an actor, but part of your system.

Venkat

From vnkt6318@cs.uh.edu  Tue Feb 21 03:32:26 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 71B89F980; Tue, 21 Feb 2006 03:32:26 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 32BE6F96E; Tue, 21 Feb 2006 03:32:22 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id ZLA82828
        for <uhcosc6318@list.prudentlearning.com>; Tue, 21 Feb 2006 01:31:28 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 59F2DF96E
	for <uhcosc6318@list.prudentlearning.com>; Tue, 21 Feb 2006 03:31:47 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k1L9Vld15714
	for uhcosc6318@list.prudentlearning.com; Tue, 21 Feb 2006 03:31:47 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200602210931.k1L9Vld15714@leibnitz.cs.uh.edu>
Subject: midterm 1 (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Tue, 21 Feb 2006 03:31:47 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>I was browsing the old midterms and had a quick question.  On The Spring 01
>midterm 1, there is a list of True/False questions as follows:
>
>... further question as to how to interpret true/false questions deleted...
>
>Finally, are the "planning" slides (session 5 I think) going to be covered?
>I know you said everything including (or was it up to?) the 15th of Feb, but
>we didn't cover much in them if I remember correctly.
>
>Thanks for your help,

Don't worry, there will not be any true/false questions :)

Planning session not in this exam.

Venkat

From vnkt6318@cs.uh.edu  Tue Feb 21 03:38:54 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 9C152F97F; Tue, 21 Feb 2006 03:38:53 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 47AACF96E; Tue, 21 Feb 2006 03:38:49 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id ZLE26511
        for <uhcosc6318@list.prudentlearning.com>; Tue, 21 Feb 2006 01:35:11 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 49003F96E
	for <uhcosc6318@list.prudentlearning.com>; Tue, 21 Feb 2006 03:34:59 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k1L9YxT15745
	for uhcosc6318@list.prudentlearning.com; Tue, 21 Feb 2006 03:34:59 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200602210934.k1L9YxT15745@leibnitz.cs.uh.edu>
Subject: Interfaces with association, aggregation, or composition links (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Tue, 21 Feb 2006 03:34:59 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: RO

>Venkat,
>
>A project teammate and I were wondering if it is OK to show interfaces with 
>association, aggregation, or composition links in class diagrams.  

Most certainly.

>An interface can't have member variables, so technically it seems like it 
>shouldn't have association, aggregation, or composition links.  

Not true. You are associating with, technically speaking at runtime,
with an implementation of that interface. I have association with a friend.
The friend may have different implementation. 

>On the other hand, an interface could have various "get" and "set" methods, 
>which imply 
>that any class that implements the interface should have member variables to 
>which those "get" and "set" methods apply.
>
>For example, if you had a "Car" interface with a method "getEngine," it is 
>tempting to show the interface with an aggregate relationship with an 
>"Engine" class, showing that all classes that implement "Car" should 
>probably have an Engine type member variable.
>
>Your thoughts on this question would be greatly appreciated,

Relationships exist between abstractions. Some abstractions are
concrete, some are ... very abstract!

Venkat

From vnkt6318@cs.uh.edu  Tue Feb 21 03:39:05 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id B906AF97F; Tue, 21 Feb 2006 03:39:04 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 5949DF96E; Tue, 21 Feb 2006 03:39:00 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id ZLH04618
        for <uhcosc6318@list.prudentlearning.com>; Tue, 21 Feb 2006 01:38:18 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 5635AF96E
	for <uhcosc6318@list.prudentlearning.com>; Tue, 21 Feb 2006 03:38:36 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k1L9ca315756
	for uhcosc6318@list.prudentlearning.com; Tue, 21 Feb 2006 03:38:36 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200602210938.k1L9ca315756@leibnitz.cs.uh.edu>
Subject: Difficulties (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Tue, 21 Feb 2006 03:38:36 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>hi Venkat
>
>I have some difficulties:
>
>1. How do you reperesent a constructor default or parameterized in a class 
>diagram

You generally don't. If you insist on representing them, you show
them like you show methods in the diagram.

>2.How do you represent pointer atrributes ex char *name; in a class diagram

These are just attributes, you show them like any attribute. 
However, if the pointer is to an object, you would show it as 
association, aggregation, etc. instead of as attributes.

>3. Should we write many small usecases and there flow of events or should we 
>combine them into one bigger usecase.

There is no small or big when it comes to use cases, they are use cases.
If it does not provide value, it is not a use case.

>4. public class Person{
>   private :
>   Brain theBrain=new Brain();
>   Heart theHeart;
>   Car *pCar;
>
>}
>where should I use agregation and composition relations and why?

I will let you expand on this answer and I will discuss this futher.

>5. Can you give me some example where agregation is good and where 
>inheritence is good?
>
>Regards

Again, I will let you expand on this and I will be glad to discuss.
I don't want to turn the email into a Q&A session where you ask
questions and I give answers. I want this to be more of discussion
forum.

Venkat

From vnkt6318@cs.uh.edu  Tue Feb 21 03:43:57 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 2C3B4F97F; Tue, 21 Feb 2006 03:43:57 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id D0CE8F96E; Tue, 21 Feb 2006 03:43:52 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id ZLJ43755
        for <uhcosc6318@list.prudentlearning.com>; Tue, 21 Feb 2006 01:40:55 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id B6958F96E
	for <uhcosc6318@list.prudentlearning.com>; Tue, 21 Feb 2006 03:41:13 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k1L9fD315791
	for uhcosc6318@list.prudentlearning.com; Tue, 21 Feb 2006 03:41:13 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200602210941.k1L9fD315791@leibnitz.cs.uh.edu>
Subject: A question (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Tue, 21 Feb 2006 03:41:13 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Venkat,
>you have said  Aggregation refers to object relationships ,but Inheritance
>refers to class relationships.
>can you explain that please.
>Thanks.

Expand on this further as to what you think it is and I will
be glad to step in and discuss further.

I am happy you are asking questions, but I don't want that to be
"I care about this only for the exam, so answer these questions for me"
types of questions. I want them to be "Hey I am interested in learning
this and here is what I understand, what do you say" types.

Venkat

From vnkt6318@cs.uh.edu  Tue Feb 21 03:44:07 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id DB9ADF97C; Tue, 21 Feb 2006 03:44:06 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 9E409F96E; Tue, 21 Feb 2006 03:44:02 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id ZLM71823
        for <uhcosc6318@list.prudentlearning.com>; Tue, 21 Feb 2006 01:43:23 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 03ED5F96E
	for <uhcosc6318@list.prudentlearning.com>; Tue, 21 Feb 2006 03:43:42 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k1L9hfH15799
	for uhcosc6318@list.prudentlearning.com; Tue, 21 Feb 2006 03:43:41 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200602210943.k1L9hfH15799@leibnitz.cs.uh.edu>
Subject: Mid Term portions clarification (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Tue, 21 Feb 2006 03:43:41 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Hi Venkat,
>
>Needed a clarification. You had mentioned that the
>portions for the mid term is all that is completed in
>class until Feb 15. But today you had mentioned that
>Architecture is not included. 
>
>Could you please clarify.
>
>Thanks.

We will keep the discussions on the list very technical.
Non technical questions will be politely ignored.
To answer this last non-technical question, everything covered
until Feb. 15 is in the exam. Planning session is not included
since we did not finish it on Feb. 15th.

Now, let's get on with more useful things to discuss, can we?

Venkat

From vnkt6318@cs.uh.edu  Tue Feb 21 04:29:18 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 72085F981; Tue, 21 Feb 2006 04:29:18 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id D14F9F96E; Tue, 21 Feb 2006 04:29:08 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id ZMW50049
        for <uhcosc6318@list.prudentlearning.com>; Tue, 21 Feb 2006 02:27:49 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 9906AF96E
	for <uhcosc6318@list.prudentlearning.com>; Tue, 21 Feb 2006 04:27:24 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k1LAROd15963
	for uhcosc6318@list.prudentlearning.com; Tue, 21 Feb 2006 04:27:24 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200602211027.k1LAROd15963@leibnitz.cs.uh.edu>
Subject: Re: A question (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Tue, 21 Feb 2006 04:27:24 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

Inheritance is intended to specify that an object of a class inherits
or derives the behavior of another class. This applies to all
the objects of the class, so the relationship is at the class level.
Also, this leads to substitutability where an object of a class can
take the place where an instance of the class is expected or the place
where an instance of a base class of the class is expected.

In the case of aggregation, objects have more flexibility. While some
objects may choose to aggregate, other objects may choose not to.
Also, you may aggregate an object of a class or an object of
a class that derives from it.

Venkat

>Well,
>I thought that both can refer to object and class relationships without
>being restricted to one kind.
>What do you think ?
>Thanks.
>
>On 2/21/06, vnkt6318@cs.uh.edu <vnkt6318@cs.uh.edu> wrote:
>>
>> >Venkat,
>> >you have said  Aggregation refers to object relationships ,but
>> Inheritance
>> >refers to class relationships.
>> >can you explain that please.
>> >Thanks.
>>
>> Expand on this further as to what you think it is and I will
>> be glad to step in and discuss further.
>>
>> I am happy you are asking questions, but I don't want that to be
>> "I care about this only for the exam, so answer these questions for me"
>> types of questions. I want them to be "Hey I am interested in learning
>> this and here is what I understand, what do you say" types.
>>
>> Venkat

From vnkt6318@cs.uh.edu  Wed Feb 22 06:11:57 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 29A0EF982; Wed, 22 Feb 2006 06:11:57 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id E799EF96E; Wed, 22 Feb 2006 06:11:51 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id AOA51542
        for <uhcosc6318@list.prudentlearning.com>; Wed, 22 Feb 2006 04:04:42 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 7106DF97B
	for <uhcosc6318@list.prudentlearning.com>; Wed, 22 Feb 2006 06:04:45 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k1MC4j318801
	for uhcosc6318@list.prudentlearning.com; Wed, 22 Feb 2006 06:04:45 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200602221204.k1MC4j318801@leibnitz.cs.uh.edu>
Subject: associations and attributes (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Wed, 22 Feb 2006 06:04:45 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Regarding what you said here about UML:
>
>"These are just attributes, you show them like any attribute.
>However, if the pointer is to an object, you would show it as
>association, aggregation, etc. instead of as attributes."
>
>If that is the case, how do you show pointers to objects as public/private?

The question to ask is not if the pointer is private, but if the
relationship (association/aggregation/...) is private or public.

>Or do you just leave it to the good sense of the programmer?

You always should leave things for good sense of the programmer :)

Venkat

From vnkt6318@cs.uh.edu  Wed Feb 22 06:12:06 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 62E3AF982; Wed, 22 Feb 2006 06:12:06 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 02A87F96E; Wed, 22 Feb 2006 06:12:02 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id AOH73421
        for <uhcosc6318@list.prudentlearning.com>; Wed, 22 Feb 2006 04:11:21 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id ED7D6F96E
	for <uhcosc6318@list.prudentlearning.com>; Wed, 22 Feb 2006 06:11:39 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k1MCBdD18822
	for uhcosc6318@list.prudentlearning.com; Wed, 22 Feb 2006 06:11:39 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200602221211.k1MCBdD18822@leibnitz.cs.uh.edu>
Subject: shallow vs deep copy (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Wed, 22 Feb 2006 06:11:39 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Hi, Venkat,
>
>You said that we can use shallow or deep copy according to our aim.  I 
>wonder in what type of applications I will choose shallow copy rather than 
>deep copy.

It almost any type of application. You ask if you are interested in
copying the entire object and all it contains or you are interested
in only copying the first level.

For example, assume you have an application that models a neighborhood.
You have homes, details about each home, information on where it is
located, who owns it, who built it, what type of pool it has,
the neighboring homes, etc. If you are creating a new home (within
your appliication which is modeling the neighborhood), you may find
that it is easiest to copy an existing home which is the same model
and built by the same builder. So you provide a copy and paste facility.
However, you do not want to copy "all" the information that is
contained within the home. For instance, the home refers to owner, but
you don't want to copy the details of this specific owner.
You may want to provide a shallow copy in this case.

>I also need an example code using both copies to understand the exact 
>difference in usage.
>
>Thanks.

I think that is a good idea. Start writing code, get as much as you can
and send it to me and I will be glad to alter it and post.

Regards,

Venkat

From vnkt6318@cs.uh.edu  Wed Feb 22 06:19:41 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id EDEC6F97F; Wed, 22 Feb 2006 06:19:40 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 9D1A7F96E; Wed, 22 Feb 2006 06:19:36 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id AOK00059
        for <uhcosc6318@list.prudentlearning.com>; Wed, 22 Feb 2006 04:14:59 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id F21EEF97F
	for <uhcosc6318@list.prudentlearning.com>; Wed, 22 Feb 2006 06:15:16 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k1MCFGP18849
	for uhcosc6318@list.prudentlearning.com; Wed, 22 Feb 2006 06:15:16 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200602221215.k1MCFGP18849@leibnitz.cs.uh.edu>
Subject: Interfaces vs Code Repetitions (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Wed, 22 Feb 2006 06:15:16 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Hi Venkat
>
>I was reading Allen Holub "Why extends is evil" and
>your acticle "Interface Based Programming!"
>and there you say that to make code reusable and
>extansible, you need to use INTERFACES. Holub suggests
>80% of the project use interfaces.
>
>On the other hand I heard from you and other articles
>that you shouldn't repeat what you already done (do
>not copy code through your project.)
>
>But, if we use interfaces (I clearly understand their
>usefulness), we need to implement them every time we
>want to derive from them (and this, I guess,  violates
>"do not copy code" principle)
>
>Can you comment this, please?
>
>Thank you!

If you have interfaces, you need to provide implementation.
Each of these implementations would be different. If they
are the same, there is no reason to duplicate them.
You may not need to create the additonal class, or you may
create an abstract class below the interface if there is
so much common implementation. Would you agree?

Venkat

From vnkt6318@cs.uh.edu  Wed Feb 22 06:31:03 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id D1EA2F984; Wed, 22 Feb 2006 06:31:02 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 85935F96E; Wed, 22 Feb 2006 06:30:51 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id AOA98403
        for <uhcosc6318@list.prudentlearning.com>; Wed, 22 Feb 2006 04:30:03 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 459A2F97F
	for <uhcosc6318@list.prudentlearning.com>; Wed, 22 Feb 2006 06:29:48 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k1MCTmA18877
	for uhcosc6318@list.prudentlearning.com; Wed, 22 Feb 2006 06:29:48 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200602221229.k1MCTmA18877@leibnitz.cs.uh.edu>
Subject: Study-provoked questions (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Wed, 22 Feb 2006 06:29:48 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Venkat,
>
>In the course of studying for the exam, I have encountered a number of areas 
>in which I feel somewhat unsure.  I hope to visit with you and discuss these 
>topics during your office hours tomorrow.  However, I will go ahead and ask 
>some of them here, for a number of reasons (in case you won't be having 
>office hours, to share answers with the class, to avoid taking up too much 
>of your office time, etc.)

It is always good to shared knowledge. So, I welcome discussion on the
list.

>1. First an administrative question, and I apologize if you have already 
>answered this and I missed it: what, if any, materials are we allowed to 
>bring to the midterm?

Yourself, pens and/or pencils.
The exam is closed book and open minded.

>2. Can you use multiple markers for attributes in class diagrams (for 
>example: +# for public static, -# for private static)?

Yes you can.

>3. It seems to me like a derived attribute must always have an associated 
>method.  For example, a derived attribute "Age" might have a getAge() method 
>in which it is calculated from a dateOfBirth attribute (otherwise, how would 
>you ever access it, since it isn't truly a member variable).  Is the 
>existence of such a method pretty much safe to assume?

Actually, most of the languages today support the concept of properties.
Properties appear like fields, but are methods and manipulate.
>From the modeling point of view (depending on the level of detail
and objective) it is not important to show getters/setters for fields.

>4. In our discussion of post-conditions for the coin change machine use 
>case, I recall (perhaps incorrectly) that you rejected one suggested 
>post-condition because it wasn't "value-added" for the user.  Are all 
>post-conditions supposed to be value-added for the user/actor?

Not necessarily, but it should be a condition instead of a step in the flow.

>5a. On the test, do we have to stick with the relationships exactly as they 
>are stated in the test questions, or can we fill in the blanks with our own 
>common sense and life experience.  

If you are making some assumption, state it. I will accept it if I find
the assumption to be valid and reasonable.

>For example, question 9 on Midterm 1, 
>2004, sets up a scenario of a Person living in a city.  It does not 
>specifically say that more than one person can live in a city, and it does 
>not say that a person can own more than one home, but I know that this is 
>the case from real life, so I was tempted to mark such multiplicities 
>accordingly.

In this case, this is implicit and valid assumption. 

>5b. Furthermore, on that particular question, I had a hard time deciding 
>what the "directions of navigation" should be.  From our discussion of the 
>advantages and disadvantages of single and bi-directional relationships in 
>class, it almost seems to be more of a choice of an overall personal design 
>philosophy rather than something that can be ascertained from the problem 
>statement.

True, in general, this is based on various design issues. 

>6a. I'm really struggling with the concept of aggregation (vs. association). 
>Why do you show a Person having an aggregation relationship with a Car in 
>the slides (Session 2 - Object Models 1)?  It doesn't seem to me that a Car 
>is "part-of" a person.  Perhaps I'm putting too much emphasis on the 
>"part-of" idea?

You are. Part of does not mean contained within. It is used liberally
for has or owns or belongs to.

>6b. You've previously said that in "aggregation, the owner generally cleans 
>up what it has."  If the Person - Car example above is aggregation, how does 
>the person "clean up" the Car?  In real life, people "dispose" of cars in a 
>lot of different ways (wreck it, abandon it, sell it, trade-in, etc.).

In the case of a program, for instance in C++, you would want to delete
the object so its memory is released. In the case of Java/C#,...
you may have to dispose the object to release any unmanaged resources 
it uses.

>7. In some test questions you use the term "artifact."  I'm a little 
>confused what you mean by that term, and have had a hard time finding any 
>definition of it my class notes, slides, or the internet.  Could you 
>elaborate?
>
>Thanks and see you tomorrow,

How about:
http://en.wikipedia.org/wiki/Artifacts

See you for more discussion.

Venkat

From vnkt6318@cs.uh.edu  Sat Feb 25 05:27:10 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 4D35AF98B; Sat, 25 Feb 2006 05:27:10 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 12A17F992; Sat, 25 Feb 2006 05:27:03 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id DNW01543
        for <uhcosc6318@list.prudentlearning.com>; Sat, 25 Feb 2006 03:23:43 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 18904F980
	for <uhcosc6318@list.prudentlearning.com>; Sat, 25 Feb 2006 05:24:01 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k1PBO0q04753
	for uhcosc6318@list.prudentlearning.com; Sat, 25 Feb 2006 05:24:00 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200602251124.k1PBO0q04753@leibnitz.cs.uh.edu>
Subject: usecases (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Sat, 25 Feb 2006 05:24:00 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

Hello, 
>one quick question, can we consider "authenticate" an actual usecase. 
>i remeber u said something about it in class, and i just want to make sure. 
>The actor is interacting with the system, but authentication is a must do 
>step to access the system, so an actor won't&nbsp;go and use the system just 
>to authenticate. so is that considered a usecase?? 
>Thanxs

I would not consider authenticate as a standalone use case. It
may be represented as a usecase that other usecases depend on (like
generalization or extends).

Venkat

From vnkt6318@cs.uh.edu  Sat Feb 25 05:31:16 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 6FE35F992; Sat, 25 Feb 2006 05:31:16 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id D0BBFF980; Sat, 25 Feb 2006 05:31:08 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id DNZ85942
        for <uhcosc6318@list.prudentlearning.com>; Sat, 25 Feb 2006 03:26:42 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 378A7F980
	for <uhcosc6318@list.prudentlearning.com>; Sat, 25 Feb 2006 05:26:38 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k1PBQc104761
	for uhcosc6318@list.prudentlearning.com; Sat, 25 Feb 2006 05:26:38 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200602251126.k1PBQc104761@leibnitz.cs.uh.edu>
Subject: Copying Objects (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Sat, 25 Feb 2006 05:26:38 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Hi Venkat,
>
>I have questions about copying objects.  I understand that in java the best 
>way to copy objects is to invoke a protected copy constructor from the 
>clone method, but how do you implement this in C++ and C#?  
>Are there methods similar to clone?  

In C# it is similar to Java. In C++ the approach is similar except there
is not predefined Cloneable interface.

>I think you also said another option is to not provide the capability  to 
>copy objects.  Would you do this by providing an empty copy constructor 
>to override the default copy constructor?  What would you need to do 
>different in your code if you can not copy objects?
>
>Thanks,

In C++ you would declare (but not implement) a private copy constructor:

class MyClass
{
	//...

	private MyClass(const MyClass& other); // No implementation
};

Venkat

From vnkt6318@cs.uh.edu  Tue Feb 28 05:46:47 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id E51EDF97A; Tue, 28 Feb 2006 05:46:46 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 7EC46F96E; Tue, 28 Feb 2006 05:46:40 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id GNW31201
        for <uhcosc6318@list.prudentlearning.com>; Tue, 28 Feb 2006 03:46:01 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 69650F96E
	for <uhcosc6318@list.prudentlearning.com>; Tue, 28 Feb 2006 05:46:19 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k1SBkJD17486
	for uhcosc6318@list.prudentlearning.com; Tue, 28 Feb 2006 05:46:19 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200602281146.k1SBkJD17486@leibnitz.cs.uh.edu>
Subject: Unit Testing (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Tue, 28 Feb 2006 05:46:18 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: RO

>Venkat, 
>  
>  I am little confused about Unit Testing, this might be a repeated question, 
>sorry for that.

Hi

An inquisitive mind should not apologize.

> You said that Unit Testing is for testing the methods within a  class, so 
>why is that unit testing doesn't focus on private methods  (point put forth 
>by one of the student).
>  There are  chances that there might be some flaws in our private methods, 
>how are  they tested ?
>  
>  Thanks,

Private methods, fields, and properties can't be accessed by methods of
another class. So, unit testing these members, for one thing, will
force a lot of unit test to be written within the class, which is not ideal
- that breaks cohesion, increases the size of class as well.

Second, in Test First Development, you start out thinking about how someone
will use your code. Obviously, these will be call to mostly public methods
and some protected methods. After you make these tests work, you will
realize that you can make the methods smaller and more cohesive by
moving some parts of the methods into private methods. Often these private
methods emerge in the refactor part of Red-Green-Refactor. These are
getting unit tested as part of the tests that lead to this refactoring
and so rarely require separete unit tests.

There are some situations where it makes sense to write unit tests on
private methods or members. In those cases, you need to find some
work arounds to writing these unit tests - like writing them as
static inner classes in Java (similar in earlier verison of C#) or
using the InternalVisibleTo in .NET 2.0 and making the members friendly.

Good question. I hope this addresses your confusion/concerns?

Venkat

From vnkt6318@cs.uh.edu  Wed Mar  1 05:47:51 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id E195EF981; Wed,  1 Mar 2006 05:47:50 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 9C481F979; Wed,  1 Mar 2006 05:47:46 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id FOT28110
        for <uhcosc6318@list.prudentlearning.com>; Wed, 1 Mar 2006 03:44:10 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 783EAF97B
	for <uhcosc6318@list.prudentlearning.com>; Wed,  1 Mar 2006 05:44:23 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k21BiNr20613
	for uhcosc6318@list.prudentlearning.com; Wed, 1 Mar 2006 05:44:23 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200603011144.k21BiNr20613@leibnitz.cs.uh.edu>
Subject: Question regarding our project (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Wed, 1 Mar 2006 05:44:23 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>venakt,
>  we are working on ...deleted... (our group project)
>  will "create account" and "create new account" be 2 diferent use cases?
>   
>  create new account:  when a new customer comes in and gets an account.
>  create account :  existing customer opens another account.
>   
>  or can we have "create account" as an alternate path for "create new account" use case?
>   
>  Regards,

The general rule of thumb I will use is
If it is easier to explain and get clarification by keeping them separate,
keep them separate, you can merge them later if needed.

If it is easier to explain and get clarification by keeping them together,
then keep the together, you can separate later if needed.

Keep the objective in mind - it is to develop a model that allows you to
communicate and get an good understanding and clarification on the requirement.

Venkat

From vnkt6318@cs.uh.edu  Wed Mar  1 05:48:04 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 10632F984; Wed,  1 Mar 2006 05:48:04 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 2EE13F979; Wed,  1 Mar 2006 05:47:56 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id FOW87516
        for <uhcosc6318@list.prudentlearning.com>; Wed, 1 Mar 2006 03:47:16 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 619E8F979
	for <uhcosc6318@list.prudentlearning.com>; Wed,  1 Mar 2006 05:47:35 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k21BlZJ20623
	for uhcosc6318@list.prudentlearning.com; Wed, 1 Mar 2006 05:47:35 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200603011147.k21BlZJ20623@leibnitz.cs.uh.edu>
Subject: Indentifying Actor in USE case (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Wed, 1 Mar 2006 05:47:35 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Hello Venkat ,
>
>I have a doubt regarding the actors in the USE CASE.
>My project is the ...deleted...
>
>In the project , we have a module called Sales Order Processing(SOP) , in
>which all the post sales processing is done . 

Is that putting the cart before the horse? Do you need to know about
these module(s) at this stage?

>The user interaction is very
>less, but this module provides service to other modules . In this module
>the system does many things automatically , like changing the status of
>the order, interacting with the Inventry module, with WMS module etc.
>
>So for specifying such use cases , can we have here the System as an actor?
>
>Regards

There you go, this confirms that you have indeed put the cart before
the horse. Is this perceived module external to your application
or is part of your application. Is this module your application?

We are interested in finding actors for our application. So, what is
the application?

Venkat

From vnkt6318@cs.uh.edu  Thu Mar  9 12:54:16 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 36570F9A2; Thu,  9 Mar 2006 12:54:16 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 5E5ACF997; Thu,  9 Mar 2006 12:54:10 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id NVJ78109
        for <uhcosc6318@list.prudentlearning.com>; Thu, 9 Mar 2006 10:52:09 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id DFE73F9A5
	for <uhcosc6318@list.prudentlearning.com>; Thu,  9 Mar 2006 12:52:27 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k29IqRh01579
	for uhcosc6318@list.prudentlearning.com; Thu, 9 Mar 2006 12:52:27 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200603091852.k29IqRh01579@leibnitz.cs.uh.edu>
Subject: Use Case actors (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Thu, 9 Mar 2006 12:52:27 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

This was on my undergraduate course mailing list, but relevant to this
course as well...

>Hello Venkat,
>
>I have a question about what can be cosidered an actor.  Can another system 
>be considered an actor?  For example: If I want to graph a function in 
>Matlab, and I use my system to do some calculations needed for the graph, 
>can Matlab be cosidered an actor?  If not how would I model a situation 
>like this?
>
>Thanks,

If a system is external to your system, then you can consider it an actor.
If the system is an implementation used within your system (and the
one you may replace with an alternate implementation if you choose)
then it is not an actor.

Ask if the system is using your application or is used by your application.
It is an actor if it is former, not if it is latter.

Venkat

From vnkt6318@cs.uh.edu  Thu Mar  9 12:54:28 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id CB7E6F9A2; Thu,  9 Mar 2006 12:54:27 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id BBB79F997; Thu,  9 Mar 2006 12:54:20 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id NVJ84324
        for <uhcosc6318@list.prudentlearning.com>; Thu, 9 Mar 2006 10:52:24 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 1C6AFF9A3
	for <uhcosc6318@list.prudentlearning.com>; Thu,  9 Mar 2006 12:52:43 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k29IqhL01587
	for uhcosc6318@list.prudentlearning.com; Thu, 9 Mar 2006 12:52:43 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200603091852.k29IqhL01587@leibnitz.cs.uh.edu>
Subject: Robert Martin Article (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Thu, 9 Mar 2006 12:52:42 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

This was on my undergraduate course mailing list, but relevant to this
course as well...

>Hello Venkat,
>
>I have looked for the "Quality of Use Cases" article by Robert Martin, and 
>I can not find it.  Am I looking for the correct thing?  
>
>Thanks,

Please take a look at the following:

http://www.artima.com/weblogs/viewpost.jsp?thread=6537
http://www.objectmentor.com/resources/articles/Use_Cases_UFJP.pdf

Venkat

From vnkt6318@cs.uh.edu  Thu Mar  9 12:59:33 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id E54C7F9A3; Thu,  9 Mar 2006 12:59:32 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 86637F997; Thu,  9 Mar 2006 12:59:22 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id NVO60947
        for <uhcosc6318@list.prudentlearning.com>; Thu, 9 Mar 2006 10:57:47 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 76149F997
	for <uhcosc6318@list.prudentlearning.com>; Thu,  9 Mar 2006 12:58:05 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k29Iw5N01626
	for uhcosc6318@list.prudentlearning.com; Thu, 9 Mar 2006 12:58:05 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200603091858.k29Iw5N01626@leibnitz.cs.uh.edu>
Subject: DRY principle and constructors (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Thu, 9 Mar 2006 12:58:05 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>I was just doing some thinking about DRY while refactoring some code and
>came across a thought:
>
>Suppose you have 2 classes, call them class A and class B.  B inherits from
>A.  Then for B, you need a new constructor (because it has maybe a couple of
>different members), but you have no way to call the super.constructor (the
>language just does not have this capability).

Which language?

>Now, you certainly don't want to repeat the code from A in B.  Would the
>best thing to do be to create a protected method in A that would be called
>in the constructor for both classes, or is there something else to be done?

Most languages I know of has a way for you to invoke the constructor of
base while invoking constructor of derived. If you give me a specific
example (and mentioned the language!) I can help further.

Venkat

From vnkt6318@cs.uh.edu  Thu Mar  9 13:10:49 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id C045AF9A0; Thu,  9 Mar 2006 13:10:48 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 5ECA1F9A2; Thu,  9 Mar 2006 13:09:54 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id NWR98426
        for <uhcosc6318@list.prudentlearning.com>; Thu, 9 Mar 2006 11:08:26 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 11FF8F9AA
	for <uhcosc6318@list.prudentlearning.com>; Thu,  9 Mar 2006 13:08:45 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k29J8jH01665
	for uhcosc6318@list.prudentlearning.com; Thu, 9 Mar 2006 13:08:45 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200603091908.k29J8jH01665@leibnitz.cs.uh.edu>
Subject: entry and exit points (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Thu, 9 Mar 2006 13:08:44 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Hello,
>just wondering on something u mentioned in class, that u prefer to have one 
>entry and one exit point for a function.. is that only a habbit of yours, 
>or does it have a purpose.. because i find it very easier and flexible to 
>have mutiple returns, for example, in a function..
>Thanx

I generally try to have purpose for my habits! :)

The idea of single-entry and single-exit for control structures is
promoted by the structured programming concepts, often attributed to
Dijkstra. It makes it easier to understand and maintain code when you 
follow this.

It is not important to make it easier to write code. It is more important
to make it easier to read and maintain it.

Venkat

From vnkt6318@cs.uh.edu  Sun Mar 12 03:40:50 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 2BD53F980; Sun, 12 Mar 2006 03:40:50 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 27A9CF97C; Sun, 12 Mar 2006 03:40:40 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id QMK54637
        for <uhcosc6318@list.prudentlearning.com>; Sun, 12 Mar 2006 01:24:37 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 5C346F97B
	for <uhcosc6318@list.prudentlearning.com>; Sun, 12 Mar 2006 03:24:31 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k2C9OV808727
	for uhcosc6318@list.prudentlearning.com; Sun, 12 Mar 2006 03:24:31 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200603120924.k2C9OV808727@leibnitz.cs.uh.edu>
Subject: Regarding UI (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Sun, 12 Mar 2006 03:24:30 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Dear Dr.Venkat,

Hi

Ah, you can drop that Dr. stuff.

>This is regarding our project (...) where in we have different actions 
>performed by customer, staff and teller. We are trying to develop UI. 
>Its like we have to develop different forms for each action performed by 
>an actor. 
>
>Is it a good practice to have the UI for the complete application in one 
>project or can we split the UI into different projects, like one project 
>deals with customer UI other deals with staff and one more UI deals with 
>the teller?

It is a good idea to have separation of concerns. You certainly should
consider having the control tier separated out from the UI tier.
As far as the UI tear, you can start out as one project. As you are 
desining and implementing, if you see a good benefit for separation,
then feel free to separate the UI into projects. You may also benefit
from creating a sharable UI tier as well, if that helps in any way.

>and 
>
>We were planning to use Win forms ( c# ) for doing this. Do you think it 
>would be better if we implement it in ASP.NET?  ( We have the online 
>banking feature for customer).
>
>Regards

If it is online feature, I would be more included towards a web based
instead of windows based. However, for this course, it really does not
matter as the focus is not in the actual application feature, but in
the design and process.

Venkat

From vnkt6318@cs.uh.edu  Sun Mar 12 03:41:00 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 81269F97C; Sun, 12 Mar 2006 03:40:59 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 5437EF97F; Sun, 12 Mar 2006 03:40:49 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id QMA14007
        for <uhcosc6318@list.prudentlearning.com>; Sun, 12 Mar 2006 01:40:07 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 532FBF97C
	for <uhcosc6318@list.prudentlearning.com>; Sun, 12 Mar 2006 03:40:25 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k2C9eP608756
	for uhcosc6318@list.prudentlearning.com; Sun, 12 Mar 2006 03:40:25 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200603120940.k2C9eP608756@leibnitz.cs.uh.edu>
Subject: RE: DRY principle and constructors (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Sun, 12 Mar 2006 03:40:25 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>The language is cold fusion.  There are actually no "constructors," really
>(any code not inside a method is executed once when the object is
>instantiated).  So really, the constructor I'm talking about is just a
>method called "init" that I use as a constructor (I call it immediately when
>the object is instantiated).  Of course I could call the parent-class init
>method, but in doing so, it would just create an instance of the parent.

Alright, you got me there. I am not a CF guy. But, that does not stop
me from commenting :)

If you are calling init "after" creating an object, why would calling
the base's init create another object of base?

>I just assumed there were languages out there other than this where one
>might come into the problem of not being able to call the parent's
>constructor to set the parent's member variables, and then not be able to
>instantiate its own, so I tried to make it general in case anyone else was
>having the same problem.  I suppose I could also use the
>"pseudo-constructor" area as they call it and see what happens, but I liked
>the idea of having an actual method.

No, I favor going the init() route, and I think that should actually work.

May be some CF expert on the list can comment further.

>Originally, cold fusion wasn't object oriented at all, but with the later
>releases, they've added OO functionality.  I use it a lot at work, and this
>class has sort of inspired me, so I've been redoing a lot of our old code
>(which was written before they added this capability) taking advantage of
>the new features.
>
>
>
>-----Original Message-----
>From: vnkt6318@cs.uh.edu [mailto:vnkt6318@cs.uh.edu]
>Sent: Thursday, March 09, 2006 12:58 PM
>To: COSC 6318 Mailing List
>Subject: DRY principle and constructors (fwd)
>
>
>>I was just doing some thinking about DRY while refactoring some code and
>>came across a thought:
>>
>>Suppose you have 2 classes, call them class A and class B.  B inherits from
>>A.  Then for B, you need a new constructor (because it has maybe a couple
>of
>>different members), but you have no way to call the super.constructor (the
>>language just does not have this capability).
>
>Which language?
>
>>Now, you certainly don't want to repeat the code from A in B.  Would the
>>best thing to do be to create a protected method in A that would be called
>>in the constructor for both classes, or is there something else to be done?
>
>Most languages I know of has a way for you to invoke the constructor of
>base while invoking constructor of derived. If you give me a specific
>example (and mentioned the language!) I can help further.
>
>Venkat

From vnkt6318@cs.uh.edu  Sun Mar 12 04:09:17 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id C1B0BF97F; Sun, 12 Mar 2006 04:09:16 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 3BB70F97C; Sun, 12 Mar 2006 04:09:12 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id QNT85957
        for <uhcosc6318@list.prudentlearning.com>; Sun, 12 Mar 2006 02:07:57 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id D5246F97D
	for <uhcosc6318@list.prudentlearning.com>; Sun, 12 Mar 2006 04:08:15 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k2CA8FU08798
	for uhcosc6318@list.prudentlearning.com; Sun, 12 Mar 2006 04:08:15 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200603121008.k2CA8FU08798@leibnitz.cs.uh.edu>
Subject: Unit Testing in TicTacToe example (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Sun, 12 Mar 2006 04:08:15 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Venkat,
>
>First, I have to say that I have yet to watch the prerecorded lecture (I
>plan to this weekend) so if these questions are addressed there, feel free
>to ignore them. =)
>
>I noticed in the TicTacToe example that we never did any performance
>testing.  Is this simply because performance isn't really an issue in our
>example?  Can you give an example of how you might test performance using
>JUnit?  Is there some method like "assertExecutesInUnder(int);"  where the
>int is some unit of time?

Hi

Very good question. Couple of things before we get to the direct answer
to your question.

"Premature Optimization is the Root of All Evil," said Tony Hoare.

You want to focus on performance where there really is concern and when
you have the concern.

Having said that, you really want to make sure some low level critical 
code has the necessary performance. This may be critical in the implementation
of certain logic.

Mike Clark has implemented a JUnit Extension called JUnitPerf to take
care of your need. One of my students (Radha Kartala) implemented an
extension to NUnit (for .NET) based on this idea.

An example is worth providing for this. Download it from
http://www.cs.uh.edu/~svenkat/spring2006OOAD/examples.

>Also, do exception testing and negative testing go hand in hand?  I noticed
>for every one of our negative tests, we were testing that expected
>exceptions were thrown.  Can you give an example to highlight the
>differences between the two, if any?
>
>Thanks for your help,

It is possible (and at times favorable) that a method may return a result 
instead of throwing an exception. In these cases, you are not really going
to look for expected exception, instead the expected behavior which is
what you are looking for in negative test when the input is invalid.
I look at negative test as testing for invalid parameters or inputs.
Exception test on the other hand is testing more of the invalid preconditions
when a method is called and also looking for proper exceptions being thrown.
They are similar but not the same.

Venkat

From vnkt6318@cs.uh.edu  Sun Mar 12 05:20:06 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 37366F97D; Sun, 12 Mar 2006 05:20:06 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 7846DF97B; Sun, 12 Mar 2006 05:19:59 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id QOF54612
        for <uhcosc6318@list.prudentlearning.com>; Sun, 12 Mar 2006 03:19:12 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id D050BF97B
	for <uhcosc6318@list.prudentlearning.com>; Sun, 12 Mar 2006 05:19:30 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k2CBJUp08882
	for uhcosc6318@list.prudentlearning.com; Sun, 12 Mar 2006 05:19:30 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200603121119.k2CBJUp08882@leibnitz.cs.uh.edu>
Subject: Test Cases for Interfaces (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Sun, 12 Mar 2006 05:19:30 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>I am not sure where it fits in the tic tac toe example, but I would like 
>to know how to use JUnit to test all implementations of an interface. 
>Sometimes, one can write a test case for an interface and have it apply 
>for all implementations. It would be difficult to inherit the test case 
>for each implementing class if that class implements several interfaces. 
>I would like to write one test case for my interface and apply the test 
>to all implementing classes without having to add code to each of the 
>test cases for those classes.
>
>Here is an example in Java.
>interface Collection
>{
>	public void add(Object o);
>	public int size();
>}
>
>Test case:
>class CollectionTest extends TestCase
>{
>public void testSize()
>{	
>	for (int i = 0; i < 100; ++i)
>	{
>		assertEquals(i, _testCollection.size());
>		_testCollection.add(new Integer(i));
>	}
>}
>}
>
>I can write several implementations: Vector, Set, LinkedList, etc. This 
>test case and others I can write are valid for each of these 
>implementations.
>
>I could implement this as follows:
>class VectorTest extends CollectionTest
>{	
>	protected void setUp() throws Exception
>	{
>		super._testCollection = new Vector();
>	}
>}
>
>Here I have the problem that Vector could implement several interfaces. 
>I could also use delegation to a CollectionTest object, but I would have 
>to write a test method for every method I want to test in every 
>implementation. If I add a Collection test method, I would have to 
>change all my test cases, which I would prefer not to do.
>
>What else could I do to solve this problem better?

I have an example to illustrate this at:

http://www.cs.uh.edu/~svenkat/spring2006OOAD/examples

Venkat

From vnkt6318@cs.uh.edu  Mon Mar 20 04:26:55 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id D5208F984; Mon, 20 Mar 2006 04:26:54 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 5723FF979; Mon, 20 Mar 2006 04:26:47 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id YNY73426
        for <uhcosc6318@list.prudentlearning.com>; Mon, 20 Mar 2006 02:04:26 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id DE6ACF979
	for <uhcosc6318@list.prudentlearning.com>; Mon, 20 Mar 2006 04:04:46 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k2KA4kU13485
	for uhcosc6318@list.prudentlearning.com; Mon, 20 Mar 2006 04:04:46 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200603201004.k2KA4kU13485@leibnitz.cs.uh.edu>
Subject: Recording for the missed class
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Mon, 20 Mar 2006 04:04:46 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

Greetings,

For the last class I missed, I mentioned that I will post a recording.
I have decided to post pone that until later to post on some what
related, yet isolated topic from the flow of content we have.

I will email you when I post that.

I have posted a new slide on refactoring. Please download that
for use in class today.

Regards,

Venkat

From vnkt6318@cs.uh.edu  Mon Mar 20 05:26:25 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id E66E5F981; Mon, 20 Mar 2006 05:26:24 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 9928DF979; Mon, 20 Mar 2006 05:26:20 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id YOS51549
        for <uhcosc6318@list.prudentlearning.com>; Mon, 20 Mar 2006 03:24:49 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 8D7F2F981
	for <uhcosc6318@list.prudentlearning.com>; Mon, 20 Mar 2006 05:24:42 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k2KBOg113776
	for uhcosc6318@list.prudentlearning.com; Mon, 20 Mar 2006 05:24:42 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200603201124.k2KBOg113776@leibnitz.cs.uh.edu>
Subject: Assignment 1 posted...
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Mon, 20 Mar 2006 05:24:42 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

Greetings,

Assignment 1 has been posted. Enjoy.

Venkat

From vnkt6318@cs.uh.edu  Mon Mar 20 20:15:13 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 50A7CF98C; Mon, 20 Mar 2006 20:15:12 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 939CEF985; Mon, 20 Mar 2006 20:14:58 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id ZFH29640
        for <uhcosc6318@list.prudentlearning.com>; Mon, 20 Mar 2006 18:12:40 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 7A5AFF96E
	for <uhcosc6318@list.prudentlearning.com>; Mon, 20 Mar 2006 20:13:00 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k2L2D0M15777
	for uhcosc6318@list.prudentlearning.com; Mon, 20 Mar 2006 20:13:00 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200603210213.k2L2D0M15777@leibnitz.cs.uh.edu>
Subject: Question regarding assignment 1 (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Mon, 20 Mar 2006 20:13:00 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Venkat,
>
>In the text file for assignment 1 you have written: 
>
>"For example, assume the program has choosen the colors:
>Red, Blue, White, Brown, Pink.
>
>Here is a sequence of input from the user and the resonse from the
>program:
>
>
>Input    
>Cyan, Brown, Pink, Green, Yellow
>
>Response
>White, White, Red, Red, Red"
>
>Shouldn't the computer's response instead be Red, White, White, Red, Red?
>
>Thanks,

The response is the way it is so that it does not reveal the 
position where you have the match or presence of a correct color.

Venkat

From vnkt6318@cs.uh.edu  Mon Mar 20 20:15:21 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 3E9DCF985; Mon, 20 Mar 2006 20:15:21 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id A1E3CF98A; Mon, 20 Mar 2006 20:15:07 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id ZFJ39027
        for <uhcosc6318@list.prudentlearning.com>; Mon, 20 Mar 2006 18:14:27 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 3287BF96E
	for <uhcosc6318@list.prudentlearning.com>; Mon, 20 Mar 2006 20:14:48 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k2L2Em615785
	for uhcosc6318@list.prudentlearning.com; Mon, 20 Mar 2006 20:14:48 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200603210214.k2L2Em615785@leibnitz.cs.uh.edu>
Subject: Code from today's lecture (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Mon, 20 Mar 2006 20:14:47 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Venkat,
>
>Could you please let me know where I can find the tictactoe code you 
>refactored during today's lecture?
>
>Thanks,

Hi,

I think it would be more useful to see the stages the code is
going through the refactoring. I have this already from a
presentation I gave a few weeks ago at HJUG. You can download it from

http://www.agiledeveloper.com/presentations/RefactoringYourCode.zip

Regards,

Venkat

From vnkt6318@cs.uh.edu  Tue Mar 21 07:50:55 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id A13B1F988; Tue, 21 Mar 2006 07:50:54 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 68205F97A; Tue, 21 Mar 2006 07:50:50 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id ZQS01540
        for <uhcosc6318@list.prudentlearning.com>; Tue, 21 Mar 2006 05:49:40 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 79FE2F96E
	for <uhcosc6318@list.prudentlearning.com>; Tue, 21 Mar 2006 07:50:00 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k2LDo0L16615
	for uhcosc6318@list.prudentlearning.com; Tue, 21 Mar 2006 07:50:00 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200603211350.k2LDo0L16615@leibnitz.cs.uh.edu>
Subject: Re: Question regarding assignment 1 (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Tue, 21 Mar 2006 07:50:00 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Venkat,
>
>Thanks for your timely response.  I think perhaps I get it now.
>
>So if the user got 1 correct color & position, 1 correct color, and 3 
>incorrect colors, the computer would respond with:
>
>Black, White, Red, Red, Red
>
>regardless of the positions in which the user got the 1 correct color & 
>position and the 1 correct color?
>
>Thanks,

Hi

Yep, you got it.

Venkat

From vnkt6318@cs.uh.edu  Tue Mar 21 07:58:15 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 33657F989; Tue, 21 Mar 2006 07:58:15 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id BA0A6F986; Tue, 21 Mar 2006 07:58:10 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id ZQZ37534
        for <uhcosc6318@list.prudentlearning.com>; Tue, 21 Mar 2006 05:56:34 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 07D41F97E
	for <uhcosc6318@list.prudentlearning.com>; Tue, 21 Mar 2006 07:56:46 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k2LDujp16644
	for uhcosc6318@list.prudentlearning.com; Tue, 21 Mar 2006 07:56:45 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200603211356.k2LDujp16644@leibnitz.cs.uh.edu>
Subject: answer to challenge from class
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Tue, 21 Mar 2006 07:56:45 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

Two people responded with correct reasoning.
One response had a unit test to illustrate it, the other was
pretty good in explaning. I think both of them deserve a bonus point.

In C++, calls to virtual (polymorhic) methods from within a constructor
are not routed to the derived class. In Java and C#, calls to polymorphic
methods are routed to the derived class even when they are called in the
base class's constructor.

For example

class Base
{
public:
	Base() { foo(); }
	virtual void foo() { }
};

class Derived : public Base
{
public:
	Derived() {}
	virtual void foo() {}
};

when you create new Derived(), the Base() constructor will not call
derived foo() in C++. However, the equivalent code in Java and C# will
result in calling foo of Derived before the constructor of Derived is called.

There is yet another difference between C# and Java.

In C# the derived fields are initialized before base fields are initialized.
As a result the code example I showed in class will not be a problem if written
in C# (but a slight variation of it - initializing the value in constructor)
will lead to problem however even in C#.

If you are interested in seeing a full example of this in C++, C#, and Java
send me an email and I will be glad to post an example for you.

I will also forward the response from two people who got this right.

Venkat

From vnkt6318@cs.uh.edu  Tue Mar 21 07:58:31 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 4A188F989; Tue, 21 Mar 2006 07:58:31 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id A2E80F986; Tue, 21 Mar 2006 07:58:26 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id ZQA06211
        for <uhcosc6318@list.prudentlearning.com>; Tue, 21 Mar 2006 05:57:11 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 32222F988
	for <uhcosc6318@list.prudentlearning.com>; Tue, 21 Mar 2006 07:57:32 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k2LDvWH16652
	for uhcosc6318@list.prudentlearning.com; Tue, 21 Mar 2006 07:57:32 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200603211357.k2LDvWH16652@leibnitz.cs.uh.edu>
Subject: Analysis of buttons array error observed in class today (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Tue, 21 Mar 2006 07:57:32 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

Venkat,



I have thought about the problem observed with the buttons array in class 
today (the one you challenged us to figure out).  I played around in Eclipse 
with some simple dummy classes and an inheritance heirarchy, and it seems 
that Java will always call the superclass's constructor first, before 
executing any of the subclass's explicit member variable initialization 
statements.  In the TickTackToeFrame case today, this execution sequence 
results in an error, since TickTackToe's superclass JFrame constructor calls 
TickTackToe's frameInit method, which then tries to access the buttons 
array, which hasn't been initialized yet.  Therefore frameInit throws a 
nullPointerException at the line "buttons[0][0] = createButton();" and that 
is why the unit tests fail.



I hope that I have uncovered the root cause of the problem.  Please let me 
know if I am close, or if you'd like me to elaborate further on my 
hypothesis.



Thanks,

...

From vnkt6318@cs.uh.edu  Tue Mar 21 07:58:41 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 1D827F989; Tue, 21 Mar 2006 07:58:41 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 87F15F986; Tue, 21 Mar 2006 07:58:36 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id ZQA95338
        for <uhcosc6318@list.prudentlearning.com>; Tue, 21 Mar 2006 05:57:38 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id E4B5DF98D
	for <uhcosc6318@list.prudentlearning.com>; Tue, 21 Mar 2006 07:57:59 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k2LDvxS16660
	for uhcosc6318@list.prudentlearning.com; Tue, 21 Mar 2006 07:57:59 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200603211357.k2LDvxS16660@leibnitz.cs.uh.edu>
Subject: Re: Code from today's lecture (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Tue, 21 Mar 2006 07:57:59 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

Here is the reason that your test cases failed when you had the code:
buttons[0][0] = button00 = createButton();

The array buttons was not properly initialized. This is because the code 
had an instance initializer defined. Normally, this works.

Here, however, the above code was in the protected frameInit() method. 
That method is called in the constructor of the super class JFrame. The 
initialization of the derived class's attribute does not happen until 
before its class's constructor is called, but the super's constructor is 
called first. This is better explained in the following sequence of events:

It is like this:
main()
...
0: new TicTacToeFrame().


public class JFrame
{
1:	public JFrame()
	{
		...
2:		frameInit()
	}

	protected frameInit(){...}
}

public class TicTacToeFrame extends JFrame
{
4:	JButton[][] _buttons = new JButton[3][3]

5:	public TicTacToeFrame() {}

	@Override
	protected frameInit()
	{
3:		_buttons... //Not initialized, yet.
	}
}
}


The attached source file contains 2 unit tests illustrating this problem.

This problem does not occur in C++ because C++ does not route virtual 
function calls in the constructor to derived classes. A virtual call in 
the constructor is directed to the base classes and ignores the current 
class's implementation.

...

import junit.framework.TestCase;
import junit.textui.TestRunner;

public class RefactoringExample extends TestCase
{
  private abstract static class Super
  {
    public Super()
    {
      init();
    }

    protected abstract void init();
    }

  private static class FailInit extends Super
  {
    Object[] tArray = new Object[3];
    Object _obj;

    public Object makeObject()

    {
      return "Object";
    }

    @Override
    protected void init()
    {
      tArray[0] = _obj = makeObject();
    }
  }

  private static class PassInit extends Super
  {
    Object[] tArray;
    Object _obj;

    public Object makeObject()
    {
      return "Object";
    }

    @Override
    protected void init()
    {
      tArray = new Object[3];
      tArray[0] = _obj = makeObject();
    }
  }

  private Super _testObject;

  public static void main(String[] args)
  {
    TestRunner.run(RefactoringExample.class);
  }

  public void testNullArrayReferenced()
  {
    try
    {
      _testObject = new FailInit();
      _testObject.hashCode();
      fail("Should throw null pointer exception.");
    }
    catch (NullPointerException e)
    {
      // OK
    }
  }

  public void testArrayCorrectlyReferenced()
  {
    _testObject = new PassInit();
    assertNotNull(_testObject);
  }

}

From vnkt6318@cs.uh.edu  Thu Mar 23 05:30:22 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id C9F9DF98D; Thu, 23 Mar 2006 05:30:21 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 0E3B5F986; Thu, 23 Mar 2006 05:30:15 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id AOZ76559
        for <uhcosc6318@list.prudentlearning.com>; Wed, 22 Mar 2006 03:29:59 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 3A0EAFDD3
	for <uhcosc6318@list.prudentlearning.com>; Wed, 22 Mar 2006 05:29:48 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k2MBTmY22809
	for uhcosc6318@list.prudentlearning.com; Wed, 22 Mar 2006 05:29:48 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200603221129.k2MBTmY22809@leibnitz.cs.uh.edu>
Subject: Doubts regarding Arrays in C# and Java (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Wed, 22 Mar 2006 05:29:48 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Venkat,
>
>Lets assume we have a "class A" and you do the
>following in C#..
>
>A[,] obj = new A[3][3]; // Are we creating a double
>dimensional array of objects here.. 
>
>Yesterday I had a concern and I felt that obj[0,0] ...
>obj[2,2] is a reference which is not initialized... If
>I remember right, you said that it is an initialized
>reference.. 
>
>I was still not convinced and hence  I tried writing a
>simple program to clarify the same.. I am attaching
>the class file.. I found out that when you try to
>create objects using A[,] obj = new A[3][3], the
>constructor is not getting called... Unless we
>instantiate the reference using obj[i][j] = new A()
>for each of the individual elements, I assume its an
>invalid reference... I would like to know if this is
>the way it works in C# and Java..
>
>...
>
>using System;
>
>namespace _2DArrays
>{
>	/// <summary>
>	/// Summary description for Class1.
>	/// </summary>
>	
>	class TrialBase
>	{
>		public TrialBase()
>		{
>			Console.WriteLine("Constructor of trial base class getting called");		
>		}
>	}
>	class TrialDerived
>	{
>		public TrialDerived()
>		{
>			Console.WriteLine("Constructor of trial derived getting called");
>		}
>	}
>	class Arrays2D
>	{
>		private int[,] a;
>		private TrialDerived[,] tr;
>		/// <summary>
>		/// The main entry point for the application.
>		/// </summary>
>		/// 
>
>		Arrays2D()
>		{
>			tr = new TrialDerived[3,3]; // Constructor of trial derivednever gets called when u do this and hence tr[0][0] is an invalid reference
>
>			/* To actually make the reference valid this has to be done */
>			
>			
>			for(int i = 0; i < 3; i++)
>			{
>				for(int j = 0; j < 3; j++)
>				{
>					tr[i,j] = new TrialDerived();
>				}
>			}
>			
>			// For integer it works.. not sure when the integer object is constructed
>			a = new int[3,3];
>			a[0,0] = 1;
>			Console.WriteLine("The value is {0}",a[0,0]);
>		}
>
>		[STAThread]
>		static void Main(string[] args)
>		{
>			//
>			// TODO: Add code to start application here
>			//
>			Arrays2D obj = new Arrays2D();
>		}
>	}
>}

I mentioned that "the array elements not being initialized" is not a problem.

If you remember the first thing I did in frameInit is to assign to
buttons[0][0]. I am not using what's in element 0, 0 (which is initialized
to null in Java and C#). So, it does not matter if it is initialized or not
as I am assigning to it first. 

The problem is quite different (as discussed in earlier emails) and not 
relevant to the concern you had.

Venkat

From vnkt6318@cs.uh.edu  Thu Mar 23 05:30:24 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 7E7DCF986; Thu, 23 Mar 2006 05:30:24 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 3B2F6F97D; Thu, 23 Mar 2006 05:30:18 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id AEP20326
        for <uhcosc6318@list.prudentlearning.com>; Tue, 21 Mar 2006 17:45:26 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id E8A72FB08
	for <uhcosc6318@list.prudentlearning.com>; Tue, 21 Mar 2006 19:45:45 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k2M1jiu21568
	for uhcosc6318@list.prudentlearning.com; Tue, 21 Mar 2006 19:45:44 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200603220145.k2M1jiu21568@leibnitz.cs.uh.edu>
Subject: Tell, Don't Ask (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Tue, 21 Mar 2006 19:45:44 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Did I get that right? (because this may be a stupid question if I have it
>wrong)
>
>I was just wondering if you could provide some example of what would be
>telling rather than asking.  The reason I ask (maybe I should be telling!)
>is that it seems to me that any time you have a method that returns a
>result, you are "asking" for that result.  If you followed this principle to
>its extreme, you would be passing variables by reference to all methods and
>telling them to put the return value in that memory spot.  Instead of asking
>a method to return some query results, you would be telling it to do the
>query and display those results.
>
>Of course, you could go the other way and say "I am telling the method to do
>its work and give me a result," but that seems more like asking to me (as I
>mentioned above) and seems to be stretching it a bit.  In any case, because
>of these issues I've mentioned, I've gotten sort of lost as to what is
>telling vs. asking.  If you could provide a couple of quick examples, it
>would be much appreciated.

Just about anything taken to extremes become a problem.

For examples you may want to read and refer to the paper boy example 
on page 2 at http://www.pragmaticprogrammer.com/articles/jan_03_enbug.pdf

Venkat

From vnkt6318@cs.uh.edu  Thu Mar 23 18:18:18 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id EE005F98B; Thu, 23 Mar 2006 18:18:17 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id C1B25F97F; Thu, 23 Mar 2006 18:18:12 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id CDO59353
        for <uhcosc6318@list.prudentlearning.com>; Thu, 23 Mar 2006 16:16:53 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 91326F97F
	for <uhcosc6318@list.prudentlearning.com>; Thu, 23 Mar 2006 18:17:15 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k2O0HFP08538
	for uhcosc6318@list.prudentlearning.com; Thu, 23 Mar 2006 18:17:15 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200603240017.k2O0HFP08538@leibnitz.cs.uh.edu>
Subject: Chain of calls (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Thu, 23 Mar 2006 18:17:15 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Hi venkat ,
>
>A basic question. Yesterday in class , one indication of code which smells
>was to have a chain of function calls.
>I assume it should be something like function X( ) calls Y( ) which in turn
>calls Z( ) and so on. Why is this bad ? and what are the alternatives to
>this ? Slightly confused since one of the goals is to be as modular as
>possible.
>
>Thanks,

Hi

The example I gave in class is

foo(f1(someVar1, someVar2, f2(i, j), someVar3, someOtherVar);

This lacks brevity and is hard to understand what's going on. Lacks
readability. It may benefit from splitting that line into multiple lines.

Venkat

From vnkt6318@cs.uh.edu  Sat Mar 25 06:46:17 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id BF6A1F998; Sat, 25 Mar 2006 06:46:16 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 67768F986; Sat, 25 Mar 2006 06:46:12 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id DPS37511
        for <uhcosc6318@list.prudentlearning.com>; Sat, 25 Mar 2006 04:45:11 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 36C74F986
	for <uhcosc6318@list.prudentlearning.com>; Sat, 25 Mar 2006 06:45:34 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k2PCjYS12538
	for uhcosc6318@list.prudentlearning.com; Sat, 25 Mar 2006 06:45:34 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200603251245.k2PCjYS12538@leibnitz.cs.uh.edu>
Subject: Development Report expectations
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Sat, 25 Mar 2006 06:45:34 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

Please refer to the syllabus for details on what's expected
in the development report:
http://www2.cs.uh.edu/~svenkat/spring2006OOAD/syllabus.html

Below, I am providing more details on what is expected:

1. Talk about your architecture and show diagrams
2. Present UML class diagram with explanation. I am not expecting
        one diagram for the entire system or even diagrams of all classes. 
	Whatever you present say what part it is and why you have shown that part.
3. Present details of your development activity and process
        Note, do not talk about what could be done, but actually what you
        have actually done. 
4. Talk about any problems you faced and how you solved them or why you
        have not solved them.
5. Discuss any tools you have tried to use and how effective or not
        they have been for your team.
6. Any additional details you think will be of interest to report.

Venkat

From vnkt6318@cs.uh.edu  Sun Mar 26 12:13:53 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id A1888F99C; Sun, 26 Mar 2006 12:13:52 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 0E479F98B; Sun, 26 Mar 2006 12:13:48 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id EVM45358
        for <uhcosc6318@list.prudentlearning.com>; Sun, 26 Mar 2006 10:12:58 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 531BEF98B
	for <uhcosc6318@list.prudentlearning.com>; Sun, 26 Mar 2006 12:13:21 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k2QIDLM16880
	for uhcosc6318@list.prudentlearning.com; Sun, 26 Mar 2006 12:13:21 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200603261813.k2QIDLM16880@leibnitz.cs.uh.edu>
Subject: Three Tiers in Web/Database Applications (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Sun, 26 Mar 2006 12:13:21 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

Let me first say that you are asking some good questions and I 
am glad to see intelligent questions like this.

>Venkat,
>
>When dealing with web applications, you often have times when you are
>utilizing the web page as simply an interface to a database.  Take as an
>example, a simple contact (a person with whom you have a business
>relationship).  Contacts have a name, address, phone number, email, type of
>relationship, and notes (in this example).  You want to store your contacts
>in a database and be able to search for them and view them.
>
>In this case, there is no "control" class as I see it.  You simply insert,
>update, delete, search, and view contacts.  So basically the UI (web page)
>allows you to choose what you want to do.  You click a link or submit a
>form, the request is passed to the server, and any "control" class would
>just request the appropriate info from the database, or perform the
>appropriate insert/update/delete action.  Therefore, I'm wondering if it
>would be wise to just skip the control class altogether - just pass the form
>to the entity class and perform the requested action.  It seems like too
>much useless effort to create a middle class that simply provides getters
>and setters and that creates an object just to be sent to the database.
>
>The only drawback I see is that later on down the line, should you actually
>need some calculation, you would want to have the control class.  However,
>making it before you need it is like putting the cart before the horse,
>especially since you may never need it.
>
>Am I correct in my analysis, or should you always provide a control class,
>regardless of its "current" necessity?

The function of control is pretty thin and you are right in pointing that out.
In web applications, however, the request is often received by the control
and the response is presented by the view.

This is often referred to as Model II architecture. You don't want to 
clutter your code with presentation and processing. If you have to write
thin code (however thin it may be) to locate the model objects, you want to
keep this code separated from the presentation code that displays data.

Reger to the figures I have in
http://www.agiledeveloper.com/articles/JSPMVC.pdf

In ASP.NET 1.1 the code behind page (aspx.cs) acts as the thin layer of 
control while the aspx page acts as the view.

Certainly I would not build anything eloborate to being with and
let the control grow as you see the need.

>One last question:  I've been reading that unit testing databases (or the
>"data access layer") is quite an obstacle in unit testing.  Do you (or
>anyone else on the list) have suggestions or resources to read up on it?
>
>Thanks for your help,

You may look at frameworks like MockRunner, DBUnit for unit testing DB. 

Venkat

From vnkt6318@cs.uh.edu  Wed Mar 29 06:14:32 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id DD43FF98E; Wed, 29 Mar 2006 06:14:31 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 577B7F97F; Wed, 29 Mar 2006 06:14:27 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id HPQ62534
        for <uhcosc6318@list.prudentlearning.com>; Wed, 29 Mar 2006 04:13:34 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id B17E8F97F
	for <uhcosc6318@list.prudentlearning.com>; Wed, 29 Mar 2006 06:13:56 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k2TCDuo11251
	for uhcosc6318@list.prudentlearning.com; Wed, 29 Mar 2006 06:13:56 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200603291213.k2TCDuo11251@leibnitz.cs.uh.edu>
Subject: query regarding domain (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Wed, 29 Mar 2006 06:13:56 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Dear Dr.Venkat

Hi

Feel free to drop that Dr. stuff.

>  This is regarding our project Banking System. We have two actors the Teller 
>and Staff.
>   
>  This has nothing to deal with Project scores/Grades of Use Cases.
>   
>  When you evaluated our use cases for the project you raised up a question 
>"How is staff different from Teller, and why?". I was just curious to discuss 
>this part with you. 
>   
>  What we actually thought about Staff: The person who does things like 
>opening an account, orders checks, takes request for replacement of lost 
>debit cards, changes the customer details and stuff. 
>   
>  When it comes to Teller ( the person behind the glass case :-) ) : would 
>do all sorts of things like deposits, withdraw and transfers.
>   
>  We were initially confused on point like staff can do all the things which 
>a teller can do(its different for different banks), but later we thought we 
>would implement them separately. 
>   
>  Is it like we did not understand the domain properly? Can a staff do all 
>the work what a teller could do? Do you think we need to merge both staff and 
>teller into a single actor.
>   
>  Regards

I am no banking expert. It would be interesting to talk to someone and
find if there are really these two sets of "authority." I know that
there are a few things a Manager can do that other staff (tellers)
can't, but I am not sure if there is distinction between staff and teller.

Any one who knows a bit more about staffing and banking may be able to
shed some light?

Venkat

From vnkt6318@cs.uh.edu  Thu Mar 30 00:09:38 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id D57FCF96E; Thu, 30 Mar 2006 00:09:37 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 1B98FF985; Thu, 30 Mar 2006 00:09:33 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id IJM78106
        for <uhcosc6318@list.prudentlearning.com>; Wed, 29 Mar 2006 22:08:06 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 9E338F96E
	for <uhcosc6318@list.prudentlearning.com>; Thu, 30 Mar 2006 00:08:30 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k2U68UI16660
	for uhcosc6318@list.prudentlearning.com; Thu, 30 Mar 2006 00:08:30 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200603300608.k2U68UI16660@leibnitz.cs.uh.edu>
Subject: Staff or Teller
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Thu, 30 Mar 2006 00:08:30 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

Hi,

Thanks for the comments and clarification. I hope this helps the
team that asked the question.

Regards,

Venkat

>Hi Venkat,
>
>I have worked for a bank for two years back in my country.=20
>It seems to me ,from their job description, staff and teller is same. Norma=
>lly staff includes everybody of course and teller is-a- staff.
>
>But as you said there are managers who can approve some transaction that ar=
>e above a specific limit for a teller. For example I remember there would b=
>e times, when a teller would call one of the managers and he/she would ente=
>r his/her code to approve the transaction whatever it might be.(deposit, wi=
>re transfer, etc.. in big amounts)
>
>But other than that as far as Banking System Implementation goes, there is =
>not much difference. Of course there are many types of staff. For example, =
>customer representatives. Actually we have them here too, they are the ones=
> who has seperate booths and you sign up for them and wait. They can open a=
>ccounts, authorize some wire transfers (especially international ones), dis=
>cuss with you invesment plans and try to resolve any problem or dispute you=
> have about your account. But I am not sure if it is a good idea to impleme=
>nt all these for a Banking project.
>
>Hope this helps a little..
>
>----- Original Message -----=20
>From: <vnkt6318@cs.uh.edu>
>To: "COSC 6318 Mailing List" <uhcosc6318@list.prudentlearning.com>
>Sent: Wednesday, March 29, 2006 6:13 AM
>Subject: query regarding domain (fwd)
>
>
>> >Dear Dr.Venkat
>>=20
>> Hi
>>=20
>> Feel free to drop that Dr. stuff.
>>=20
>>>  This is regarding our project Banking System. We have two actors the Te=
>ller=20
>>>and Staff.
>>>  =20
>>>  This has nothing to deal with Project scores/Grades of Use Cases.
>>>  =20
>>>  When you evaluated our use cases for the project you raised up a questi=
>on=20
>>>"How is staff different from Teller, and why?". I was just curious to dis=
>cuss=20
>>>this part with you.=20
>>>  =20
>>>  What we actually thought about Staff: The person who does things like=
>=20
>>>opening an account, orders checks, takes request for replacement of lost=
>=20
>>>debit cards, changes the customer details and stuff.=20
>>>  =20
>>>  When it comes to Teller ( the person behind the glass case :-) ) : woul=
>d=20
>>>do all sorts of things like deposits, withdraw and transfers.
>>>  =20
>>>  We were initially confused on point like staff can do all the things wh=
>ich=20
>>>a teller can do(its different for different banks), but later we thought =
>we=20
>>>would implement them separately.=20
>>>  =20
>>>  Is it like we did not understand the domain properly? Can a staff do al=
>l=20
>>>the work what a teller could do? Do you think we need to merge both staff=
> and=20
>>>teller into a single actor.
>>>  =20
>>>  Regards
>>=20
>> I am no banking expert. It would be interesting to talk to someone and
>> find if there are really these two sets of "authority." I know that
>> there are a few things a Manager can do that other staff (tellers)
>> can't, but I am not sure if there is distinction between staff and teller=
>.
>>=20
>> Any one who knows a bit more about staffing and banking may be able to
>> shed some light?
>>=20
>> Venkat

From vnkt6318@cs.uh.edu  Fri Mar 31 05:18:54 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id C011CF99B; Fri, 31 Mar 2006 05:18:53 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 9DE48F994; Fri, 31 Mar 2006 05:18:47 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id JOT92148
        for <uhcosc6318@list.prudentlearning.com>; Fri, 31 Mar 2006 03:14:48 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 8261EF96E
	for <uhcosc6318@list.prudentlearning.com>; Fri, 31 Mar 2006 05:15:13 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k2VBFDS21042
	for uhcosc6318@list.prudentlearning.com; Fri, 31 Mar 2006 05:15:13 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200603311115.k2VBFDS21042@leibnitz.cs.uh.edu>
Subject: Re: Staff or Teller (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Fri, 31 Mar 2006 05:15:13 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

Thanks for the comments and clarification. We also
discussed about the same and we decided to merge the
staff and teller.. Thanks again for the
clarification.. 

--- vnkt6318@cs.uh.edu wrote:

> Hi,
> 
> Thanks for the comments and clarification. I hope
> this helps the
> team that asked the question.
> 
> Regards,
> 
> Venkat
> 
> >Hi Venkat,
> >
> >I have worked for a bank for two years back in my
> country.=20
> >It seems to me ,from their job description, staff
> and teller is same. Norma=
> >lly staff includes everybody of course and teller
> is-a- staff.
> >
> >But as you said there are managers who can approve
> some transaction that ar=
> >e above a specific limit for a teller. For example
> I remember there would b=
> >e times, when a teller would call one of the
> managers and he/she would ente=
> >r his/her code to approve the transaction whatever
> it might be.(deposit, wi=
> >re transfer, etc.. in big amounts)
> >
> >But other than that as far as Banking System
> Implementation goes, there is =
> >not much difference. Of course there are many types
> of staff. For example, =
> >customer representatives. Actually we have them
> here too, they are the ones=
> > who has seperate booths and you sign up for them
> and wait. They can open a=
> >ccounts, authorize some wire transfers (especially
> international ones), dis=
> >cuss with you invesment plans and try to resolve
> any problem or dispute you=
> > have about your account. But I am not sure if it
> is a good idea to impleme=
> >nt all these for a Banking project.
> >
> >Hope this helps a little..
> >
> >----- Original Message -----=20
> >From: <vnkt6318@cs.uh.edu>
> >To: "COSC 6318 Mailing List"
> <uhcosc6318@list.prudentlearning.com>
> >Sent: Wednesday, March 29, 2006 6:13 AM
> >Subject: query regarding domain (fwd)
> >
> >
> >> >Dear Dr.Venkat
> >>=20
> >> Hi
> >>=20
> >> Feel free to drop that Dr. stuff.
> >>=20
> >>>  This is regarding our project Banking System.
> We have two actors the Te=
> >ller=20
> >>>and Staff.
> >>>  =20
> >>>  This has nothing to deal with Project
> scores/Grades of Use Cases.
> >>>  =20
> >>>  When you evaluated our use cases for the
> project you raised up a questi=
> >on=20
> >>>"How is staff different from Teller, and why?". I
> was just curious to dis=
> >cuss=20
> >>>this part with you.=20
> >>>  =20
> >>>  What we actually thought about Staff: The
> person who does things like=
> >=20
> >>>opening an account, orders checks, takes request
> for replacement of lost=
> >=20
> >>>debit cards, changes the customer details and
> stuff.=20
> >>>  =20
> >>>  When it comes to Teller ( the person behind the
> glass case :-) ) : woul=
> >d=20
> >>>do all sorts of things like deposits, withdraw
> and transfers.
> >>>  =20
> >>>  We were initially confused on point like staff
> can do all the things wh=
> >ich=20
> >>>a teller can do(its different for different
> banks), but later we thought =
> >we=20
> >>>would implement them separately.=20
> >>>  =20
> >>>  Is it like we did not understand the domain
> properly? Can a staff do al=
> >l=20
> >>>the work what a teller could do? Do you think we
> need to merge both staff=
> > and=20
> >>>teller into a single actor.
> >>>  =20
> >>>  Regards
> >>=20
> >> I am no banking expert. It would be interesting
> to talk to someone and
> >> find if there are really these two sets of
> "authority." I know that
> >> there are a few things a Manager can do that
> other staff (tellers)
> >> can't, but I am not sure if there is distinction
> between staff and teller=
> >.
> >>=20
> >> Any one who knows a bit more about staffing and
> banking may be able to
> >> shed some light?
> >>=20
> >> Venkat

From vnkt6318@cs.uh.edu  Fri Mar 31 21:44:46 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id A582FF9B0; Fri, 31 Mar 2006 21:44:45 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 161E5F9A7; Fri, 31 Mar 2006 21:44:41 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id FHS03139
        for <uhcosc6318@list.prudentlearning.com>; Fri, 31 Mar 2006 19:43:39 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id CD856F9A7
	for <uhcosc6318@list.prudentlearning.com>; Fri, 31 Mar 2006 21:44:03 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k313i3p24154
	for uhcosc6318@list.prudentlearning.com; Fri, 31 Mar 2006 21:44:03 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200604010344.k313i3p24154@leibnitz.cs.uh.edu>
Subject: Question about Class Diagram (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Fri, 31 Mar 2006 21:44:03 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Venkat,
>
>I have a stupid question about class diagram.
>As you said we should separate classes into boundary, control, and entity
>classes. My question is how we gonna show these classes in the class
>diagram.
>
>Let me choose a banking system as an example.
>
>Suppose we have a class called Account which keeps information such as
>account no., account type (saving or checking), interest rate, balance
>amount, etc. To calculate interest for a customer, a banker clicks an
>calculate interest button. Then the Windows UI will call calculateInterest
>method of the control class. The calculateInterest method will call
>getAccount method of the entity class to query an account from database.
>Then the interest calculation will be performed by calculateInterest method
>in control class and return value to Windows UI.
>
>My understanding is, when we implement this system we should have two
>classes: AccountControl and AccountEntity, but the class diagram will show
>only one class, Account which has both methods (calculateInterest and
>getAccount) as its methods. Then I have second thought that may be we shoul=
>d
>show it in class diagram as two classes: AccountControl (with
>calculateInterest as its method) and AccountEntity (with getAccount as its
>method).
>
>My understanding may be all wrong. Could you please advise on this question=
>?
>
>Best Regards

If you decide to put both the methods in one class, then there is
not separate control and entity classes. If you decide to create
two classes, then yes, you have a control separated from the
entity. Now in reality, we may not deal with only two methods.
Other use cases may lead to other methods on these classes as well.

Regards,

Venkat

From vnkt6318@cs.uh.edu  Sat Apr  1 06:41:45 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 63981F9A2; Sat,  1 Apr 2006 06:41:45 -0600 (CST)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 92FCDF98E; Sat,  1 Apr 2006 06:41:40 -0600 (CST)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id FQC28124
        for <uhcosc6318@list.prudentlearning.com>; Sat, 1 Apr 2006 04:27:24 -0800
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 4141FF98E
	for <uhcosc6318@list.prudentlearning.com>; Sat,  1 Apr 2006 06:27:00 -0600 (CST)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k31CR0924731
	for uhcosc6318@list.prudentlearning.com; Sat, 1 Apr 2006 06:27:00 -0600 (CST)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200604011227.k31CR0924731@leibnitz.cs.uh.edu>
Subject: Re: Some questions related to our OOAD project (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Sat, 1 Apr 2006 06:26:59 -0600 (CST)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

> Hello Venkat,
>
> When we sat to discuss what all should go into the Development Report 
> which is due in another week, we came up with these following 
> questions. Can you please clarify them for us?

Hi, most certainly, I will try..

> 1.) In our use case report, we lost out some big points on the 
> description of functionality. We were assuming that we had defined the 
> functionality in terms of the actors' elaborate descriptions (who can 
> to do what) and the flow of events in the form of each usecase.
>
> Can you please tell us how functionality is to be defined so that we 
> can encorporate that in our Development Report.

No need to describe functionality in the development report.

> 2.) We also got a feedback that our use-case diagrams lacked 
> understandability. The main issue that we see here is that we have 
> quite a few use-cases to show. But it was a consicious decision on our 
> part to keep the use-cases simple even if that meant increasing the 
> number of them. As a result, we ended up with a complex use-case diagram.
>
> We are wondering whether we can split the use case diagrams into 4-5 
> parts to make it more understandable. That would mean repeating some 
> use-cases across the diagrams. Is that considered okay? We plan to 
> include the refined UCDs in the Dev Report. Typically, does a Dev 
> report include UCDs?


There will be no reason to repeat use cases in multiple diagrams. You
group more related use cases and also draw the diagram so that it is 
easier to follow. I remember reading one report where they had too many 
cross over lines in the diagram.

No do not include use cases in the development report.

Keep your focus on what is expected for the development report.

> 3.) Your inputs on this one would be very valueable to us. When we had 
> designed the initial class diagram, we had come up with a very simple 
> diagram showing different functionality defining classes, the 
> relationships between them and the methods.(not including the 
> user-interface and entity classes)

I am saying this without looking at what you have done.
It is not a good idea to ignore the boundary and entity, and only show
controls. Such a diagram would not be simple, but simpliistic?

> However, now we plan to show the architecture of the system through 
> MVC layering between the classes.

It would be better to show the architecture at the component level
instead of class level. Show what are the different packages you have
and how they are related. Also, you may show architecture at the 
subsystem level, if that applies to your porject. You can show what the
different subsystems are and how they communicate.

> The issue we are facing is:
>
> > Do we show two diagrams one called "Class Diagram" and the other a 
> layered class diagram ? (It doesn't make sense to us) . But if we have 
> only one diagram, we are sure to loose out on understandability again.

You must understand why you lost understandability. You need to focus
on first presenting the right details and then presenting it right.

> > Is the later same as a colloboration diagram? Can you please explain 
> what is a colloboration digram? And do we show a collaboation diagram 
> in our  Dev. report?

Collaboration diagram shows how objects interact with each other to fullfil a
usecase.  You don't have to show collaboration diagram in this report..

> 4.) Also can you please explain the difference between a colloboration 
> and an interaction diagram ?

It is a type of interacction diagram. If you add detatils on ordering of the
interaction, it is a sequence diagram.  Again, these are not required in this
report.

> Thank you.
>
> Best regards

I emailed last week about what's expected in the development report.
Please remember to refer to that email.

Venkat

From vnkt6318@cs.uh.edu  Tue Apr  4 05:59:14 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 78012F984; Tue,  4 Apr 2006 05:59:14 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 2D86EF983; Tue,  4 Apr 2006 05:59:10 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id IOG06230
        for <uhcosc6318@list.prudentlearning.com>; Tue, 4 Apr 2006 03:54:30 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id F19B4F97C
	for <uhcosc6318@list.prudentlearning.com>; Tue,  4 Apr 2006 05:54:53 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k34Asrr03366
	for uhcosc6318@list.prudentlearning.com; Tue, 4 Apr 2006 05:54:53 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200604041054.k34Asrr03366@leibnitz.cs.uh.edu>
Subject: Dropping from the course
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Tue, 4 Apr 2006 05:54:53 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

Greetings,

If anyone is considering dropping from my class, please contact Yvette
at the CS department. She will take care of it until the official
deadline.

Regards,

Venkat

From vnkt6318@cs.uh.edu  Tue Apr  4 05:59:26 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id F15DEF984; Tue,  4 Apr 2006 05:59:25 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id ACE0EF981; Tue,  4 Apr 2006 05:59:21 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id IOG01557
        for <uhcosc6318@list.prudentlearning.com>; Tue, 4 Apr 2006 03:54:57 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 1E1ECF981
	for <uhcosc6318@list.prudentlearning.com>; Tue,  4 Apr 2006 05:55:23 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k34AtM803376
	for uhcosc6318@list.prudentlearning.com; Tue, 4 Apr 2006 05:55:22 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200604041055.k34AtM803376@leibnitz.cs.uh.edu>
Subject: Answer to question 1 (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Tue, 4 Apr 2006 05:55:22 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Venkat,
>
>The phrase for the question 1 is:
>"Rigidity".

Nope. Read on...

Venkat

From vnkt6318@cs.uh.edu  Tue Apr  4 05:59:42 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 0A1F4F984; Tue,  4 Apr 2006 05:59:42 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id D0E46F981; Tue,  4 Apr 2006 05:59:33 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id IOH95355
        for <uhcosc6318@list.prudentlearning.com>; Tue, 4 Apr 2006 03:55:55 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id D1B7EF983
	for <uhcosc6318@list.prudentlearning.com>; Tue,  4 Apr 2006 05:56:21 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k34AuLX03386
	for uhcosc6318@list.prudentlearning.com; Tue, 4 Apr 2006 05:56:21 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200604041056.k34AuLX03386@leibnitz.cs.uh.edu>
Subject: Problems with online videos (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Tue, 4 Apr 2006 05:56:21 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Hi Venkat,
> 
>Someone may have already answered this, but I think the problem with the
>streaming videos is the link on your website.  The link is
>http://mediaweb.tss.uh.edu/academic/vsubra/cosc6318/cosc6318_vsubra_16_20060
>322_lan
>
>And it should be
>http://mediaweb.tss.uh.edu/academic/vsubra/cosc6318/cosc6318_vsubra_16_20060
>322_lan.qtl
>
>You need to add .qtl to Mar 22, Mar 27, and Mar 29.  Hope this helps.

Thanks for the pointer. I had not noticed that. I made the change
you suggested. I hope this helps the person who reported the problem.

Regards,

Venkat

From vnkt6318@cs.uh.edu  Tue Apr  4 05:59:54 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id AB89AF984; Tue,  4 Apr 2006 05:59:54 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 8C8EDF981; Tue,  4 Apr 2006 05:59:47 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id IOI73425
        for <uhcosc6318@list.prudentlearning.com>; Tue, 4 Apr 2006 03:56:25 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id CAD49F981
	for <uhcosc6318@list.prudentlearning.com>; Tue,  4 Apr 2006 05:56:51 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k34AupS03394
	for uhcosc6318@list.prudentlearning.com; Tue, 4 Apr 2006 05:56:51 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200604041056.k34AupS03394@leibnitz.cs.uh.edu>
Subject: Answer to question 1 (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Tue, 4 Apr 2006 05:56:51 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Hi Venkat,
>
>Question 1: What principle are we violating by changing existing code when
>adding new computer types?
>
>I think you are violating the Open Closed Principle.  The code is rigid, and
>fails extensibility because if you add ComputerModelC, you have to change
>several sections of your code instead of just adding to your code.  So it is
>open to extension, but it is not closed to modifying the existing code.

I will take that :)

Venkat

From vnkt6318@cs.uh.edu  Tue Apr  4 06:00:08 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id AB1CCF986; Tue,  4 Apr 2006 06:00:08 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 7D175F981; Tue,  4 Apr 2006 06:00:01 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id IOK96825
        for <uhcosc6318@list.prudentlearning.com>; Tue, 4 Apr 2006 03:58:25 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id A29D8F981
	for <uhcosc6318@list.prudentlearning.com>; Tue,  4 Apr 2006 05:58:49 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k34Awn203404
	for uhcosc6318@list.prudentlearning.com; Tue, 4 Apr 2006 05:58:49 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200604041058.k34Awn203404@leibnitz.cs.uh.edu>
Subject: C# and Java - Code generation from UML diagrams (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Tue, 4 Apr 2006 05:58:49 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Venkat,
>
>I recently came across a tool that generates code from
>the UML diagrams. Would you advise us to do that. I
>haven't worked with Java but I assume "Sun Java Studio
>Enterprise 8" generates the code from the uml diagrams
>in the java environment. Visual UML Developer Edition
>can be used in the .NET environment. Would you advice
>us to use these tools while coding. Are there any
>downsides of these automatic code generation tools.
>Dont you think that it can save a lot of time and
>effort. 

I am not a big fan of code generation from the model.
I am in favor of code generators that abstract out certain
mapping, provided we don't have to tweek these generated code
and can be isolated from developer in a way.

If it helps you you should use it. If you find that the tools don't
givev you as much benefit, then drop it at any time.

Venkat

From vnkt6318@cs.uh.edu  Tue Apr  4 23:51:09 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 43CAEF98F; Tue,  4 Apr 2006 23:51:09 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 78C11F98C; Tue,  4 Apr 2006 23:51:03 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id JIY23452
        for <uhcosc6318@list.prudentlearning.com>; Tue, 4 Apr 2006 21:45:52 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 4A36FF985
	for <uhcosc6318@list.prudentlearning.com>; Tue,  4 Apr 2006 23:46:18 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k354kIh06989
	for uhcosc6318@list.prudentlearning.com; Tue, 4 Apr 2006 23:46:18 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200604050446.k354kIh06989@leibnitz.cs.uh.edu>
Subject: Question regarding assignment 1 (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Tue, 4 Apr 2006 23:46:18 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Venkat,
>
>Just a quick question about assignment 1:
>
>My partner and I are assuming that if a player enters an invalid guess (e.g. 
>gibberish or only 3 colors) then this guess will not count against the 
>player's 25 allowed guesses.  In other words, if the player is on his third 
>guess, and he enters something invalid, the computer will say why the guess 
>is invalid, prompt the user for a new (valid) guess, and the player will 
>then still be on his third guess.  Is this assumption correct?
>
>Thanks,

Hi

That sounds reasonable.

Regards,

Venkat

From vnkt6318@cs.uh.edu  Tue Apr  4 23:51:39 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 2D114F985; Tue,  4 Apr 2006 23:51:39 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 44D89F990; Tue,  4 Apr 2006 23:51:31 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id JID00022
        for <uhcosc6318@list.prudentlearning.com>; Tue, 4 Apr 2006 21:50:22 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 183A1F98C
	for <uhcosc6318@list.prudentlearning.com>; Tue,  4 Apr 2006 23:50:48 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k354om707006
	for uhcosc6318@list.prudentlearning.com; Tue, 4 Apr 2006 23:50:48 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200604050450.k354om707006@leibnitz.cs.uh.edu>
Subject: Development Report (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Tue, 4 Apr 2006 23:50:47 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Venkat,
>
>Sorry if you already got this, but my webmail logged me out before it sent, 
>so I don't know if it got sent or not.

No, I did not get an earlier email, good that you sent it again.

>In compiling our development report, I am hit with a question I thought you 
>might be able to answer, and which might help the rest of the groups as 
>well.  Let me explain the situation so that my question makes sense:
>
>In describing the "development approach," we used, I have a part like below 
>(I'm just paraphrasing here):
>
>...deleted...
>
>So, this basic statement is going to appear in our "development approach" 
>section.  However, it also addresses team dynamics and problems we 
>encountered and their solutions.
>
>Would it be better to restate these overlapping areas in each section of 
>the document, or would you prefer we said something like "In addition to 
>the problems mentioned in other sections of this document, here are some 
>others we faced."
>
>Your input is appreciated.

Hi

I deleted the part above as it is very useful, but I don't want to give
ideas to other teams :) I want other teams to report what they actually
have done.

Instead of duplicating, you can mention the specific section number 
and the name of the problem (instead of saying other problem in other
section, if you can be specfic and help me located what you are talking
about that will help).

Venkat

From vnkt6318@cs.uh.edu  Wed Apr  5 05:34:42 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 7E29FF98C; Wed,  5 Apr 2006 05:34:41 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id DC166F97F; Wed,  5 Apr 2006 05:34:27 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id JOK18756
        for <uhcosc6318@list.prudentlearning.com>; Wed, 5 Apr 2006 03:31:56 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 27B19F98D
	for <uhcosc6318@list.prudentlearning.com>; Wed,  5 Apr 2006 05:31:23 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k35AVMd07432
	for uhcosc6318@list.prudentlearning.com; Wed, 5 Apr 2006 05:31:22 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200604051031.k35AVMd07432@leibnitz.cs.uh.edu>
Subject: Answer to question 2 (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Wed, 5 Apr 2006 05:31:22 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Will the code in C# look like this?
>
>static void getWorkDone2(String CompTypeStr)
>        {
>                Type type = Type.GetType(CompTypeStr);
>            Computer comp =
>(Computer)Activator.CreateInstance(type);
>        }

Yes, Activator in C# is useful as factory.

Venkat

From vnkt6318@cs.uh.edu  Wed Apr  5 05:35:08 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 0E1C6F985; Wed,  5 Apr 2006 05:35:08 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id C8EC5F97F; Wed,  5 Apr 2006 05:35:01 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id JON67100
        for <uhcosc6318@list.prudentlearning.com>; Wed, 5 Apr 2006 03:34:00 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 45C4BF97F
	for <uhcosc6318@list.prudentlearning.com>; Wed,  5 Apr 2006 05:34:12 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k35AYC407443
	for uhcosc6318@list.prudentlearning.com; Wed, 5 Apr 2006 05:34:12 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200604051034.k35AYC407443@leibnitz.cs.uh.edu>
Subject: Answer to question 5 (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Wed, 5 Apr 2006 05:34:12 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Hi Venkat
>If the methods  do not use the state of an object then
>we can make them static, and we don't need to bother
>with singleton.
>However,
>1. with singleton we can associate a state of an
>object.
>2.also Singleton can be passed to some method as a
>parameter. (i.e. can be serialized)
>3.also you can subclass singleton,  override its
>methods, you can not override  static methods, because
>they are not polymorphic.

Good points. 

>PS: for question 4, ...deleted...

I have deleted your note about question 4. If you think you have an
answer, email me the answer. Remember that one has 2 bonus points!

Venkat

From vnkt6318@cs.uh.edu  Wed Apr  5 05:44:12 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 55168F985; Wed,  5 Apr 2006 05:44:12 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id F28BCF97F; Wed,  5 Apr 2006 05:44:07 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id JOV54654
        for <uhcosc6318@list.prudentlearning.com>; Wed, 5 Apr 2006 03:42:54 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 0989FF97F
	for <uhcosc6318@list.prudentlearning.com>; Wed,  5 Apr 2006 05:43:16 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k35AhFV07540
	for uhcosc6318@list.prudentlearning.com; Wed, 5 Apr 2006 05:43:15 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200604051043.k35AhFV07540@leibnitz.cs.uh.edu>
Subject: Project report
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Wed, 5 Apr 2006 05:43:15 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: RO

Greetings,

A gentle reminder that the deadline for the project report is 
today - April 5th 11:59PM Central time.

Late submissions will not be accepted. When you email the report to me
cc your team members so they know you have sent it and also have a 
copy of what you have sent.

Regards,

Venkat

From vnkt6318@cs.uh.edu  Thu Apr  6 04:26:24 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id B057FF98D; Thu,  6 Apr 2006 04:26:23 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 24D29F97F; Thu,  6 Apr 2006 04:26:12 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id KNC32841
        for <uhcosc6318@list.prudentlearning.com>; Thu, 6 Apr 2006 02:22:41 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 14F1BF96E
	for <uhcosc6318@list.prudentlearning.com>; Thu,  6 Apr 2006 04:23:08 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k369N7T12828
	for uhcosc6318@list.prudentlearning.com; Thu, 6 Apr 2006 04:23:07 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200604060923.k369N7T12828@leibnitz.cs.uh.edu>
Subject: RE: Question regarding assignment 1 (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Thu, 6 Apr 2006 04:23:07 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: RO

>Hey Venkat,
>
>Another question related to assignment 1:
>
>How are we turning in the source code?  Do you want a printout or shall we
>email it to you, and only print out the 1 page report about our experience?
>
>Thanks,

One email from one of the partners to me and cc-ed to the other partner. 
A zip file with all the code and the report. The code should be
presented so I can compile and run it if I like to.

Thanks

Venkat

From vnkt6318@cs.uh.edu  Thu Apr  6 04:31:30 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 7AF19F97F; Thu,  6 Apr 2006 04:31:30 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 2BDE7F96E; Thu,  6 Apr 2006 04:31:26 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id KNK54631
        for <uhcosc6318@list.prudentlearning.com>; Thu, 6 Apr 2006 02:30:31 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 87A01F97C
	for <uhcosc6318@list.prudentlearning.com>; Thu,  6 Apr 2006 04:30:58 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k369UwN12878
	for uhcosc6318@list.prudentlearning.com; Thu, 6 Apr 2006 04:30:58 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200604060930.k369UwN12878@leibnitz.cs.uh.edu>
Subject: Assignment1 (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Thu, 6 Apr 2006 04:30:58 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: RO

>Hi Venkat,
>
>I have one question about the report for the assignment1. Do we just need
>to submit the code part or need to attach a report. If we need to write a
>report, what is the requirement for that.
>
>Thank you

Hi

I have updated the assignment file with this information. Please
revisit that file for details. For the report, I want you to report
your experience and benefits you have seen with TFD/TDD in this assignment.

Venkat

From vnkt6318@cs.uh.edu  Thu Apr  6 04:35:33 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id B3795F97F; Thu,  6 Apr 2006 04:35:33 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 5C0E3F96E; Thu,  6 Apr 2006 04:35:29 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id KNN21854
        for <uhcosc6318@list.prudentlearning.com>; Thu, 6 Apr 2006 02:33:54 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 267B7F96E
	for <uhcosc6318@list.prudentlearning.com>; Thu,  6 Apr 2006 04:33:51 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k369Xp212899
	for uhcosc6318@list.prudentlearning.com; Thu, 6 Apr 2006 04:33:51 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200604060933.k369Xp212899@leibnitz.cs.uh.edu>
Subject: Answer to Question 3 (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Thu, 6 Apr 2006 04:33:50 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Hi Venkat
>To solve the problem , Dependency Inversion Principle
>was used.
>Instead of for Computer depending directly on memory1
>or memory2. we substitute it with an abstract class.
>So, now Computer depends on Memory abstract class. and
>Memory1 and Memory2 implement (depend on) Memory.
>
>In other words, Computer know only Memory interface
>and don't need to know about concrete implementation
>of it. On the other side of Memory, you can make some
>other new memories (i.e. Memory3, Memory4, etc.)

I will take that for an answer :)

Venkat

From vnkt6318@cs.uh.edu  Thu Apr  6 04:35:47 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id D0D48F97C; Thu,  6 Apr 2006 04:35:46 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 75B30F97F; Thu,  6 Apr 2006 04:35:42 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id KNO68748
        for <uhcosc6318@list.prudentlearning.com>; Thu, 6 Apr 2006 02:34:48 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id AF712F985
	for <uhcosc6318@list.prudentlearning.com>; Thu,  6 Apr 2006 04:35:05 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k369Z5p12907
	for uhcosc6318@list.prudentlearning.com; Thu, 6 Apr 2006 04:35:05 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200604060935.k369Z5p12907@leibnitz.cs.uh.edu>
Subject: article (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Thu, 6 Apr 2006 04:35:05 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Venkat, can you also send the article on the problem
>on 2 phase lock?
>Thank you!

Sure. Here it is:

http://www.yoda.arachsys.com/csharp/singleton.html

Enjoy.

Venkat

From vnkt6318@cs.uh.edu  Thu Apr  6 04:45:36 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 8FD12F984; Thu,  6 Apr 2006 04:45:36 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id C111BF97C; Thu,  6 Apr 2006 04:45:31 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id KNX95335
        for <uhcosc6318@list.prudentlearning.com>; Thu, 6 Apr 2006 02:43:35 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id DC868F96E
	for <uhcosc6318@list.prudentlearning.com>; Thu,  6 Apr 2006 04:43:27 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k369hRs12942
	for uhcosc6318@list.prudentlearning.com; Thu, 6 Apr 2006 04:43:27 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200604060943.k369hRs12942@leibnitz.cs.uh.edu>
Subject: Answers to Questions from Class (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Thu, 6 Apr 2006 04:43:27 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: RO

>First, I sent the development report before I watched the video. I now
>realize that my Factories are perhaps better described as Builders
>because they implement a create method and leave the creation process to
>subclasses. I do not have time to change the code and the report. Please
>do not take off too much. I will address this in the report about using
>design patterns.

Changing anything in the last minute is not a good idea. No need to
do impulsive design. I am glad you did not have time to make the change.
Now you can take the time to think if there is a better way.

>Here are the answers to the questions from the video. Some of these have
>already been answered, so I am not sure why I should have to answer them
>again.

Me too :)

>1. You are violating the open-closed principle because every time you
>add a new component, you have to change the buildComputer method.
>
>2. I do not know how to load a class by its name in C#.

Activator.CreateInstance will help.

>3. You used the dependency inversion principle (DIP). Instead of a
>Computer depending on concrete Memory classes (and they indirectly
>depended on the Computer to call the right constructor), both computer
>and the Memory implementations depend on the Memory interface.
>
>4.1. Remove the ampersand and you get a copy because C++ gives you the
>default copy constructor and automatically calls it when you initialize
>one object with another even though you used "=" in the declaration. See
>the following code (I changed the names of the classes):

Yep, and you get the double bonus for this question. I will even add one
more if I like your solution... I will read on.

>class Singleton
>{
>private:
>	Singleton()
>	{
>		cout << "In " << this << "->Singleton()" << endl;
>	}
>	
>	//Singleton(const Singleton& rOther);
>public:
>	static Singleton& getInstance()
>	{
>		static Singleton theInstance;
>		return theInstance;
>	}
>	
>	virtual ~Singleton()
>	{
>		cout << "In " << this << "->~Singleton()" << endl;
>	}	
>};
>
>int main(int argc, char** argv)
>{
>	{
>		Singleton& rSingleton1 = Singleton::getInstance();
>		cout << "Singleton 1 = " << &rSingleton1 << endl;
>	
>		Singleton& rSingleton2 = Singleton::getInstance();	
>		cout << "Singleton 2 = " << &rSingleton2 << endl;
>		
>		assert(&rSingleton1 == &rSingleton2);
>	}
>	
>	{
>		Singleton& rSingleton1 = Singleton::getInstance();
>		cout << "Singleton 1 = " << &rSingleton1 << endl;
>		//Makes a copy.
>		Singleton rSingleton2 = Singleton::getInstance();	
>		//Same as: Singleton rSingleton2(rSingleton1);
>		cout << "Singleton 2 = " << &rSingleton2 << endl;
>		
>		assert(&rSingleton1 != &rSingleton2);
>	}
>	
>	return 0;	
>}
>
>
>Output:
>In 0x804a708->Singleton()
>Singleton 1 = 0x804a708
>Singleton 2 = 0x804a708
>Singleton 1 = 0x804a708
>Singleton 2 = 0xbfe71534
>In 0xbfe71534->~Singleton()
>In 0x804a708->~Singleton()
>
>
>4.2. Fix this by creating a private copy constructor with no
>implementation. You can implement it if you want, but it may get called
>if you make the same mistake inside the class.

Excellent.

>5. Another reason you may not want static methods is that you may have
>resources that need to be manually released. This probably would not be
>a problem in Java, but it would be a problem in C++. You may also want
>to use inherited implementations, but one cannot overwrite static methods.

Venkat

From vnkt6318@cs.uh.edu  Thu Apr  6 04:46:34 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 8F1A5F97F; Thu,  6 Apr 2006 04:46:34 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id DD919F96E; Thu,  6 Apr 2006 04:46:29 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id KNZ20310
        for <uhcosc6318@list.prudentlearning.com>; Thu, 6 Apr 2006 02:45:10 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 2EEA5F96E
	for <uhcosc6318@list.prudentlearning.com>; Thu,  6 Apr 2006 04:45:12 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k369jCm12950
	for uhcosc6318@list.prudentlearning.com; Thu, 6 Apr 2006 04:45:12 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200604060945.k369jCm12950@leibnitz.cs.uh.edu>
Subject: Answer to Question 3 (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Thu, 6 Apr 2006 04:45:11 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Venkat,
>
>In the lecture on the Prototype Pattern, you gave the following code 
>example:
>
>class Computer
>
>{
>
>      Memory theMemory;
>
>
>
>      public Computer(Memory mem)
>
>      {
>
>            theMemory = mem;
>
>      }
>
>
>
>      public Computer(Computer other)
>
>      {
>
>            theMemory = other.theMemory.createNew();
>
>      }
>
>}
>
>
>
>abstract class Memory
>
>{
>
>      public abstract Memory createNew();
>
>}
>
>
>
>class Memory1 extends Memory
>
>{
>
>      public Memory createNew() { return new Memory1(this); }
>
>}
>
>
>
>class Memory2 extends Memroy
>
>{
>
>      public Memory createNew() { return new Memory2(this); }
>
>}
>
>
>
>And then you asked:
>
>What principle is being used in this solution to the problem of 
>extensibility?  Explain in your email how exactly this principle is being 
>used.
>
>
>
>I went back over the slides and my notes regarding OOD Principles and found 
>that this example is somewhat related to all of the "big three" principles, 
>OCP, LSP, and DIP.  I guess this is not extremely surprising since the 
>principles themselves are closely related.
>
>
>
>OCP is being used in that Computer's copy constructor should never have to 
>be modified (it is "closed" for modification).  However, its behavior can 
>effectively be extended by creating new classes of Memory.  Thus the system 
>as a whole is "open" for extension.
>
>
>
>LSP is being used since Computer's copy constructor uses a reference to a 
>base class, and any derived class could be substituted instead, and thus 
>Computer is "able to use objects of derived classes without knowing it."
>
>
>
>DIP is being used since Computer's copy constructor depends upon an 
>abstraction, the abstract base class Memory.  Similarly, the lower-level 
>derived classes of Memory depend on an abstraction in that they are forced 
>to implement createNew() in the abstract base class Memory.
>
>
>
>Of these three, I guess the principle that is most saliently "used" is DIP, 
>so if I had to pick one principle, that would be it.  But I think one could 
>reasonably argue for any of the three principles.
>
>Thanks,

Venkat

From vnkt6318@cs.uh.edu  Thu Apr  6 04:54:01 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 5EC70F984; Thu,  6 Apr 2006 04:54:01 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 6843BF96E; Thu,  6 Apr 2006 04:53:56 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id KNG31244
        for <uhcosc6318@list.prudentlearning.com>; Thu, 6 Apr 2006 02:52:44 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 1A049F96E
	for <uhcosc6318@list.prudentlearning.com>; Thu,  6 Apr 2006 04:53:11 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k369rAx12985
	for uhcosc6318@list.prudentlearning.com; Thu, 6 Apr 2006 04:53:10 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200604060953.k369rAx12985@leibnitz.cs.uh.edu>
Subject: Answer to question 4 (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Thu, 6 Apr 2006 04:53:10 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Venkat,
>
>In your lecture on the Singleton Pattern, you gave a code example of 
>MySingleton, including the following excerpts:
>
>In implementation of MySingleton:
>
>MySingleton& MySingleton::getInstance()
>
>{
>
>      static MySingleton theInstance;
>
>      return theInstance;
>
>}
>
>In user application:
>
>MySingleton& obj1 = MySingleton::getInstance();
>
>MySingleton& obj2 = MySingleton::getInstance();
>
>Then you asked the following question:
>
>This code does not guarantee Singleton (that is only one object) because of 
>a C++ feature.  Make one (exactly one) change in the code above to prove the 
>point.  What change is that?  Tell me (minimum code) how to fix this problem 
>so we will be guaranteed true singleton in C++ code for MySingleton.
>
>I think the problematic feature of C++ is the default copy constructor.  In 
>the user application, another MySingleton object could be created via the 
>copy constructor.

Yes, that is correct. 

>The solution to this problem is to implement our own copy constructor, and 
>just call getInstance() within it.

No that won't work. Please refer to previous email for the right solution.

>I'm hesitant to write actual code, since my C++ is a bit rusty (I've been 
>using Java and C# a little too exclusively).  But if you really want it, I'll 
>give it a shot:
>
>The change that would show that singleton is not guaranteed is:
>
>replace
>
>MySingleton& obj2 = MySingleton::getInstance();
>
>with
>
>MySingleton& obj2(obj1);

No that is not right. Please refer to previous email.

>And the solution to this problem is to implement the copy constructor:
>
>...deleted...
>
>If this answer is anywhere close to correct, and you wish to publish it to 
>the group, please feel free to correct any syntax mistakes I may have made 
>in the code.
>
>Thanks,

Good try though. You have identified the problem correctly.

The "previous caller" did a great job on the code, so I'll follow
the DRY principle and refer to that.

Thanks

Venkat

From vnkt6318@cs.uh.edu  Thu Apr  6 21:19:16 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 3114DF988; Thu,  6 Apr 2006 21:19:16 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id A3A21F97F; Thu,  6 Apr 2006 21:19:07 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id LGQ04631
        for <uhcosc6318@list.prudentlearning.com>; Thu, 6 Apr 2006 19:09:31 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id AC281F97F
	for <uhcosc6318@list.prudentlearning.com>; Thu,  6 Apr 2006 21:09:57 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k3729vM15306
	for uhcosc6318@list.prudentlearning.com; Thu, 6 Apr 2006 21:09:57 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200604070209.k3729vM15306@leibnitz.cs.uh.edu>
Subject: Question on Exceptions (related to Assignment 1) (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Thu, 6 Apr 2006 21:09:57 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Venkat,
>
>Proper use of exceptions continues to baffle me.  In our code, we have some 
>simple getters and setters.  For example, we have a setter (setMaxTurns(int 
>maxTurnsIn)) for the number of turns in the game (maxTurns).  It seems to me 
>that maxTurns being set to a value <= 0 is an exceptional situation, and 
>thus an exception should be thrown by the setter in this case. 
>IllegalArgumentException is summarized in the Java documentation as "Thrown 
>to indicate that a method has been passed an illegal or inappropriate 
>argument" so this seems like the perfect type of exception to throw.  So 
>potentially we could have:
>
>public void setMaxTurns(int maxTurnsIn) throws IllegalArgumentException
>{
>      if (maxTurnsIn <= 0) throw new IllegalArgumentException();
>
>      maxTurns = maxTurnsIn;
>}
>
>However, I reading the following in Horstmann & Cornell's "Core Java 2 
>Volume 1":
>
>                ".you should not advertise unchecked exceptions inheriting 
>from RuntimeException. [For example]:
>
>      class MyAnimation
>      {
>            .
>            void drawImage(int i) thorws ArrayIndexOutOfBoundsException // 
>bad style
>            { . }
>      }
>
>                These runtime errors are completely under your control.  If 
>you are so concerned about array index errors, you should spend    the time 
>needed to fix them instead of advertising the possibility that they can 
>happen."
>
>This argument seems reasonable enough for the example they show, but is it 
>still bad style to advertise throwing IllegalArgumentException for the 
>setter above?  Getting an invalid argument for a setter really isn't "under 
>your control."
>
>Also, since IllegalArgumentException is an unchecked exception, the compiler 
>will let anyone call setMaxTurns without handling the possible exception, 
>regardless if it is advertised in the setter's declaration or not.  This 
>lack of forced-handling makes it likely that the IllegalArgumentException, 
>if thrown, will never be caught.  Is that desireable?  Obviously, if some 
>situation has arrived where you are trying to set the maximum number of 
>turns to a negative number, something is wrong with your code and perhaps 
>having the program crash is appropriate.
>
>Anyway, I'm just really confused about all this and would love to get your 
>opinion on the matter.
>
>Thanks,

The real important issue is estabilishing the precondition. Whether 
you throw exception, return an error value, or ignore the call is
upto you and all of these are valid solutions. If you establish the 
precondition clearly, then the caller should make sure that the
precondition is met. If that is not met, what you do is upto you.

You have to treat exceptions to really dire exception situations.
Would you consider the situation of setMaxTurns to be dire? Why not
specify that if the maxTurns is not valid, you will set max turn to
(say) 100. Then there is no exception to throw.

You must declare critical exceptions in your contract. However, 
reserve exceptions for really exceptional situations.

I agree, in general, that you don't want to report such things like 
array index exceptions, but at the same time, it is important to use the 
judgement.

Venkat

From vnkt6318@cs.uh.edu  Thu Apr  6 21:19:25 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 54A58F988; Thu,  6 Apr 2006 21:19:25 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 85924F97F; Thu,  6 Apr 2006 21:19:20 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id LGZ70325
        for <uhcosc6318@list.prudentlearning.com>; Thu, 6 Apr 2006 19:18:25 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id D90CCF97F
	for <uhcosc6318@list.prudentlearning.com>; Thu,  6 Apr 2006 21:18:52 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k372IqD15325
	for uhcosc6318@list.prudentlearning.com; Thu, 6 Apr 2006 21:18:52 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200604070218.k372IqD15325@leibnitz.cs.uh.edu>
Subject: unit testing random occurences and design of UI/Control (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Thu, 6 Apr 2006 21:18:52 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Venkat,
>
>As my partner and I are working on this unit testing assignment, a couple of
>good questions popped in my mind.  I'll try not to give away too much of our
>approach to the assignment (but I'll probably fail) =):
>
>1) In designing our classes, we came up with ...
>I assume that much is fairly standard.  However, a thought came
>across my mind:  Is it better to have the UI parse the input and send
>say an array of  strings or iterator over them to the game, or just send the
>raw input to the game and have the game parse it?

If you let the class take an array, the input can be in any format, but
the class clearly estabilishes what it needs. This allows me to put
a different type of UI and not affect the class. I would tend towards the
UI parsing the input for that reason.

>It seems to me that having the game parse the string and check it for errors
>goes along the lines of less cohesion in the game class (string manipulation
>shouldn't be part of the game), even if it is a neccesary part of it.  On
>the other hand, it is hard to justify that string parsing and error checking
>(of the string) are things that a user interface should do.  It also crossed
>my mind to create another class, perhaps POMStringManipulator that did the
>job, but then I thought I was introducing too much complexity for such a
>simple game.  Even with the 3rd class, I would have trouble deciding if the
>UI should use it to send to the game, or if the UI should pass raw input to
>the game, with the game using the POMStringManipulator class.  What do you
>think?

It is the nature of the UI to parse the input. If it is a GUI, a handler
already "parses" the input in a sense. In the case of console, you can see
how you can implement it so the complexity is reduced. I agree that 
it is not the job of a lower tier.

>2) Regarding the unit testing, I was thinking about how to test random
>occurences.  For example, you could have a test that tests that a game
>finishes in 25 steps _or_ a win, but I thought it would be better to have
>both tests: testGameLossAfter25WrongGuesses and testGameWinAfterCorrectGuess
>... however, there is no way to know if we are guessing correctly or
>incorrectly (before checking with the game) within the unit test unless we
>provide a method that will tell us the correct answer, which makes the game
>not that fun.  Is there some other way to test this randomness that you are
>willing to share before the HW is due (and I'm willing to wait until after
>it is due for an answer as well), or should we have unit tests that
>sometimes test one result and sometimes test another?

This is a good question. The test can have access to the package friendly
methods (in Java or internal in C#) and get access to what you need without
exposing it to the actual client.

>As a side note, I can testGameOverAfter25Guesses (by ignoring checking for a
>win), but I still cannot figure out how to test for a win unless I tell the
>program to just keep guessing until it gets them all right (ignoring the 25
>guesses).  Well, actually I shouldn't even allow the game to keep providing
>responses after 25 guesses, now should I? =)

The above approach I mentioned should solve this problem for you.

>3) And finally, a 3rd question popped in my head as I was writing.  When we
>provide methods like boolean isSomeState(), aren't we violating the TDA
>principle?  Or is it ok in limited cases?  For instance, I have an
>isGameOver() method - is this wrong?
>
>Thanks for your input,

If you are fetching a lot of data and making decisions that rightfully
an object should make, then you're violating TDA. However, letting
an object make all the decisions will kill cohesion. There's got to be a
balance.

Venkat

From vnkt6318@cs.uh.edu  Fri Apr  7 04:20:47 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 353CBF98D; Fri,  7 Apr 2006 04:20:47 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 8C3A1F984; Fri,  7 Apr 2006 04:20:42 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id LNS85929
        for <uhcosc6318@list.prudentlearning.com>; Fri, 7 Apr 2006 02:11:29 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id A783FF992
	for <uhcosc6318@list.prudentlearning.com>; Fri,  7 Apr 2006 04:11:56 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k379BuP15863
	for uhcosc6318@list.prudentlearning.com; Fri, 7 Apr 2006 04:11:56 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200604070911.k379BuP15863@leibnitz.cs.uh.edu>
Subject: Programming Assignment 1 - Group formation (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Fri, 7 Apr 2006 04:11:56 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Hi Venkat,
>
>Right now I am pairing up with my friend. One of my
>other friends doesnt have a partner to work with. I
>was wondering if we three can form a group and turn in
>our assignments. We have been working as a group while
>doing our assignment. Do you have any reservations or
>concern about the same. 
>
>Thank You

Hi

Assignment 1 needs two per team.

Wondering why your friend did not take a proactive step to ask me
for help to find a partner to work with. 

We will fix this it in the next email, how about that?

Venkat

From vnkt6318@cs.uh.edu  Fri Apr  7 04:21:02 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 2DF05F98D; Fri,  7 Apr 2006 04:21:02 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id C9C97F984; Fri,  7 Apr 2006 04:20:55 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id LNB07801
        for <uhcosc6318@list.prudentlearning.com>; Fri, 7 Apr 2006 02:20:01 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 641ABF984
	for <uhcosc6318@list.prudentlearning.com>; Fri,  7 Apr 2006 04:20:28 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k379KS815878
	for uhcosc6318@list.prudentlearning.com; Fri, 7 Apr 2006 04:20:28 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200604070920.k379KS815878@leibnitz.cs.uh.edu>
Subject: Re: Question on Exceptions (related to Assignment 1) (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Fri, 7 Apr 2006 04:20:28 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>> The real important issue is estabilishing the precondition. Whether
>> you throw exception, return an error value, or ignore the call is
>> upto you and all of these are valid solutions. If you establish the
>> precondition clearly, then the caller should make sure that the
>> precondition is met. If that is not met, what you do is upto you.
>
>Sounds reasonable enough.  What are the methods for establishing 
>preconditions?  Is it sufficient to list the preconditions in the summary of 
>the method?  (i.e., the description that a user might see in the 
>Javadoc-generated documentation)

Yes. Generally for a method, I recommend having these four

Purpose (why this method exits for):
Requirements (pre-condition):
Promises (post-conditions):
List of exceptions (those that set a  contractual binding):

>> You have to treat exceptions to really dire exception situations.
>> Would you consider the situation of setMaxTurns to be dire? Why not
>> specify that if the maxTurns is not valid, you will set max turn to
>> (say) 100. Then there is no exception to throw.
>
>That seems reasonable too.  The only reason I might shy away from solutions 
>like that is that, while they might avoid crashes and the need for exception 
>handling, they can sometimes make it harder to troubleshoot problems.  In 
>other words, program crashes are certainly undesirable, but at least they 
>tend to show you where the problem is.  (Please keep in mind that these are 
>very tentative arguments; I'm just sort of playing devil's advocate to find 
>out what you have to say in reaction to them...)

No problem at all, and these are reasonable argument as well. A few years
ago, I would have fully agreed with you. The more I use TDD, the lesser
I am convinced about this these days. When you write code, you are writing
code against a contract and you are making sure of that by using TDD. I
have come to rely leser on the crutches provided by the compiler in this
regard. So, if we work with the contract and rely on unit testing, then
it gives us the flexibility to do the right thing on a particular case.

>> You must declare critical exceptions in your contract. However,
>> reserve exceptions for really exceptional situations.
>
>Funny... I ran into that problem just tonight in my research code.  I was 
>throwing an exception for a situation that happened quite often, and my 
>computational performance was significantly hampered by it.  I switched out 
>the exception catching for a simple if statement and the algorithm's 
>computational performance pretty much doubled.
>
>Thanks,

:) Also, I used to beleive that exceptions are better because people have to
catch it, but people may ignore the return code. Then I came across quite
a few developers writing

catch(Exception ex) {}

which voids that argument.

Great discussion. Thanks for putting this mailing list to its intended use.

Regards,

Venkat

From vnkt6318@cs.uh.edu  Fri Apr  7 04:32:55 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id E2136F991; Fri,  7 Apr 2006 04:32:54 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 957AFF98D; Fri,  7 Apr 2006 04:32:50 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id LNL37535
        for <uhcosc6318@list.prudentlearning.com>; Fri, 7 Apr 2006 02:30:35 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id A9F1AF984
	for <uhcosc6318@list.prudentlearning.com>; Fri,  7 Apr 2006 04:30:09 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k379U9b15962
	for uhcosc6318@list.prudentlearning.com; Fri, 7 Apr 2006 04:30:09 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200604070930.k379U9b15962@leibnitz.cs.uh.edu>
Subject: Urgent ... Assignment 1 partner list
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Fri, 7 Apr 2006 04:30:09 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

Greetings,

Deadline for this is running out soon.

Visit 
http://www.cs.uh.edu/~svenkat/lib/assignments/OOAD/Spring2006/Assign1/partner

Regards,

Venkat

From vnkt6318@cs.uh.edu  Sat Apr  8 05:01:13 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 3B3F9F984; Sat,  8 Apr 2006 05:01:13 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 0A4E3F980; Sat,  8 Apr 2006 05:01:07 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id MNO70301
        for <uhcosc6318@list.prudentlearning.com>; Sat, 8 Apr 2006 02:58:01 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 01ADCF982
	for <uhcosc6318@list.prudentlearning.com>; Sat,  8 Apr 2006 04:58:28 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k389wSI19252
	for uhcosc6318@list.prudentlearning.com; Sat, 8 Apr 2006 04:58:28 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200604080958.k389wSI19252@leibnitz.cs.uh.edu>
Subject: Re: Question on Exceptions (related to Assignment 1) (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Sat, 8 Apr 2006 04:58:28 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>> Yes. Generally for a method, I recommend having these four
>>
>> Purpose (why this method exits for):
>> Requirements (pre-condition):
>> Promises (post-conditions):
>> List of exceptions (those that set a  contractual binding):
>>
>One last question on this thread: Do you use this nomenclature even for 
>getters and setters?  Generally, I think the format above is great. 
>However, it would turn getters and setters, which are often just one line of 
>code, into five.  That may cause code bloat.  Well, not really code bloat, 
>but comment bloat.  Code bloat is definitely a problem but is comment bloat 
>also considered a problem?
>
>Thanks,

Good point. The worst form of documentation is which states the obvious
and does not give you any details. Quite a bit of javadoc falls into this
category, unfortunately. 

setFoo(...)
This methods allows you to set foo.

The above really does not help. As a reader, if I dont' know what Foo is,
the documentation is worst than not having it.

I would follow the convention suggested above only where it makes sense.

Venkat

From vnkt6318@cs.uh.edu  Sat Apr  8 05:01:24 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id ADA39F98D; Sat,  8 Apr 2006 05:01:24 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 1392AF982; Sat,  8 Apr 2006 05:01:18 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id MOI34327
        for <uhcosc6318@list.prudentlearning.com>; Sat, 8 Apr 2006 03:00:27 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id BA329F980
	for <uhcosc6318@list.prudentlearning.com>; Sat,  8 Apr 2006 05:00:54 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k38A0sC19275
	for uhcosc6318@list.prudentlearning.com; Sat, 8 Apr 2006 05:00:54 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200604081000.k38A0sC19275@leibnitz.cs.uh.edu>
Subject: Re: Question on Exceptions (related to Assignment 1) (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Sat, 8 Apr 2006 05:00:54 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>>> Yes. Generally for a method, I recommend having these four
>>>
>>> Purpose (why this method exits for):
>>> Requirements (pre-condition):
>>> Promises (post-conditions):
>>> List of exceptions (those that set a  contractual binding):
>>>
>>
>> One last question on this thread: Do you use this nomenclature even for 
>> ...
>
>Oops, I lied.  I have one more additional question:
>
>How do you reconcile the above with the tags that are recommended for use 
>with Javadoc?
>
>Is it OK to substitute:
>
>"Purpose" with the method's description
>"Requirements" with the statements following @param tags
>"Promises" with the statements following @return tags.  Of course, there may 
>be many times when a method does something without returning anything, in 
>which case you'd have to figure out somewhere else to put the promises.
>List of exceptions with the statements following @throws tags
>
>Also, is it OK to omit any of the above in some situations?  For example, 
>for getters there usually are no requirements.
>
>Thanks once again,

Most certainly. This fits fairly well into the recommended use of
javadoc (Java), ndoc (.NET), rdoc (Ruby), etc.

Venkat

From vnkt6318@cs.uh.edu  Sun Apr  9 07:18:27 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id D0692F979; Sun,  9 Apr 2006 07:18:26 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id EFC73F976; Sun,  9 Apr 2006 07:18:20 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id NQA46828
        for <uhcosc6318@list.prudentlearning.com>; Sun, 9 Apr 2006 05:17:28 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 723C0F976
	for <uhcosc6318@list.prudentlearning.com>; Sun,  9 Apr 2006 07:17:56 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k39CHuL21240
	for uhcosc6318@list.prudentlearning.com; Sun, 9 Apr 2006 07:17:56 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200604091217.k39CHuL21240@leibnitz.cs.uh.edu>
Subject: TFD Question (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Sun, 9 Apr 2006 07:17:56 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Venkat, 
>
>I have a small confusion, I am following TFD for the
>assignment1. I am half way thru the assignment and I
>noticed that some of the functions in my class are
>especially used for the Testing purpose.
>
>Can we have such function in the class which server no
>purpose to the actual flow of event but are useful for
>testing.. ?
>
>Thanks

I do not encourage adding public methods just for the sake of testing.
If for the sake of testing a method is getting smaller and you will
use those smaller methods from other public methods, then make those 
testable smaller methods package friendly so your unit test (in the 
same package) can access it.

In short, don't add public methods that are not needed for the normal
use of the class. Package friendly (internal in .NET) are fine, however.

Venkat

From vnkt6318@cs.uh.edu  Sun Apr  9 07:30:25 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id BBBD6F97E; Sun,  9 Apr 2006 07:30:24 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id BB885F976; Sun,  9 Apr 2006 07:30:19 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id NQM03115
        for <uhcosc6318@list.prudentlearning.com>; Sun, 9 Apr 2006 05:29:15 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 5CEF0F976
	for <uhcosc6318@list.prudentlearning.com>; Sun,  9 Apr 2006 07:29:17 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k39CTHC21265
	for uhcosc6318@list.prudentlearning.com; Sun, 9 Apr 2006 07:29:17 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200604091229.k39CTHC21265@leibnitz.cs.uh.edu>
Subject: More questions provoked by Assignment 1 (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Sun, 9 Apr 2006 07:29:17 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Venkat,
>
>The following quandaries have presented themselves as I have been working on 
>Assignment 1:
>
>1. Redundant unit tests:
>
>Sometimes we have methods that don't do much more than call other methods. 
>For example, I may have a setter as follows:
>
>public void setVariable(Object variableIn)
>{
>  if (check1(variableIn) && check2(vaiableIn)) _variable = variableIn;
>}
>
>If I have already written unit tests for methods check1 and check2, do I 
>still need to write a unit test for setVariable, or is that being 
>unnecessarily redundant?

You can argue both ways. You need to have a failry high test code coverage,
however, I will not insist that it be 100%. You can say that this method
does not do a whole lot than calling other methods and I have tested
those methods. If you are comfortable with that, go with it. On the other
hand, if you want to make sure this method handles well, some expception from
the lower level methods it calls, then it may be worth writing a few test
for it. If you are not convinced you need a test for that method, don't write
it. Later if you realize you need a test for it, you can write.

>2. Unit test documentation:
>
>Do unit tests have to be thoroughly documented?  Hmm. now that I write this 
>question down, it seems kind of silly.  Of course you don't HAVE to document 
>unit tests, but it probably helps (a lot).

Quite a bit of docuementation comes from how we name the methods.

If I write testOne(), this method means nothing and needs English to say
what this is about. This is poor coding.

If I write testUserLoggedIn(), this method hardly needs any documentation
as the name tells me what it is testing - the code is partly the documentation.

>3. Domain-specificity of method names and comments:
>
>In our system, we have a method called "checkNumberOfReds" that compares the 
>contents of two ArrayLists and reports how many objects from the first 
>ArrayList cannot be found in the second.  Our description of this method (as 
>well as the method name) is steeped in Piece Of Mind lingo (references to 
>computer's colors, user's colors, etc.).  But it occurred to me that this 
>method could be described in a way unrelated to Piece Of Mind (e.g., in the 
>way I described it in the first sentence of this paragraph).  Which is the 
>better phrasing to use?  The Piece Of Mind phrasing has the advantage that 
>it is very clear how the method is used within the Piece Of Mind framework. 
>However, the non-Piece of Mind phrasing is better for anyone who might want 
>to use this method outside of the PieceOfMind framework.
>
>Of course, I'm not sure why anyone would want to use the method outside of 
>Piece Of Mind, so I guess I would lean toward using the Piece Of 
>Mind-related phrasing.

It is a very good idea to make the methods mean what it should for someone
knowledgeable about the domain. You are writing the application for the
domain, whatever it is. First use well, then worry about reuse.

>4. while(true) loops:
>
>Do you have any problem with while(true) { . } loops that you have to 
> "break" out of?  I couldn't find anything on the web that said that they 
>were bad programming style, but they do seem kind of funny somehow.

As long as it does not become a wild loop, I have no problem, in otherwords,
make sure it exits.

>5. public vs. protected vs. private:
>
>I've had a little bit of a hard time deciding on visibility modifiers for 
>the methods in our Piece Of Mind.  Most of our methods are static and could 
>potentially be easily used by classes outside our pieceOfMind framework.  I'm 
>not sure how much value they really present though.  Should methods be made 
>public just because there's a remote chance they might be useful to someone? 
>Or is it safe to assume that someone looking for utility methods is not 
>likely to look for them in the inner workings of a game.
>
>Any comments you'd like to offer in response to these questions would be 
>greatly appreciated.
>
>Thanks,

It is important to first put code to good use, and then think about reuse.
Also, Kent Beck talks about Triangularization. Find at least two uses
for a code before you start abstracting out. We tend to build too much
complexity in the code with these thoughts of reuse and extensibility 
sometimes. If you need the code elsewhere, you can quickly refactor if you
write it cohesively and with lesser coupling, and in a readable manner.
So, make it do its job well, first. 

Venkat

From vnkt6318@cs.uh.edu  Mon Apr 10 04:40:41 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 473C6F978; Mon, 10 Apr 2006 04:40:41 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 74451F976; Mon, 10 Apr 2006 04:40:34 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id ONV06244
        for <uhcosc6318@list.prudentlearning.com>; Mon, 10 Apr 2006 02:37:44 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 9398AF976
	for <uhcosc6318@list.prudentlearning.com>; Mon, 10 Apr 2006 04:36:57 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k3A9ava26706
	for uhcosc6318@list.prudentlearning.com; Mon, 10 Apr 2006 04:36:57 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200604100936.k3A9ava26706@leibnitz.cs.uh.edu>
Subject: One (hopefully) final question about Asssignment 1 (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Mon, 10 Apr 2006 04:36:57 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Venkat,
>
>How strict is the one page report requirement for Assignment 1?
>
>Our report is about 1 1/3 pages long.  Is that OK, or do we need to change 
>to 6 point font?  :-)
>
>Thanks,

Don't worry about the page count, instead focus on the content. 

Venkat

From vnkt6318@cs.uh.edu  Mon Apr 10 04:41:02 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 4F11DF979; Mon, 10 Apr 2006 04:41:02 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id E4CE0F978; Mon, 10 Apr 2006 04:40:57 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id ONX84355
        for <uhcosc6318@list.prudentlearning.com>; Mon, 10 Apr 2006 02:39:55 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 973C9F981
	for <uhcosc6318@list.prudentlearning.com>; Mon, 10 Apr 2006 04:40:04 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k3A9e4k26730
	for uhcosc6318@list.prudentlearning.com; Mon, 10 Apr 2006 04:40:04 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200604100940.k3A9e4k26730@leibnitz.cs.uh.edu>
Subject: Problem with JUnit (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Mon, 10 Apr 2006 04:40:04 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Venkat,
>
>I was testing the portability of our Assignment 1 solution on a friend's 
>computer when I discovered a potential problem: a new version of JUnit has 
>been released that doesn't support the previous version's syntax.
>
>We developed our code using JUnit 3.8., the version that was current when 
>you had us analyze JUnit for Homework 1.  Now I am worried that whoever will 
>be grading our assignment will have the latest version of JUnit and our unit 
>tests will not run if he/she tries to run them.
>
>Is this something I need to worry about?  Do I need to change our code to 
>work with JUnit 4.0?  Or can I just specify that the grader needs to use 
>JUnit 3.8 if he/she wants to run our unit tests?
>
>Thanks,

Hi

I will be grading your work. I will be glad to use either JUnit 3.8 or 
JUnit 4.0. You don't even have to say which of these two version to use
as I will know when I look at the syntax of your tests.

Of course, if someone is using some other language, I will use the
appropriate unit testing tool for that.

Venkat

From vnkt6318@cs.uh.edu  Wed Apr 12 05:06:35 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id F00C7F979; Wed, 12 Apr 2006 05:06:34 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id A462FF97C; Wed, 12 Apr 2006 05:06:28 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id QNP01504
        for <uhcosc6318@list.prudentlearning.com>; Wed, 12 Apr 2006 02:55:04 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id AF064F98D
	for <uhcosc6318@list.prudentlearning.com>; Wed, 12 Apr 2006 04:55:33 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k3C9tXo02889
	for uhcosc6318@list.prudentlearning.com; Wed, 12 Apr 2006 04:55:33 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200604120955.k3C9tXo02889@leibnitz.cs.uh.edu>
Subject: When to use patterns? (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Wed, 12 Apr 2006 04:55:33 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Hi Venkat,
>
>A question occured to me as I was viewing the Design Patterns videos. When we want to start building a software application using OOAD principles, should we look for any patterns that may be present in the application(and consequently use them) or should I build the application using all of the various techniques you taught in class(in other words ignoring the patterns if any)? Or should it be a mixture of both?
>Also, when would a software team typically decide to make use of the patterns? Would it be in the analysis, design or coding stage?
>
>Thanks,

This is a good question. Design Patterns should be used as one of the
design techniques (like identifying which principles to follow or 
which are being violated). It is not a good idea to spend time thinking
about which specific patterns to fit in to the design. The use of a pattern
should emerge in the design and design discussions.

As far as the last questions as to when to decide, generally the phase of
tactical design and coding should not really be separated too far.

Venkat

From vnkt6318@cs.uh.edu  Wed Apr 12 05:06:43 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 793A2F985; Wed, 12 Apr 2006 05:06:43 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id AB8FBF979; Wed, 12 Apr 2006 05:06:38 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id QOR51549
        for <uhcosc6318@list.prudentlearning.com>; Wed, 12 Apr 2006 03:05:49 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 6C78BF979
	for <uhcosc6318@list.prudentlearning.com>; Wed, 12 Apr 2006 05:06:19 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k3CA6Jj02904
	for uhcosc6318@list.prudentlearning.com; Wed, 12 Apr 2006 05:06:19 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200604121006.k3CA6Jj02904@leibnitz.cs.uh.edu>
Subject: readability vs. extensibility (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Wed, 12 Apr 2006 05:06:19 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.9 required=5.0 tests=BAD_CREDIT,FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Just a general question really, about code readability vs. extensibility.
>
>Suppose you have an application to be deployed over the web, so we will be
>using HTML forms and some application server.  (I'll keep this in pseudocode
>and try my best to describe the system in a general way so that it is easily
>understandable.)
>
>Now you have a form, say with N fields.  When the form is submitted, it is
>also submitted with an extra field called "fieldNames", which is just a list
>of all the other fields for easy looping (one could also loop over the
>collection if they wanted).  So that rather than having fields named
>"field1, field2, field3" you can name them anything and easily loop over
>them.  The application server treats the form as a structure, so you can
>access the values of the fields using "form.fieldName".  In addition, you
>can also access them like "form[fieldName]".
>
>It seems to me that it is easier to read and understand the code if we had
>processing code like:
>
>// validation
>errorList="";
>if (form.field_1_Name == "") { errorList+="field_1_Name is not filled
>out"; }
>if (form.field_2_Name == "") { errorList+="field_2_Name is not filled
>out"; }
>...
>if (form.field_N_Name == "") { errorList+="field_N_Name is not filled
>out"; }
>
>(could also be using cases)
>then in your query to store it (you will have both update and insert
>depending on if the record exists, but I'm only showing the update).
>
>// we're assuming it passed validation in this example
>update tableName
>set field_1_Name='form.field_1_name',
>    field_2_Name='form.field_2_name',
>...
>
>and so on for each of the N fields.  I really think it is easier to
>understand what is going on and easier to see which fields are required and
>whatnot when you type it all out.
>
>However, as you can see, it would be much better from an extensibility
>standpoint to just loop over the form.fieldNames list.  That way, any time
>you add a field to the form, all the update/insert/validation is taken care
>of.  However, I find it harder to read.  Example:
>
>Array fieldNameArr=form.fieldNames.listToArray();
>for (i=0; i<fieldNameArr.length; i++)
>if (form[fieldNameArr[i]] == "") { errorList+=fieldNameArr[i] + " is not
>filled out"; }
>
>updates an inserts are similarly impacted.
>
>In the case that there is a special exception or two in the form, or some
>calculation to be performed, you can easily except it out using if
>statements, or some other method if you prefer.  This is especially where it
>becomes harder to read, IMO.
>
>Which is more important in a case like this? Am I taking "understandability"
>or "extensibility" to an extreme in either case?  My gut likes the more
>compact example, because it makes my job easier and quicker.  However, it
>might not be readily apparent to someone else what is going on (or should I
>assume they can understand it simply).  Is there some other method I'm
>missing that strikes a balance between the two?

Readability is important. However, since you are dealing with database
and the database already provides scheme why not use the actual names
from the schema to find the metadata and loop though it.

Then the code would be looping on column_names collection obtained from 
the database instead of field1, field2, etc.

Here is an example from a recent code I wrote using Ruby on Rails
(partial code shown):

<%
for journal in @journals
%>
  <tr>
  <% for column in Journal.content_columns %>
    <td><%=h journal.send(column.name) %></td>
  <% end %>
  </tr>

What's even better is you don't write any code to insert the
data into the database! Rails has a superb concept called
ActiveRecords which do the job for you by reading the schema.

[Sales pitch: You have to come to my class in Fall semester to
learn about this ;) http://www.cs.uh.edu/~svenkat/STSD 
Sorry no credit for graduate students taking this course, but
you don't need credit for learning ;)]

Venkat

From vnkt6318@cs.uh.edu  Fri Apr 14 05:07:58 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 3CF5CF985; Fri, 14 Apr 2006 05:07:58 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id C7239F97A; Fri, 14 Apr 2006 05:07:47 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id SNG79649
        for <uhcosc6318@list.prudentlearning.com>; Fri, 14 Apr 2006 02:44:49 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 86156F97C
	for <uhcosc6318@list.prudentlearning.com>; Fri, 14 Apr 2006 04:44:10 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k3E9iAN09277
	for uhcosc6318@list.prudentlearning.com; Fri, 14 Apr 2006 04:44:10 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200604140944.k3E9iAN09277@leibnitz.cs.uh.edu>
Subject: RE: readability vs. extensibility (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Fri, 14 Apr 2006 04:44:10 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.9 required=5.0 tests=BAD_CREDIT,FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>>Readability is important. However, since you are dealing with database
>>and the database already provides scheme why not use the actual names
>>from the schema to find the metadata and loop though it.
>>
>>Then the code would be looping on column_names collection obtained from
>>the database instead of field1, field2, etc.
>>
>>Here is an example from a recent code I wrote using Ruby on Rails
>>(partial code shown):
>>
>><%
>>for journal in @journals
>>%>
>>  <tr>
>>  <% for column in Journal.content_columns %>
>>    <td><%=h journal.send(column.name) %></td>
>>  <% end %>
>>  </tr>
>>
>>What's even better is you don't write any code to insert the
>>data into the database! Rails has a superb concept called
>>ActiveRecords which do the job for you by reading the schema.
>>
>>[Sales pitch: You have to come to my class in Fall semester to
>>learn about this ;) http://www.cs.uh.edu/~svenkat/STSD
>>Sorry no credit for graduate students taking this course, but
>>you don't need credit for learning ;)]
>
>Actually, I was talking about keeping the form field names the same as in
>the db, I just used "field_1_name" as a general field name, not an actual
>one.  I certainly like the idea of querying the db to actually create the
>field as well.  The only problem I see with it is that it would be hard to
>have a different format for each "line" so to speak in the form.  You can
>use the schema to figure out what type of field to show, but what if you
>want something like (for your HTML form):
>
>FirstName (33%)  MiddleName (33%) LastName (34%)
>EmailAddress (100%)
>HomePhoneNumber (50%) WorkPhoneNumber (50%)
>
>And so on... How is that possible looping through the db column names?
>
>The other potential problem I see in generating the form from the db schema
>is that sometimes you have fields in the DB that are calculated from fields
>in the form, take date for instance.  You might want to have 3 drop downs
>for month, day, year and then store them all in one datetime field in the
>DB.  Do you just write something like:
>
><% if fieldType == datetime %>
>	do something different
><% end %>
>
>I do plan to audit the course you mentioned if time is available (ie, it's
>offered on the days I'm already at school and I don't have a class during
>the time frame).  I look forward to it and I am very excited!

The solution is not perfect, but there are ways to minimize the effort.
Special control objects take care of not only fetching the data, but also
performing the updates. The main concern I see (not that it is not a concern
in other approaches) is that if you modify the database schema, it will
affect some of the UI code, thus making it brittle.

In any case, it is worth exploring the concepts used in Rails.

Venkat

From vnkt6318@cs.uh.edu  Mon Apr 17 17:19:23 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 53785F980; Mon, 17 Apr 2006 17:19:23 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 38E6CF96E; Mon, 17 Apr 2006 17:19:13 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id VAH84353
        for <uhcosc6318@list.prudentlearning.com>; Mon, 17 Apr 2006 15:16:53 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 5598FF980
	for <uhcosc6318@list.prudentlearning.com>; Mon, 17 Apr 2006 17:17:22 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k3HMHMT17779
	for uhcosc6318@list.prudentlearning.com; Mon, 17 Apr 2006 17:17:22 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200604172217.k3HMHMT17779@leibnitz.cs.uh.edu>
Subject: Demo schedule
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Mon, 17 Apr 2006 17:17:21 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

Greetings,

Please visit 

http://www2.cs.uh.edu/~svenkat/spring2006OOAD/demo.htm

for demo details.

Regards,

Venkat

From vnkt6318@cs.uh.edu  Wed Apr 19 10:11:40 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 30C0DF98A; Wed, 19 Apr 2006 10:11:40 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 31980F981; Wed, 19 Apr 2006 10:11:33 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id XTD34317
        for <uhcosc6318@list.prudentlearning.com>; Wed, 19 Apr 2006 08:10:17 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 9139EF981
	for <uhcosc6318@list.prudentlearning.com>; Wed, 19 Apr 2006 10:10:51 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k3JFAp221711
	for uhcosc6318@list.prudentlearning.com; Wed, 19 Apr 2006 10:10:51 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200604191510.k3JFAp221711@leibnitz.cs.uh.edu>
Subject: Abstract Factory question (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Wed, 19 Apr 2006 10:10:51 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Venkat,
>
>I was going through your video on Abstract Factory
>pattern. you had a BuildComputer method which had to
>use a if case to determine which kind of object was to
>be created(A or B).
>
>
>BuildComputer(Computer comp,Type theType)
>{
>	//here we check using a if condition to see whether
>the type was a A or B and          return the
>appropriate object
>}
>
>
> The problem of this as i perceived was what if we
>have more than 5 types. 
>This was the solution that you adressed
>
>
>We have a interface called Computer which is
>implemented by Laptop and Desktop. We also have a
>computerFactory.
>
>In the class called work we do something like this.
>
>class work
>{
>	public void getWorkDone(ComputerFactory factory)
>	{
>		Computer theComputer = facotry.createComputer();
>	}
>}
>
>class user
>{
>	Work work = new Work();
> 	work.getWorkDone(new DesktopFactory());
>	// or we can create a new LaptopFactory
>}
>
>
>This means that COmputerFacotry should have a method
>which createComputer() similar to the one like this
>
>createCOmputer()
>{
>	// here the decision is made which object should be
>returned,a Laptop or a         Desktop
>}


No, you will not be making a decision here.

A DesktopFactory will only return Desktop, there is no decision to make.
This is probably the part you are missing.

>To me it looks like we have just moved the decision
>making to another class. It actually still doesnt
>solve problem of what will happen if we have more than
>5 computer types. we would still be using the if case
>but this time in a different class(ComputerFacory).
>
>Am i missing something big?.or is this a sane
>question?
>
>
>thanks

The only decision making point is whether to call

work.getWorkDone(new DesktopFactory());

or

work.getWorkDone(new LaptopFactory());

etc.

The rest of the application will not have any if statements related to
the creation of Computer object.

Let me know if you have more questions after looking at what
I have mentioned above.

Venkat

From vnkt6318@cs.uh.edu  Wed Apr 19 10:11:52 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 0FB90F98A; Wed, 19 Apr 2006 10:11:52 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 995B6F981; Wed, 19 Apr 2006 10:11:44 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id XTD35934
        for <uhcosc6318@list.prudentlearning.com>; Wed, 19 Apr 2006 08:10:34 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 2BEF9F981
	for <uhcosc6318@list.prudentlearning.com>; Wed, 19 Apr 2006 10:11:09 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k3JFB9I21719
	for uhcosc6318@list.prudentlearning.com; Wed, 19 Apr 2006 10:11:09 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200604191511.k3JFB9I21719@leibnitz.cs.uh.edu>
Subject: Patterns (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Wed, 19 Apr 2006 10:11:09 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Venkat,
>
>I have 2 questions about patterns:
>
>1) Suppose you have need of a mediator.  You have 6 "employees" and 1
>"manager" to use the example from class.  When is it appropriate to employ
>the Interface as you showed, as opposed to having them talk directly to the
>manager?  Should you do it before (a sort of pre-emptive coding practice
>which puts the cart before the horse), or do you do it only after you have
>need of a second, different mediator, making the interface the same as the
>one provided by the first?  This question applies to many of the other
>patterns which aren't by definition to be employed after the fact (such as
>Adapter).

Good question. You can extend this to just about anything.

Kent Beck talks about triangulation (Test Driven Development by Example). 
You generalize code when you see two examples or cases where you need 
that functionality. The advantage is, you don't build complexity into 
code with out seeing a real need. For most languages we have fairly decent 
refactoring tools that help us with change today. Making the change like 
you have suggested is not very expensive once you see the need.
However, builing that complexity in without a real need is expensive
to maintain, hard to understand,...

>2) In looking at some of my group's code, I noticed that all of our entity
>classes have the same method names.  In addition, they all have one method
>which is extremely similar that I would like to extract to a common method.
>I thought of making an interface, but that wouldn't allow me to keep the
>similar method the same across the classes (in one place).  I also thought
>of doing an abstract base class, but then I realized not all the methods had
>the same parameters, so that neither solution would work.  I had read
>something about varargs but I have no clue about how to use them correctly.
>Would that address my concern, or Is there some pattern that would address
>something like this?  Should I just create a class that has this one method
>that the other classes use?
>
>Thanks,

One possibility is to use params (.NET) or varargs (Java). Another is to
see if you can role the arguments into an object and bring those objects
under a common interface. I will have to look at the specific case to
make a meaningful suggestion, however.

Venkat

From vnkt6318@cs.uh.edu  Thu Apr 20 04:11:39 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 3574FF986; Thu, 20 Apr 2006 04:11:39 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id E6300F981; Thu, 20 Apr 2006 04:11:28 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id YND95356
        for <uhcosc6318@list.prudentlearning.com>; Thu, 20 Apr 2006 02:09:56 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id BBC99F97D
	for <uhcosc6318@list.prudentlearning.com>; Thu, 20 Apr 2006 04:10:31 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k3K9AVC23964
	for uhcosc6318@list.prudentlearning.com; Thu, 20 Apr 2006 04:10:31 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200604200910.k3K9AVC23964@leibnitz.cs.uh.edu>
Subject: JDepend (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Thu, 20 Apr 2006 04:10:31 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: RO

>Venkat,
>
>How does JDepend calculate Ca and Ce?
>
>I ask because I have a package which is depended upon by 3 outside packages,
>and depends on no other package in my system.  It does depend on java.sql,
>java.text, and java.util, however, so perhaps you could call it 3 (I don't
>know if those count).  In any case, JDepend is somehow showing a Ce of 5,
>and I'm wondering where it got that number?  Ca is correct at 3.
>
>I know you can't tell without looking at the code specifically, but I wonder
>if you might shed some light on packages it could be counting?
>
>Thanks,

Your package may depend on 3 outside packages, however, how many dependencies
does it have on each of those packages? Can you confirm that?

Venkat

From vnkt6318@cs.uh.edu  Sat Apr 22 05:12:53 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 4E7AFF99C; Sat, 22 Apr 2006 05:12:53 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 9E1B2F97D; Sat, 22 Apr 2006 05:12:48 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id AOE12545
        for <uhcosc6318@list.prudentlearning.com>; Sat, 22 Apr 2006 03:08:45 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 315DDF97D
	for <uhcosc6318@list.prudentlearning.com>; Sat, 22 Apr 2006 05:09:21 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k3MA9Lp28251
	for uhcosc6318@list.prudentlearning.com; Sat, 22 Apr 2006 05:09:21 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200604221009.k3MA9Lp28251@leibnitz.cs.uh.edu>
Subject: RE: JDepend (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Sat, 22 Apr 2006 05:09:20 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>>>How does JDepend calculate Ca and Ce?
>>>
>>>I ask because I have a package which is depended upon by 3 outside
>packages,
>>>and depends on no other package in my system.  It does depend on java.sql,
>>>java.text, and java.util, however, so perhaps you could call it 3 (I don't
>>>know if those count).  In any case, JDepend is somehow showing a Ce of 5,
>>>and I'm wondering where it got that number?  Ca is correct at 3.
>>>
>>>I know you can't tell without looking at the code specifically, but I
>wonder
>>>if you might shed some light on packages it could be counting?
>>>
>>>Thanks,
>
>>Your package may depend on 3 outside packages, however, how many
>dependencies
>>does it have on each of those packages? Can you confirm that?
>
>Sorry I missed that distinction in the previous email.  It depends on 6
>outside classes, 4 in java.sql, 1 in java.text, and 1 in java.util.  They
>are java.sql.Connection, DriverManager, Statement, ResultSet,
>java.text.SimpleDateFormat, and java.util.Date.  Still doesn't make sense
>for me to be seeing 5.  Why not 6?

I am not sure about this. I may have to play with it to see what's
going on.

>This package is basically just one utility class that gets used by many of
>our other classes, and didn't fit in any place else.  Therefore the package
>is 100% concrete, and since the class works as we want it to, it is
>extremely unlikely to change.  I think it is a question I already know the
>answer to, but I shouldn't be abstracting an interface from it and having it
>implement that interface should I?  Would this qualify as one of those "I
>know D' is out of range for this, but I don't mind?" situations, especially
>since the classes it depends on are also unlikely to change?  From that
>point of view, it depends on nothing and will never change, having a lot of
>things depend on it, which seems good.  Of course, we can't predict the
>future.

I agree, I would not throw an interface at it until I see a need -
triangulate.

Venkat

From vnkt6318@cs.uh.edu  Sat Apr 22 05:19:24 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 488BDF999; Sat, 22 Apr 2006 05:19:24 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 9BD80F97D; Sat, 22 Apr 2006 05:19:16 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id AOO03120
        for <uhcosc6318@list.prudentlearning.com>; Sat, 22 Apr 2006 03:18:20 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 75EDBF97D
	for <uhcosc6318@list.prudentlearning.com>; Sat, 22 Apr 2006 05:18:56 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k3MAIug28276
	for uhcosc6318@list.prudentlearning.com; Sat, 22 Apr 2006 05:18:56 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200604221018.k3MAIug28276@leibnitz.cs.uh.edu>
Subject: Java and Dates wierdness (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Sat, 22 Apr 2006 05:18:56 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>I guess this isn't so much of an OOAD question, but I hope you'll answer
>anyway.
>
>Is there a good reason java treats January as the 0th month, rather than 1?
>I know in an array, for example, if you stored the names it would be in the
>first [0] position, but it seems extremely odd to be creating a
>GregorianCalendar with the date January, 12, 2007 using new
>GregorianCalendar(2007,0,12) (or any other month as one behind its normal
>spot).
>
>This was causing many of my unit tests to fail although my personal tests
>were working!  It took me I don't know how long to figure out what the
>problem was.  I guess I should have read the docs, but I thought using 1 to
>represent January was fairly standard.
>
>Any insight into the reasoning behind this behavior would be appreciated.
>
>Thanks,

The first time I stumbled on this, I found it odd as well.
I guess having it as 0 based helps with array indexing and that is
some convenience to have.

As far as the oddity, you can get over it by using the constants.
For instance, in your example, 

GregorianCalendar with the date January, 12, 2007 using 
new GregorianCalendar(2007,Calendar.JANUARY,12);

Venkat

From vnkt6318@cs.uh.edu  Sat Apr 22 05:20:47 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 38F22F990; Sat, 22 Apr 2006 05:20:47 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id C6A47F97D; Sat, 22 Apr 2006 05:20:42 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id AOP75040
        for <uhcosc6318@list.prudentlearning.com>; Sat, 22 Apr 2006 03:19:40 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 3B730F990
	for <uhcosc6318@list.prudentlearning.com>; Sat, 22 Apr 2006 05:20:17 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k3MAKHM28306
	for uhcosc6318@list.prudentlearning.com; Sat, 22 Apr 2006 05:20:17 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200604221020.k3MAKHM28306@leibnitz.cs.uh.edu>
Subject: Problem in viewing class stream video (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Sat, 22 Apr 2006 05:20:17 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

Hi,

I'm sorry for asking a question that is not related to designing problem.

I have a problem in viewing class video. I can open the video only one time
on the same machine. If I try to open to view the same video or another
video on the same machine again it will have no sound and the quality of
picture will be very bad. At first I thought that it is the problem of
Internet speed, then I tried to open the video in my friend room which
has faster Internet speed than my room. It worked fine for the first video
that I opened but the same problem happened when I tried to open the second
video. I think it might be the problem of buffering or something else. Does
anyone have the same problem with me? What is the solution?

Thanks & Regards,
A students in OOAD class

From vnkt6318@cs.uh.edu  Sun Apr 23 21:12:18 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 46055F97F; Sun, 23 Apr 2006 21:12:18 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id C85E9F976; Sun, 23 Apr 2006 21:12:11 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id CGH60940
        for <uhcosc6318@list.prudentlearning.com>; Sun, 23 Apr 2006 19:09:40 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 65E6CF976
	for <uhcosc6318@list.prudentlearning.com>; Sun, 23 Apr 2006 21:10:17 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k3O2AHa03099
	for uhcosc6318@list.prudentlearning.com; Sun, 23 Apr 2006 21:10:17 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200604240210.k3O2AHa03099@leibnitz.cs.uh.edu>
Subject: Question about patterns... (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Sun, 23 Apr 2006 21:10:17 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Hello Venkat,
>
>I was reviewing the design patterns, and I am still a little confused
>(the dreaded 'confused pattern' you mentioned in class, I believe!),
>regarding the difference between the 'Proxy' and the 'Facade' patterns.
>There seems to be a degree of structural similarity between the two. In a
>contextual sense, would it be correct to say that a Proxy refers to a singl=
>e
>object and proxies access to it, whereas a Facade is more about hiding the
>organizational details of a complex subsystem? If you would elaborate a bit=
>,
>or forward any URLs that provide examples on differences between patterns,
>that'd be great. Thank You.
>
>Sincerely,

In the case of proxy pattern, the proxy has the same interface as the
class it stands in front of. On the other hand Facade simplies the
interface and acts as a wrapper for a class, a group of classes or 
a subsystem. While they structure may have similarities, the intent
is quite different.

Venkat

From vnkt6318@cs.uh.edu  Sun Apr 23 21:12:49 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id D23A4F989; Sun, 23 Apr 2006 21:12:48 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 53441F976; Sun, 23 Apr 2006 21:12:39 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id CGJ76520
        for <uhcosc6318@list.prudentlearning.com>; Sun, 23 Apr 2006 19:11:20 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 13763F976
	for <uhcosc6318@list.prudentlearning.com>; Sun, 23 Apr 2006 21:11:58 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k3O2BvE03107
	for uhcosc6318@list.prudentlearning.com; Sun, 23 Apr 2006 21:11:57 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200604240211.k3O2BvE03107@leibnitz.cs.uh.edu>
Subject: Resources for the OO principles (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Sun, 23 Apr 2006 21:11:57 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>I don't recall if someone posted these articles to the list in the 
>beginning of the semester, but I've been reading them today, and have 
>found them very rewarding for developing a better understanding of many 
>of the principles (such as DIP, OCP, LSP, etc) we've been learning 
>about. I thought I'd share them with the class:
>
>http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod
>
>It's a nice catalog of all Martin's series of articles written about the 
>various principles, right there available from Object Mentor (this link 
>is to their blog).
>
>Enjoy,

Yes, I highly recommend Bob's articles. The principles originally appeared
as a collection of articles in C++ Report magaine. These (and there are
more) have been collected nicely on the web for everyone to enjoy and
benefit.

Thanks for forwarding the link.

Venkat

From vnkt6318@cs.uh.edu  Sun Apr 23 21:29:29 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 2947BF97E; Sun, 23 Apr 2006 21:29:29 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 20618F96E; Sun, 23 Apr 2006 21:29:23 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id CGZ15612
        for <uhcosc6318@list.prudentlearning.com>; Sun, 23 Apr 2006 19:27:12 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 4A573F96E
	for <uhcosc6318@list.prudentlearning.com>; Sun, 23 Apr 2006 21:27:26 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k3O2RQW03140
	for uhcosc6318@list.prudentlearning.com; Sun, 23 Apr 2006 21:27:26 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200604240227.k3O2RQW03140@leibnitz.cs.uh.edu>
Subject: ISP / multiple inheritance (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Sun, 23 Apr 2006 21:27:26 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Just reading through the notes on Interface Segregation Principle, I 
>noticed the MicrowaveImplementations are deriving from two sources (one 
>is the IMicrowave, and the other is INotify).
>
>I never noticed before.  I thought part of the rationale behind not 
>allowing multiple inheritance was that some methods in the two different 
>base classes may conflict.  Can't that be the case here with 
>implementing multiple interfaces?  It seems to me, an interface is 
>simply an abstract base class whose member functions are all virtual, so 
>why should it be OK to "inherit" through multiple interfaces, but not 
>parent classes?
>
>Well, this led me to do a little experiment.  Of course, I realized 
>immediately that it poses no problem to implement 2 interfaces since 
>those interfaces don't actually have implementations to worry about 
>conflicts.  But how does Java treat a class A, which extends a class B 
>that has a method which has the same signature as an interface C.
>
>class A extends B implements C
>{
>...
>}
>
>Well, it won't compile if A does not override the method in B.   That is 
>fine behavior, in my book, but even allowing it shows that there could 
>be a policy that if you inherit from 2 classes that share some method 
>signatures, you must override.  Is there some other reasons I've missed 
>as to why they don't allow multiple inheritance?
>Further, although I think the behavior is fine, you could also make the 
>argument that this class does provide the method required by the 
>interface through its inheritance... What do you think? 

Let's first distinguish between two types of inheritance.
Interface inheritance and implementation inheritance.

Interface inheritance is where are inheriting from an interface.
An interface is a contract, a pure spec, it has no implementation,
it is a group of method declarations only.

Implementation inheritance is when you inherit from a class, be it
concrete or abstract. A class has implementation - member variables,
method body, etc.

Multiple inherface inheritance is healty. This is very common in real life
as well. I am a Man, but I am a father, a brother, a teacher, etc.
While I belong to a certain class and inherit the capabilities and
characteristics of the class of Human, I also shared other characteristics.

Let's talk about a friend. If we say a Human has a friend. Let's make
the Friend inherit from Human for a moment. This will allow a friend of
a Human to be another Human - a Man or a Woman. However, what is a friend?
A friend (a) is there for you, (b) is happy to see you, (c) listens to you
when you need. If that is what a friend is, some of us have found great
friends in a Dog. It is there for you, it is very happy to see you, and
(sadly) it listens to you when you really really need! However, if a 
Friend inheirts from a Human, this becomes a problem as Dog is not Human.
By making a Friend an interface, you can have Dog extend Animal and also
implement Friend interface.

The problem with multiple implementation inheritance is that the
implementation you derive from multiple classes may conflict with each other.
You can't get rid of the base implementation when you inherit.

On the other hand, when you multiply inherit from two interfaces, there
is no chance for collision of implemetation since there is none from the
base interfaces.

Of course, there is still one problem. What if there are methods, in two
or more base interfaces, that have the same name, but different intent?

There is a collision here. Java does not have a very elegant way to
solve this, however, there is a work around. .NET has what are called
explicit interfaces to solve this. 

If you are interested in learning more about this, please refer to
the articles
1. Dealing with Conflicting Interfaces: Part-I - Java
2. Dealing with Conflicting Interfaces: Part-II - .NET

These can be downloaded from
http://www.agiledeveloper.com/download.aspx

Feel free to write more after you review the above articles.

Venkat

From vnkt6318@cs.uh.edu  Tue Apr 25 05:04:51 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id F2521F989; Tue, 25 Apr 2006 05:04:50 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 3D4E9F97C; Tue, 25 Apr 2006 05:04:46 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id DOC84307
        for <uhcosc6318@list.prudentlearning.com>; Tue, 25 Apr 2006 03:03:07 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 97B0AF97C
	for <uhcosc6318@list.prudentlearning.com>; Tue, 25 Apr 2006 05:03:43 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k3PA3hG07483
	for uhcosc6318@list.prudentlearning.com; Tue, 25 Apr 2006 05:03:43 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200604251003.k3PA3hG07483@leibnitz.cs.uh.edu>
Subject: Strategy Pattern (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Tue, 25 Apr 2006 05:03:43 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Venkat,
>
>I notice that you mention Strategy pattern as an alternative to subclassing,
>but subclassing is still used in the pattern (the concrete strategies
>inherit from the abstract strategy).  Is it an alternative because the
>"Context," as the Gang of Four book calls it, actually chooses the subclass
>it wants to work with, rather than using the parent class, whereas most of
>the other patterns use the parent class for substitutability?

Let's say you have a class X with a feature F and an algorithm A.
If you want a different algorithm, you could derive from X, say X1 with
Feature F (inherited from X) and algorithm A1. Now, let's say we want
another algorithm A2. We can derive X2 from X with feature F (again inherited from
X) and algorithm A2. Now, what if you want these three algorithms with a different feature
F1? You will have to derive from both X1 and X2, right? So, you end up with
X, X1, X2, XF1, X1F1, and X2F1. To add a new features you will have to create n classes where
n is the number of algorithms.

Let's take a different approach. X has a feature F and aggregates an object that has
algorithm A. If you want a different algorith, you can simply use the same class X,
but with A1 or A2 derived from A. If you want a different features, you can derive
XF1 from X. XF1 will have feature F1, but it can use either Algorithm A, A1 or A2.
To add a new features, you will have to simply create 1 class and this can aggregate
any of the algorithms. With this approach you have to subclass only 1 class instead of n.

>I think that's correct, but I wanted to ask to be sure.  I've gone from
>thinking I know what these patterns are to thinking them to be a lot a like,
>which led me to confusing which ones were used for what purpose.  Now I'm
>trying to go back and understand their nuances, so apologize if I'm going to
>be asking a lot of questions like this in the coming days.  I'm just trying
>to understand the details, which hopefully will lead to a better
>understanding of when to use what patterns (the only thing worse than not
>using patterns is using them for the wrong reasons, right?) =)
>
>Thanks for your help,

It is very natural to be confused when looking at all these. The objective should
not be to use all (or even most) of these. It is to understand the main strengths and
weaknesses of these and let time take its course for you to figure out where they apply.

Venkat

From vnkt6318@cs.uh.edu  Tue Apr 25 05:30:37 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id CDFC8F97C; Tue, 25 Apr 2006 05:30:36 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 42EBEF97E; Tue, 25 Apr 2006 05:30:32 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id DOO46826
        for <uhcosc6318@list.prudentlearning.com>; Tue, 25 Apr 2006 03:15:26 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 17479F989
	for <uhcosc6318@list.prudentlearning.com>; Tue, 25 Apr 2006 05:16:04 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k3PAG3E07586
	for uhcosc6318@list.prudentlearning.com; Tue, 25 Apr 2006 05:16:03 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200604251016.k3PAG3E07586@leibnitz.cs.uh.edu>
Subject: C# question (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Tue, 25 Apr 2006 05:16:03 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Hello Venakt,</P>
>i have a question about how to implement something in C#... im used to 
>working with C a lot, so bear with me a little here..
>suppose we need an array of linked lists..
>in C we can do something like:
>typedef struct Entry {
>	int data;
>	struct Entry *next;
>}
>struct Entry *entries;
>
>in C# i couldn't do the "next" thing, it said that this would create a cycle.. >so my partner suggested to use an ArrayList, where each entry is an array of 
>the struct Entry..
>So do u think that would be a good idea?
>

The reason you got an error is in .NET, struct is a value type while class
is a reference type. Value types are created on the stack by default.
When you put next within Entry, you are embedding an instance of Entry
within another instance of Entry. In this case, it is no longer equivalent
to the use of pointer in the above C code. Instead, it is as if you wrote
the C code without the * (as struct Entry next), and that will be an error
in C as well.

Here is the equivalent code in C#:

    class Entry
    {
        int date;
        Entry next;

        //...
    }

class is a referenc type and is created on the heap. Entry next is
a reference in this case (like a pointer in C not like a reference in C++).

Venkat

From vnkt6318@cs.uh.edu  Thu Apr 27 06:44:46 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 71515F985; Thu, 27 Apr 2006 06:44:46 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id E73DAF981; Thu, 27 Apr 2006 06:44:37 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id FPH62511
        for <uhcosc6318@list.prudentlearning.com>; Thu, 27 Apr 2006 04:32:11 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 8967BF981
	for <uhcosc6318@list.prudentlearning.com>; Thu, 27 Apr 2006 06:31:38 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k3RBVcC21505
	for uhcosc6318@list.prudentlearning.com; Thu, 27 Apr 2006 06:31:38 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200604271131.k3RBVcC21505@leibnitz.cs.uh.edu>
Subject: What is expected in the Final Report (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Thu, 27 Apr 2006 06:31:38 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

Greetings,

For details on what is expected in the final (refined) report, please visit 
the course syllabus page at

http://www2.cs.uh.edu/~svenkat/spring2006OOAD/syllabus.html

Here are some details on what I specifically expect:

1. Any significant changes made to the design and reasoning for the change.
2. What principles and patterns, if any, you have used and again reasoning
	in terms of benefits, problems, issues, etc.
3. Any thing else that you think you should address or present.

(The evaluation report of your development report will be posted by
Sunday.)

Thanks

Venkat

From vnkt6318@cs.uh.edu  Thu Apr 27 06:47:28 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 08414F981; Thu, 27 Apr 2006 06:47:28 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id B9BA4F985; Thu, 27 Apr 2006 06:47:20 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id FPU25042
        for <uhcosc6318@list.prudentlearning.com>; Thu, 27 Apr 2006 04:45:42 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 5870DF984
	for <uhcosc6318@list.prudentlearning.com>; Thu, 27 Apr 2006 06:46:16 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k3RBkGC21531
	for uhcosc6318@list.prudentlearning.com; Thu, 27 Apr 2006 06:46:16 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200604271146.k3RBkGC21531@leibnitz.cs.uh.edu>
Subject: Developer Library (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Thu, 27 Apr 2006 06:46:16 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Venkat,
>
>I haven't had the time yet to respond to one of the last emails that I 
>hope to. I hope you won't mind if I follow up after finals, even though 
>class is over.

No problem.

>Also, you mentioned earlier in the semester there were some books 
>(perhaps you said about 10) that everyone should have, in the vein of 
>UML Distilled (I don't recall if that was one, but you get the idea). In 
>any case, I thought I'd ask you to list them so I can add them to my own.

I will mail you a list before this mailing list is closed (in a couple of
weeks).

>Finally, you also mentioned something about another HW and assignment. I 
>was wondering if/when we might be getting these, and when they would be due?

It's comming. It will be due after the project due date of course.

>Thanks for a most interesting and rewarding semester,

Thank you for all the interesting questions and discussions you
raised on the mailing list and in class.

Regards,

Venkat

From vnkt6318@cs.uh.edu  Fri Apr 28 05:08:43 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 09D07F993; Fri, 28 Apr 2006 05:08:43 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 94387F981; Fri, 28 Apr 2006 05:08:35 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id GOJ51518
        for <uhcosc6318@list.prudentlearning.com>; Fri, 28 Apr 2006 03:07:18 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 65559F991
	for <uhcosc6318@list.prudentlearning.com>; Fri, 28 Apr 2006 05:07:57 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k3SA7vr23609
	for uhcosc6318@list.prudentlearning.com; Fri, 28 Apr 2006 05:07:57 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200604281007.k3SA7vr23609@leibnitz.cs.uh.edu>
Subject: STSD: Ruby, Rails, and AJAX course in Fall
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Fri, 28 Apr 2006 05:07:57 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

Greetings,

Several of you asked if you can take the Ruby, Rails, and AJAX course I 
am offering at the undergrad level in the fall semester. Due to overwhelming 
request, I discussed this with the department, and we decided to offer this 
course at the graduate level as well.

You can find the details regarding this course at
http://www.cs.uh.edu/~svenkat/STSD

Regards,

Venkat

From vnkt6318@cs.uh.edu  Sun Apr 30 00:49:40 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 26204F979; Sun, 30 Apr 2006 00:49:40 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id AE081F96E; Sun, 30 Apr 2006 00:49:35 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id IJA35932
        for <uhcosc6318@list.prudentlearning.com>; Sat, 29 Apr 2006 22:48:32 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 2BC6CF96E
	for <uhcosc6318@list.prudentlearning.com>; Sun, 30 Apr 2006 00:49:12 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k3U5nB804779
	for uhcosc6318@list.prudentlearning.com; Sun, 30 Apr 2006 00:49:11 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200604300549.k3U5nB804779@leibnitz.cs.uh.edu>
Subject: Final Report (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Sun, 30 Apr 2006 00:49:11 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: RO

>Hi Venkat,
>
>We would like to know the last date for the submission of the report. Each
>person says different date for the report. So please mail us with the
>correct date.
>
>Warm regards,

Each team's final report is due at the time of the team's demo.

Venkat

From vnkt6318@cs.uh.edu  Mon May  1 15:00:06 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 50E42F98B; Mon,  1 May 2006 15:00:06 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id DD23AF96E; Mon,  1 May 2006 14:59:57 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id FYH29640
        for <uhcosc6318@list.prudentlearning.com>; Mon, 1 May 2006 12:58:40 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 4126CF96E
	for <uhcosc6318@list.prudentlearning.com>; Mon,  1 May 2006 14:59:19 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k41JxJZ09011
	for uhcosc6318@list.prudentlearning.com; Mon, 1 May 2006 14:59:19 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200605011959.k41JxJZ09011@leibnitz.cs.uh.edu>
Subject: Assignment 2 posted (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Mon, 1 May 2006 14:59:19 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

Assignment 2 has been posted.

Enjoy.

Venkat

From vnkt6318@cs.uh.edu  Wed May  3 05:16:06 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 7D168F97C; Wed,  3 May 2006 05:16:05 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id D5D41F97C; Wed,  3 May 2006 05:15:58 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id HPP10938
        for <uhcosc6318@list.prudentlearning.com>; Wed, 3 May 2006 03:12:38 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 59E91F97C
	for <uhcosc6318@list.prudentlearning.com>; Wed,  3 May 2006 05:13:19 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k43ADJq15347
	for uhcosc6318@list.prudentlearning.com; Wed, 3 May 2006 05:13:19 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200605031013.k43ADJq15347@leibnitz.cs.uh.edu>
Subject: Questions: Assignment 2 posted (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Wed, 3 May 2006 05:13:19 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Can I reuse code form our project for the assignment if I originally 
>wrote the code?

Since the code in assignment belongs to the project, others may 
try to reuse as well and you may end up with copy charges. Avoid it.

>Can I make a graphical user interface instead of a command line one?

It is up to you, but keep it simple.

>Is this an individual assignment?

Yes.

Venkat

From vnkt6318@cs.uh.edu  Wed May  3 05:17:36 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id BF606F97C; Wed,  3 May 2006 05:17:35 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id B4D07F97C; Wed,  3 May 2006 05:17:28 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id HPT32829
        for <uhcosc6318@list.prudentlearning.com>; Wed, 3 May 2006 03:16:29 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id D39CFF97C
	for <uhcosc6318@list.prudentlearning.com>; Wed,  3 May 2006 05:17:10 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k43AHAU15365
	for uhcosc6318@list.prudentlearning.com; Wed, 3 May 2006 05:17:10 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200605031017.k43AHAU15365@leibnitz.cs.uh.edu>
Subject: Assignment 2 Doubts (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Wed, 3 May 2006 05:17:10 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Hello Venkat ,
>
>In assignement 2 , You said that while adding a new appliance , we are not
>allowed to recompile or make changes to any of the existing code.
>
>My question is ,  can't we even make a change in the client code or the
>main file in C++
>
>Regards

Keep the change as minimal as possible. You will be graded based on
how close to that potential minimal you were able to get to based on
the language.

Venkat

From vnkt6318@cs.uh.edu  Wed May  3 05:23:07 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id E0E25F986; Wed,  3 May 2006 05:23:06 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 88BFCF992; Wed,  3 May 2006 05:22:52 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id HPY71849
        for <uhcosc6318@list.prudentlearning.com>; Wed, 3 May 2006 03:21:49 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 380B0F992
	for <uhcosc6318@list.prudentlearning.com>; Wed,  3 May 2006 05:22:31 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k43AMVj15405
	for uhcosc6318@list.prudentlearning.com; Wed, 3 May 2006 05:22:31 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200605031022.k43AMVj15405@leibnitz.cs.uh.edu>
Subject: Demo
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Wed, 3 May 2006 05:22:31 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

Greetings,

Each team member is required to be present at the demo of their team.
If you don't show up, you loose points for the demo.

You are invited to attend (optionally) the demo of other teams.

For details, please visit
http://www.cs.uh.edu/~svenkat/spring2006OOAD/demo.htm

Regards,

Venkat

From vnkt6318@cs.uh.edu  Thu May  4 06:52:30 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id A6817F985; Thu,  4 May 2006 06:52:29 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 84A0FF978; Thu,  4 May 2006 06:52:20 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id IQD62518
        for <uhcosc6318@list.prudentlearning.com>; Thu, 4 May 2006 04:51:18 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id DDC07F978
	for <uhcosc6318@list.prudentlearning.com>; Thu,  4 May 2006 06:52:00 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k44Bq0m18146
	for uhcosc6318@list.prudentlearning.com; Thu, 4 May 2006 06:52:00 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200605041152.k44Bq0m18146@leibnitz.cs.uh.edu>
Subject: Assignment 2 Doubts
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Thu, 4 May 2006 06:52:00 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Hi Venkat,
>
>After reading the question i feel that there is a very
>simple solution to the question. Please let me know if
>i have misunderstood the question.
>
>The simplest solution that comes to my mind is to
>create an application that has a struct/class which
>has 3 properties, namely, an id, name and price of the
>appliance. 
>
>Now create an array of structures whose data is
>populated from a text file which holds the list of id,
>products and price. The start of the application
>causes the array of structures to be populated. We
>thus have all products in memory everytime the program
>starts and we can handle the operations u mentioned.
>In this case a new product would only mean a new row
>in the text file :)
>
>Thanks and Regards,

Good try (and a resonable attempt actually)!

However, I want to make this a bit more work for you :)

Make an assumption that you will need different class for
each appliance (for there may be behavior expected out of
these appliances and there may be a variation in the implementation
though not shown in this example).

Venkat

From vnkt6318@cs.uh.edu  Fri May  5 04:49:26 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id A3F34F997; Fri,  5 May 2006 04:49:25 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id D9870F985; Fri,  5 May 2006 04:49:19 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id JOT76512
        for <uhcosc6318@list.prudentlearning.com>; Fri, 5 May 2006 02:40:12 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 3A5C6F985
	for <uhcosc6318@list.prudentlearning.com>; Fri,  5 May 2006 04:40:55 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k459etM28529
	for uhcosc6318@list.prudentlearning.com; Fri, 5 May 2006 04:40:55 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200605050940.k459etM28529@leibnitz.cs.uh.edu>
Subject: Assignment 2 Doubt (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Fri, 5 May 2006 04:40:54 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: RO

>Venkat
>
>i have 1 doubt in assinment 2
>
>I am using seperate classes for each appliance and then creating a 
>applianceList using arraylist.
>
>Now to add a new appliance i need to add a class for this new appliance with 
>its properties and just one line in code  to add new appliance to arraylist 
>without any other change.
>
>But according to the assignment if we want to add one more appliance we are 
>not allowed to compile the code.
>
>Can you please let me know if i can do this.
>
>Regards

Get as minimum modification as you possibly can.
How minimum you can get depends on the language you are using and
the techniques you are applying.

Venkat

From vnkt6318@cs.uh.edu  Fri May  5 04:49:37 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id AAC11F985; Fri,  5 May 2006 04:49:36 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 800D8F989; Fri,  5 May 2006 04:49:30 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id JOU14017
        for <uhcosc6318@list.prudentlearning.com>; Fri, 5 May 2006 02:41:17 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 9968FF985
	for <uhcosc6318@list.prudentlearning.com>; Fri,  5 May 2006 04:41:59 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k459fx728537
	for uhcosc6318@list.prudentlearning.com; Fri, 5 May 2006 04:41:59 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200605050941.k459fx728537@leibnitz.cs.uh.edu>
Subject: Please note
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Fri, 5 May 2006 04:41:59 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: RO

Folks,

Please note my email for COSC 6318 related technical questions and
assignment submission is vnkt6318@cs.uh.edu.

Please don't email your assignments or questions to my other email
addresses.

Thanks,

Venkat

From vnkt6318@cs.uh.edu  Fri May  5 04:50:19 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id B53AAF9B5; Fri,  5 May 2006 04:50:18 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 520A7F989; Fri,  5 May 2006 04:49:55 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id JOV28150
        for <uhcosc6318@list.prudentlearning.com>; Fri, 5 May 2006 02:42:50 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 82133F985
	for <uhcosc6318@list.prudentlearning.com>; Fri,  5 May 2006 04:43:32 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k459hW628547
	for uhcosc6318@list.prudentlearning.com; Fri, 5 May 2006 04:43:32 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200605050943.k459hW628547@leibnitz.cs.uh.edu>
Subject: [Fwd: video links] (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Fri, 5 May 2006 04:43:32 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Venkat,
>
>Would you be able to keep the links to streaming videos active during the 
>summer as well because there are some topics such as Design Principles, 
>Patterns etc. which will take some time to be able to apply efficiently and 
>we would like to reference your videos as we need in our studies.
>
>As far as we know, the records in th library are taken away as the semester 
>of the course passes.
>
>Thanks....

I don't know. I've sent an email to folks that maintain the link
and asked them for this detail. I will send an email to the list
as soon as I hear.

Regards,

Venkat

From vnkt6318@cs.uh.edu  Fri May  5 04:50:42 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 02B9DF9BC; Fri,  5 May 2006 04:50:41 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 5691AF9A8; Fri,  5 May 2006 04:50:04 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id JOB20325
        for <uhcosc6318@list.prudentlearning.com>; Fri, 5 May 2006 02:48:25 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id D75C4F994
	for <uhcosc6318@list.prudentlearning.com>; Fri,  5 May 2006 04:49:05 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k459n5Y28566
	for uhcosc6318@list.prudentlearning.com; Fri, 5 May 2006 04:49:05 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200605050949.k459n5Y28566@leibnitz.cs.uh.edu>
Subject: Query Regarding Validation of Controls (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Fri, 5 May 2006 04:49:05 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Hello Venkat,
> 
>During Our Project Demo you asked whether we are using Client Side 
>validations Provided by ASP.NET 2.0 or Server side validations?
> 
>We are employing RequiredFieldValidator and RegularExpressionValidator 
>controls provided by ASP.NET to check for null Input or US Zip etc and 
>For SQL Injection we are performing Server Side validation in which a 
>String is Passed to the Server, Server Validates and Provides Response.
> 
>According to discussions in class we should use a script that will be 
>served to each of the user requesting pages which require validation. 
>We could have used the RegularExpressionValidator to check for SQL 
>Injection that validates control at Client Side itself.
> 
>Can you please guide me on "what kind of validation need to be used and 
>is preferable  when we develop real world solutions?"
> 
>Thank You

For validations that require access to data that is stored on the server side,
you will of course need server side validation.

For validation that may require extensive coding and you prefer not to
use javascript to write it, you may still move that to server side.

If you are employing AJAX like features, then without fully refreshing
the page, you can still perform server side validation. Even though the
request goes back to server, it does not appear so from the users perspective
and also, since the entire page is not refreshed, it has other advantages
(full page does not have to be loaded, you can keep the contents of the 
page unchanged, the page is still in the same location where user has 
scrolled down, etc.).

Generally, since client validation is cheaper, I would suggest consider that
if there are no other convincing reasons not to.

Venkat

From vnkt6318@cs.uh.edu  Fri May  5 04:56:32 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 528F4F99B; Fri,  5 May 2006 04:56:32 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 16ECCF994; Fri,  5 May 2006 04:56:26 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id JOE12555
        for <uhcosc6318@list.prudentlearning.com>; Fri, 5 May 2006 02:51:55 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id B69BEF997
	for <uhcosc6318@list.prudentlearning.com>; Fri,  5 May 2006 04:52:37 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k459qbL28615
	for uhcosc6318@list.prudentlearning.com; Fri, 5 May 2006 04:52:37 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200605050952.k459qbL28615@leibnitz.cs.uh.edu>
Subject: question about Assgn.2 (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Fri, 5 May 2006 04:52:37 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Hi,
>   
>  I am not sure if my strategy to implement assignment 2 is as per your 
>expectation.
>   
>     I am planning to ...deleted...
>   
>  Please let me know if this implementation is breaking any rule. (since 
>there won't be new code at all).
>   
>  Thanks,

I will let you use your judgment to decide if this is adequate 
(I am not saying you are right, I am not saying you are wrong,
I am only saying, you need to make that decision).

Venkat

From vnkt6318@cs.uh.edu  Fri May  5 04:56:40 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 1B74CF99B; Fri,  5 May 2006 04:56:40 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 1E2E6F994; Fri,  5 May 2006 04:56:34 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id JOI76532
        for <uhcosc6318@list.prudentlearning.com>; Fri, 5 May 2006 02:55:32 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 57FF9F994
	for <uhcosc6318@list.prudentlearning.com>; Fri,  5 May 2006 04:56:15 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k459uFn28625
	for uhcosc6318@list.prudentlearning.com; Fri, 5 May 2006 04:56:15 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200605050956.k459uFn28625@leibnitz.cs.uh.edu>
Subject: Assignment 2 (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Fri, 5 May 2006 04:56:15 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Hello,
>Im doing the assignment in C#.
>I don't know if the way im doing it is fine because it sounds too simple.

It is better to have a simple solution that works.

>...deleted...
>Thank you,

Write it, compile, it, test it, add another appliance, and see
what it takes to add this new appliance. Then go back to the
description and see if you are meeting what's specified.
Then develop that little confidence and submit your work! :)

Venkat

From vnkt6318@cs.uh.edu  Fri May  5 08:54:59 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 85E49F983; Fri,  5 May 2006 08:54:58 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 0974EF979; Fri,  5 May 2006 08:54:54 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id JSG32846
        for <uhcosc6318@list.prudentlearning.com>; Fri, 5 May 2006 06:53:46 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id E0C14F989
	for <uhcosc6318@list.prudentlearning.com>; Fri,  5 May 2006 08:54:28 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k45DsSa29047
	for uhcosc6318@list.prudentlearning.com; Fri, 5 May 2006 08:54:28 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200605051354.k45DsSa29047@leibnitz.cs.uh.edu>
Subject: [Fwd: video links] (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Fri, 5 May 2006 08:54:28 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

I got word that the Video link will be kept until end of Summer.

Regards,

Venkat

>>Venkat,
>>
>>Would you be able to keep the links to streaming videos active during the 
>>summer as well because there are some topics such as Design Principles, 
>>Patterns etc. which will take some time to be able to apply efficiently and 
>>we would like to reference your videos as we need in our studies.
>>
>>As far as we know, the records in th library are taken away as the semester 
>>of the course passes.
>>
>>Thanks....
>
>I don't know. I've sent an email to folks that maintain the link
>and asked them for this detail. I will send an email to the list
>as soon as I hear.
>
>Regards,
>
>Venkat

From vnkt6318@cs.uh.edu  Sat May  6 05:43:13 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id DB8E8F986; Sat,  6 May 2006 05:43:12 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 66149F97E; Sat,  6 May 2006 05:43:08 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id KPS20326
        for <uhcosc6318@list.prudentlearning.com>; Sat, 6 May 2006 03:38:26 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 9FAC1F97A
	for <uhcosc6318@list.prudentlearning.com>; Sat,  6 May 2006 05:39:05 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k46Ad5n01444
	for uhcosc6318@list.prudentlearning.com; Sat, 6 May 2006 05:39:05 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200605061039.k46Ad5n01444@leibnitz.cs.uh.edu>
Subject: Doubt (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Sat, 6 May 2006 05:39:05 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Dear Venkat,
>   
>  i have a hard time in understanding the assignment 2. Upon thinking  i 
>came to the following conclusion. can we ...deleted...
>   
>  regards,

I don't want to validate your solution right now. I am not saying it is
right, I am not saying it is wrong. Try it. Think. Make sure it works
and follows the given requirements. Gain the confidence and submit.

Venkat

From vnkt6318@cs.uh.edu  Sat May  6 05:50:44 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 8F8CFF983; Sat,  6 May 2006 05:50:44 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 05A94F97A; Sat,  6 May 2006 05:50:37 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id KPD12521
        for <uhcosc6318@list.prudentlearning.com>; Sat, 6 May 2006 03:49:21 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 61AA5F97E
	for <uhcosc6318@list.prudentlearning.com>; Sat,  6 May 2006 05:50:04 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k46Ao4t01479
	for uhcosc6318@list.prudentlearning.com; Sat, 6 May 2006 05:50:04 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200605061050.k46Ao4t01479@leibnitz.cs.uh.edu>
Subject: Questions regarding assignment 2 (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Sat, 6 May 2006 05:50:04 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Hello Venkat,
>
>I've been working on Assignment 2 (in Java) and have developed the following 
>questions:
>
>1. I am putting my Appliance classes in a specific package.  Can I assume 
>that any new Appliance classes will be put in the same package?

If you can provide the flexibility to use different package that will
be nice, but not required. Classes may belong to same package but may
be in different jars, so it is not too bad.

>2. Does my program's user interface have to look exactly like the example in 
>the assignment description (order and formatting of commands, etc.)?

No.

>3. I assume a user can select more than one of the same appliance.  Is that 
>correct?  Furthermore, I assume that if a user has more than one of the same 
>appliance, then the remove command only removes one of those appliances, not 
>all of them.  Correct?

Yes, and you may provide a way to specify which one to remove?.

>4. I have reused the following code from my ... 
>
>...deleted...
>
>As you can see, this is very basic code for getting user input from the 
>console.  Would you consider that an Academic Honesty violation?  If so, I'm 
>not sure what I should do.  Even if I rewrite it from scratch, it will 
>probably wind up looking very similar to the code above.

The code you have shown is very basic and not really related to the
core concepts in this assignment. To be safe, clearly state in a 
comment block that that code is basic, not centrally affecting the core
feature of this assignment and that it is your own code from wherever. 

>Any feedback you could offer regarding these questions would be greatly 
>appreciated,
>
>Thanks,

Venkat

From vnkt6318@cs.uh.edu  Sun May  7 07:18:53 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id D6AA4F982; Sun,  7 May 2006 07:18:52 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 4E115F97E; Sun,  7 May 2006 07:18:46 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id LRR75039
        for <uhcosc6318@list.prudentlearning.com>; Sun, 7 May 2006 05:10:39 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 70FD8F97E
	for <uhcosc6318@list.prudentlearning.com>; Sun,  7 May 2006 07:11:23 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k47CBNH09035
	for uhcosc6318@list.prudentlearning.com; Sun, 7 May 2006 07:11:23 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200605071211.k47CBNH09035@leibnitz.cs.uh.edu>
Subject: Assignment 2 doubts (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Sun, 7 May 2006 07:11:23 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Hi Venkat,
>
>The assignment 2 is a little puzzling but I could make out that you do not
>want us to violate OCP.


And other principles where possible. :)

>A very simple solution to the assignment can be ...deleted...
>...but it seems too simple. 

A simple solution that works is better than a complex solution that
may or may not work. 

>....  From your previous mails it looks like you
>will judge us on what minimal amount of lines we add to our existing code.
>I decided not to ...deleted... just because it is too simple and I am sure you
>do not want us to use ....  Am I in the right track?
>
>Regards

I will take a simple solution that works and meets the criteria I've 
mentioned so far...

Venkat

From vnkt6318@cs.uh.edu  Sun May  7 07:19:12 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 3ADB1F982; Sun,  7 May 2006 07:19:12 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 8F4D3F97E; Sun,  7 May 2006 07:19:07 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id LRY81240
        for <uhcosc6318@list.prudentlearning.com>; Sun, 7 May 2006 05:17:40 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id B8AFFF981
	for <uhcosc6318@list.prudentlearning.com>; Sun,  7 May 2006 07:18:24 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k47CIOb09043
	for uhcosc6318@list.prudentlearning.com; Sun, 7 May 2006 07:18:24 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200605071218.k47CIOb09043@leibnitz.cs.uh.edu>
Subject: question related to Assignment 2 (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Sun, 7 May 2006 07:18:24 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Hi,
>   
>    I am sure you are tired of getting questions about assignment 2, 

Actually, any question that helps you learn the concepts will not tire me.

>but mine is a more general one. I don't mind if you answer it after the due 
>date.
>   
>  I can think of 2 ways to solve the given assignment, which won't violate 
>the rules ( and OCP).
>   
>  ...deleted...

Remember each appliance is required to be a separeate class. As long as
you keep up with that, no problem.

>  Now, suppose this assignment were a client project, which implementation 
>would you recommend?

The one that is client is OK with. I would do a demo and ask if that is
what they want and explain pros and cons and get their input.

>  My concern with approach 2 is that it would be violating the YAGNI 
>principle. Approach 1 suffices to solve the current problem. 

Only if you have met all requirements and rules specified in the problem
statement and clarified in the email.

>  Number 2 would be good only in the event that these appliance become more 
>sophisticated in future (with more attributes & maybe functions).

And in the meail I did mention that it is intended to be more sophisticated.

>  So, should we implement 2, which is a lot more complicated, 
>though we don't need it at present?
>  Thanks,

I will answer this part after the assignment is turned in. :)

Venkat

From vnkt6318@cs.uh.edu  Sun May  7 07:56:20 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 5D32FF982; Sun,  7 May 2006 07:56:20 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id D5D44F97E; Sun,  7 May 2006 07:56:15 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id LRK25006
        for <uhcosc6318@list.prudentlearning.com>; Sun, 7 May 2006 05:55:06 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id C72AAF981
	for <uhcosc6318@list.prudentlearning.com>; Sun,  7 May 2006 07:55:49 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k47Ctno09155
	for uhcosc6318@list.prudentlearning.com; Sun, 7 May 2006 07:55:49 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200605071255.k47Ctno09155@leibnitz.cs.uh.edu>
Subject: Regerding assignment2 (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Sun, 7 May 2006 07:55:49 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Venkat,
>
>I had seen one of the previous mail saying that each
>appliance needs to be a seperate implementation. But
>in a real shopping cart, you would have more than 100
>appliances. Would you say that it would be a fair idea
>to come up with implementations for all those.
>After all each product is going to have the same
>characteristics right?. Like then name, cost and such
>thigs are going to differ only for different instances
>of each product.
>
>Am i making a valid point?

We are not talking about a real shopping cart here, we're 
talking about an assignment intended for you to learn a set
of principles and patterns, in a hypothetical setting. 
There are different solutions and there are different options,
but I want you to abide by the constraints for this assignment.

Venkat

From vnkt6318@cs.uh.edu  Sun May  7 19:40:44 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 203ABF981; Sun,  7 May 2006 19:40:44 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 478E2F96E; Sun,  7 May 2006 19:40:39 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id MFU25059
        for <uhcosc6318@list.prudentlearning.com>; Sun, 7 May 2006 17:38:59 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 32CD2F96E
	for <uhcosc6318@list.prudentlearning.com>; Sun,  7 May 2006 19:39:43 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k480dg614665
	for uhcosc6318@list.prudentlearning.com; Sun, 7 May 2006 19:39:42 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200605080039.k480dg614665@leibnitz.cs.uh.edu>
Subject: Assignment 2 Question (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Sun, 7 May 2006 19:39:42 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Venkat,
>
>I imagine there will be plenty for you to delete in this question, but
>hopefully we can still gain some insight from it.
>
>Originally I approached this assignment from a ...deleted... pattern point
>of view, ...deleted...
>
>I don't know how successful I was in using that pattern, but the thought
>came across my mind, "why don't I just make the ... method
>public, so that the client code can simply run the BuildAKitchen class and
>add products on demand, or before calling run().  Then they don't have to
>worry about deriving a new class from BuildAKitchen.
>
>So, my question is:  Is there any reason I should keep ...
>protected and force client code to derive from BuildAKitchen, or should I go
>ahead and make that method public, to make life on the client code that much
>easier?

You are in the right direction, but I think you are making this a bit more 
complicated than it should be. I am not sure about your choice of the
pattern - I don't know if that is going to solve the problem for you
completely.

Venkat

From vnkt6318@cs.uh.edu  Sun May  7 19:40:44 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 203ABF981; Sun,  7 May 2006 19:40:44 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 478E2F96E; Sun,  7 May 2006 19:40:39 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id MFU25059
        for <uhcosc6318@list.prudentlearning.com>; Sun, 7 May 2006 17:38:59 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 32CD2F96E
	for <uhcosc6318@list.prudentlearning.com>; Sun,  7 May 2006 19:39:43 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k480dg614665
	for uhcosc6318@list.prudentlearning.com; Sun, 7 May 2006 19:39:42 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200605080039.k480dg614665@leibnitz.cs.uh.edu>
Subject: Assignment 2 Question (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Sun, 7 May 2006 19:39:42 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: RO

>Venkat,
>
>I imagine there will be plenty for you to delete in this question, but
>hopefully we can still gain some insight from it.
>
>Originally I approached this assignment from a ...deleted... pattern point
>of view, ...deleted...
>
>I don't know how successful I was in using that pattern, but the thought
>came across my mind, "why don't I just make the ... method
>public, so that the client code can simply run the BuildAKitchen class and
>add products on demand, or before calling run().  Then they don't have to
>worry about deriving a new class from BuildAKitchen.
>
>So, my question is:  Is there any reason I should keep ...
>protected and force client code to derive from BuildAKitchen, or should I go
>ahead and make that method public, to make life on the client code that much
>easier?

You are in the right direction, but I think you are making this a bit more 
complicated than it should be. I am not sure about your choice of the
pattern - I don't know if that is going to solve the problem for you
completely.

Venkat

From vnkt6318@cs.uh.edu  Sun May  7 19:46:59 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id DEF03F981; Sun,  7 May 2006 19:46:58 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 81AD2F96E; Sun,  7 May 2006 19:46:51 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id MFB00002
        for <uhcosc6318@list.prudentlearning.com>; Sun, 7 May 2006 17:45:02 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 2645EF981
	for <uhcosc6318@list.prudentlearning.com>; Sun,  7 May 2006 19:45:46 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k480jk714699
	for uhcosc6318@list.prudentlearning.com; Sun, 7 May 2006 19:45:46 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200605080045.k480jk714699@leibnitz.cs.uh.edu>
Subject: about assignment 2 (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Sun, 7 May 2006 19:45:45 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>*Venkat,
>I think you got this solutin before but I didnt see it cause most of the
>approaches were -deleted-
>in case of using an array of appliances  when we want to add a new applianc=
>e
>we just have to increase the number of appliances from [7] to [8]
>and for that new appliance
>
>             Appliances[7] =3D new Appliance();
>            Appliances[7].Name =3D "7";
>            Appliances[7].Cost =3D ???;
>            Appliances[7].Descirption =3D "????";
>
>and offcourse we ll have to add it in the appliance list " 7.??? "
>
>can you please comment on that ? is it good enough ? or there is a catch
>that I am not aware of.
>Thanks.
>*

Write it, run it, and see if it meets the requirements specified.
Remember, each appliance type is required to diffferent class.

Venkat

From vnkt6318@cs.uh.edu  Sun May  7 19:51:24 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 306EEF981; Sun,  7 May 2006 19:51:24 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id AC582F96E; Sun,  7 May 2006 19:51:16 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id MFF95350
        for <uhcosc6318@list.prudentlearning.com>; Sun, 7 May 2006 17:49:50 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id C71DCF96E
	for <uhcosc6318@list.prudentlearning.com>; Sun,  7 May 2006 19:50:34 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k480oYw14750
	for uhcosc6318@list.prudentlearning.com; Sun, 7 May 2006 19:50:34 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200605080050.k480oYw14750@leibnitz.cs.uh.edu>
Subject: Question Regarding Assign2 (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Sun, 7 May 2006 19:50:34 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Venkat,
>   
>  First of all I would like you to tell me if the following approach is 
>acceptable...

>...deleted...

Sorry, I can't. I don't want to evaluate each solution everyone sends
right now. I want you to solve it and develop confidence that you
have addressed the requirements specified.

>  and....another question is....
>  Can I use "Spring Framework" to achieve this..... which helps me 
>with Dependency Injection?
>   
>  Thanks In advance for your advice.

That would not be necessary.

Venkat

From vnkt6318@cs.uh.edu  Tue May  9 07:00:01 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 3BAC1F983; Tue,  9 May 2006 07:00:01 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 4649AF982; Tue,  9 May 2006 06:59:56 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id NQP84312
        for <uhcosc6318@list.prudentlearning.com>; Tue, 9 May 2006 04:58:12 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 5C4F5F982
	for <uhcosc6318@list.prudentlearning.com>; Tue,  9 May 2006 06:58:57 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k49Bwvs25861
	for uhcosc6318@list.prudentlearning.com; Tue, 9 May 2006 06:58:57 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200605091158.k49Bwvs25861@leibnitz.cs.uh.edu>
Subject: confused about coding conventions (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Tue, 9 May 2006 06:58:57 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Hi,
>
>  I am about to start a new project in C# and am confused about the
>coding convention to use.
>
>I came across quite a few articles on the net (including one in msdn) that =
>say:
>1) Do not use Hungarian notation (i.e. prefix a variable name by it's
>datatype).This style of naming was widely used in early Windows
>programming, but now is obsolete or at least should be considered
>deprecated.

I agree.

>2) Do not use a prefix for member variables (_, m_, s_, etc.). If you
>want to distinguish between local and member variables you should use
>"this." in C# and "Me." in VB.NET.

I totally disagree on this one. this is an unnecessary noice and
I consider it a poor practice. I have used m_ or _ instead. I
also see some experts I respect follow the _ convention for members.
(See my blog about this if you are interested at http://tinyurl.com/e6x9t)

>   They argue that a good variable name describes the semantic not the
>type. Personally I am more comfortable with the old-style.

I agree with the comment that good variable name must describe the
semantic and must convey the relevance of type where needed.

>What do you recommend?
>
>Thanks very much,

I recommend not using the hungarian notation and keeping the noice in
the code minimal (meaning no use of this.).

Good question.

Venkat

From vnkt6318@cs.uh.edu  Tue May  9 07:00:11 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 4AC7AF986; Tue,  9 May 2006 07:00:11 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id CEB44F982; Tue,  9 May 2006 07:00:06 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id NQP81255
        for <uhcosc6318@list.prudentlearning.com>; Tue, 9 May 2006 04:58:55 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id B96CCF982
	for <uhcosc6318@list.prudentlearning.com>; Tue,  9 May 2006 06:59:40 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k49BxeK25871
	for uhcosc6318@list.prudentlearning.com; Tue, 9 May 2006 06:59:40 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200605091159.k49BxeK25871@leibnitz.cs.uh.edu>
Subject: Assign2 Question (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Tue, 9 May 2006 06:59:40 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Hi Venkat,
>
>when we press 'm' to output the selection list, do we need to output the
>result in order or just put the same output together.
>
>Thank you

Does not matter as that is not the focus of this assignment.

Venkat

From vnkt6318@cs.uh.edu  Tue May  9 21:39:29 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 324C3F98F; Tue,  9 May 2006 21:39:29 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 2CF09F983; Tue,  9 May 2006 21:39:24 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id OHW15617
        for <uhcosc6318@list.prudentlearning.com>; Tue, 9 May 2006 19:38:17 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 3DFBCF98F
	for <uhcosc6318@list.prudentlearning.com>; Tue,  9 May 2006 21:39:02 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k4A2d2i28117
	for uhcosc6318@list.prudentlearning.com; Tue, 9 May 2006 21:39:02 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200605100239.k4A2d2i28117@leibnitz.cs.uh.edu>
Subject: doubt (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Tue, 9 May 2006 21:39:01 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Dear venkat,
>   
>  I thought of using ... so that whenever we need to add a new appliance 
>...   deleted...
>  regards,

One suggestion I have is not to attack the problem with the intent
as to which pattern to use, but to think about how you may solve it
using inheritance and polymorphism. Once you figure a way that will 
work, then you can think about which pattern it relates to.

If you take a pattern on hand and if that pattern is not the right one,
you may end up with frustration and a whole lot of nothing else....

Venkat

From vnkt6318@cs.uh.edu  Wed May 10 04:31:21 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 84E7CF98F; Wed, 10 May 2006 04:31:20 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id A5A94F983; Wed, 10 May 2006 04:31:07 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id OON82829
        for <uhcosc6318@list.prudentlearning.com>; Wed, 10 May 2006 02:29:29 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 44DD8F983
	for <uhcosc6318@list.prudentlearning.com>; Wed, 10 May 2006 04:30:15 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k4A9UFc28840
	for uhcosc6318@list.prudentlearning.com; Wed, 10 May 2006 04:30:15 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200605100930.k4A9UFc28840@leibnitz.cs.uh.edu>
Subject: post-Assignment 2 doubts (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Wed, 10 May 2006 04:30:15 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Hi Venkat,
>
>First of all I want to thank you for a great course.
>Now that the deadline is up, I would like to know how to add a class that
>created at run time to an existing(aldready created) namespace in C#.net.
>
>Although I managed to create individual classes for each appliance, my code
>has to be recompiled after adding a new appliance.
>I was wondering how to create run time classes and add them to an existing
>namespace

It does not have to be to the same namespace (though it could).

Namespaces are logical. Assemby are physical. Classes can belong to
same or different namespaces and belong to same or different assemblies.

> I tried out two methods:
>1) I used System.CodeDom  and created an instance of CodeNameSpace
>_namespace for namespace and CodeTypeDeclaration _class for adding a new
>class. Although I can add classes at runtime to the new namespace how do
>I assign it to a current existing namespace.

Way too complex. The assignment only mentioned you should not modify any
existing code or recrete assembly. However, it did not say you can't 
restart. When app is started you can look at the configuration file, for
instance, to find what appliances and which assembly it belongs to.

>2) ( Very silly method but I tried this out) . I created a .cs file using
>streamwriter in the folder of the current namespace but failed to add it at
>run time to the namespace in VS2005. I have to stop the code add the item
>and recompile.
>
>Could you please tell me how to actually do it. Any pseudocode would help.
>
>Thanks and Regards

There are at least two approaches in C#:

1. Have the configuration file tell you the fully qualified name of
the classes and their assemblies so you can load those assemblies.

2. Have a directory where you store all appliance assemblies.
At the start of the program, you look for all assemblies in a directory,
load each one of them, using reflection as if the classes they have
inherit an interface (or class) that is of interest to you...

Thanks

Venkat

From vnkt6318@cs.uh.edu  Fri May 12 02:47:11 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id 24160F979; Fri, 12 May 2006 02:47:11 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id C2C17F96E; Fri, 12 May 2006 02:47:04 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id QMC73455
        for <uhcosc6318@list.prudentlearning.com>; Fri, 12 May 2006 00:42:55 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 265B6F96E
	for <uhcosc6318@list.prudentlearning.com>; Fri, 12 May 2006 02:43:42 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k4C7hfK24386
	for uhcosc6318@list.prudentlearning.com; Fri, 12 May 2006 02:43:41 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200605120743.k4C7hfK24386@leibnitz.cs.uh.edu>
Subject: Re: post-Assignment 2 doubts (fwd)
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Fri, 12 May 2006 02:43:41 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

>Hello Venkat ,
>
>can u plz give some insite as to how we can do the assignement2 in C++.
>
>regards

C++ does not have some of the features that makes this easier in 
Java and C#. However, there is still some elegant solution.
I would create one static appliance list object. Then, within each 
appliance class, I would have a static instance of a helper class. This 
instance, which will be created at the time of program start, can create 
an instance of the corresponding appliance and add it to the static
appliance list. Once the program starts, we will then have one instance
of each appliance ready to serve as a prototype.

Venkat

From vnkt6318@cs.uh.edu  Sun May 21 03:10:11 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id EFE99F998; Sun, 21 May 2006 03:10:10 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 6D7AFF991; Sun, 21 May 2006 03:10:04 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id ZND18716
        for <uhcosc6318@list.prudentlearning.com>; Sun, 21 May 2006 01:08:16 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 000B1F991
	for <uhcosc6318@list.prudentlearning.com>; Sun, 21 May 2006 03:09:02 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k4L892826298
	for uhcosc6318@list.prudentlearning.com; Sun, 21 May 2006 03:09:02 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200605210809.k4L892826298@leibnitz.cs.uh.edu>
Subject: Must read books
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Sun, 21 May 2006 03:09:02 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

Greetings,

I had promised to send a list of must read books for a software
developer. So, here it is:

The Pragmatic Programmer: From Journeyman to Master by Andrew Hunt, David Thomas

The Mythical Man-Month: Essays on Software Engineering, Frederick P. Brooks

Design Patterns: Elements of Reusable Object-Oriented Software,
        Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides

Refactoring: Improving the Design of Existing Code,
        Martin Fowler, Kent Beck, John Brant, William Opdyke, Don Roberts

Effective Java, Joshua Bloch

Code Complete 2, Steve McConnell

The Art of Computer Programming (volumes), Donald Knuth

There are other very important books, but this is short list to
start with.

Regards,

Venkat

From vnkt6318@cs.uh.edu  Sun May 21 03:14:15 2006
Return-Path: <vnkt6318@cs.uh.edu>
X-Original-To: vnkt6318@cs.uh.edu
Delivered-To: vnkt6318@cs.uh.edu
Received: by boole.cs.uh.edu (Postfix, from userid 158)
	id BBBF0F99A; Sun, 21 May 2006 03:14:14 -0500 (CDT)
Received: from mx244e.mysite4now.com (mx244e.mysite4now.com [66.186.25.244])
	by boole.cs.uh.edu (Postfix) with ESMTP
	id 98304F998; Sun, 21 May 2006 03:14:03 -0500 (CDT)
Received: from boole.cs.uh.edu ([129.7.240.11])
        by mx244e.mysite4now.com (Webhost4life Mail Server v8.0) with ESMTP id ZNH07806
        for <uhcosc6318@list.prudentlearning.com>; Sun, 21 May 2006 01:12:06 -0700
Received: from leibnitz.cs.uh.edu (leibnitz [129.7.240.10])
	by boole.cs.uh.edu (Postfix) with ESMTP id 396B1F991
	for <uhcosc6318@list.prudentlearning.com>; Sun, 21 May 2006 03:12:52 -0500 (CDT)
Received: (from vnkt6318@localhost)
	by leibnitz.cs.uh.edu (8.11.7+Sun/8.11.6) id k4L8CqL26342
	for uhcosc6318@list.prudentlearning.com; Sun, 21 May 2006 03:12:52 -0500 (CDT)
From: <vnkt6318@cs.uh.edu>
Message-Id: <200605210812.k4L8CqL26342@leibnitz.cs.uh.edu>
Subject: signing off
To: uhcosc6318@list.prudentlearning.com (COSC 6318 Mailing List)
Date: Sun, 21 May 2006 03:12:52 -0500 (CDT)
X-Mailer: ELM [version 2.5 PL6]
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on Boole
X-Spam-Status: No, score=0.7 required=5.0 tests=FROM_ENDS_IN_NUMS,
	NO_REAL_NAME autolearn=no version=3.0.4
X-Spam-Level: 
X-Sanitizer: Anomy with McAfee uvscan
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: O

Greetings,

It has been a pleasure teaching this course and I hope you 
enjoyed and learned a few things from it. 

I am signing off - this is the final email to this mailing list.

Best wishes in your efforts.

Regards,

Venkat

