introduction to objects a way to create our own types

Post on 05-Jan-2016

223 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Introduction to Objects

A way to create our own types

Type and Variables

• Until this point we were only able to create simple types, actually call “primitive” types– integer– double– float– char– String (actually not primitive)

We want to do better

• Bank Account• Math Calculator• Stock • Car• Vending machine• Telephone

• Model “whatever” as software• Make a computer act like one

Use type to create a variable

Use class to create an object

int x;

Circle mycircle = new Circle();

Consider methods• Take a known process

• Package it for reuseif ((a >= b) && (a>=c)) max = aelse if ((b >= a) && (b>=c)) max = belse max = c;

int maxof3(int a, int b, int c){ int max; if ((a >= b) && (a>=c)) max = a else if ((b >= a) && (b>=c)) max = b else max = c; return max;}

How are object like this?

• Take a group of methods and data and package those for reuse.

a( )

b( ) c( )

int i

int k a( )

b( ) c( )

int i

int k

class Testclass

int i;int j;

void a(){…}

void b(){…}

void c(){…}

class TestClass{int i;int j;

void a() {…}

void b() {…}

void c() {…}

}

How do we decide what goes inside?

• The problem will guide us.

• The things we put inside will define – What the object will do– How we can interact with it

• These things will be the “Bank Account”s, “Student”s, etc

Let’s start simple

A circle

What are some of the attributes of a circle?

• Radius (most obvious)

• Color

• Border

• Position

How do we interact with a circle?

• Change it’s size

• Move it

• Ask it for it’s area

• … depending on the problem’s needs

Let’s start with a simple Circle class

• Just a radius– No borders or colors

• A means of asking it for it’s area.

• This will serve as the basis (a type or class) for creating lots of circles

Circle()

class Circle {

double radius;

Circle(double r) { radius = r; }

double Area() { double thisarea = radius*radius*Math.PI; return thisarea; }

}

Circle()

class Circle {

double radius;

Circle(double r) { radius = r; }

double Area() { double this area = radius*radius*Math.PI; }

}

Heading for the class

Circle()

class Circle {

double radius;

Circle(double r) { radius = r; }

double Area() { double thisarea = radius*radius*Math.PI; return thisarea; }

}

A property ofeach circle

Circle()

class Circle {

double radius;

Circle(double r) { radius = r; }

double Area() { double thisarea = radius*radius*Math.PI; return thisarea; }

}

A method named Areathat will calculate thearea of that specific circle

Circle()

class Circle {

double radius;

Circle(double r) { radius = r; }

double Area() { double thisarea = radius*radius*Math.PI; return thisarea; }

}

A constructorUsed to initialize the circleLet’s see how in the next slide

Creating circles

Circle circle1 = new Circle(10);

Radius:10

circle1

Creating circles

Circle circle1 = new Circle(10);

radius:10

circle1

Circle circle2 = new Circle(15);

radius:15

circle2

Asking about area

Circle circle1 = new Circle(10);System.out.println(circle1.Area());

radius:10

circle1

Circle circle2 = new Circle(15);System.out.println(circle2.Area());

radius:15

circle2

Each circle will return it’s own area

What’s the difference?

• Circle circle1 = new Circle(10);

• Circle circle1; Creates a REFERENCELike having a telephone number for a friend.. a means to find them. Butthis one is a contact without a number.

What’s the difference?

• Circle circle1 = new Circle(10);

• Circle circle1;

Creates the objectand defines the reference to the objectIn this case, circle1 actually refers to a realCircle.

Only a reference.. No circle

Circle circle1;

circle1

A reference with a circle

Circle circle1 = new Circle(10);

Radius:10

circle1

Put it Together!public class Circle {

double radius;

Circle(double r) { radius = r; }

double Area() { double thisarea = radius*radius*Math.PI; return thisarea; } public static void main(String args[]) { Circle circle1 = new Circle(10); System.out.println(circle1.Area());

Circle circle2 = new Circle(15); System.out.println(circle2.Area()); }

}

314.1562..

706.8583..

Do I need new()?Can I define a variable and just

reference from the main?How about this?

… TRY IT…

public class Circle() {

double radius=5;

public static void main(String args[]) { System.out.println(radius); }

}

Error: non-static variable radius cannotbe referenced from a static context

You never “new()”ed one. No radius exists.

Only a reference.. No circle

Circle circle1;

circle1

Do I need new()?Here there is no Area() or radius defined.

Because NO new() has occurred!

public class Circle() {

double radius=5;

double Area() { double this area = radius*radius*Math.PI; }

public static void main(String args[]) { System.out.println(Area()); }

}

Error : nonstatic method can not be referenced from static method

This one creates the object.Then a radius and Area() exists

to use… no errors.

public class Circle {

double radius;

Circle(double r) { radius = r; }

double Area() { double thisarea = radius*radius*Math.PI; return thisarea; } public static void main(String args[]) { Circle circle1 = new Circle(10); System.out.println(circle1.Area());

Circle circle2 = new Circle(15); System.out.println(circle2.Area()); }

}

These are created when you new()

public class Circle {

double radius;

Circle(double r) { radius = r; }

double Area() { double thisarea = radius*radius*Math.PI; return thisarea; } public static void main(String args[]) { int i = 5; System.out.println(i);

Circle circle1 = new Circle(10); System.out.println(circle1.Area()); }

}

Why can I declare “i”like this in the main,but not radius in the previous example?

This is legal!

public class Circle {

double radius;

Circle(double r) { radius = r; }

double Area() { double thisarea = radius*radius*Math.PI; return thisarea; } public static void main(String args[]) { int i = 5; System.out.println(i);

Circle circle1 = new Circle(10); System.out.println(circle1.Area()); }

}

Because main is static.Static needs more explanation.

Conclusion:

“new” before using

static is coming!

top related