On 02/11/2013 12:14 AM, neubyr wrote:
I have a text file with each line in following format:

Book Name, Author Name, Genre, Publication Date

I would like to perform following queries on this file:
  * Get all books written by an author
  * Remove all books of an author
  * Get information about a book (pretty print matching line!)
  * Get books of particular genre

Also, I would like to add and delete entries in this file. I am not
planning to use any database for this purpose and would like to get better
grasp on file parsing and classes/OOP.

I take it from this that this is a class assignment, and that neither speed nor enormous data capacity nor concurrent operation is a requirement. But your professor may have other requirements that you haven't told us about.

I need some help in creating classes
and following are my initial thoughts:

# Create a class for Book object
class Book:
   atributes: name, author_name, genre, publication-date

# Create
Author:
  attribute(s): name

Is this in order to save space, since each Book instance can then have a reference to an Author object, rather than a reference to a string containing the Author's name.

If you deem this class useful, then don't you also want one for Genre ?



# Create class for reading and writing to the file
class Booksfile:
   methods: ??

Why ?  Are you transliterating this from Java ?



* How do I associate/relate Book and Author classes so that it will help me
in getting information like 'get list of books written by an author'? Data
attribute?

If performance doesn't matter, then create one list of Book instances, and search it for whichever characteristics you like.


* Should I create a new Booksfile object for reading, writing and deleting
entries in the file OR add corresponding methods to the book object itself?

Neither, a pair of regular functions will do fine. One that loads when you start the program, and another that saves the file when you exit. If you really expect to update the file incrementally, deleting entries in it, then think hard about your decision to roll your own database. A text file isn't random access.


I am not planning to use SQLite or any database and would like to use text
file only. Appreciate any help on designing such application.



The real question is where you might proceed after meeting these first requirements. For example, if you expect the list to grow to a few hundred million entries, then you'll need to be very careful about layout. And starting and exiting the program would be very slow, since you can do nothing till all the data has been loaded in and converted to objects.

Or perhaps you'll want to have another file with additional author data, associated with the first by carefully spelling the author's name the same in all cases. In that case, having a separate Author class makes great sense. So if you expect to grow in that direction, then you should create the class now, even though it has only one attribute.


--
DaveA
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to