comp 110 classes

35
Catie Welsh February 21, 2011

Upload: dara-burke

Post on 31-Dec-2015

31 views

Category:

Documents


0 download

DESCRIPTION

COMP 110 Classes. Catie Welsh February 21, 2011. Announcements. Lab 4 due on Friday. Questions?. Today in COMP 110. Briefly go over Strings and Loops Worksheet Briefly go over Program 2 Classes. Program 2. Operand 1. Operator. Operand 2. Program 2. - PowerPoint PPT Presentation

TRANSCRIPT

Catie WelshFebruary 21, 2011

Lab 4 due on Friday

2

3

Briefly go over Strings and Loops Worksheet

Briefly go over Program 2

Classes

4

5

1 2 . 7 + 3 . 3

0 1 2 3 4 5 6 7 8 9

Operand 1 Operand 2Operator

6

1 2 . 7 + 3 . 3

0 1 2 3 4 5 6 7 8 9

Assume the String above is in the variable calculation.

int firstSpace = calculation.indexOf(‘ ’);int lastSpace = calculation.lastIndexOf(‘ ’);

double operand1 = Double.parseDouble(calculation.substring(0, firstSpace));double operand2 = Double.parseDouble(calculation.substring(lastSpace + 1));char operator = calculation.charAt(firstSpace + 1);

Now you can determine which calculation to perform using a switch or if/else

double result = 0.0;switch (operator){ case ‘+’: result = operand1 + operand2; break; case ‘-’: result = operand1 – operand2; break; // and so on}

7

double result = 0.0;switch (operator){ case ‘^’: result = 1.0;

if(operand2 > 0) {

for (int count = 0; count < (int) operand2; count++) result *= operand1; }

else if(operand2 < 0) {

for (int count = 0; count > (int) operand2; count--) result *= operand1;

result = 1.0 / result; } break; case ‘-’: result = operand1 – operand2; break; // and so on}

8

Floating-point numbers are imprecise◦ After doing many computations, value may not be

exactly the same◦ 5.0 * 3.0 might be different from

1.0 + 2.0 + 3.0 + 4.0 + 5.0 Okay for this assignment for the divide by 0

error checking

9

num++ is NOT num + 1 num++ does num = num + 1 So does ++num, BUT, there is a difference

int num1 = 5;System.out.println(num1++);// outputs num1 (5), then increments num1

int num2 = 5;System.out.println(++num2);// increments num2, then outputs num2 (6)

10

Java programs (and programs in other object-oriented programming languages) consist of objects of various class types

Objects can represent objects in the real world◦ Automobiles, houses, employee records

Or abstract concepts◦ Colors, shapes, words

11

A class is the definition of a kind of object◦ A blueprint for constructing specific objects

12

Class Name: Automobile

Data: amount of fuel speed license plate

Methods (actions): accelerate: How: Press on gas pedal. decelerate: How: Press on brake pedal.

13

Object Name: patsCar

amount of fuel: 10 gallonsspeed: 55 miles per hourlicense plate: “135 XJK”

Object Name: suesCar

amount of fuel: 14 gallonsspeed: 0 miles per hourlicense plate: “SUES CAR”

Object Name: ronsCar

amount of fuel: 2 gallonsspeed: 75 miles per hourlicense plate: “351 WLF”

Instantiations, or instances, of the class Automobile

14

Automobile

- fuel: double- speed: double- license: String

+ accelerate(double pedalPressure): void+ decelerate(double pedalPressure): void

Class name

Data

Methods (actions)

Important: classes do not have data; individual objects have data

Classes specify what kind of data objects have

15

Each Java class definition goes in its own, SEPARATE .java file

ClassName save the file as ClassName.java

Student.java includes the class Student

16

What happens when you compile a .java file?◦ .java file gets compiled into a .class file

Contains Java bytecode Same filename except for .class instead of .java

You can compile a Java class before you have a program that uses it

17

18

Class Name: Student

- Name- Year- GPA- Major- Credits- GPA sum

+ getName+ getMajor+ printData+ increaseYear How: increase year by 1+ calcGpa How: average grades

19

Class Name: Student

- name: String- year: int- gpa: double- major: String- credits: int- gpaSum: double

+ getName(): String+ getMajor(): String+ printData(): void+ increaseYear(): void+ calcGpa(double grade): void

public class Student{ public String name; public int classYear; public double GPA; public String major; // ...

public String getMajor() { return major; }

public void increaseYear() { classYear++; }}

20

Class name

Data(instance variables)

Methods

Create an object jack of class StudentStudent jack = new Student();

Scanner keyboard = new Scanner(System.in);Create an object keyboard of class Scanner

21

Create an objectReturn memory address of object

Assign memory address of object to variable

Data defined in the class are called instance variables

public String name; public int classYear; public double GPA; public String major;

22

public: no restrictions on how these instance variables are used (more details later – public is actually a bad idea here)

type: int, double, String…

variables

public class Student{ public String name; public int classYear; public double GPA; public String major; // ...

public String getMajor() { return major; }

public void increaseYear() { classYear++; }}

23

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 apu = new Student(); apu.name = “Apu Nahasapeemapetilon”; apu.major = “Biology”;

System.out.println(apu.name + “ is majoring in ” + apu.major);}

jack.name and apu.name are two different instance variables because they belong to different objects

24

Two kinds of methods◦ Methods that return a value

Examples: String’s .substring() method, String’s .indexOf() method, etc.

◦ Methods that return nothing Example: System.out.println()

25

public String getMajor(){ return major;}

public void increaseYear(){ classYear++;}

26

returns a String

returns nothing

return type

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(){ classYear++;}

27

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);}

28

object, followed by dot, then method name, then ()

Use them as Java statements

Student jack = new Student();jack.classYear = 1;

jack.increaseYear();

System.out.println(“Jack’s class year is ” + jack.classYear);

29

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;}

30

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 type specified by the return type in the method heading

31

public String getClassYear(){ if (classYear == 1) return “Freshman”; else if (classYear == 2) return “Sophomore”; else if ...}

32

object, followed by dot, then method name, then () (same as before)

Use them as a value of the type specified by the method’s return type

Student jack = new Student();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);

33

Can also be used in methods that return nothing

Terminates the method Syntax:

◦ return;

public void increaseYear(){ if (classYear >= 4) return; classYear++;}

34

More about classes

3535