Title: Advanced Placement Computer Science Java
1Advanced PlacementComputer Science(Java)
- Mr. Simon
- Lowell High School
- San Francisco, CA
2Equivalent to 2 semesters of college science
- Course Requirements
- One semester of programming in C or Java with a
B or better - A web based email account (e.g. HotMail or Yahoo
mail) that you can access from the school lab - A web site (e.g. freewebs.com) where you will
publish your finished programs
3Computer science vs. Computer programming
- A computer programming course might focus on a
programming language, it's syntax and features - Computer science is more abstract and includes
studying - Algorithms
- Data Structures
4What youll learn
- How to program in Java Applets and Applications
- Object Oriented Programming including inheritance
- How to write (some) HTML
- How to maintain a website
- Grid World Case Study
- Searching and sorting
- Recursion
- Abstract classes (AB only)
- Invariants (AB only)
- Big O notation (AB only)
- Linked Lists, Stacks, Queues, Trees, Heaps,
Hashes, Maps, Sets (AB only) - Good Programming Style
- A good foundation for studying computer science
in college
5Two exams A vs. AB
- AB students will need to do more assignments
- more difficult test questions
- 2008 results 85 pass rate
A exam Grade 5 8 Grade 4 5 Grade 3 1 Grade
2 3 Grade 1 - 1
AB exam Grade 5 6 Grade 4 1 Grade 3 1 Grade
2 0 Grade 1 - 0
6Which exam should I take?A or AB?
- Most students should take the A exam
- Consider taking the AB exam if
- You have already taken Computer Programming 2
- You are consistently scoring in the top 25 on
class tests and quizzes - For most people, a 5 on the A exam looks a lot
better than a 3 on the AB
7Grading Policy
- Each six week grade
- 70 tests and quizzes
- 20 programming assignments
- 10 productive use of lab time
- The Semester grade
- Average of the 3 six week
- grades and the final exam
8Programming Assignments
- Use free Windows software JCreator
- Available online or on CD
- Its critical to your success that you spend
adequate time programming and fully understand
the assignments - Programming can be very time consumingclass time
alone may not be enough - Send the code and url of your finished program to
room334_at_gmail.com
9Style
- Building a working program is not enough
- Other programmers need to read, understand and
modify your program - Every class, book and job may use a slightly
different style - Good style will significantly improve your grade
1010 point Program Grading Scale
- 1 pt Name, class, assignment in comments at top
- 2 pts URL/Sample Output
- 2 pts Correct Style
- 5 pts Program Correctness
- Always put your name, class and assignment on the
subject line of the email message
11Web and email
- Send programs to room334_at_gmail.com
- Send questions to mrsimon_at_earthling.net
- Check mrsimon.net for assignments, grades,
software and other information
12Logging On
- User Name The last digit of graduation year
(Class of 20055) plus first initial and last
name, 9 characters maximum, in the user name
field - Password last 4 numbers of student id
- Log on to Choose "Lowell" from pull down menu
13Examples
- Example 1
- Student nameLinda Smith
- Class of 2004
- ID 123456789
- User Name4lsmith
- Password 6789
- Example 2
- Student nameLinda Shakespeare
- Class of 2007
- ID 111110012
- User Name 7lshakesp
- Password 12
14Logging On
- If Lisa Wong and Linda Wong are in the same
class, they would have the same user name (e.g.
5lwong) - To differentiate those students, a number was
added to the end (e.g. 5lwong2) - There is a list of those students online at
http//inside.lowell.edu
15The first time you log on
- You will be prompted to change your password
Choose a password that you can remember that is
less than 8 characters in length
16Saving your work
- In "My Computer" you should see two network
drives - Save your work to the network drive with your
username - If you check Tools Folder Options Offline
files Synchronize All offline files before
logging off your work will still be available
even if the school network "goes down"
17Log Off!
- Please remember to logoff each time you finish
with the computer, otherwise other people will be
able to access your home folder!
18You can now access your work
- on any classroom computer in any classroom
- the library
- the Mac lab
- room 215
- JROTC resource center
19Assignment 0
- Send an email to room334_at_gmail.com with the
following information - Your name, reg, class and computer
- Your parents/guardians name, home phone and email
- Your parents work/daytime phone
- Secret Code (4 digits/characters, examples AOK1,
1776, KT85) - If time permits, sign up for a free website. I
recommend freewebs.com - Log Off when youre done
20Getting your own website
- There are several free providers of websites
- I recommend freewebs.com, but there are many
others and you are free to choose
21Getting your own website
- Other free providers of websites
- http//pages.google.com
- http//www.brinkster.com
- http//geocities.yahoo.com/
- http//www.netfirms.com
- http//www.50megs.com
- http//www.angelfire.lycos.com/
- http//www.100megs.com
- Know of any others?
22Just Enough HTML
- HTML can be written in a text editor like
NotePad, WordPad or JCreator - HTML files must be named with an .htm or .html
extension - HTML commands are called tags
- A tag is surrounded by e.g.,
- HTML is NOT case-sensitive so, is the same
as
23Just Enough HTML...
- Some HTML tags are single and others are paired
- The marks the end of what was begun by
the - HTML is whitespace insensitive
24Just Enough HTML...
- - begins/end HTML
- - begins/ends head
- - begins/ends title
- - begins/ends body
- - begins/ends centered text
- - begins/ends a headline
- - horizontal rule
- - end a paragraph
- break the line - - begins/ends an anchor (link)
25Just Enough HTML...
- Heres a proper webpage
-
-
- This is a tiny sample
-
-
-
- View this page using a browser
- Second lineSome more text
- And, no P at the end of the previous line see
what happens! -
-
-
26Just Enough HTML...
27An Introduction to Applets
- There are two kinds of Java programs
applications and applets - All the programs we wrote last semester were
applications they have a main - Applets run within a browser environment (usually
on the Internet)
28An Introduction to Applets
- There are two kinds of Java programs
applications and applets - All the programs we wrote last semester were
applications they have a main - This semester we will write Applets
- Applets run within a web page
- For each assignment, we will create two files
the java program and the web page (.html)
29Applets
- When you visit a website and see this Java logo,
a Java Applet is being loaded into your web
browser - An applet can do almost anything that an
application can - But they look differentthere is no main
30Writing a Hello World applet in JCreator
- The first time you start JCreator, you will see a
screen like the one below - Click "Finish" to accept the file associations
31Configuring JCreator at school to use your
network Z drive
- Don't try this at home kids!
- Choose Configure Options
- Click on "Directories"
- Under "Default Project Directory" enter Z\Java\
32Writing a Hello World applet in JCreator
- Open JCreator
- Choose File Close Workspace to close any open
files - Choose File New Project
- Click on Basic Java Applet and click Next
- Give your class a NameIll call mine Assignment1
- Click Finish
- JCreator automatically generates both the Java
and html code
33Writing a Hello World applet in JCreator
- The Java code Assignment1.java looks like this
34- The html code Assignment1.htm looks like this
35Java is very picky about names
- Do NOT use spaces in class names.
- It's difficult to change the name of a class.
Make sure you choose the name you want when you
make a new project. If you make a mistake with
the name, it's best just to start over. - You can change the name of the .html file
JCreator will give it the same name as the class
(Assignment1.htm in this case) but you can change
it to anything you want
36Running the Applet
- Choose Build Compile Project
- You should see Process Completed
- Choose Build Execute Project
- You should see
37Uploading the applet
- When you build your applet, it creates a .class
file - To put your applet on the internet, you need to
upload - The .class file
- The .html file
- To find these files, go to your Z drive and
look in your Java folder. Find the Assignment1
folder, and inside of that the classes folder - You will then upload both Assignment1.class and
Assignment1.htm to your website - You will then put a link on your homepage to
Assignment1.htm
38Uploading the applet
- To upload to freewebs.com, log in, click on My
Site and then Single File Uploader - Then browse to your .class and .html files one at
a time
39Building your homepage and linking to your
assignments
- Click on Site Manager and then click on the Edit
icon next to home
40Building your homepage and linking to your
assignments
- Move your cursor to the content box where you
want the link to go, and click Link
41Building your homepage and linking to your
assignments
- Choose My Files, click on your html file, type
some text and click Insert
42Building your homepage and linking to your
assignments
- You should now see the link on your homepage
43Applets
- We you play a game at Yahoo games, or check your
balance in your bank account online, you are
probably running an applet - An applet can do almost anything that an
application can - But they look differentthere is no main
44Applets
- Heres about the all-time simplest applet
- import java.awt.
- import java.applet.
- public class SimpleApplet extends Applet
-
- public void paint(Graphics g)
-
- g.drawString("Hello world", 50, 50)
- g.drawRect(30, 30, 100, 30)
-
45Applets
46Applets
- An applet needs a web page to run
- The html tags that place your applet in a web
page look like this - code "Assignment1.class"
- width "500"
- height "300"
-
47Advantages of Java
- Java is portable, the same Java program can run
on Windows, Macintosh and Linux computers - This is because a Java program runs inside
another program called the JVM (Java Virtual
Machine) - You must install Java first on a computer before
you can run a Java program
48Applications vs. Applets
- There are two kinds of programs you can create in
Java - Applications
- Applets
- Applications are stand-alone programs that are
installed on one computer - Applets are programs that run inside a browser
and downloaded over the internet
49Guidelines for Applet Creation
- Here are some guidelines to follow to help you
create applets - Well discuss the details of what they all mean
later on - Every applet must have a comment at the top
telling who wrote it, etc - / Mr Simon, Java Mods 10-11
- Assignment 1 /
50Guidelines / Applet Creation
- Every applet must have two import statements
- import java.awt.
- import java.applet.
- Every applet is stored in a file whose name is
XYZ.java - Every applet has
- public class XYZ extends Applet
51Guidelines / Applet Creation
- (Most) every applet contains a paint method
- public void paint(Graphics g)
-
-
-
- The body of the paint method does the drawing
that is required
52Guidelines / Applet Creation
- The size of the applet is set in the HTML code in
the applet tag - HEIGHT"300"
- IMPORTANT the name of the class has to match
both the name of the .java file and the name used
in the applet tag.
53Guidelines / Applet Creation
- Good Style
- The name of a class should always start with a
capital letter. (e.g. MyApplet) - Method (function) names should start with a
lowercase letter. If the name uses more that one
word, capitalize each additional word. (e.g.
drawArc) - Variable names should start with a lower case
letter numPeople, dDouble, cChar, sString
54Arithmetic in Java
- Java uses the following arithmetic operators
- / -- - - The operators can be combined with numbers to
make expressions. - g.drawString(5 3,50,60)
- //displays 8
- Parenthesis can be used to create more
complicated expressions - g.drawString(5 (2 3),50,60)
55Literals vs. Expressions
- If Java sees an expression it will evaluate it.
- How could you display 5 3 to the screen, rather
than just 8? - With a literal . By placing the expression in
double quotes, Java will display it without
evaluating it. - g.drawString("5 3",50,60)
56Integer arithmetic
- Java does division differently with integers than
with decimals - g.drawString(5.0/4,50,60)
- //displays 1.25
- g.drawString(5/4,50,60)
- //displays 1
57Modulus and integer division
- Remember how you did math in grade school?
- g.drawString(8/5,50,60)
- //displays 1
- g.drawString(85,50,60)
- //displays 3
58Adding a number to a string
- int nNum 5
- g.drawString("Total " nNum, 20, 20)
- //displays Total 5
- The operator can be used to add a number to a
stringmuch easier than C! - The order makes a difference!
- g.drawString("X" 2 3, 20, 20)
- //displays X23
- g.drawString("X" (2 3), 20, 20)
- //displays X5
59Primitive Data Types
- Primitive Data Types can be thought of as a
"mailbox" - There are different size mailboxes (boolean,
char, int, double, byte, short, long, float,
etc.) for different types of data - Good Style Use only boolean, int, char and
double unless you have a good reason not to.
60Wrapper classes
- For each primitive data type (such as int or
double) there is a corresponding class (such as
Integer or Double) - These classes (commonly known as wrapper classes)
provide methods and constants for dealing with
primitive data type values. - Primitive data types do not have methods.
Therefore, methods related to a primitive data
type are located in the corresponding wrapper
class. - Some of the information provided by the wrapper
classes are constants to indicate the largest and
smallest values for a given data type. For
example, the largest integer is 2147483647.
61Wrapper class constants
- Byte.MAX_VALUE // the largest value of
type byte - Byte.MIN_VALUE // the smallest value of
type byte - Short.MAX_VALUE // the largest value of
type short - Short.MIN_VALUE // the smallest value of
type short - Character.MAX_VALUE // the largest value of
type char - Character.MIN_VALUE // the smallest value of
type char - Integer.MAX_VALUE // the largest value of
type int - Integer.MIN_VALUE // the smallest value of
type int - Long.MAX_VALUE // the largest value of
type long - Long.MIN_VALUE // the smallest value of
type long - Float.MAX_VALUE // the largest positive
value of type float - Float.MIN_VALUE // the smallest positive
value of type float - Double.MAX_VALUE // the largest positive
value of type double - Double.MIN_VALUE // the smallest positive
value of type double
62Variable Declarations
- To create a mailbox, you declare it.
- int nNum
- Once its declared you can store a number
- nNum 5
- This is called initializing
- You can also do both at once
- int nValue 17
63Variable Declarations Initializations
- int nStudents 2535
- double dNaturalLogBase 2.718
- char cLetter 'a'
- Good Style Use a prefix to show the data type,
n for int, f for float, d for double, l for long
and c for char - This is called Hungarian Notation
64Cast
- Most of Java's syntax comes from C, but there
are some important differences - Java is stongly typed
- This means it's very strict about data types
- int nNum 5.6
- In C this would store 5 in nNum, but in Java
it's an error. To fix it you need a cast - int nNum (int)5.6
65ASCII code
- Ultimately, everything in a computer is stored as
a (binary) number - The system of numbers that represent letters of
the alphabet is called ASCII American Standard
Code for Information Interchange - For example, the letter 'A' has the ASCII value
of 65, which is stored as the binary value
0000000001000001 - There's a good website with all the ASCII codes
at http//www.asciichart.com/ - If you cast a char as an int, it will display the
ASCII value - g.drawString((int)'A',50,60)
- //displays 65
66Graphics in Java
- Unlike C, Java comes with built in graphics
- Putting the following statement at the top of
your program allows you to use the graphics
methods - import java.awt.
- There are various methods that allow us to draw
shapes including lines, rectangles, ovals and
polygons both unfilled and filled
67An applet that draws a Red Square
- import java.awt.
- import java.applet.
- public class RedSquare extends Applet
-
- public void paint(Graphics g)
-
- g.setColor(Color.red)
- g.fillRect(20,20,100,100)
-
68An applet that draws a Red Square
69Some Graphics methods
- void drawArc(int x, int y, int width,
- int height,int startAngle, int arcAngle)
- void drawLine(int x1, int y1, int x2, int y2)
- void drawOval(int x, int y, int width,
- int height)
- void drawRect(int x, int y, int width,
- int height)
- void drawString(String s, int x, int y)
- void fillArc(int x, int y, int width,
- int height,int startAngle, int arcAngle)
- void fillOval(int x, int y, int width,
- int height)
- void fillRect(int x, int y, int width,
- int height)
- Color getColor()
- void setColor(Color color)
70The Graphics Class
- Drawing is done within the space specified by a
bounding rectangle
71The Color Class
- There are a collection of 13 predefined colors
Color.black, Color.blue, Color.cyan,
Color.darkGray, Color.gray, Color.green,
Color.lightGray, Color.magenta, Color.orange,
Color.pink, Color.red, Color.white, Color.yellow - And, you can create a new color using Color(red,
green, blue), where RGB are in the range 0-255 - g.setColor(new Color(125,35,89))
72The Color Class
- Set the background color using
- void setBackground(Color color)
- Set the drawing color using
- void setColor(Color color)
- For example
- setBackground(Color.yellow)
- g.setColor(Color.white)
- g.drawLine(50, 50, 100, 200)
- g.setColor(Color.black)
- g.drawRect(70, 80, 100, 25)
73drawArc
- For Assignment 2, you must use drawArc (you may
use other methods as well) - drawArc has the following prototype
- void drawArc(int x, int y, int width,
- int height, int startAngle,
- int arcAngle)
- x, y, width, and height set the bounding
rectangle
74drawArc
- startAngle and arcAngle set the starting point
and length of the arc - g.drawArc(20, 20,200,100,90,180)
90
180
0
270
75drawArc
- Of course, all you see on the screen is the arc
- g.drawArc(20, 20,200,100,90,180)
76System.out.print() System.out.println()
- Useful for debugging
- like cout
- System.out.println("Hello") is the same as
- cout
- System.out.print("Hello") is the same as
- cout
77loops
- C and Java both have the same three types of
loops - Here are three examples that all count from 1 to
10 - for(int nI 1 nI
- System.out.println(nI)
-
- int nJ 1
- while(nJ
- System.out.println(nJ)
- nJ
-
- int nK 1
- do
- System.out.println(nK)
- nK
- while(nK
78Math.random()
- Inside of the Math class are many variables and
methods - One method random, returns a random decimal
between 0 and 1 - 0 n
79Math.random()
80Math.random()
81Math.random()
- Math.random()2
- (0 n
- A random decimal from 0 to 1.9999999
82Math.random()
83Math.random()
- (int)(Math.random()2)
- 0, 1
84Math.random()
- (int)(Math.random()10)
- ??
85Math.random()
- (int)(Math.random()10)
- 0,1,2,3,4,5,6,7,8,9
86Math.random()
- (int)(Math.random()10) - 5
- ??
87Math.random()
- (int)(Math.random()10)- 5
- 0,1,2,3,4,5,6,7,8,9 - 5
88Math.random()
- (int)(Math.random()10)- 5
- 0,1,2,3,4,5,6,7,8,9 5
- -5,-4,-3,-2,-1,0,1,2,3,4
89Watch out for this mistake
- (int)Math.random()101
- is always zero!
90Watch out for this mistake
- (int)Math.random()101
- If Math.random() is cast as an int before being
multiplied, the result is always zero - The fix
- (int)(Math.random()101)
91Practice quiz questions Write an expression
- The following line of code was meant to display
the sum of 4 and 9, but it didn't work as
expected. Fix the problem. - g.drawString("4 9 " 4 9,50,60)
- Write an expression that will make a random
decimal between 0 and 5 (including 0 but not 5) - Write an expression that will make a random
integer between 0 and 5 (including 0 but not 5) - Write an expression that will make a random
integer between -2 and 3 (including -2 but not 3) - What is the output of the following line
- g.drawString(("One" 2) (3 4),20,20)
92boolean
- A primitive data type (Mailbox) that can hold
only two values true or false - boolean bBool true
- boolean bGreater 5 3
- boolean b3Multiple (5 3) 0
- if(b3Multiple)
- g.drawString("Is a multiple of 3",50,50)
- else
- g.drawString("Is NOT a multiple of 3",50,50)
93Objects and class
- You wouldn't call this thing "Two wheels, a
handlebar, a seat, some pedals and a frame" - Instead, you would use one name that describes
the entire object - A class is a collection of primitive data types
and methods that describe the data and behavior
of an object - class Bicycle
-
- int nWheels
- double dWeight
- double dSpeed
- void ride()
-
- dSpeed 10
-
-
- The different parts are accessed using the dot
operator
94A simple class
- A class represents an complex object
- There are methods (functions) that represent what
the object does - There are variables (mailboxes) that represent
the object has - Methods that modify the variables are called
Modifiers or Mutators - A special method that initializes the variables
is called the constructor - Methods that retrieve the value of a variable are
called accessors - Note that in Java there are two types of things
Primitives and Objects
95A coin flip class
- Let's create a class that represents a coin flip
- What it has is two sides heads and tails
- What it is does is flip
96A coin flip class
- Let's create a class that represents a coin flip
- What it has is two sides heads and tails
- What it is does is flip
- class CoinFlip
- boolean bIsHeads
- void flip()
- //java code
-
-
-
97A coin flip class
- Let's create a class that represents a coin flip
- What it has is two sides heads and tails
- What it is does is flip
- class CoinFlip
- boolean bIsHeads
- void flip()
- if(Math.random()
- bIsHeads true
- else
- bIsHeads false
-
-
-
98Using the coin flip class
- To use the coin flip class, we need to create a
new coin flip object - CoinFlip theCoin new CoinFlip()
-
99Using the coin flip class
- To use the coin flip class, we need to create a
new coin flip object - CoinFlip theCoin new CoinFlip()
- This is called creating a new instance of
CoinFlip or instantiating a new object - Now we can flip the coin and see what it is
- theCoin.flip()
- if(theCoin.bIsHeads)
- g.drawString(Heads!,50,50)
- else
- g.drawString(Tails!,50,50)
-
100The Constructor
- CoinFlip theCoin new CoinFlip()
- What happens if we forget to flip the coin?
- //theCoin.flip() this line removed
- if(theCoin.bIsHeads)
- g.drawString(Heads!,50,50)
- else
- g.drawString(Tails!,50,50)
- What value is in bIsHeads?
-
101The Constructor
- CoinFlip theCoin new CoinFlip()
- The constructor's job is to automatically set
up a new instance of CoinFlip - It has the same name as the class, and no return
type - class CoinFlip
- boolean bIsHeads
- CoinFlip()
- flip()
-
- void flip()
- if(Math.random()
- bIsHeads true
- else
- bIsHeads false
-
-
102The Finished Program
- public class SimpleClassDemo extends Applet
-
- public void paint (Graphics g)
- CoinFlip theCoin new CoinFlip()
- theCoin.flip()
- if(theCoin.bIsHeads)
- g.drawString("Heads!",50,60)
- else
- g.drawString("Tails!",50,60)
-
-
- class CoinFlip
- boolean bIsHeads
- CoinFlip()
- flip()
-
- void flip()
- if(Math.random()
103Instantiating new Objects
- In Java, you don't get a new Object until you ask
for one using the Java keyword new - The fancy name for this is instantiating a new
Object. - CoinFlip theCoin new CoinFlip()
104Getting the value inside an object using an
accessor method
- One way to get the value out of an object is to
just use the dot operator - theCoin.bIsHeads
- While this is the easiest way, unfortunately,
it's not the most common - Usually, Java programmers use an accessor method
105an accessor method
- class CoinFlip
- boolean bIsHeads
- CoinFlip()
- flip()
-
- void flip()
- if(Math.random()
- bIsHeads true
- else
- bIsHeads false
-
- boolean getFlip()
- return bIsHeads
-
-
106an accessor method
- if(theCoin.bIsHeads)
- g.drawString("Heads!",50,50)
- else
- g.drawString("Tails!",50,50)
107an accessor method
- if(theCoin.bIsHeads)
- g.drawString("Heads!",50,50)
- else
- g.drawString("Tails!",50,50)
108an accessor method
- if(theCoin.getFlip())
- g.drawString("Heads!",50,50)
- else
- g.drawString("Tails!",50,50)
109Practice Quiz Question
- A. Find two lines of code that instantiate new
objects - B. Find two accessor methods
- C. Find the output
- public class SimpleClassQuiz extends Applet
-
- public void paint(Graphics g)
- Thingy Bob new Thingy()
- g.drawString("Bob " Bob.getValue(),50,60
) - WhatsIt Evelyn new WhatsIt()
- g.drawString("Evelyn "
Evelyn.getValue(),50,80) -
-
- class Thingy
- int nNum
- Thingy()
- nNum 0
- for(int nI0 nI
- if(nI3 0)
- nNum nI
class WhatsIt double dNum WhatsIt() dNum
1 for(int nI1 nI 0) dNum nI double
getValue() return dNum
110The paint() and init() methods
- The paint() method is called automatically when a
screen update is needed - The paint() method may be called many times. If
you have something that should only run once, put
it in init() - init() is called once, before paint(). It's
generally used to initialize values.
111An applet with init() and paint() methods
- import java.awt.
- import java.applet.
- public class TwoMethodDemo extends Applet
-
- int nNum
- public void init()
-
- nNum 3
- setBackground(Color.blue)
-
- public void paint(Graphics g)
-
- g.setColor(Color.red)
- g.fillRect(10,10,200,200)
- g.setColor(Color.white)
- g.drawString("nNum is " nNum,105,105)
-
112An applet with init() and paint() methods
113Math.sqrt()
- Inside of the Math class there is a square root
method - double sqrt(double a)
- It takes a double as an argument and returns a
double - g.drawString("" Math.sqrt(100),50,50)
- //displays 10.0
114Boolean methods
- Methods that return booleans are called boolean
methods or predicates - Good Style Boolean methods are usually given
names that start with is - isEmpty()
- isEqual()
- isOpen()
- isUpperCase()
115Practice Quiz Question
- class Practice extends Applet
- public void paint(Graphics g)
- Mystery bob new Mystery()
- g.drawString("Bob" bob.getValue(),50,50
) -
-
- class Mystery
- double dValue
- double getValue()
- return dValue
-
- Mystery()
- dValue 0
- for(int nI 1 nI
- if(isSomething(nI))
- dValue nI
-
116A "Typical" class
- A class may have any number of methods and any
number of variables - class Thingy
- int nSomeInt
- String sSomeString
- Thingy()
-
- int someMethod (double dNum)
- //lots of java
-
- void anotherMethod (double dNum)
- //lots of java
-
117Class member methods
- A class may have any number of methods and any
number of variables - class Thingy
- //lots of java
- int someMethod (double dNum)
- //lots of java
-
-
- The return type specifies what type of data is
returned - The arguments specifies what types of data are
passed to the method
118Class member methods
- A class may have any number of methods and any
number of variables - class Thingy
- //lots of java
- int someMethod (double dNum)
- //lots of java
-
- Thingy()
- //lots of java
-
-
- Note that the constructor has no return type, not
even void
119Class member methods
- A constructor can use arguments just like any
other function - class Thingy
- //lots of java
- int someMethod (double dNum)
- //lots of java
-
- Thingy(int nArgument)
- //lots of java
-
-
- so now if we instatiate a Thingy with code like
Thingy bob new Thingy(5) 5 is copied into
nArgument
120Modeling objects
- Let's say I want to make an animation of a
balloon that gets bigger as it is inflated - I'll start by asking what a balloon has and what
it does - And then I'll write a class that models the
object - class Balloon
-
- ???
-
-
121Modeling objects
- Let's say I want to make an animation of a
balloon that gets bigger as it is inflated - I'll start by asking what a balloon has and what
it does - And then I'll write a class that models the
object - class Balloon
-
- int nSize
- Color myColor
-
-
122The constructor's job is to initialize the member
variables
- It puts stuff in the mailboxes when a new object
is created - class Balloon
-
- int nSize
- Color myColor
- Balloon()
-
- nSize 0
- myColor Color.red
-
-
-
123What do balloon's do?
- class Balloon
-
- int nSize
- Color myColor
- Balloon()
-
- nSize 0
- myColor Color.red
-
- ???
-
-
124What do balloon's do?
- class Balloon
-
- int nSize
- Color myColor
- Balloon()
-
- nSize 0
- myColor Color.red
-
- void inflate()
-
- nSize
-
-
-
125What do balloon's do?
- class Balloon
-
- int nSize
- Color myColor
- Balloon()
-
- nSize 0
- myColor Color.red
-
- void inflate()
-
- nSize
-
- void draw(Graphics g)
-
- g.setColor(myColor)
- g.fillOval(0,0,nSize,nSize)
-
-
126Animation and threads
- Once I've written my ball class, I can "plug it
into" the outline for a program with a thread -
- //declare other class data members
- Balloon theBalloon
- public void init()
-
- //initialize class data members
- theBalloon new Balloon()
-
-
- public void paint(Graphics g)
-
- theBalloon.draw(g)
- //painting
-
-
127Animation and threads
- Once I've written my ball class, I can "plug it
into" the outline for a program with a thread -
- public void run()
-
- while(true)
-
- //put code that runs in loop here
- theBalloon.grow()
- repaint()
- try
-
- Thread.sleep(REFRESH_RATE)
- catch(Exception exc)
-
-
-
128Arrays
- An array is a collection of items of the same
data type that is accessed by index - String saAnswers "yes","no","maybe"
- g.drawString("" saAnswers1, 50,50)
- int naNums 17,3,-5,42
- g.drawString("" naNums2,50,70)
- g.drawString("" saAnswers.length,50,90)
- //note that length for arrays is NOT a function
- g.drawString("" naNums.length,50,110)
- /Sample Output
- no
- -5
- 3
- 4 /
129Arrays
- Arrays and loops are commonly used together
- String saAnswers "yes","no","maybe"
- for(int nI 0 nI
- System.out.println(saAnswersnI)
130Arrays
- When an array is an argument of a function, the
size of the array is not specified. - int someMethod(int naNums)
- //lots of java
- for(int nI 0 nI
- //do something with naNumsnI
- //return some int
-
131Arrays
- Arrays in Java work almost identically to C,
but there are some differences in style - String saAnswers "yes","no","maybe"
- //Java Style
- String saAnswers "yes","no","maybe"
- //C Style
- Practice Quiz Question www.javabat.com
- Array1Basic Array ProblemscountEvens()
132Practice Quiz Question
- http//javabat.com/prob?idArray2.sum13
- Return the sum of the numbers in the array,
returning 0 for an empty array. Except the number
"13" is very unlucky, so it does not count and
numbers that come immediately after a 13 also do
not count. - Hint Don't worry about 13 at first, just find
the sum of of the array - Then, just exclude 13
- Finally, figure out how to exclude the number
after 13
133Practice Quiz Question
- http//javabat.com/prob?idArray2.sum13
- public int sum13(int nums)
-
-
134Arrays of Objects
- In Java, Arrays are objects. So if you make an
array of objects, you need to use new twice once
to make a new array, and then again to put new
objects in the array. - Particle aBunch new Particle10
- for(int nI 0 nI
- aBunchnI new Particle()
135Arrays of Objects
- This is a great place to use a constant
- final static int nNUM_PARTS 10
- Particle aBunch new ParticlenNUM_PARTS
- for(int nI 0 nI
- aBunchnI new Particle()
136.equals()
- Always (well, 90 of the time) use .equals()
instead of to compare objects - int nBoys 3
- int nGirls 6
- g.drawString("" nBoysnGirls,50,50)
- String sWord new String(Hello)
- String sWord2 new String(hello)
- g.drawString("" sWord.equals(sWord2),50,70)
137Constuctor Arguments
- A constructor (just like any other method) can
have any number of arguments - Class MumboJumbo
- int nSum
- MumboJumbo(int n1, int n2)
- nSum n1 n2
-
-
- MumboJumbo one new MumboJumbo(4,5)
- g.drawString("" one.nSum,50,50)
138Practice Quiz Question
- public class ConstructArgsDemo extends Applet
- public void paint(Graphics g)
- int naNumbers1 7, 2, 5, 16, 1
- int naNumbers2 3, 12, 5, 168
- Mystery one new Mystery(naNumbers1)
- Mystery two new Mystery(naNumbers2)
- g.drawString("" one.bWhat, 50, 20)
- g.drawString("" two.bWhat,50,40)
- g.drawString("" one.sWord.equals("little"
),50,60) - g.drawString("" two.sWord.equals("little"
),50,80) -
-
- class Mystery
- boolean bWhat
- String sWord
- Mystery(int naNums)
- int nSum 0
- for(int nI naNums.length - 1 nI 0
nI--) - if(naNumsnI2 1)