"How do you arrive at classes?"
I keep simplifying and simplifying my Java course:
during the first 40 hours all programs have one single
class declaration only!
Now, a student asked me: ?How do you arrive at classes??,
in the sense of: ?How do you get to know which classes
should be declared in your code, especially when there
is more than one class declaration in the program??.
(It might have a slight subtext, that he expects ?real
programs? to have multiple classes [which is not even wrong!].)
His question made sense, since I have very rarely or never
shown them programs with multiple class declarations!
(I showed already some ?advanced? stuff like non-static
method declarations, and simple JavaFX windows with
method literals, but all in a single class.) For example:
public class Main extends javafx.application.Application
{ public void start( final javafx.stage.Stage window )
{ final javafx.scene.control.TextField text
= new javafx.scene.control.TextField( "10" );
text.setOnAction
( e ->
{ text.setText
( java.lang.String.valueOf
( 3 * java.lang.Integer.valueOf
( text.getText() ).intValue() )); });
final javafx.scene.Scene scene
= new javafx.scene.Scene( text );
window.setScene( scene ); window.show(); }}
This was /all/ explained, they know method interfaces,
but not yet programs with multiple class declarations.
I tried to answer the question ?How do you arrive at
classes?? in the classroom, kind-a stuttering, because
I was not prepared for this question. Now, I am curious:
How would /you/ answer this question?
(An answer like ?high cohesion, low coupling? might still
be too abstract. Can you find a reasonable answer that a
beginner can understand? They know non-static fields and
non-static methods [both use and declaration], variables,
common statements and expressions, instance creation
expression, references, reference variable and parameters.
So a good answer would be ?hands-on? and build directly on
these terms. What of the OOA/OOD rules can be most easily
comprehended by a beginner?)