You are on page 1of 22

12/28/2013 11:44:00 PM

Lecture 1 & 2:
Goals of CS 61B
1. Learning efficient data structures
and algorithms
2. Designing and Writing Large
Programs
3. Understanding and designing data
abstraction and interfaces.
4. Java
Object-Oriented Programming

Object: A repository of data

Classes: a particular type of


object
Method: Procedure, function
that operates upon an object
Inheritance: A class may inherit
properties from a more general
class
Polymorphism: One method that
works on at least two classes,
even if the classes need
different implementations.
o For instance, addItem method works on every kind of List,
though adding to a shoppingList is different from adding to a
shoppingCart.

Object-Oriented: each object


knows its own class
o A shoppingCart and shoppingList knows which implementation
applies to it.

Variables:

These must be declared with


their type
o int x;
Allocates a chunk of memory for you that is capable of
storing an int-sized thing.
That chunk of memory is named x
o x = 1;

Variables are either Primitive or


Non-Primitive
Reference:
Variable that references or
points to an object
Example:
String myString;

Does not create a String object


Creates a reference variable that can then point to a String object

myString = new String();

new String() is a constructor


= assignment
o causes myString to reference the new String object

Example 2:
s2 = new String(s);

looks where s points


Reads String
Constructs new String with copy of characters
Makes s2 reference new String

3 string constructors:
1. new String() constructs an
empty string (0 characters)
2. Yow!
3. new String(s)
a. takes a String parameter for
the constructor to read and

makes a copy of the String


object that s references.
Rule: Constructors always have the
same name as the object that they
construct

Methods
s2 = s.toUppercase();
String s3 = s2.concat(!!);
Same as s3 = s2 + !!;
String s4 =
*.concat(s2).concat(*);
Same as s4 = * + s + *;

I/O Classes and objects


Objects in System class for
interacting with a user
System.out references a
PrintStream object that outputs
to the screen
System.in is an InputStream
object that reads from the
keyboard
readLine is defined on
BufferedReader objects
How do we construct a BufferedReader?
Use InputStreamReader

How do we construct InputStreamReader?


With InputStream
How do we construct InputStream?
System.in is one.
BufferedReader
Compose into entire lines of text
InputStreamReader
Compose into characters (2 bytes long)
InputStream
Raw data
*remember, JVM always runs the main
method first

*remember to do this
import java.io.*;

class SimpleIO {
o public static void main(String[] args)
throws Exception{
BufferedReader keyboard = new
BufferedReader(new
InputStreamReader(System.in));

61B Lecture 1
CS 61B: Lecture 1

12/28/2013 11:44:00 PM
Wednesday, January 23, 2013

Grading ------- 10 pts Labs


There are 200 points total you can earn
in this course, 20 pts Homeworks
broken down at left. 185+ points is
an A+, 175-184 is 70 pts Projects
an A, and so on down to D- (85-94).
There is NO CURVE. 25 pts Midterm I
Late homeworks and labs will NOT
be accepted, period. 25 pts Midterm II Late projects are penalized 1% of
your score for every 50 pts Final Exam two hours by which you miss the
deadline. ------- 200 pts
Create a new project for each assignment

The Language of Object-Oriented Programming


1. Object
An object is a repository of data. For example, if MyList is a
ShoppingList object, MyList might record your shopping
2. Class

A class is a type of object


Many objects of the same class might exist, for instance, MyList and
YourList may both be ShoppingList objects
3. Method
A procedure or function that operates on an object or a class. A
method is associated with its particular class.
Sometimes a method is associated with a family of classes. For
instance, additem might operate on any List, of which a
ShoppingList is just one type.
4. Inheritance
A class may inherit properties from a more general class.
For example, the ShoppingList class inherits from the List class the
property of storing a sequence of items.
5. Polymorphism
The ability to have one method call work on several classes of
objects, even if those classes need different implementations of the
method call.

For example, one line of code might be able to call the addItem
method on every kind of List, even though adding an item to a
ShoppingList is completely different from adding an item to a
ShoppingCart.
6. Object-Oriented
Each object knows its own class and which methods can manipulate
objects in that class.
Each ShoppingList and Shoppingcart knows which implementation
of addItem applies to it.
Java
Java allows you to store data in variables, but you must first declare them
and specify their type.
Python: x = 1 Scheme: (let ((x 1)))

Java: int x; x = 1;

This Java declaration does two things:


(1) Allocates a chunk of memory large enough to store an

integer, which Java calls int.


(2) It names the variable (or chunk of memory) x.

Declaring a Variable: Allocating a chunk of memory (which can be used


to reference something)
Variables are used not only to store numbers, but also to reference
objects.
There are two ways to get classes of objects to play with:

Define your own


Use pre-defined classes that Java has already made
o For example, Java has the built-in class called String.

String myString;
Note: This does not create a string object!

Instead, it declares a variable (chunk of memory)


myString does not reference anything initially

Currently, myString references to an empty chunk of memory


However, we can make it reference an object.
myString = new String();

Note: Unlike Scheme and Matlab, Java programs must be compiled first
before you can run them. Compilation converts your written code to a
machine readable bytecode. The advantage is a program that is faster than
one written in Scheme. The disadvantage is that you must wait for it to
compile.

Assume the following code is in a file called HelloWorld.Java

Classes
The Classes are: HelloWorld, String, System
The Objects are: args, System.out, and Hello, world
In truth, the first two of these are references to objects
The Methods are: main, println
The println method prints its parameter
The main method prints the string Hello, world
Code Analysis
The innermost line:
System.out.println(Hello, world)

System.out references an object which has the class PrintStream


o A Prinstream is a path by which characters can be output by a
program.
o The characters that are sent through out find their way to
your computer screen
System is a class that happens to have out as a variable (among
other variables). We have to write System.out to address the
output stream, because other classes may have variables called out
too, with their own meanings.
println is a method (procedure) of the class PrintStream.
o Hence we can invoke println from any PrintStream class
object, including system.out
o println takes one parameter, which can be a string.

main is a method in the HelloWorld class.

The HelloWorld class knows how to do the main method, just like the
PrintStream class knows how to do the println operation.

Analyze the Diagram


In the System class, system.out references an object of the class
Prinstream, which contains the method println. The HelloWorld class
contains the method main.

Sierra-Bates

12/28/2013 11:44:00 PM

Pages 1-9:
Breaking the
Surface
Java is appealing in the following ways:
Write once/ run anywhere
Faster, sleeker
Portability
The Way Java Works
The goal is to write one application (in this case a Party invite) which will run
on multiple platforms (whatever your friends may happen to have).
1. Source:
Create a source document using an established protocol, in this
case Java.
2. Compiler
Run your source document through a compiler, which checks for
errors and wont let you compile until it is satisfied that
everything will run correctly.
3. Output
The compiler creates a new document, coded into Java
bytecode.
Any machine capable of running Java will be able to
interpret/translate this bytecode into something that it can run.
The compiled bytecode is platform-independent.
4. Multiple Virtual Machines

Your friends dont have a physical Java machine, but what they all
do have is a virtual Java machine created through software
engineering on each of their various devices. The virtual Java
machine reads and runs the bytecode.

What Youll Do in Java


You will write a source document, compile it into Java bytecode using the
Javac compiler, and run the compiled bytecode on a Java virtual machine.
1. Source
Save as Party.java
2. Compiler
Compile Party.java by using javac
If there are no errors, you will get a second document called
Party.class. This file consists of bytecode.
3. Output (code)
This is the compiled code: Party.class
4. Java Virtual Machine
Run the program by starting the Java Virtual Machine (JVM) with
the Party.class file. The JVM translates the bytecode into
something the underlying platform understands, and runs the
program.
Code Structure in Java

What Goes in a Source File?


A source file holds class definitions.
A tiny application may hold just one class.

A class represents a piece of your program.


Class must go between a pair of {}

What Goes in a Class?

A class holds methods.


Methods must be declared in a class.
o Must be within {}
Think of methods as functions
For example, in the Dog class, the method Bark will hold
instructions for how the Dog should bark.

What Goes in a Method?


The body of a method is essentially a set of instructions for how
that method should be performed.
This body must go in a set of {}.
Every statement must end with a semicolon.

Anatomy of a Class
Note: When the JVM starts running, it looks into the class you gave it at
the command line. Then it looks for a particular method that looks exactly
like
public static void main ([]String args) {
// your code goes here
}
Next, the JVM runs everything between the {} of your main method.
Remember, every Java program must have at least one class and one
main method (one main for the entire program, not per class).

Writing a Class with a Main


Note:

In Java, everything goes in a class. Youll type your source code


and save it as a .java file, but it will be compiled into a new
document and saved as a .class document.
Running a program means telling a Java Virtual Machine to load

the class and to start executing its main() method, and to


run until all the code in main is finished.
The main() method is where the program starts running.

Pages 18-19: JVM


vs. Compiler
(importance)
In Summary:
JVM runs the bytecode that is produced by the compiler
The compiler is responsible for checking the original .java file for
most mistakes in syntax

Page 84:
Declaring and
Initializing
Instance Variables

Recall
A variable declaration needs at least at least a name and a type.
For example:
o Int size;
o String name;
A value can be assigned to the variable at the same time that the
variable is declared
int size = 420;
String name = Donny;
In other words:
DECLARING = giving a variable a NAME and a TYPE
INITIALIZING = assigning a variable a VALUE
However
When you do not initialize an instance variable, what happens when you
call a getter method? -> What is the default value of an uninitiated
variable or a variable that has not been assigned a value?
If you dont explicitly assign/instantiate a variable or you dont call
a setter methodinstance variable still has a value!
Integers
o 0
Floating Point
o 0.0
Booleans

o False
References
o Null

For example:

You might also like