Liam Clarke wrote:
 I'm not sure I understand your response fully, so I've described how
I would do this in accordance with my understandinf of the method
described above. Any feedback/corrections are gratefully welcomed.

But first, a wee bit of explanation. As I said, this is very sketchy.
I've run into the issue of not knowing where to start. This is my
first database type project, so I want
 to go about this the right way from the get go, which means my
progress is quite hesitant/non-existent. Ultimately I want to follow
good methods of coding as much as I can, as I dream of actually being
able to make a living out of this at some stage.

Start small :-)

Get a little bit of the database working. Write unit tests for it. Get a little piece of GUI working that uses that part of the database. Lather. Rinse. Repeat. Refactor as your understanding of the problem grows.

It's been a long time since I even tried to figure out how a whole project would look before starting it.


So, as I don't actually know how to do this, on account of never having done similar, I need to layout in my mind what I'm going to do, before I do it. I had a look at UML, but it doesn't look helpful . Perhaps it's a way of thinking that I need to learn that'll make UML useful.

So, looking at your dataflow above Kent, I'm planning -

my main GUI runs, and upon initialisation creates self.DAO a data access object.

The handlers in the main and each child window, submit requests by
calling an appropriate method of self.DAO (or self.parent.DAO) as the
case may be, passing any needed data as a dictionary/list, as it's not
going to be overly complicated.

I would pass the child a reference to the DAO rather than a reference to the parent. That's another of my fairly firm rules - don't tell children about their parents if you can avoid it.



The DAO then creates an SQL request as necessary, and creates a dictionary/list out of any retrieved data, and returns it to the handler. (Or an acknowledgement if data was entered, or similar.)

If a new window needs to be opened (in response to a query or
requested table) then the handler then instantiates a new child window
using the dictionary after it's been appropriately twiddled. (As a lot
of handlers are going to be doing this, perhaps a function of  my
parent window can hold a method for the twiddling.)

Is this going to violate any best practise type methodologies? Sheesh,
I get so confused.
I've spent all this time trying to keep 'logic and gui' separate, with
the result that I stuck my gui related logic in daft places.

Other than the note above, this sounds good.


I dunno, I was thinking perhaps do this one in Java, so I'm forced to learn how to use objects (particularly passing them around) properly.

Yuck.

The temptation to use many, many, functions is there.

And the problem with that is what? Functions are good. Functions that work on the same data become classes.


I've never
(consciously) used objects as arguments and returned values,
aside from what 3rd party packages have required. To put it a better
way, I've never written code where two objects I've written have
passed an object that I've also written between them.

Of course, then I'd have to rewrite this in Python once done as Swing
is yuck, and I don't like waiting for five minutes for the JRE to kick
in. Actually, I don't like Java at all.

If anyone has any links to recommended OO best practises, I'd be grateful. I googled DAO, & domain objects, and found a lot of confusing stuff.

The c2 wiki has a wealth of information about software patterns and extreme programming. http://c2.com/

Robert Martin's book "Agile Software Development: Principles, Patterns, and Practices" is one of the best I know of for teaching good OO practices. Quite a few sample chapters are available.
http://www.objectmentor.com/resources/bookstore/books/AgileSoftwareDevelopmentPPP


There are a lot of other good articles available from Object Mentor as well
http://www.objectmentor.com/resources/articleIndex

You might also like Martin Fowler's articles
http://martinfowler.com/articles.html


Of course, it would probably help if I didn't have cold as well.

Thanks in advance for any advice offered.


Regards,


Liam Clarke




_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to