[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: Class design
That is what I did. A lot of work for 28 classes but it is working
great
On Tue, 2002-10-08 at 15:12, Siggelkow, Bill wrote:
> If you do not declare the classes as 'public' they are only visible within the package. To make them public you would say:
>
> public final class PortEntry {...}
>
> -----Original Message-----
> From: cfowler [mailto:cfowler@outpostsentinel.com]
> Sent: Tuesday, October 08, 2002 2:41 PM
> To: Ed Jenkins
> Cc: ajug-members@ajug.org
> Subject: Re: Class design
>
>
> Ed,
>
> Maybe you can help me with this part.
>
> I have 28 classes in one java file called ConfigDataTypes.java
>
> The look like this
>
> final class PortEntry{
> }
>
> final class UserEntry {
> }
>
>
> Thes are basically our representation of C structures that I use on the
> embedded device. However java doc complains there are no public classes
> in this file. Is this the correct way to do this? I want the classes
> to be available to anyone who needs them but not changeable.
>
> Thanks,
> Chris
>
> On Tue, 2002-10-08 at 13:44, Ed Jenkins wrote:
> > I used to optimized my fields like that too, when I moved from C++ to Java.
> > But I think the Java compiler is not bound to creating variables in the same
> > order as specified. The compiler might rearrange and optimize them for you.
> > And if you have more object references than primitive data types, then it
> > really doesn't matter.
> >
> > I wouldn't worry too much about it, but here's something you might try.
> > Order them one way and compile it. Note the file size of the compiled
> > .class file. Change the order and compile again. Compare sizes. See if
> > anything changed in the physical layout of the class file. This is not a
> > very useful trick, though, as the runtime implementation of the class will
> > differ from the class file representation, but you can try it and see what
> > happens. You can find out what an object looks in memory by using a
> > debugger or by writing some reflection code, but it's still just a general
> > idea; I don't thing it is required to be accurate in regard to field order.
> > The real thing is a black box full of magic and you're not supposed to worry
> > about it. A good profiler might be able to point out holes in memory
> > allocation, but I don't know for sure.
> >
> > When in doubt, download the source code for the JDK and look at the compiler
> > and the classloader and see how they work. Another excellent resource is
> > the book "Java Virtual Machine".
> >
> > Ed
> >
> > ---
> >
> > From: cfowler <cfowler@outpostsentinel.com>
> > To: ajug-members@ajug.org
> > Subject: Class design
> > Date: 08 Oct 2002 10:05:09 -0400
> >
> > I'm creating classes for each of my structure types in my C program that
> > will provide XML to the main program. I want to make sure that I'm on
> > the right track. I want to keep these classes as small and tight as
> > possible because it is possible for a 32 port device to have 32
> > PortEntry objects. If I have 100 x 32port devices then I will have 3200
> > PortEntry objects accessible within one Java program. Any suggestions
> > would be appreciated. I could expand the class to have methods of get
> > and set for each variable but then that would not be wise with memory
> > usage in large number of objects.
> >
> >
> >
> > final class PortEntry {
> >
> > public int number; // Port Number
> > public String name; // Port Name
> > public int speed; // Port speed
> > public boolean modem; // Modem enabled or disabled
> > public boolean bsIsDel; // Is Backspace Del?
> > public int trigger; // Trigger record number
> > public int initrString; // Modem Init String
> > public int flow; // Flow Control Settings
> >
> >
> > /**
> > * Function is an empty constructor
> > * That initializes the object
> > */
> > public PortEntry() {
> >
> > // Init numbers
> > flow = initrString = trigger = speed = number = 0;
> >
> > // Init boolean values
> > modem = bsIsDel = false;
> >
> > // Init Strings
> > name = "";
> > }
> >
> > /**
> > * Function will display the port number in the
> > * representation of a string
> > *
> > * @return String Port number in representatin of string
> > */
> > public String toString() {
> >
> > // If number is 0 then this
> > // class has not been populated
> > // return a null
> > if(number == 0)
> > return null;
> >
> > return "" + number;
> > }
> >
> > /**
> > * Function will return the string representation of
> > * the current flow settings
> > *
> > * @return String String representation of flow
> > */
> > public String getFlow() {
> >
> > switch(flow) {
> > case 1: return "software";
> > case 2: return "hardware";
> > case 3: return "none";
> > default: return null;
> > }
> > }
> >
> >
> > /**
> > * Function will return the state of modem being
> > * enabled on prot
> > *
> > * @return boolean Modem enabled or disabled
> > */
> > public boolean isModem() {
> > return modem;
> > }
> > }
> >
> >
> > Thanks,
> > Chris Fowler
> >
> >
> > _________________________________________________________________
> > Chat with friends online, try MSN Messenger: http://messenger.msn.com
> >
> >
> >
>
>
>