Yes Lists would have an id and a name, and list items would be the items from
the list. In reality the lists you see would be based on your login only.
That is where my original question lies I suppose. I was thinking they should
all be put in session because it pertains to the individual user mostly....
Except for the application level userSecurity. 

-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Nando
Sent: Monday, July 02, 2007 7:35 PM
To: [email protected]
Subject: Re: [CFCDEV] Questions migrating to OO

Hi,

I think one of the most important points to keep in mind is to keep your
design practical. A lot of times in introductory texts on OO you see objects
like Airport, Airplane, Wing, JetEngine, Passenger, Pilot, etc ... and you
get the impression that to build an application in OO, you need to put every
concept you can think of in your design.

Not so. If Airport isn't "doing anything" in your app, you don't need an
object for it. 

So, for instance, you have here 

List Object - Would handle the overall lists.
???

What is a list? A collection of list items? Is that what you mean here? What
defines a list? A unique name? Probably an ID (ListID)? Probably a UserID
that identifies the list as belonging to a user. If i'm understanding you
correctly, and your users need to create lists by giving them a name like
"Shopping on Tuesday" - then you have a candidate for an object named "List".
But it doesn't make sense to me at all that a list object would be stored in
application scope. Why? Because you almost certainly have multiple lists in
your application. I'd put it either in session scope, perhaps, if you're
doing some sort of validation with the ListName for instance and you want to
persist the form data in the List object, or just leave it in request scope.

<cfcomponent displayName="List" hint="I'm a List that belongs to a certain
User" output="false">
    
    <cffunction name="init" access="public" output="false">
        <cfargument name="ListID" type="string" required="false" default=""
/>
        <cfargument name="UserID" type="string" required="false" default=""
/>
        <cfargument name="ListName" type="string" required="false" default=""
/>
        <cfset setListID(arguments.ListID) />
        <cfset setUserID(arguments.UserID) />
        <cfset setListName(arguments.ListName) />
        <cfreturn this />
     </cffunction>

    
    <cffunction name="getListID" access="public" returntype="string"
output="false">
        <cfreturn variables.ListID />
    </cffunction>
    <cffunction name="setListID" access="public" returntype="VOID"
output="false">
        <cfargument name="ListID" type="string" required="true" />
        <cfset variables.ListID = arguments.ListID />
    </cffunction>


    <cffunction name="getUserID" access="public" returntype="string"
output="false">
        <cfreturn variables.UserID />
    </cffunction>
    <cffunction name="setUserID" access="public" returntype="VOID"
output="false">
        <cfargument name="UserID" type="string" required="true" />
        <cfset variables.UserID = arguments.UserID />
    </cffunction>


    <cffunction name="getListName" access="public" returntype="string"
output="false">
        <cfreturn variables.ListName />
    </cffunction>
    <cffunction name="setListName" access="public" returntype="VOID"
output="false">
        <cfargument name="ListName" type="string" required="true" />
        <cfset variables.ListName = arguments.ListName />
    </cffunction>

</cfcomponent>

So, if you have multiple lists, do you need an object to represent all of
your lists? Called "AllMyLists" or "UserLists" perhaps?

I don't think so. Why? Because your users will probably not need to perform
any operations on all their lists at once ... especially in a way that would
lead you to represent them all in a business (or collection) object. When
Users are dealing with Lists, functionally, they do so One_At_A_Time. 

You can still have an option in your app to delete all your lists in a
Gateway for instance. That's about the only thing i can think of that a user
would want to do with all their lists at once. There's no need at all to load
all a User's Lists (and ListItems!) into a UserLists object to delete them.
There's no purpose to that. After the User clicks on a link that says Delete
All My Lists, you just get them to confirm it somehow in the UI, and once the
confirmation comes thru, you call DeleteAllUserLists() in a gateway function,
passing in the UserID, and that function simply deletes all the lists of that
user from the database.

Does that help?

Nando



        Hi,
         I'm still new to a lot of OO stuff and coding CF procedurally for a
few
        years, and I had some questions!

        I'm trying to migrate this app I have to OO and run it under
model-glue 2.0
        (if that matters). It is a to-do list manager, similar to remember
the milk
        et al, but in CF and run locally mostly for my dev tasks. Anyhow, I
ALWAYS
        get tripped up in architecture when it comes to OO. If someone had a
few
        minutes to scan the below and offer any opinions/advice it would be
        appreciated, I'm very green to this so shouting is acceptable :)


        Breakout
        =========
        List Object - Would handle the overall lists. Stored in application.x
         + dao
         + gateway

        List Item Object - would handle specifically items in a list, and I
guess
        would be a dependancy of the list object? Stored in application.x
         +dao
         +gateway

        User Object - would store username, roles, email etc. Stored in
session.x
         +dao
         +gateway

        UserSecurity - would take a user object and perform password
changing, role
        based security, etc. Stored in application.x




        You are subscribed to cfcdev. To unsubscribe, please follow the
instructions at http://www.cfczone.org/listserv.cfm

        CFCDev is supported by:
        Katapult Media, Inc.
        We are cool code geeks looking for fun projects to rock!
        www.katapultmedia.com

        An archive of the CFCDev list is available at
www.mail-archive.com/[email protected]


          



-- 


Aria Media: Building Internet Business that Works <http://aria-media.com/> 


Aria Media Sagl
CP 234
6934 Bioggio
Switzerland

+41 (0)91 608 2404
+41 (0)76 303 4477

www.aria-media.com <http://aria-media.com/> 






You are subscribed to cfcdev. To unsubscribe, please follow the instructions
at http://www.cfczone.org/listserv.cfm

CFCDev is supported by:
Katapult Media, Inc.
We are cool code geeks looking for fun projects to rock!
www.katapultmedia.com

An archive of the CFCDev list is available at
www.mail-archive.com/[email protected]


You are subscribed to cfcdev. To unsubscribe, please follow the instructions at 
http://www.cfczone.org/listserv.cfm

CFCDev is supported by:
Katapult Media, Inc.
We are cool code geeks looking for fun projects to rock!
www.katapultmedia.com

An archive of the CFCDev list is available at 
www.mail-archive.com/[email protected]

Reply via email to