ADT's in brief

Which classes do you need to show ADT's for? Well, what is the idea?

The idea here is documentation for reusability. Suppose someone else wanted to use your new class. You need to tell them what your implementation is all about.

Obviously, if you are using a pre-defined class, then you do not need to provide ADT information, the writer of that class should have provided it for you. In this case, you are the user and someone else was the implementer. Now, normally you would be expected to provide this information for only the public materials, since the user does not see the private ones. However, in this case, I am grading your whole submission, so I, as someone judging your design, need to see the ADT information for each or your defined classes.

For the methods, it is a good idea to give the signature so that a user knows what to pass as parameters when they use this class. Example: myMethod(String name)
If you use
javadoc it will do this for you.
(Nice documentation pages and all it takes is using /** and */)

Often students seem to have a hard time when trying to concretely say what the Pre and Post conditions of their methods should be.

If you read the above, you can clearly see that Preconditions are not just the parameters passed and Postconditions are not just the values returned! Also, if you say that a post condition for a method is "none" you are telling me that your method code does absolutely nothing and might as well not be there. Clearly something is not the same as it was when you called the method - even if you just looked at a variable or returned one (note that values returned are "necessary" in the post conditions but are not "sufficient" (i.e., there may be more that was done))

How about a nice example of how PRE and POST conditions might be useful.

For a more rigorous discussion see ADT's: Preface