Transcript Document

Introduction to
Programming
Writing Java Beginning Java
Programs
Review of Lab 1
► Built-in
Types
 Integer types
►No
decimal point
►integer math-op integer yields an integer
►byte, short, int, long
 Real types
►Have
decimal point
►real math-op real yields a real
►float, double
Review of lab 1 Continued
► Java
Variables
 Attributes
► Name
► Type
► Value
 Specifies where data is stored in memory
 Java requires that a variable be declared before it can
be used.
 Declaration Form:
► Type
variable-name;
► Can only declare once!
Review of Lab 1 Continued
► Variable
Naming Conventions
 Start with letter or _ follow with any number of
letters, digits, or _
 Names are case sensitive
 Convention – variable names start with lower
case letter.
 Names should be meaningful.
►sales
►noItems
►qtyOnHand
Camel notation
Review of Lab 1
► What
is wrong?
int firstNum = 0;
int firstNum = firstNum + 1;
► What
does the = operator in Java mean?
► What is the type of the result of
double total, price;
int amt;
total = price * amt;
► What
is wrong with
amt = total/price;
The Semicolon Rule
► Always
end a Java statement with a
semicolon!
 Be careful! The interaction pane does not
require a semicolon after each statement.
 In a program typed into the definition pane,
Java does.
 In the interaction pane, typing a semicolon after
a statement does not show the value of the
result. Leaving the semicolon off does.
Object Variables
► Java is an Object-oriented programming language.
► We work mostly with objects.
► However, built-in numeric types are not objects.
ie. int, float, double, …
► Strings are objects.
► String myName;
 myName is a reference to a string object
 Objects must be created before they are assigned.
 myName has the initial value of null (it does not
reference a string object)
 Much more on this later.
Classes and Objects
► Classes
are templates that define what objects
look like and how they behave.
► An object is an instantiations of a class
► Class names in Java should start with a capital
letter.
► Turtle is a class
 It defines object methods that let you use a Turtle
object.
 //create a turtle object from the Turtle class
Turtle myTurtle = new Turtle(myWorld);
Class name defines
the type
Makes a
new object
Constructor:
Method that
initializes a new
Class Methods
► Some
classes have also define methods.
► java.Math
 Class that defines math functions to use
 Would not want multiple math objects that each
implement a abs method.
 Class methods are methods that belong to only
the class and hence there is only one copy of
the method for all objects of the class.
 int myVal = Math.abs(-12);
A Basic Java Program
// if you have to add import statements put
//them here
public class CS1Test {
public static void main(String [] args) {
// put you Java program statements here
}
}
► You will see what this is for in a minute.
Working With Turtles
Example of using classes
► Get
a world for our turtle to live in
 World csExWorld = new World();
► Put
a turtle in our world
Paramete
r that
specifies
the world
to put the
turtle in.
 Turtle ourTurtle = new Turtle(csExWorld);
► Check
the state of our turtle
 System.out.println(ourTurtle);
 System.out.println(ourTurtle.toString());
Talking to a Turtle
► When
we want an object to do something
we send it a message.
► Make the turtle wander around





ourTurtle.forward(20);
ourTurtle.turnLeft();
ourTurtle.forward(40);
ourTurtle.turn(45);
ourTurtle.forward(65);
How Do I Know What Turtles Can
Do?
► The
set of methods that define what a class
can do is called an API (Application Program
Interface).
► Java defines a special format called JavaDoc
for presenting APIs.
► You can find a link to the doc on the
desktop of the lab machines and at C:\introprog-java\bookClasses\doc\index.html.
Problem: Draw a square
►
►
Describe how the turtle will travel in a square.
Program Code:
//draw side one
ourTurtle.forward(100);
// turn 90 deg counterclockwise
ourTurtle.turnLeft();
// draw side two
ourTurtle.forward(100);
// turn 90 deg counterclockwise
ourTurtle.turnLeft();
// draw side three
ourTurtle.forward(100);
//turn 90 degrees counterclockwise
ourTurtle.turnLeft();
// draw side four
ourTurtle.forward(100);
Reusing Code
► What
if we wanted to draw a second
square?
 We would have to retype the code a second
time.
 Not good! Is not there a better way?
► Define
a method that draws a square.
► We can invoke it every time we need to
draw a square.
The drawSquare Method
public void drawSquare() {
}
//draw side one
this.forward(100);
// turn 90 deg counterclockwise
this.turnLeft();
// draw side two
this.forward(100);
// turn 90 deg counterclockwise
this.turnLeft();
// draw side three
this.forward(100);
//turn 90 degrees counterclockwise
this.turnLeft();
// draw side four
this.forward(100);
Opening and Closing Brace
Required
Parentheses
required
Body of the method
1. Open the Turtle.java file
found in C:\intro-progjava\bookClasses
2. Put the method definition at
the bottom of the class
where the documentation
directs.
3. Create a World, a Turtle,
and draw a square.
How do we draw two squares?
► Call
drawSquare() twice.
► What happened?
► Cannot call drawSquare again it will draw over top
the square we have drawn.
► Need to move the Turtle before we draw again.
► How? Look at documentation
 Pen up
 Move to new position
 Pen down
Parameters
► How
do we draw squares of different sizes?
► Observation: Each time we draw a square we need
to change the 100 to the size we want.
► This could generate a lot of almost identical
methods.
► Use a parameter to specify the width.
 public void drawSquare(int width) { … }
 Change 100 to width
► Call
as:
 ourTurtle.drawSquare(50);
Draw the squares in Different Colors
► Back




to the documentation
public void setColor(java.awt.Color color)
Need a Color object found in java.awt package
Must import this package to use it
Find information in Java 1.5 API Documentation
► Invoke
 ourTurtle.setColor(Color.BLUE);
 Draw a blue square.
How do you …?
► Save
the program?
 Put it in a CSTurtleTest class
► Hide
the turtle?
► Draw the squares at an angle to the
window?