Re: "How do you arrive at classes?"
On Tuesday, January 13, 2015 at 8:58:00 PM UTC-8, Stefan Ram wrote:
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: =BBHow do you arrive at classes?=AB,
in the sense of: =BBHow 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?=AB.
(It might have a slight subtext, that he expects =BBreal
programs=AB 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 =BBadvanced=AB stuff like non-static
method declarations, and simple JavaFX windows with
method literals, but all in a single class.) For example:
Your example is full of other classes!
public class Main extends javafx.application.Application
Application is another class
{ public void start( final javafx.stage.Stage window )
'window' is an instance of another class
{ final javafx.scene.control.TextField text
= new javafx.scene.control.TextField( "10" );
'text' is an instance of another class
text.setOnAction
( e ->
{ text.setText
( java.lang.String.valueOf
String is another class
( 3 * java.lang.Integer.valueOf
Integer is another class
( text.getText() ).intValue() )); });
final javafx.scene.Scene scene
'scene' is an instance of another class
= new javafx.scene.Scene( text );
window.setScene( scene ); window.show(); }}
An easy example would be to show how to do this without using the Integer c=
lass - have them create a simple version of that class, one with a single s=
tatic method named valueOf.
This was /all/ explained, they know method interfaces,
but not yet programs with multiple class declarations.
I tried to answer the question =BBHow do you arrive at
classes?=AB 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 =BBhigh cohesion, low coupling=AB 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 =BBhands-on=AB and build directly on
these terms. What of the OOA/OOD rules can be most easily
comprehended by a beginner?)