320 likes | 405 Views
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
E N D
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 intx; Use class to create an object Circlemycircle=newCircle();
Consider methods • Take a known process • Package it for reuse if ((a >= b) && (a>=c)) max = a else if ((b >= a) && (b>=c)) max = b else 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. class Testclass int i int i int k a( ) int k a( ) b( ) b( ) c( ) c( )
int i; int j; class TestClass{ int i; int j; void a() {…} void b() {…} void c() {…} } 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 its size • Move it • Ask it for its 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 its 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() Heading for the class class Circle { double radius; Circle(double r) { radius = r; } double Area() { double this area = radius*radius*Math.PI; } }
Circle() class Circle { double radius; Circle(double r) { radius = r; } double Area() { double thisarea = radius*radius*Math.PI; return thisarea; } } A property of each circle
Circle() class Circle { double radius; Circle(double r) { radius = r; } double Area() { double thisarea = radius*radius*Math.PI; return thisarea; } } A method named Area that will calculate the area 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 constructor Used to initialize the circle Let’s see how in the next slide
Creating circles Circle circle1 = new Circle(10); circle1 Radius:10
Creating circles Circle circle1 = new Circle(10); circle1 radius:10 Circle circle2 = new Circle(15); circle2 radius:15
Asking about area Circle circle1 = new Circle(10); System.out.println(circle1.Area()); circle1 radius:10 Each circle will return it’s own area Circle circle2 = new Circle(15); System.out.println(circle2.Area()); circle2 radius:15
What’s the difference? • Circle circle1 = new Circle(10); • Circle circle1; Creates a REFERENCE Like having a telephone number for a friend.. a means to find them. But this one is a contact without a number.
What’s the difference? • Circle circle1 = new Circle(10); • Circle circle1; Creates the object and defines the reference to the object In this case, circle1 actually refers to a real Circle.
Only a reference.. No circle Circle circle1; circle1
A reference with a circle Circle circle1 = new Circle(10); circle1 Radius:10
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()); } } Put it Together! 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 cannot be referenced from a static context You never “new()”ed one. No radius exists.
Only a reference.. No circle Circle circle1; circle1
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()); } } Do I need new()?Here there is no Area() or radius defined.Because NO new() has occurred! Error : nonstatic method can not be referenced from static method
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()); } } This one creates the object.Then a radius and Area() exists to use… no errors. 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.