Download Day1 - Rice University Department of Computer Science

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Smalltalk wikipedia , lookup

Scala (programming language) wikipedia , lookup

Java syntax wikipedia , lookup

Go (programming language) wikipedia , lookup

C syntax wikipedia , lookup

Design Patterns wikipedia , lookup

Name mangling wikipedia , lookup

Class (computer programming) wikipedia , lookup

Java (programming language) wikipedia , lookup

String literal wikipedia , lookup

C++ wikipedia , lookup

Java performance wikipedia , lookup

Object-oriented programming wikipedia , lookup

C Sharp syntax wikipedia , lookup

C Sharp (programming language) wikipedia , lookup

Transcript
TeachJava! 2003
Corky Cartwright
Dung Nguyen
Stephen Wong
Charlie Reis, James Hsia, Peter Centgraf
From C++ To Java
• C++ and Java have similar syntax.
Don’t be misled!
• Profoundly different semantics:
high-level objects vs. bytes in memory
• Profoundly different programming models:
Java is object-oriented (OO)
C++ is object-based (OB) in normal usage
Encouraging Note
• Writing OO programs in Java is remarkably
easy -- provided we recognize that it is
fundamentally different than writing OB
programs in C++.
• There is little common conceptual ground,
other than syntactic conventions, beween
OO programing (OOP) in Java and OB
programming in C++
Guiding Vision
• Program design in Java is data-directed.
Design the data abstractions first; they will
determine the structure of the code. In OOP
circles, this data design process is often called
object-modeling.
• Common data abstractions are codified as design
patterns
Secondary Theme
• DrJava, our lightweight, reactive
environment for Java, facilitates active
learning; with DrJava learning Java is a
form of exploration.
• DrJava is not a toy; DrJava is developed
using DrJava. It includes everything that
we believe is important and nothing more.
What Is an Object?
• Collection of fields representing the
properties of a conceptual or physical
object.
• Collection of operations called methods for
observing and changing the fields of the
object.
These fields and methods often called the
members of the object.
Example: Phone Directory
• Task: maintain a directory containing the office
address and phone number for each person in the
Rice Computer Science Dept.
• Each entry in such a directory has a natural
representation as an object with three fields
containing a person’s
– name
– address
– phone number
represented as character strings.
Summary of Entry format
• Fields:
– String name
– String address
– String phone
–
• Methods:
– String getName()
– String getAddress()
– String getPhone()
Java Method Invocation
• A Java method m is executed by sending a
method call
o.m()
to an object o, called the receiver. The
method m must be a member of o.
• The code defining the method m can refer to
the receiver using the keyword this.
Finger Exercise
In the DrJava programming environment,
open the program file Entry.java, compile it,
and type the following statements in the
Interactions pane:
Entry e = new Entry("Corky","DH 3104","x 6042");
e.getName()
e.getPhone()
Java Expressions
• Java supports essentially the same
expressions over primitive types (int, float,
double, boolean) as C++.
• Notable differences:
is a distinct type from int
– no unsigned version of integer types
– explicit long type
– boolean
Finger Exercise
Evaluate the following:
-5 + 3
-(5 + 3)
5%3
5./3.
5/0
5./0.
3 + .1 * .1 - 3.
5<6
5. > 6.
Finger Exercise cont.
72. - 32. * 1.8
(72. - 32.) * 1.8
72. - 30. - 12.
72. - (30. - 12.)
Java Statements
• Essentially the same form as in C++:
assignment, if, while, for, return, …
• But well-written Java programs consist
primarily of assignment, if, and return
statements (with smattering of for).
• Focus on assignment and if for most of the
week.
Assignment
• Restricted form of assignment: variable
definition
type var = exp;
• Example
int x = 5;
Finger Exercise
int x = 5;
x*x
double d = .000001;
double dd = d*d;
dd
dd*dd
1. + dd
1. + dd*dd
Finger Exercise cont.
• Evaluate:
int x = 7;
if (x = 5) y = 0; else y = 10;
y
Did you get the behavior that you expected?
Repeat the exercise with corrected syntax.
• Evaluate:
boolean switch1 = (x = 7);
switch1
Repeat the exercise with corrected syntax.
Classes: Object Templates
• A Java program is a collection of classes.
• A class is an object template consisting of a
collection of members--fields and methods-plus a constructor, which is a special method
used to initialize objects when created.
Example: Class Entry
class Entry {
/* fields */
String name;
String address;
String phone;
/* constructor */
Entry(String n, String a, String p) {
this.name = n;
this.address = a;
this.phone = p;
}
/* accessors */
String getName() { return this.name; }
String getAddress() { return this.address; }
String getPhone() { return this.phone; }
}
Finger Exercise
In the Definitions pane of DrJava, enter the Java program
defining the Entry class. In the Interactions pane, evaluate
the following program text:
Entry e = new Entry("Corky", "DH 3104", "x 6042");
e.getName()
e.getAddress()
e.getPhone()
Save your program for future use in a file named
Entry.java.
Java Data Types
• Two fundamental categories
– Primitive types: int, boolean, double, float,
char, long, short, byte (first three are most
common)
– Object types: all class instances (objects)
belong to object types, which are disjoint from
the primitive types
• Value of primitive type (e.g., true, 0) are not
objects
Object Types
• Organized in a strict hierarchy with the universal
type Object at the top.
• Every class C except Object has an immediate
superclass, which is the parent of C in the
hierarchy. In a class definition (like our Entry
example), the default superclass is Object.
• A descendant in the class hierarchy is called a
subclass. B is a subclass of A iff A is a superclass
of B. Entry is a subclass of Object; Object is a
superclass of Entry.
Example: the String class
• The String class is built-in to Java, just like Object.
• Finger Exercise: evaluate
String s = "Corky";
Object o = s;
o
s
o == s
String t = "Cork" + "y”;
t == s
“hello” == “hello”
• Multiple copies of the same String may exist; do
not use == to test String equality.
Object Types cont.
• Each subclass C inherits (includes) all of
the members of its superclass.
• The declared members of C augment the
inherited members with one exception: if C
declares a method m with exactly the same
name and types as an inherited method, then
the new definition of m overrides (replaces)
the inherited definition.
Inheritance from Object
• The Object class has several members that
its children inherit. They include the
methods
– public String toString() which
–
gives a String
representation for the object.
public boolean equals(Object o) which compares this
to o
Example of Overriding
class Entry {
/* fields */
String name;
String address;
String phone;
/* constructor */
Entry(String n, String a, String p) {
this.name = n;
this.address = a;
this.phone = p;
}
/* accessors */
String getName() { return this.name; }
String getAddress() { return this.address; }
String getPhone() { return this.phone; }
/* overridden methods */
public String toString() {
return "Entry[" + name + " " + address + " " + phone + "]";
}
}
Finger Exercise
• Open your Entry class into the DrJava
Definitions pane.
• Compile your program and evaluate:
Entry e = new Entry("Corky", "DH 3104", "x 6042");
e
• Add the definition of toString() from the
previous slide to your Entry class.
• Compile your program and evaluate:
Entry e = new Entry("Corky", "DH 3104", "x 6042");
The Wrapper Classes
• How do we treat primitive values as
objects? Java includes a builtin “wrapper”
class for each primitive type.
• Examples:
is the wrapper class for int
Boolean is the wrapper class for boolean
Double is the wrapper class for double
– Integer
–
–
Finger Exercise
In the DrJava Interactions evaluate the following:
Integer i = new Integer(5);
i
Integer j = i;
i == j
Integer k = new Integer(5);
i == k
i.equals(k)
Constructors
• Given a class definition, Java provides a mechanism called
new for creating new instances of the class.
• To exploit the new, the class must provide a special method
called a constructor that specifies how the fields of the
created object are initialized.
• A constructor method has the same name as the class and
does not contain the return type in the heading.
• Example:
Entry(String n, String a, String p) {
this.name = n;
this.address = a;
this.phone = p;
}
• If a class does not include a constructor, Java provides a
default constructor (of no arguments) that does nothing.
Finger Exercise
Add a second constructor
Entry(String n) { …}
to the Entry class where n specifies the name
of the entry. Use any reasonable default
value, e.g., "unknown" for the address and
phone fields.
Evaluate the expression
new Entry("Matthias")