AP COMPUTER SCIENCE A CLASSES AND OBJECTS (1) Sep 11 2017 Week 4 http://apcs.cold.rocks 1
One More Class public static int a=1; System.out.println(a); 1 public static int a=2; http://apcs.cold.rocks 2
One More Class public static int a=1; System.out.println(ClassTwo.a); 2 public static int a=2; http://apcs.cold.rocks 3
One More Class public static int a=1; ClassTwo.a = 3 System.out.println(ClassTwo.a); 3 public static int a=2; http://apcs.cold.rocks 4
One More Class printhello(); public static void printhello() { System.out.println( Hello Class One! ); Hello Class One! public static void printhello() { System.out.println( Hello Class Two! ); http://apcs.cold.rocks 5
One More Class ClassTwo.printHello(); public static void printhello() { System.out.println( Hello Class One! ); Hello Class Two! public static void printhello() { System.out.println( Hello Class Two! ); http://apcs.cold.rocks 6
One More Class We can make more than one class Fields, methods are NOT shared between classes. But, we can access other classes with ClassName. (dot) Only public elements can be accessed by other classes http://apcs.cold.rocks 7
Public vs Private private static int a=1; System.out.println(a); 1 private static int a=2; http://apcs.cold.rocks 8
Public vs Private private static int a=1; System.out.println(ClassTwo.a); ERROR (variable NOT VISIBLE) private static int a=2; http://apcs.cold.rocks 9
Public vs Private ClassTwo.printHello(); private static void printhello() { System.out.println( Hello Class One! ); Hello Class One! private static void printhello() { System.out.println( Hello Class Two! ); http://apcs.cold.rocks 10
Public vs Private ClassTwo.printHello(); private static void printhello() { System.out.println( Hello Class One! ); ERROR (variable NOT VISIBLE) private static void printhello() { System.out.println( Hello Class Two! ); http://apcs.cold.rocks 11
Public vs Private Only public elements can be accessed by other classes In AP Computer Science A All fields are set to private All methods are set to public Then, how do we deal with fields from other classes? ACCESSORS (getters) MUTATORS (setters) http://apcs.cold.rocks 12
Accessors System.out.println(ClassTwo.getSomethingPrivate()); 1 private static int somethingprivate = 1; public static int getsomethingprivate() { return somethingprivate; http://apcs.cold.rocks 13
Mutators ClassTwo.setSomethingPrivate(200); System.out.println(ClassTwo.getSomethingPrivate()); 200 private static int somethingprivate = 1; public static int getsomethingprivate() { return somethingprivate; public static void setsomethingprivate(int sp) { somethingprivate = sp; http://apcs.cold.rocks 14
Accessors and Mutators Accessors access and mutators mutate. (of course ) Accessors should return the value of a private field Return type MUST match the type of the field Some special accessors may not return the exact value. In this case, the types do not have to match Accessors look like : public int getsomething() { return something; http://apcs.cold.rocks 15
Accessors and Mutators Mutators should set the value of field(s) as we want There should be parameter(s), which will be the value to be set Type must match Like accessors, some mutators may not take parameters or take different type of parameter. Mutators look like : public void setsomething(type s) { something = s; http://apcs.cold.rocks 16
Accessors and Mutators System.out.println(ClassTwo.isValuePositive()); ClassTwo.setValueZero(); System.out.println(ClassTw0.isValuePositive()); true false private int value = 1; public static boolean isvaluepositive() { return value>0; public static void setvaluezero() { value=0; http://apcs.cold.rocks 17
Class as a Type ClassTwo ct1; ClassTwo ct2; NO ERROR! private static int value = 1; public static int getvalue() { return somethingprivate; public static void setvalue(int v) { value=v; http://apcs.cold.rocks 18
Classes and Objects Class also was type The value that goes inside the class is called object Making new object : using keyword new ClassTwo ct = new ClassTwo(); http://apcs.cold.rocks 19
Classes and Objects ClassTwo ct1 = new ClassTwo(); ClassTwo ct2 = new ClassTwo(); System.out.println(ct1.getValue()); System.out.println(ct2.getValue()); 1 1 private static int value = 1; public static int getvalue() { return somethingprivate; public static void setvalue(int v) { value=v; http://apcs.cold.rocks 20
Static keyword ClassTwo ct1 = new ClassTwo(); ClassTwo ct2 = new ClassTwo(); System.out.println(ct1.getValue()); ct1.setvalue(2); System.out.println(ct2.getValue()); 1 1 private int value = 1; public int getvalue() { return somethingprivate; public void setvalue(int v) { value=v; http://apcs.cold.rocks 21
Static Keyword static elements (fields, methods) are shared across all objects and class itself When calling class name, all elements related to it should be static Other elements belong to each object Class is a blueprint, or a prototype of objects Objects are, the real object. http://apcs.cold.rocks 22
Classes and Objects Public Class SomeClass { private int intvalue; private static double doublevalue; has value 3.14 public getintvalue();... SomeClass sc1 intvalue = 1; doublevalue = 3.14; public getintvalue(); returns 1... SomeClass sc2 SomeClass SomeClass sc2 SomeClass sc2 sc2 intvalue = 2; intvalue doublevalue = 3.14; intvalue = 2; doublevalue = 3.14; intvalue = 2; = 2; doublevalue doublevalue = 3.14; = 3.14; public getintvalue(); returns 2 public getintvalue(); returns 2... public getintvalue(); returns 2... public getintvalue(); returns 2...... http://apcs.cold.rocks 23
Class as a Type Rectangle r1 = new Rectangle(); Rectangle r2 = new Rectangle(); r1.setheightandwidth(3,5); r2.setheightandwidth(5,7); System.out.println(r1.getArea()); System.out.println(r2.getArea()); public class Rectangle { 15 35 private int height; private int width; public int getarea() { return height*width; public void setheightandwidth(int h, int w) { height=h; width=w; http://apcs.cold.rocks 24
Your turn Design a class of CSIA student http://apcs.cold.rocks 25