Top Banner
Georgia Institute of Technology Barb Ericson Georgia Institute of Technology Aug 2006 Introduction to Object- Oriented Programming in Alice and Java
65

Introduction to Object-Oriented Programming in Alice and Java

Dec 30, 2015

Download

Documents

caesar-wilder

Introduction to Object-Oriented Programming in Alice and Java. Barb Ericson Georgia Institute of Technology Aug 2006. Learning Goals. To introduce computation as simulation To introduce Alice To talk about the history of using turtles to teach programming - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Introduction to Object-Oriented Programming in Alice and Java

Georgia Institute of Technology

Barb Ericson

Georgia Institute of Technology

Aug 2006

Introduction to Object-Oriented Programming in Alice and Java

Page 2: Introduction to Object-Oriented Programming in Alice and Java

Georgia Institute of Technology

Learning Goals• To introduce computation as simulation• To introduce Alice• To talk about the history of using turtles to teach

programming• To show how to create objects in Alice• To show how to invoke methods on objects in

Alice• To show how to add classes to the classpath in

DrJava• To create objects in Java• To invoke methods on objects in Java

Page 3: Introduction to Object-Oriented Programming in Alice and Java

Georgia Institute of Technology

Computers as Simulators

• “The computer is the Proteus of machines. Its essence is its universality, its power to simulate. Because it can take on a thousand forms and serve a thousand functions, it can appeal to a thousand tastes.” Seymour Papert in Mindstorms

Page 4: Introduction to Object-Oriented Programming in Alice and Java

Georgia Institute of Technology

Creating a Simulation

• Computers let us simulate things– We do this by creating models of the things

we want to simulate– We need to define what types of objects we

will want in our simulation and what they can do

• Classes define the types and create objects of that type

• Objects act in the simulation

Page 5: Introduction to Object-Oriented Programming in Alice and Java

Georgia Institute of Technology

Running a Simulation

• How many objects does it take to get a person fed at a restaurant?– Pick people to be the customer,

greeter/seater, waiter, chef, and cashier and have them role play

• What data does each of these people need to do their job?

• What do they need to know how to do?• What other objects do you talk about?

• How about simulating going to a dentist?– Or to the movies?

Page 6: Introduction to Object-Oriented Programming in Alice and Java

Georgia Institute of Technology

Introduction to Alice

• Free development environment– From Carnegie Mellon University– Available from http://www.alice.org

• Used to create– 3D movies

– 3D games

Page 7: Introduction to Object-Oriented Programming in Alice and Java

Georgia Institute of Technology

Getting Started

• Install Alice– Copy folder from CD

• Start Alice– Double Click on Icon

(Alice.exe)

• Wait for Alice to start– Can take a few

minutes

Page 8: Introduction to Object-Oriented Programming in Alice and Java

Georgia Institute of Technology

Pick a World

• Click on the Examples tab– And click on a world to

open it– You might need to

scroll down to see this world

Page 9: Introduction to Object-Oriented Programming in Alice and Java

Georgia Institute of Technology

Playing the Movie

• To play a saved movie – Click the Play button

• The movie or game will start to play in a separate window– Click on target to play

this movie• Most example worlds

will just start to play

Page 10: Introduction to Object-Oriented Programming in Alice and Java

Georgia Institute of Technology

Create Your Own Movie

• Click on File– Then New World

• Click on a template– Background and

ground type

Page 11: Introduction to Object-Oriented Programming in Alice and Java

Georgia Institute of Technology

Add Objects To the World

• Click the Add Objects button

• Select a category from the Local Gallery

• Select Local Gallery to get back from a category – To the list of

categories

Page 12: Introduction to Object-Oriented Programming in Alice and Java

Georgia Institute of Technology

Add Objects to the World

• Click on the item to select it– Click on the Class

description• Click Add Instance to

world Button

– Or drag the object from the class description and drop it into position in the world

Page 13: Introduction to Object-Oriented Programming in Alice and Java

Georgia Institute of Technology

Position an Object in the World

• Once the object is in the world– You can move it by

• Dragging it with the mouse

– Or using the mouse controls

• Click the Undo button to undo the last action

Page 14: Introduction to Object-Oriented Programming in Alice and Java

Georgia Institute of Technology

Mouse Controls

• Use mouse control buttons (from left to right)– To move object left, right, forward, back– Up and down– Turn left or right– Turn forward or backwards– Tumble the object (free rotation)– Resize object– Copy the object

Page 15: Introduction to Object-Oriented Programming in Alice and Java

Georgia Institute of Technology

Create More Objects

• You can use the copy object mouse control

• Or add another instance to the world– Click on the Class

• Click on the Add instance to world button

– Or drag another object from the class description

Page 16: Introduction to Object-Oriented Programming in Alice and Java

Georgia Institute of Technology

Objects and Classes

• You can make many objects of the same class– The class creates the

object

• Each object will have a unique name in the object window

• Class names start with a capital letter– Object names start

with a lower case letter

Page 17: Introduction to Object-Oriented Programming in Alice and Java

Georgia Institute of Technology

Telling Objects To Do Things

• Click the Done button to stop adding objects

• Click on a reference to an object in the object window to select it– Click on the Methods

tab to see what it can do

Page 18: Introduction to Object-Oriented Programming in Alice and Java

Georgia Institute of Technology

Messages to Objects

• In object-oriented programming we send messages to objects– Ask them to do a

method

• Drag a method from the left to the middle window (world - my first method)

Page 19: Introduction to Object-Oriented Programming in Alice and Java

Georgia Institute of Technology

Who does the action?

• We had selected bunny in the object window– So only bunny does

the action

• How do you think we can get bunny2 to do the same action?

Page 20: Introduction to Object-Oriented Programming in Alice and Java

Georgia Institute of Technology

Moving Several Objects

• To get bunny2 to move– Select bunny2 in the

objects window• Or just click on it

– Then select the method tab

– Drag out the same methods for bunny2

– Click play to see what happens

Page 21: Introduction to Object-Oriented Programming in Alice and Java

Georgia Institute of Technology

Deleting an Object

• Click on the object you want to delete – The object will be

displayed with a bounding box around it

• Click the right mouse button– Select delete from the

pop-up menu

Page 22: Introduction to Object-Oriented Programming in Alice and Java

Georgia Institute of Technology

Using Turtles in Java

• We will work with Turtles in a World in Java

• We have to define what we mean by a Turtle to the computer– We do this by writing a Turtle class definition

• Turtle.java

– We compile it to convert it into something the computer can understand

• Bytes codes for a virtual machine• Turtle.class

Page 23: Introduction to Object-Oriented Programming in Alice and Java

Georgia Institute of Technology

History of Turtles

• Seymour Papert at MIT in the 60s– By teaching the computer to do something the

kids are thinking about thinking• Develop problem solving skills• Learn by constructing and debugging something

– Learn by making mistakes and fixing them

Page 24: Introduction to Object-Oriented Programming in Alice and Java

Georgia Institute of Technology

Using Turtles

• The Turtle Class was is part of several classes created at Georgia Tech– As part of an undergraduate class

• Add bookClasses to your classpath to use these classes

Page 25: Introduction to Object-Oriented Programming in Alice and Java

Georgia Institute of Technology

Open Preferences in DrJava

Page 26: Introduction to Object-Oriented Programming in Alice and Java

Georgia Institute of Technology

Adding Book Classes to Classpath

Click on Add

Add bookClasses

directory

Page 27: Introduction to Object-Oriented Programming in Alice and Java

Georgia Institute of Technology

Creating Objects

• To create objects we ask the object that defines the class to create it– Each object keeps a

reference to the class that created it

• The class is like a cookie cutter– It knows how much space

each object needs (shape)– Many objects can be

created from the class

WorldObject 1

WorldObject 2

World: Class

Page 28: Introduction to Object-Oriented Programming in Alice and Java

Georgia Institute of Technology

Class as Object Factory

• A class is like a factory that creates objects of that class

• We ask a class to create an object by using the keyword: new ClassName

• We can also ask the class to initialize the object– And pass data to help

initialize it

Page 29: Introduction to Object-Oriented Programming in Alice and Java

Georgia Institute of Technology

Creating Objects in Java

• In Java to create an object of a class you use

new Class(value, value, …);

• Our Turtle objects live in a World object– We must create a World object first – Try typing the following in the interactions

pane:

new World();

Page 30: Introduction to Object-Oriented Programming in Alice and Java

Georgia Institute of Technology

Creating Objects

• If you just do – new World();

• You will create a new World object and it will display– But you will not have any way

to refer to it again– Once you close the window the

object can be garbage collected

• The memory can be reused

• We need a way to refer to the new object – to be able to work with it again

Page 31: Introduction to Object-Oriented Programming in Alice and Java

Georgia Institute of Technology

Naming is Important

• If you get a new pet one of the first things you do is name it– Gives you a way to refer to the new pet without saying

• Please take that dog we got yesterday for a walk.• Please take Fifi for a walk.

• In programming we name things we want to refer to again– Gives us a way to work with them – Like the World object

• This is called declaring a variable

Page 32: Introduction to Object-Oriented Programming in Alice and Java

Georgia Institute of Technology

Declaring a Variable

• To be able to refer to an object again we need to specify what type of thing it is and give it a name– This is also called declaring a variable– Type name; OR– Type name = new Class(value, value, …);

• The equal sign doesn’t mean equal– But assign the value of the variable on the left to the

result of the stuff on the right – The following creates a variable named earth which

refers to a World object created on the right• World earth = new World();

Page 33: Introduction to Object-Oriented Programming in Alice and Java

Georgia Institute of Technology

Declaring Variables

• Variables are names associated with values– If the type of the variable

is null• It doesn’t refer to an object

yet

– Variables can be reused• World earth = null;• earth = new World();• earth = new World();

earth null

earthWorld

Object 1

earth WorldObject 2

Page 34: Introduction to Object-Oriented Programming in Alice and Java

Georgia Institute of Technology

A Variable Associates a Name with Space

• A variable is like a box with a label on it– You can put

something in a box– You can take

something out of a box– You can even change

what is in the box– The size of the box

restricts what you can put in it

Hat Box

Page 35: Introduction to Object-Oriented Programming in Alice and Java

Georgia Institute of Technology

Limits on Declaring Variables

• You can't declare two variables with the same name!

> World earth = new World();

> World earth = new World();

Error: Redefinition of 'earth'

• You can change what an object variable refers to

> World earth = new World();

> earth = new World();

Page 36: Introduction to Object-Oriented Programming in Alice and Java

Georgia Institute of Technology

Declaring Variables and Creating Objects

• You can declare a variable and assign it to refer to a new object in one statement– World earth1 = new World();– Turtle tommy = new Turtle(earth1);

Declaration of variables

Creating the objects

Page 37: Introduction to Object-Oriented Programming in Alice and Java

Georgia Institute of Technology

Turtle Basics• The world starts off with a

size of 640 by 480 – With no turtlesWorld earth1 = new World();

• The turtle starts off facing north and in the center of the world by default– You must pass a World

object when you create the Turtle object

• Or you will get an error: java.lang.NoSuchMethodException: Turtle constructor

Turtle tommy = new Turtle(earth1);

Page 38: Introduction to Object-Oriented Programming in Alice and Java

Georgia Institute of Technology

Java Naming Conventions

• Notice that we capitalize the names of the classes, but not the variable names– World earth1 = new World();– This is different than English

• Capitalize proper nouns (the names of things)• Not the type of thing

– Earth is a world.– Tommy is a turtle.

• In Java it is the class names that are the most important– Not the variable or method names

Page 39: Introduction to Object-Oriented Programming in Alice and Java

Georgia Institute of Technology

Creating Several Objects

• You can create several World objectsWorld mars = new World();

• You can create several Turtle objectsTurtle shar = new Turtle(mars);

Turtle jen = new Turtle(mars);– One turtle is on top of the other

Page 40: Introduction to Object-Oriented Programming in Alice and Java

Georgia Institute of Technology

Moving a Turtle

• Turtles can move forward jen.forward();– The default is to move

by • 100 steps (pixels)

• You can also tell the turtle how far to moveshar.forward(50);

Page 41: Introduction to Object-Oriented Programming in Alice and Java

Georgia Institute of Technology

Turning a Turtle

• Turtles can turn– Right

jen.turnRight();

jen.forward();

– Leftshar.turnLeft();

shar.forward(50);

Page 42: Introduction to Object-Oriented Programming in Alice and Java

Georgia Institute of Technology

Turning a Turtle

• Turtles can turn by a specified amount– A positive number

turns the turtle the right

jen.turn(90);

jen.forward(100);

– A negative number turns the turtle to the left

shar.turn(-90);

shar.forward(70);

Page 43: Introduction to Object-Oriented Programming in Alice and Java

Georgia Institute of Technology

The Pen

• Each turtle has a pen– The default is to have

the pen down to leave a trail

– You can pick it up:turtle1.penUp();

turtle1.turn(-90);

turtle1.forward(70);

– You can put it down again:

turtle1.penDown();

turtle1.forward(100);

Page 44: Introduction to Object-Oriented Programming in Alice and Java

Georgia Institute of Technology

Drawing a Letter

• How would you use a turtle to draw a large letter T?

• Process– Create a World variable and a World object and a

Turtle variable and object. – Ask the Turtle object to go forward 100– Ask the Turtle object to pick up the pen– Ask the Turtle object to turn left – Ask the Turtle object to go forward 25– Ask the Turtle object to turn 180 degrees– Ask the Turtle object to put down the pen– Ask the Turtle object to go forward 50

Page 45: Introduction to Object-Oriented Programming in Alice and Java

Georgia Institute of Technology

Drawing a T

World world1 = new World();

Turtle turtle1 = new Turtle(world1);

turtle1.forward(100);

turtle1.penUp();

turtle1.turnLeft();

turtle1.forward(25);

turtle1.turn(180);

turtle1.penDown();

turtle1.forward(50);

Page 46: Introduction to Object-Oriented Programming in Alice and Java

Georgia Institute of Technology

Moving to a Location• A turtle can move to a

particular locationturtle1.penUp();turtle1.moveTo(500,20);

• Coordinates are given as x and y values– X starts at 0 on the left and

increases horizontally to the right

– Y starts at 0 at the top of the window and increases to the bottom

– A new turtle starts out at 320,240 by default

X

Y

639

479

Page 47: Introduction to Object-Oriented Programming in Alice and Java

Georgia Institute of Technology

Challenge• Create a World object

– Don’t forget to declare a variable to hold a reference to it

• Create a turtle object– Don’t forget to declare a

variable to hold a reference to it

• Use the turtle to draw a– Rectangle (but, not a square)– Diamond– Hexagon

• Use the up arrow to reuse previous commands

Page 48: Introduction to Object-Oriented Programming in Alice and Java

Georgia Institute of Technology

Setting the Pen Width

• You can change the width of the trail the pen leavesWorld world1 = new World();

Turtle turtle1 = new Turtle(world1);

turtle1.setPenWidth(5);

turtle1.forward(100);

Page 49: Introduction to Object-Oriented Programming in Alice and Java

Georgia Institute of Technology

Setting the Pen Color

• Use setPenColor to set the color of the penturtle1.setPenColor(java.awt.Color.RED);

• There are several predefined colors– In the package java.awt

• A package is a group of related classes

– In the class Color

• To use them you can use the full name– java.awt.Color.RED

Page 50: Introduction to Object-Oriented Programming in Alice and Java

Georgia Institute of Technology

Setting Colors

• You can change the pen colorturtle.setPenColor(java.awt.Color.RED);

• You can change the turtle colorturtle1.setColor(java.awt.Color.BLUE);

• You can change the turtle’s body colorturtle1.setBodyColor(java.awt.Color.CYAN);

• You can change the turtle’s shell colorturtle1.setShellColor(java.awt.Color.RED);

Page 51: Introduction to Object-Oriented Programming in Alice and Java

Georgia Institute of Technology

Objects can Refuse

• Turtles won’t move completely out of the boundaries of the worldWorld world2 = new World();

Turtle turtle2 = new Turtle(world2);

turtle2.forward(600);

Page 52: Introduction to Object-Oriented Programming in Alice and Java

Georgia Institute of Technology

Objects send Messages

• Objects don’t “tell” each other what to do– They “ask” each other to do things

• Objects can refuse to do what they are asked– The object must protect it’s data

• Not let it get into an incorrect state• A bank account object shouldn’t let you withdraw

more money that you have in the account

Page 53: Introduction to Object-Oriented Programming in Alice and Java

Georgia Institute of Technology

Creating a Method

• We can name a block of Java statements and then execute them again – By declaring a method in a class

• The syntax for declaring a method is– visibility returnType name(parameterList)– Visibility determines access

• Usually public or private • The return type is the type of thing returned• If nothing is returned use the keyword void

– Name the method starting with a lowercase word and uppercasing the first letter of each additional word

Page 54: Introduction to Object-Oriented Programming in Alice and Java

Georgia Institute of Technology

Example Method

public void drawSquare()

{

this.turnRight();

this.forward(30);

this.turnRight();

this.forward(30);

this.turnRight();

this.forward(30);

this.turnRight();

this.forward(30);

}

• The visibility is public• The keyword void means

this method doesn’t return a value

• The method name is drawSquare

• There are no parameters– Notice that the parentheses

are still required

• The keyword this means the object this method was invoked on

Page 55: Introduction to Object-Oriented Programming in Alice and Java

Georgia Institute of Technology

Adding a Method to a Class

1. Open file Turtle.java 2. Type the

method before the last } // end

3. Compile open files

Page 56: Introduction to Object-Oriented Programming in Alice and Java

Georgia Institute of Technology

Compile Errors

Clicking on the error takes you to the code and highlights it.

Case matters in Java! turnright isn’t the same as turnRight

Page 57: Introduction to Object-Oriented Programming in Alice and Java

Georgia Institute of Technology

Try the New Method

• Compiling resets the interactions pane– Clearing all variables

• But you can still use the up arrow to pull up previous statements

– You will need to create a world and turtle againWorld world1 = new World();

Turtle turtle1 = new Turtle(world1);

turtle1.forward(50);

turtle1.drawSquare();

turtle1.turn(30);

turtle1.drawSquare();

Page 58: Introduction to Object-Oriented Programming in Alice and Java

Georgia Institute of Technology

Saving the Interactions History in DrJava

• You can save the interactions history into a script– And optionally edit it first before you save it– Click on Tools then on Save Interactions

History

• And then latter load and execute the statements in the script– Click on Tools and Load Interactions History

as Script• Use the next button to see the next statement and

click on the execute button to execute it

Page 59: Introduction to Object-Oriented Programming in Alice and Java

Georgia Institute of Technology

Better Method to Draw a Square• A method to draw a square public void drawSquare() { int width = 30; this.turnRight(); this.forward(width); this.turnRight(); this.forward(width); this.turnRight(); this.forward(width); this.turnRight(); this.forward(width); }

• We added a local variable for the width– Only known inside the method

• This makes it easier to change the width of the square

• But, we still have to recompile to draw a different size square

Page 60: Introduction to Object-Oriented Programming in Alice and Java

Georgia Institute of Technology

Testing the Better Method

• Type the following in the interactions paneWorld world1 = new World();

Turtle turtle1 = new Turtle(world1);

turtle1.forward(50);

turtle1.drawSquare();

turtle1.turn(30);

turtle1.drawSquare();

• Or use the saved script if you saved the last interactions history

Page 61: Introduction to Object-Oriented Programming in Alice and Java

Georgia Institute of Technology

Passing a Parameter

public void drawSquare(int width)

{

this.turnRight();

this.forward(width);

this.turnRight();

this.forward(width);

this.turnRight();

this.forward(width);

this.turnRight();

this.forward(width);

}

• Parameter lists specify the type of thing passed and a name to use to refer to the value in the method

• The type of this parameter is int

• The name is width• Values are passed

by making a copy of the passed value

Page 62: Introduction to Object-Oriented Programming in Alice and Java

Georgia Institute of Technology

Testing with a Parameter

• Type the following in the interactions paneWorld world1 = new World();

Turtle turtle1 = new Turtle(world1);

turtle1.forward(50);

turtle1.drawSquare(30);

turtle1.turn(30);

turtle1.drawSquare(50);

Page 63: Introduction to Object-Oriented Programming in Alice and Java

Georgia Institute of Technology

How Does That Work?

• When you ask turtle1 to drawSquare(30)turtle1.drawSquare(30);– It will ask the Turtle Class if it has a method

drawSquare that takes an int value• And start executing that method • The parameter width will have the value of 30 during the

executing of the method• The this keyword refers to turtle1

• When you ask turtle1 to drawSquare(50)turtle1.drawSquare(50);– The width will have a value of 50– The this refers to turtle1 (the object the method was

invoked on)

Page 64: Introduction to Object-Oriented Programming in Alice and Java

Georgia Institute of Technology

Challenges

• Create a method for drawing a rectangle– Pass the width and height

• Create a method for drawing an equilateral triangle – all sides have the same length– Pass in the length

• Create a method for drawing a diamond• Create a method for drawing a house

– Using the other methods

• Create a method for drawing a school– Using the other methods

Page 65: Introduction to Object-Oriented Programming in Alice and Java

Georgia Institute of Technology

Summary

• You can create objects from classes in Alice and Java

• Each object needs a unique way to reference it– In Java we call this declaring a variable

• You can create new methods– visibility returnType name(Type name, Type

name, …)– Let’s you reuse a block of statements