Re: Yet another OO question...
ChrisW wrote:
Thanks for the replies... one of the problems is that I don't have a
seasoned developer to help me! I'll lay out some pseudocode, and if
anyone can tell me if it's logical to split it into different OO bits
I'd be grateful :)
class MyProg {
<snippage>
I think I agree with Oliver. The problem has been decomposed enough
that additional objects don't seem to be very useful. Nevertheless,
I'll make a few comments.
First, rather than one big long main method, it might be nice if you
broke the design up a little, perhaps into a simple
input-processing-output model, using methods instead of functions.
(Let's see if I can do this without invoking Lew to comment on my style
or syntax :))
class MyProg {
private void readFile() {...}
private void processData() {...}
private void printTable() {...}
}
You can then have the main method call each of these as appropriate.
There might be even more ways to break each method up into a few smaller
methods each.
Second, it might be nice if you actually added some instance variables,
and designed MyProg to be instatiated. Let's rename it
ExcelTableProcessor and go from there:
class ExcelTableProcessor {
String fileName;
// etc.
public ExcelTableProcessor( String file_name )
{
this.fileName = file_name;
}
public doIt
{
readFile();
processData();
printTable();
}
public static void main ( String args[] )
{
ExcelTableProcessor x =
new ExcelTableProcessor(args[0]);
x.doIt()
}
private void readFile() {...}
private void processData() {...}
private void printTable() {...}
}
This to me shows a bit more structure than one 300 line blob in a single
method.
Lastly, give some thought to testing. Maybe look at JUnit, or design
you own test. Just thinking about it, testing and reading from a file
might be hard, so maybe this needs to be refactored to take an input
stream and an output stream, and that'll help testing a bit.
Oh, and Java contains some tags to help with documentation, check into
that too.
Overall, this is not really OO though, just basic design.
Just my 2 nickels.