1 / 29

Overview of our Approach

Overview of our Approach . Program Structure Data, variables, and parameters Basic control structures (conditionals, loops and Threads) Class definitions ( with interfaces but not inheritance) I/O (that means GUI for us) Data Structures Recursive class definitions and arrays

leo-murphy
Télécharger la présentation

Overview of our Approach

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Overview of our Approach • Program Structure • Data, variables, and parameters • Basic control structures (conditionals, loops and Threads) • Class definitions ( with interfaces but not inheritance) • I/O (that means GUI for us) • Data Structures • Recursive class definitions and arrays • Data Processing • Strings and streams • Sorting and searching

  2. Program Structure { } • Object-Oriented Graphics Primitives Mouse Event Handling Methods • Instance Variables and Parameters • Conditionals • Class definitions • Loops and Threads • GUI components

  3. Library Support • A collection of “Drawable” classes • Line, FramedRect, FilledOval, … • A “DrawingCanvas” • Collects and displays a set of Drawables • Functions as a “Component” in Java AWT or Swing.

  4. Library Support • A “WindowController” class • Student programs extend WindowController • WindowController: • Extends Applet • Supports simplified mouse events • Creates “canvas” to hold Drawables • ActiveObject class which extends Thread • Exceptionless sleep + simple getTime. • Automatic termination

  5. WindowController Event Handling Methods • Students determine response to mouse events by overriding methods: public void onMousePress( Location pos ) { new FilledRect( pos, width, height, canvas ); } • No “listener” setup required • Receives mouse coordinates as parameter

  6. Event Handling Methods • Methods to handle basic mouse events: • onMousePress, onMouseRelease, onMouseClick, onMouseDrag, onMouseMove, onMouseEnter, onMouseExit • Override begin method for initialization

  7. Graphic Constructors • Drawable constructors expect position, shape, and canvas where object will appear new FilledRectangle( x, y,width,height,canvas); • Objects appear “immediately” • Drawing primitives can occur in any method

  8. Canvas Coordinates • Screen coordinates are measured in pixels • Upper left corner of canvas is (0,0) • Coordinates are encoded as double’s • Location class used to encode a coordinate pair as a single object new FilledRectangle(corner,width,height,canvas);

  9. Drawable Mutator Methods • Methods are provided to modify location and appearance of displayed objects • box.moveTo( newX, newY ); • border.setColor( Color.red ); • Changes appear “immediately”

  10. Objects in Action • Our graphical primitives were inspired by “mini-worlds” • Buggles and Bagels (Wellesley) • Karel the Robot (Bergin) • Common advantages • Highly interactive, “tangible” learning experience • Weakness of “mini-worlds” • Primitives introduced are not used throughout course

  11. Drawable Stacking • Object overlap determined by control of logical layering within canvas • box.sendToBack(); • circle.sendForward(); • Objects can be temporarily hidden • frame.hide(); • circle.show(); VS.

  12. Accessor Methods • Methods provide access to attributes of graphical objects • box.getX() • oval.getWidth() • Boolean methods to determine geometric relationships • box.contains( somepoint ) • box.overlaps( someoval )

  13. Non-geometric Graphics • Arbitrary GIF and JPEG images can be incorporated in drawings on canvas picture = getImage( “mountains.jpeg” ); new VisibleImage( picture, x, y, canvas );

  14. Non-geometric Graphics (cont.) • Text can also be included in drawings: new Text(“Hello World”, x, y, canvas);

  15. Objects in Action • Our graphics primitives were inspired by “mini-worlds” • Buggles and Bagels (Wellesley) • Karel the Robot (Bergin) • Common advantages • Highly interactive, “tangible” learning experience • Weakness of “mini-worlds” • Primitives introduced are not used throughout course

  16. Introduction by Immersion • Begin with intuitive explanations of simple example programs to introduce: • A small set of graphic primitives • Context of event driven programs

  17. An Example public class Touched extends WindowController { public void onMousePress(Location point) { new Text("I'm Touched.", 100, 90, canvas); } public void onMouseRelease(Location point) { canvas.clear(); } }

  18. Introducing Events • Limit attention to correspondence between mouse actions and handlers • Keep handler code simple • Avoid using parameters • Don’t even mention the “event loop” • New paradigm == new virtual machine

  19. Event Handling as a New Paradigm The standard paradigm: “A program is a sequence of instructions that specify how to accomplish a goal” Event-driven paradigm: “A program is a collection of sequences of instructions each of which specifies how to react to some event/request.”

  20. Benefits of Event-driven Model • Consistent with student experience. • GUI interfaces suggest programs are reactive • More General • “main program” is just a “begin” event • More Object-oriented • Object = collection of methods/behaviors • Program = object

  21. Introducing Graphics • Introduce conceptual framework in class • Coordinate system • Constructor and method syntax • Explore details in lab • Litany of constructors and methods • Relationship between parameters and behavior

  22. A Graphics Sandbox Self-paced, guided introduction

  23. “Hello World?” • Students write simple interactive program in first lab (after graphics sandbox experience) • Involves simple naming • Involves simple event handling • Reinforces syntax and behavior of graphics primitives

  24. Variables and Assignment • Start with instance variables of object types • Motivated by desire to modify objects someGraphic = new FilledRect(. . . ); . . . someGraphic.move(5,5); • Examples often involve communication between “begin” and event handling methods. • Actually introduced during 1st lab

  25. Formal Parameters • Mouse event handling methods receive cursor location as a single parameter • Students declare and use these formals • Actual/formal correspondence not an issue • Examples illustrate limited scope and lifetime of parameter values • Some values must be saved using instance variables

  26. What About Numbers? • Early use of numeric values is limited • Initially, only numeric literals are used • First, non-constant numeric values come from accessor methods • getX(), getY(), getWidth() • Introduce numeric expressions and assignments • Introduce random number generator class

  27. Conditionals & Event Handling • Introduce class definitions after conditionals to enrich example classes defined. • With conditionals, students can complete surprisingly sophisticated programs • Event handling implicitly provides the iterative behavior needed without explicit loops

  28. Box Dragging without Loops public void onMousePress( Location mouse ) { grabbed = box.contains(mouse); lastMouse = mouse; } public void onMouseDrag( Location mouse ) { if ( grabbed ) { box.move( mouse.getX() - lastMouse.getX(), mouse.getY() - lastMouse.getY() ); lastMouse = mouse; } }

  29. Covering Conditionals • Include traditional topics • Conditions based on numeric comparisons • Logical operations & booleans • Nested conditionals • Graphics provides some unusual examples • Accessors that return booleans • if ( box.contains(mousePosition) ) ...

More Related