GCOC – A.P. Computer Science A. College Board Topics – A.P. Computer Science A Program Design -...

Post on 02-Jan-2016

222 views 0 download

Tags:

transcript

GCOC – A.P. Computer

Science A

GCOC – A.P. Computer

Science A

College Board Topics – A.P. Computer Science A Program Design - Read and understand a

problem's description, purpose, and goals; Apply data abstraction and encapsulation.

Class Design - Design and implement a class; Design an interface.

Programming Constructs - Class declarations; Parameter declarations.

Program Analysis - Understand and modify existing code.

Standard Data Structures - Simple data types (int, boolean, double) ; Classes.

GCOC – A.P. Computer

Science A

GCOC – A.P. Computer

Science A

String x = new String(“hello”);

Monster m = new Monster();

GCOC – A.P. Computer

Science A

GCOC – A.P. Computer

Science A

{ int fun = 99;}

Any variable defined inside of braces,only exists within those braces.

That variable has a scope limited to those braces.

GCOC – A.P. Computer

Science A

When you need many methodsto have access to the samevariable, you make that variablean instance variable.

The scope of an instance variableis the entire class where that variable is defined.

GCOC – A.P. Computer

Science A

public class InstanceVars{ private int one = 9, two = 7;

public int add()

{ int sum = one + two; return sum; }

public int subtract() { int difference = one – two; return difference; } public static void main(String args[]) { InstanceVars test = new InstanceVars(); int total = test.add(); int diff = test.subtract(); System.out.println (total); System.out.println (diff); }}

OUTPUT

16

2

one and two are instance variables. We need to use them in both the add and the subtract methods.

sum and difference are local variables. They only exist inside the methods that declare them. Once the method is completethese variables are de-allocated from memory.

GCOC – A.P. Computer

Science A

When you need only one methodto have access to a variable, you should make that variablea local variable.

The scope of a local variable islimited to the method where itis defined.

GCOC – A.P. Computer

Science A

Refer to the InstanceVars class on the previous slide. Because the scope of sum and difference is their

methods, we could reuse these names in our main. In change 1, we try to print sum and difference. You will

get an error, because these variables do not exist in the main.

In change 2, notice that we have to declare them as int in again in the main.

Try this change in Dr. Java.

Change 1:public static void main(String args[]) { InstanceVars test = new InstanceVars(); int total = test.add(); int diff = test.subtract(); System.out.println (sum); System.out.println (difference); }

Change 2:public static void main(String args[]) { InstanceVars test = new InstanceVars(); int sum = test.add(); int difference = test.subtract(); System.out.println (sum); System.out.println (difference); }

GCOC – A.P. Computer

Science A

GCOC – A.P. Computer

Science A

class Triangle{ private int sidea, sideb, sidec;

public Triangle() { sidea=0; sideb=0; sidec=0; }}

Triangle A = new Triangle();

A constructor that does not have parameters, is calleda default constructor.

Java provides a class with adefault constructor automatically if one is not written by the programmer.

GCOC – A.P. Computer

Science A

//constructor method example

class Triangle{ private int sidea, sideb, sidec;

public Triangle() { sidea=0; sideb=0; sidec=0; }

public String toString() { return (sidea + " " + sideb + " " + sidec); }}

public class ConstructorOne{ public static void main ( String[] args ) { Triangle test = new Triangle(); System.out.println (test); }}

A default constructortakes no arguments(parameters)!

GCOC – A.P. Computer

Science A

A parameter is a channel used to send informationto a method.

setColor is a method of the Graphics class.

void setColor( color theColor)

window.setColor( Color.red );

GCOC – A.P. Computer

Science A

class Triangle{ private int sidea, sideb, sidec;

public Triangle(int a, int b, int c) { sidea=a; sideb=b; sidec=c; }}

Triangle A = new Triangle(3,4,5);

GCOC – A.P. Computer

Science A

have same name as class

have no return type

initialize instance variables

GCOC – A.P. Computer

Science A

//constructor method example

class Triangle{ private int sidea, sideb, sidec;

public Triangle(int a, int b, int c) { sidea=a; sideb=b; sidec=c; }

public String toString() { return(sidea + " " + sideb + " " + sidec); }}

public class ConstructorTwo{ public static void main ( String[] args ) { Triangle test = new Triangle(5,6,7); System.out.println (test); }}

This constructor takes in 3 parameters. The numbers represent the3 side lengths of the triangle. Run it!

GCOC – A.P. Computer

Science A

GCOC – A.P. Computer

Science A

Scanner keyboard = new Scanner(System.in);

System.out.print("Enter a integer :: ");int num = keyboard.nextInt();

return method

GCOC – A.P. Computer

Science A

Return methods perform some actionand return a result to the calling location.

double root = Math.sqrt(144);

root would be assigned the value 12.0.

double roundup = Math.ceil(3.121);

roundup would be assigned the value 4.0.

GCOC – A.P. Computer

Science A

Mathfrequently used methods

Name Usefloor() rounds down

ceil() rounds up

pow(x,y) returns x to the power of y

abs() returns the absolute value

sqrt() returns the square root

round() rounds the nearest whole number

max(x,y) returns bigger of x and y

min(x,y) returns smaller of x and y

random() returns a double in the range [0, 1.0)

GCOC – A.P. Computer

Science A

All methods in the Math class are static. Static methods do not require the creation

of an object to invoke them (use them). Static methods are invoked through the

class name. When we have methods that will give the

same result regardless of the method, we use static methods. We would want sqrt() method to compute the square root of the number the same every time, regardless of the individual object that may be created.

GCOC – A.P. Computer

Science A

Math.floor(3.254) = 3.0Math.ceil(2.45) = 3.0Math.pow(2,7) = 128.0Math.abs(-9) = 9Math.sqrt(256) = 16.0Math.round(3.6) = 4Math.max(5,7) = 7

Most Math methods return a decimal, but some do return integer values.We use the class name, Math, to call these methods, becausethey are static.

GCOC – A.P. Computer

Science A

//math return methods

import static java.lang.Math.*;

public class MathMethods{ public static void main ( String[] args ) { System.out.println(Math.floor(3.254)); //= 3.0 System.out.println(Math.ceil(2.45)); //= 3.0 System.out.println(Math.pow(2,7)); //= 128.0 System.out.println(Math.abs(-9)); //= 9 System.out.println(Math.sqrt(256)); //= 16.0 System.out.println(Math.sqrt(144)); //= 12.0

System.out.println(Math.round(3.6)); //= 4 System.out.println(Math.max(5,7)); //= 7 System.System.out.println(Math.max(5,-7)); //= 5 System.out.println(Math.min(5,7)); //= 5 System.out.println(Math.min(5,-7)); //= -7 }}

Type this intoDr. Java and runit. Change the numbers and seehow it changesyour output.

GCOC – A.P. Computer

Science A

Some of the programming that is done in the real world is with games. Games must havethe ability to vary or be random; thus,you must have the ability to generaterandom numbers.

Math.random(); // returns a random number//between 0 up to, but not//including 1.

GCOC – A.P. Computer

Science A

public class RandomDemo{

public static void main ( String[] args ){

double dblans;int intans;dblans = Math.random() * 10;intans = (int)Math.random() * 10; //this line needs help

System.out.println("\nMath.random()");System.out.println( dblans );System.out.println( intans ); //why does it always output 0?

}}

Math.random() * 10; returns a double between 0 and 9.999999

(int) Math.random() * 10;When we typecast a double as an int,

we get a number between 0 and 9 inclusively

GCOC – A.P. Computer

Science A

public class RandomDemo{

public static void main ( String[] args ){

double dblans;int intans;dblans = Math.random() * 10;intans = (int)(Math.random() * 10);

System.out.println("\nMath.random()");System.out.println( dblans );System.out.println( intans );

}}

How does the addition of parenthesis changethis program?

GCOC – A.P. Computer

Science A

Random Numbers

How can you use Math.random() to simulate rolling a die? How can we get it to return the numbers 1 – 6?

(int)(Math.random()*6) + 1;

GCOC – A.P. Computer

Science A

class Return1{ public int twice( int x ) //this is a return method { return 2*x; }

//code in the main Return1 demo = new Return1(); System.out.println("First value returned :: "

+ demo.twice(25) ); }}

GCOC – A.P. Computer

Science A

//return method example

import static java.lang.System.*;

public class Return2{ public int willReturnHere( int x ) { return x*x*x; }

public static void main ( String[] args ) {

Return2 demo = new Return2();

demo.willReturnHere(3);

//this is how you use a return method correctly //int answer = demo.willReturnHere(3); //System.out.println(answer); }}

GCOC – A.P. Computer

Science A

GCOC – A.P. Computer

Science A

public Triangle(){ sidea=0; sideb=0; sidec=0;}

Constructor methods are methods that set the properties of the an object to aninitial state.

GCOC – A.P. Computer

Science A

public void setNums( int n1, int n2 ){

one=n1;two=n2;

}

Modifier methods are methods that change the properties of the an object.

GCOC – A.P. Computer

Science A

public void getNumOne(){

return one;}

Accessor methods are methods that retrieve the properties of the an object.

GCOC – A.P. Computer

Science A

class Triangle{ private int sidea, sideb, sidec;

public Triangle(int a, int b, int c) { sidea=a; sideb=b; sidec=c; }

public void setSides(int a, int b, int c) { sidea=a; sideb=b; sidec=c; }

public String toString() { return "sides " + sidea + " " + sideb + " " + sidec; }}

Create 2 classes, Triangle and OOP. Run this and make sure youunderstand it.

class OOP{ public static void main ( String[] args ) { Triangle test = new Triangle(5,6,7); System.out.println(test);

test.setSides(4,4,4); System.out.println(test);

test.setSides(1,56,22); System.out.println(test); }}