COMP 110 - Tyler M. Johnson

Download Report

Transcript COMP 110 - Tyler M. Johnson

COMP 110:
Introduction to Programming
Tyler Johnson
Feb 16, 2009
MWF 11:00AM-12:15PM
Sitterson 014
Announcements
Program 2 due Wednesday by midnight
Lab 4
Part 2 is now extra credit
2
COMP 110: Spring 2009
Lab 2
3
COMP 110: Spring 2009
Questions?
4
COMP 110: Spring 2009
Today in COMP 110
Classes & Methods
Read Section 5.1 in text
5
COMP 110: Spring 2009
Classes
Java programs consists of objects of
various class types interacting with one
another
You have already been using classes
System, String, Scanner, Math
6
COMP 110: Spring 2009
Classes
A class is a definition of a kind of object
It describes a general template or
blueprint for creating objects of that
class
A class “Car” is a definition of what a
“Car” is and what it can do
7
COMP 110: Spring 2009
Classes & Objects
Objects of the class Car might have the
following attributes
Make
Model
Year
Owner
Location
All objects of the class Car have these
attributes, but with potentially different values
8
COMP 110: Spring 2009
Classes & Objects
Class Car
Make
Model
Year
Owner
Location
camry object
Make = Toyota
Model = Camry
Year = 2000
Owner = John Doe
Location = Garage
9
focus object
Make = Ford
Model = Focus
Year = 2001
Owner = Samantha Smart
Location = School
COMP 110: Spring 2009
Classes & Objects
Important: classes do not have data;
individual objects have data
Classes specify what kind of data objects have
Class Car
Make
Model
Year
Owner
Location
10
camry object
Make = Toyota
Model = Camry
Year = 2000
Owner = John Doe
Location = Garage
COMP 110: Spring 200910
Classes & Objects
Both the “camry” and “ford” objects
satisfy the definition of the class “Car”
They are said to be instances of the
“Car” class
When we create an object of a certain
class, we are said to instantiate it
11
COMP 110: Spring 2009
Methods
Classes also define the actions that objects of
its type can perform
These are called methods
All objects of the same class have the same methods
The class “Car” might have the following
methods
accelerate()
brake()
sell()
start()
12
COMP 110: Spring 2009
String Methods
string.length()
string.charAt(index)
string.substring(index1, index2)
string.toLowerCase()
string.equals(A_String)
13
COMP 110: Spring 2009
UML
A UML class diagram can be useful in
describing classes
UML stands for Universal Modeling
Language
14
COMP 110: Spring 2009
UML
A UML class diagram for the class “Car”
Car
-
make: String
model: String
year: int
owner: String
location: String
+
+
+
+
15
accelerate(double pedalPressure): void
brake(double pedalPressure): void
sell(String newOwner): void
start(): void
Class name
Attributes
Methods (actions)
COMP 110: Spring 2009
Defining Classes
You have already been defining your
own classes!
Every program you have written defines a class
//define the class TipCalculator
public class TipCalculator {
…
}
16
COMP 110: Spring 2009
Class Files & Separate
Compilation
Each Java class definition goes in its own,
SEPARATE .java file
ClassName  ClassName.java
The class “Car” must be saved in a file
called “Car.java”
17
COMP 110: Spring 2009
Class Files & Separate
Compilation
What happens when you compile a .java
file?
.java file gets compiled into a .class file
• .class file contains Java bytecode
• Car.java is compiled into Car.class
You can compile a Java class before you
have a program that uses it
18
COMP 110: Spring 2009
The Student Class
Student
-
name: String
year: int
gpa: double
major: String
credits: int
gpaSum: double
+
+
+
+
+
19
getName(): String
getMajor(): String
printData(): void
increaseYear(): void
calculateGPA(double grade): void
COMP 110: Spring 2009
Defining the Class Student
public class Student {
public
public
public
public
// ...
String name;
int year;
double GPA;
String major;
public String getMajor() {
return major;
}
}
20
Class name
Data
(instance variables)
Methods
public void increaseYear() {
year++;
}
// …
COMP 110: Spring 2009
Instance Variables
The data members of a class are called
instance variables
public
public
public
public
String name;
int year;
double gpa;
String major;
public
No restrictions on how these instance variables are
used (more details later)
21
COMP 110: Spring 2009
Creating Objects
Declaring/Initializing Primitives
int i = 0;
double area = 10.5;
Declaring/Creating Objects
Scanner keyboard = new Scanner(System.in);
22
COMP 110: Spring 2009
Creating Objects
Create an object called “jack” of
class “Student”
Student jack = new Student();
Assign memory
address of object
to variable
23
Create an object
COMP 110: Spring 2009
Using Instance Variables:
Inside the Class Definition
public class Student {
public
public
public
public
// ...
String name;
int year;
double GPA;
String major;
public String getMajor() {
return major;
}
}
24
public void increaseYear() {
year++;
}
// …
COMP 110: Spring 2009
Using public Instance
Variables Outside a Class
public static void main(String[] args) {
Student jack = new Student();
jack.name = "Jack Smith";
jack.major = "Computer Science";
System.out.println(jack.name + " is majoring in " + jack.major);
Student sam = new Student();
sam.name = "Samantha Smart";
sam.major = "Biology";
}
System.out.println(sam.name + " is majoring in " + sam.major);
“jack.name” and “sam.name” are two different
variables because they belong to different
objects
25
COMP 110: Spring 2009
Methods
Two kinds of methods
Methods that return a value
• Examples
– string.substring()
– string.charAt()
Methods that return nothing
• Example
– System.out.println()
26
COMP 110: Spring 2009
Methods
returns a String
public String getMajor() {
return major;
}
return type
returns nothing
public void increaseYear() {
year++;
}
27
COMP 110: Spring 2009
Defining Methods that
Return Nothing
Method heading: keywords
public: no restriction on how to use the method
(more details later)
void: the method returns nothing
Method body: statements executed when
the method is called (invoked)
Must be inside a pair of braces
public void increaseYear() {
year++;
}
28
COMP 110: Spring 2009
Method printData
As usual, inside a block (defined by
braces), you can have multiple
statements
public void printData() {
System.out.println("Name: " + name);
System.out.println("Major: " + major);
System.out.println("GPA: " + gpa);
}
29
COMP 110: Spring 2009
Methods
All method definitions must appear inside the
definition of the class to which they belong!
public class Student {
// …
public String getMajor() {
return major;
}
}
30
public void increaseYear() {
year++;
}
// …
COMP 110: Spring 2009
Methods
When you use a method such as
keyboard.nextInt()
you are said to call or invoke the
method
31
COMP 110: Spring 2009
Calling Methods that Return
Nothing
Syntax
object.method();
Use them like Java statements
Student jack = new Student();
jack.year = 1;
Output
Jack’s class year is 3
jack.increaseYear(); //year = 2
jack.increaseYear(); //year = 3
System.out.println("Jack’s class year is " + jack.year);
32
COMP 110: Spring 2009
Defining Methods that
Return a Value
Method heading: keywords
public: no restriction on how to use the method
(more details later)
Type: the type of value the method returns
Method body: statements executed
Must be inside a pair of braces
Must have a return statement
public String getMajor() {
return major;
}
33
COMP 110: Spring 2009
The Return Statement
A method that returns a value must have
at least one return statement
Terminates the method, and returns a value to the
caller
Syntax:
return Expression;
Expression can be any expression that
produces a value of the return type
34
COMP 110: Spring 200934
Methods that Return a Value
public String getClassYear() {
if(year == 1)
return "Freshman";
else if(year == 2)
return "Sophomore";
else if ...
}
35
COMP 110: Spring 2009
Calling Methods that Return a
Value
Syntax
object.method();
Use as a variable of the method’s return
type
Student jack = new Student();
jack.name = "Jack Smith";
jack.major = "Computer Science";
String m = jack.getMajor();
System.out.println("Jack’s full name is " + jack.getName());
System.out.println("Jack’s major is " + m);
36
COMP 110: Spring 200936
The Return Statement
Can also be used in methods that return
nothing
Terminates the method
Syntax:
return;
public void increaseYear() {
if(year >= 4)
return; //exit the method
}
37
year++;
COMP 110: Spring 200937
The Return Statement
Typically, you want to write your
methods to contain only one return
statement
It will make your programs easier to
read
38
COMP 110: Spring 2009
The Main Method
The main method is a method like any
other
public static void main(String[] args) {
// …
}
The main method is not invoked by you,
but invoked automatically by the system
when you run a program
39
COMP 110: Spring 2009
The Main Method
Classes that have a main method can be
run as a program
Not all classes have a main method
Some are used inside the main method of other
classes
40
COMP 110: Spring 2009
Local Variables
Variables declared inside a method are called
local variables
As opposed to instance variables, which are declared in the
class definition
public class Student {
public double gpa; //an instance variable
}
41
public static void main(String[] args) {
int size; //a local variable
// …
}
COMP 110: Spring 2009
Local/Instance variables
Instance variables
Declared in a class
• Can be used anywhere in the class that declares the variable,
including inside the class’ methods
Local variables
Declared in a method
• Can only be used inside the method that declares the variable
42
COMP 110: Spring 2009
Programming Demo
Counter class
A class used to count things
Define a class that records a count as a nonnegative whole number
Include methods for the following
Reset counter to 0
Increment the count
Decrement the count
Get the current count
Display the current count
43
COMP 110: Spring 2009
Counter Class
No methods should allow the count to
become negative
Write a program to test the class
44
COMP 110: Spring 2009
Programming Demo
Programming
45
COMP 110: Spring 2009
Wednesday
More about Classes
46
COMP 110: Spring 2009