MEMORIZE the Java App pick: public class a name (you make ...sdc/CSI201/Spr14/Lect/L04/PPP2.pdf ·...

32
MEMORIZE the Java App pick: public class           {  public static void    main(String[] a)  {  } } Directions, written in good Java syntax, for what the computer will do when it runs your App. a name (you make up) for your app, say MyApp Save it as a file named MyApp.java (then in 1 year forget this; memorize the starting spot for C)

Transcript of MEMORIZE the Java App pick: public class a name (you make ...sdc/CSI201/Spr14/Lect/L04/PPP2.pdf ·...

Page 1: MEMORIZE the Java App pick: public class a name (you make ...sdc/CSI201/Spr14/Lect/L04/PPP2.pdf · arguments or other things to specify details, like your program's name and how far

MEMORIZE the Java App pick:public class           { public static void    main(String[] a) { 

 }}

Directions, written in good Java syntax, for what the computer will do when it runs your App.

a name (you make up) for your app, say MyAppSave it as a file namedMyApp.java

(then in 1 year forget this; memorize the starting spot for C)

Page 2: MEMORIZE the Java App pick: public class a name (you make ...sdc/CSI201/Spr14/Lect/L04/PPP2.pdf · arguments or other things to specify details, like your program's name and how far

MEMORIZE the pick for the method that prints something (printing is a big thing)

System.out.println(     );

Expression that expresses what println will make the computer print.(then in 1 year forget this and memorize the API for C)

Name of one Java's standard library methods that prints stuff.

Page 3: MEMORIZE the Java App pick: public class a name (you make ...sdc/CSI201/Spr14/Lect/L04/PPP2.pdf · arguments or other things to specify details, like your program's name and how far

MEMORIZE GE's Turtle API:public class           { public static void   main(String[] a) {   World wref = new World();  Turtle tref =         new Turtle( wref );  tref.       (       ); }} (then in 6 weeks forget it)

Page 4: MEMORIZE the Java App pick: public class a name (you make ...sdc/CSI201/Spr14/Lect/L04/PPP2.pdf · arguments or other things to specify details, like your program's name and how far

Your code with Worlds, Turtles (and soon Pixels, Pictures)

won't compile until you (1) bring into your computer or S:

drive space your own unzipped copy of Guzdial and Ericson's 10 year old

Java code (the “bookClasses”) AND

(2) set DrJava's preference that locates WHERE in your computer those bookClasses are located.

Page 5: MEMORIZE the Java App pick: public class a name (you make ...sdc/CSI201/Spr14/Lect/L04/PPP2.pdf · arguments or other things to specify details, like your program's name and how far

Location means WHERE in your computer's memory or other kinds of data storage spaces a copy of data

might or might not exist.

Page 6: MEMORIZE the Java App pick: public class a name (you make ...sdc/CSI201/Spr14/Lect/L04/PPP2.pdf · arguments or other things to specify details, like your program's name and how far

In Chap 1 readings, MEMORY are where data values like 149 and 72 are stored. Each byte has a LOCATION (like that sinkhole has a location in Guatemala). The LOCATION is the byte's ADDRESS.

A VARIABLE NAME (like length in Fig 1-4) represents a MEMORY LOCATION in much easier to use way than that location's ADDRESS.

In Fig 1-4, length is the variable's NAME and 72 is that variable's VALUE.

Page 7: MEMORIZE the Java App pick: public class a name (you make ...sdc/CSI201/Spr14/Lect/L04/PPP2.pdf · arguments or other things to specify details, like your program's name and how far

Locations of sinkholes in Florida

Florida has sinkholes at many different locations.

A computer's memory has variables (also called memory locations) at many different locations (also called addresses.)

Page 8: MEMORIZE the Java App pick: public class a name (you make ...sdc/CSI201/Spr14/Lect/L04/PPP2.pdf · arguments or other things to specify details, like your program's name and how far

tref.forward(          );tref.turn(        );tref.forward(        );Saying “make the computer do a big thing”

IS THE SAME AS Saying “call a method”,saying “executing a method”,saying “invoking a method”,and saying “sending a message to an object asking it to do something”.

2

1

3

3 spots where the code gives parameter values in method calls.

Page 9: MEMORIZE the Java App pick: public class a name (you make ...sdc/CSI201/Spr14/Lect/L04/PPP2.pdf · arguments or other things to specify details, like your program's name and how far

What is a method call?

● It is the computer instruction to make the computer do a big thing when the computer runs your program.

● It is the computer instruction that tells the computer to RUN OTHER INSTRUCTIONS already written SOMEWHERE ELSE (where you cannot see it), and then RETURN back to the method call's spot after the code somewhere else finishes.

Page 10: MEMORIZE the Java App pick: public class a name (you make ...sdc/CSI201/Spr14/Lect/L04/PPP2.pdf · arguments or other things to specify details, like your program's name and how far

iclicker: Be sensitive to Java's regularities. What's common to all

parameters (of methods)?

A) Must always be “quoted like this”A) B) Must never be “quoted like this”C) Must always be numbers.D) Must always be between a ( and a )E) Must always be variables with lower case names.

Page 11: MEMORIZE the Java App pick: public class a name (you make ...sdc/CSI201/Spr14/Lect/L04/PPP2.pdf · arguments or other things to specify details, like your program's name and how far

Be sensitive to Java's regularities. What's common to all parameters

(of methods)? A) B)C) D) Must always be between a ( and a )E)

This is one of the Java syntax rules that you MUST MEMORIZE! (It's easy when you get the idea and have practiced with parameters a few times.)

Page 12: MEMORIZE the Java App pick: public class a name (you make ...sdc/CSI201/Spr14/Lect/L04/PPP2.pdf · arguments or other things to specify details, like your program's name and how far

Tale of 3 professors..

● Profs Guzdial and Ericson wrote those other instructions in Java (for the benefit of you and I) to make Turtles go forward drawing lines, and to turn changing their heading angle.

● Prof. Chaiken will write the instructions to make Turtles draw a golf club whenever your (or his) programs run the method call instruction:

 tref.club(        );● The parameter value will control the club's size.

Page 13: MEMORIZE the Java App pick: public class a name (you make ...sdc/CSI201/Spr14/Lect/L04/PPP2.pdf · arguments or other things to specify details, like your program's name and how far

HOW??

1. Like Profs Guzdial&Ericson created book classes like World, Turtle, SimpleTurtle, I will create one class named GolfingTurtle

2.My GolfingTurtle class will be software that enables a computer to have inside itself  a Turtle object that can draw golf clubs.

3.I will create a 2nd application container class that will BE an application program that draws golf clubs when somebody runs it.

Page 14: MEMORIZE the Java App pick: public class a name (you make ...sdc/CSI201/Spr14/Lect/L04/PPP2.pdf · arguments or other things to specify details, like your program's name and how far

public class GolfClubDrawingApp{  public static void main(String[]a)  {    World wref = new World();    GolfingTurtle tref = new GolfingTurtle( wref );      }}

Here is the application program..partially completed

WHEN we first (1) compile AND THEN second (2) RUN it,WHAT HAPPENS???

Page 15: MEMORIZE the Java App pick: public class a name (you make ...sdc/CSI201/Spr14/Lect/L04/PPP2.pdf · arguments or other things to specify details, like your program's name and how far

An instance of the GolfingTurtle class is created in the World

Page 16: MEMORIZE the Java App pick: public class a name (you make ...sdc/CSI201/Spr14/Lect/L04/PPP2.pdf · arguments or other things to specify details, like your program's name and how far

public class GolfClubDrawingApp{  public static void main(String[]a)  {    World wref = new World();    GolfingTurtle tref = new GolfingTurtle( wref );

    tref.club( 200 );   //Purpose: Draw one golf club.      }}

Here is the application program..Version 2

WHEN we first (1) compile AND THEN second (2) RUN it,

WHAT HAPPENS This time???

Page 17: MEMORIZE the Java App pick: public class a name (you make ...sdc/CSI201/Spr14/Lect/L04/PPP2.pdf · arguments or other things to specify details, like your program's name and how far

Guess what?? BEFORE tref.club( 200 ); controls the

Turtle...

Page 18: MEMORIZE the Java App pick: public class a name (you make ...sdc/CSI201/Spr14/Lect/L04/PPP2.pdf · arguments or other things to specify details, like your program's name and how far

Guess what...AFTER tref.club( 200 ); finished

controlling the computer.

200 pixels in size

Page 19: MEMORIZE the Java App pick: public class a name (you make ...sdc/CSI201/Spr14/Lect/L04/PPP2.pdf · arguments or other things to specify details, like your program's name and how far

Read 2 pages about OOPSec. 1.7 of your textbooks

● “A procedure is a [named] set of programming statements that, together, perform a specific task.” (Language of the 1950's we still use.)

● “An object is a software entity that contains data and procedures.” (1980's and beyond.)

● “The object is ... a self-contained unit.” (Like a real, live (or robotic) turtle!)

● Put simply, “method” is the word used today for procedure.

● DO ACTUALLY READ them! Not all the relationships are mentioned in this lecture.

● don't worry: OOP is easier to do than explain.

Page 20: MEMORIZE the Java App pick: public class a name (you make ...sdc/CSI201/Spr14/Lect/L04/PPP2.pdf · arguments or other things to specify details, like your program's name and how far

1. Glimpsing at those 2 Profs' work done 10 years ago...don't get scared

or turned off.. (you might write library code for other people to use

after a few <10 YEARS of practice)

Navigate in a text editor like WordPad into the bookClasses directory/folder and look at files like

Turtle.java, SimpleTurtle.java, World.java

Page 21: MEMORIZE the Java App pick: public class a name (you make ...sdc/CSI201/Spr14/Lect/L04/PPP2.pdf · arguments or other things to specify details, like your program's name and how far

C's 3 Pieces of Programming

1. Pick2. Position3. Parametrize

Page 22: MEMORIZE the Java App pick: public class a name (you make ...sdc/CSI201/Spr14/Lect/L04/PPP2.pdf · arguments or other things to specify details, like your program's name and how far

1. PickPick an available operation, method call or pattern (like making a Java App or calling forward on a Turtle).

Mystery: What are your choices??HOW do students and professionals find them out?

1. Pick

2. PositionPosition where you type your pick.

Figure out the spot in your written program where you want the computer to do the thing you picked.

DON'T CHEAT by asking someone else to think it through for you.

Page 23: MEMORIZE the Java App pick: public class a name (you make ...sdc/CSI201/Spr14/Lect/L04/PPP2.pdf · arguments or other things to specify details, like your program's name and how far

3. Parametrize

Parametrize: Figure out and type in parameters or arguments or other things to specify details, like your program's name and how far the Turtle should go forward.

Use documentation (and other notes) to know what the parameters mean and might be.

DON'T CHEAT by asking someone else to think for you of what values to type, like 150 versus 100.

Page 24: MEMORIZE the Java App pick: public class a name (you make ...sdc/CSI201/Spr14/Lect/L04/PPP2.pdf · arguments or other things to specify details, like your program's name and how far

The Three Easy Pieces of Beginning Computer Programming

What do you think they are?Write your name and 1 up to 3 on the card, classmates on the aisles

collect the cards. (Discussion invited!)

In 5 min we will scan and record YOUR choices, and hear about the

Profs.

Page 25: MEMORIZE the Java App pick: public class a name (you make ...sdc/CSI201/Spr14/Lect/L04/PPP2.pdf · arguments or other things to specify details, like your program's name and how far

Reported class choices filled in after the lecture.

link to a web page for the choices made by the current class (under const)

Page 26: MEMORIZE the Java App pick: public class a name (you make ...sdc/CSI201/Spr14/Lect/L04/PPP2.pdf · arguments or other things to specify details, like your program's name and how far

G&E Intro to Prog. ChapterUA ch2, G&E ch3

Why & How to read it for UAlbany's 201● Get IDEAS of what you can program a Turtle to

do, and tips on how.

● NEVER copy textbook code verbatim.  The Albany way is to always create complete applications you can save, run, explain, show off, and improve again and again. They don't do that in this chapter.

● Briefly read in other prof's words about the concepts: data, names, types, files, executing object methods, defining classes, creating objects, state of an object and how objects control their state.

Page 27: MEMORIZE the Java App pick: public class a name (you make ...sdc/CSI201/Spr14/Lect/L04/PPP2.pdf · arguments or other things to specify details, like your program's name and how far

The Albany Way● Always make, test

and save complete Java applications!

● (We don't type like

> turtle2.forward(10)

>turtle2.turn(90)

because it just disappears and can't be tested and reused again and again; also it's not real Java)

● Write your methods so you extend the talents already implemented into objects like Turtles.

● (We don't copy and edit World.java or Turtle.java like G&E say

because it's unprofessional and error prone. The UA was is not much harder.)

Page 28: MEMORIZE the Java App pick: public class a name (you make ...sdc/CSI201/Spr14/Lect/L04/PPP2.pdf · arguments or other things to specify details, like your program's name and how far

2A Make a plan!Remember the goal.

Pick, Position, Parametrizethings you know might be pre-

programmed steps.

2B Translate your positioned steps into Java code.

DO STUFF LIKE 2A ON PAPER scanned after class

Page 29: MEMORIZE the Java App pick: public class a name (you make ...sdc/CSI201/Spr14/Lect/L04/PPP2.pdf · arguments or other things to specify details, like your program's name and how far

REALLY DO THIS!!! It will make projects much much LESS FRUSTRATING!

Work out plans ON PAPER with PENCILS so you can erase and improve them!

Page 30: MEMORIZE the Java App pick: public class a name (you make ...sdc/CSI201/Spr14/Lect/L04/PPP2.pdf · arguments or other things to specify details, like your program's name and how far

public class GolfingTurtle extends Turtle{  public GolfingTurtle(World wref)  { super(wref); }  public void club( int sizeParamVar )  {    this.forward( sizeParamVar );    //Purpose: Draw the club's handle.    this.turn( 75 );    //Purpose:Make the Turtle face in the head's direction.    this.forward( sizeParamVar/10 );    //Purpose: Draw the head.    this.forward( ­ sizeParamVar/10 );    //Purpose:Begin the retrace to bring the Turtle back    //to its starting state.    this.turn( ­75 );    //Purpose: Undo the turn made before.    this.forward( ­ sizeParamVar );    //Purpose: Finish the retrace.    return ;    //Purpose: Pre­program that the instructions will     //resume from where the method was called.  }}

Page 31: MEMORIZE the Java App pick: public class a name (you make ...sdc/CSI201/Spr14/Lect/L04/PPP2.pdf · arguments or other things to specify details, like your program's name and how far

Every statement HAS A PURPOSE

Real programmers ALWAYS think the purpose for EVERY LINE THEY

WRITE.They SOMETIMES speak it team-mates and/or write the purpose in

comments, especially for tricky stuff.

Page 32: MEMORIZE the Java App pick: public class a name (you make ...sdc/CSI201/Spr14/Lect/L04/PPP2.pdf · arguments or other things to specify details, like your program's name and how far

public class GolfClubDrawingApp{  public static void main(String[]a)  {    World wref = new World();    GolfingTurtle tref = new GolfingTurtle( wref );    tref.club( 200 );//Draw a vertical club.    tref.turn( 45 );//Prepare to draw the 45 deg. club    tref.club( 150 );//Draw the 45 deg. one smaller.    tref.turn( 90 );//Prepare to draw a                     //slant downward club.    tref.club( 270 );//Draw the down slanted club longest.    tref.turn( ­(45+90) );//Restore Turtle's                           //original state.  }}