Lec 5

download Lec 5

of 25

  • date post

    18-Jan-2015
  • Category

    Documents

  • view

    61
  • download

    4

Embed Size (px)

description

 

Transcript of Lec 5

  • 1. IS F213 Object OrientedProgrammingBITS Pilani, Pilani CampusBITS PilaniPilani CampusDr. Yashvardhan SharmaCSIS Dept., BITS-Pilani

2. BITS Pilani, Pilani CampusDEFINING A CLASSSYNTAX [/] [static>] class [extends ] [implements .]{Member Variable declarations /Instance field declarations;Member Method Definitions;}ClassBody :1. package private or public for outer classes2. private , public , protected, package private for inner classes : class definition is final and can not be extended by sub classes.final class can not have sub classes : static keyword can only be applied for inner classes.Outer classes can not be static. : abstract keyword specifies that class is abstract. 3. BITS Pilani, Pilani CampusInstance Variable Declaration Syntax [] [] variable name = [value];where can be private, public, protected or by default friendly can be any primitive type or class type or interface type;Method Declaration Syntax [][ ][] [abstract] methodname( argument list ) [throws exceptiontype1..exceptiontype n]{.. Method Body}Where can be private, public, protected or by default friendly can be any primitive type or class type or interface type;Note :Default Access is always friendly. i.e. inside the package 4. BITS Pilani, Pilani CampusVisibility of fieldsAccessModifiersAccessLocationpublic protected Friendly[packageprivate]privateSame Class Yes Yes Yes Yessub classes inYes Yes Yes Nosame packageOther Classes inSame packageYes Yes Yes NoSubclasses inother packagesYes Yes No NoNon-subclassesin other packagesYes No No No 5. BITS Pilani, Pilani CampusClass Examples1.class xyz{ .. } // class is defined with friendly access2.public class abc{ ...} // class is defined with public access.Note :public classes should be written in the same file as name of class.public class abc should be written in file named abc.java.In a single source file only one class can be named with public access.3. final class xyz{ }final class means you can not create sub classes of the final class.class abc extends xyz{ .} is wrong. 6. BITS Pilani, Pilani CampusClass Examples4.abstract class xyz{ .. } // class is defined with friendly access(i) abstract classes needs to be subclassed.(ii) You can not create instances of abstract classes.xyz x1 = new xyz(); -------- Wrong Statement.abstract class abc{int a =10;float b = 20;abstract void show() ; // abstract method} 7. BITS Pilani, Pilani CampusExercise 1Define a class which encapsulates a point in 2 dimensional space. It has following membersX & Y coordinate values.It supports following operations(i) Individual operation for setting the values for Xand Y coordinates(ii) Computing the distance between two points(iii) Checking two points for equality [ Two points areequal if they have same values for X and Ycoordinates](iv) Method for translating the values for X and Y 8. BITS Pilani, Pilani CampusUML Representation for Class PointPointx: doubley: doubleAttributes+getX() : double+getY() : double+setX(x: double) : void+setY(y: double) : void+equals(other : Point) : boolean+computeDistance(other : Point) : double+show() : voidclass Point{double x; // x coordinatedouble y; // y coordinatepublic double getX() { return x; }public double getY() { return y; }public void setX(double x) { this.x = x; }public void setY(double y) { this.y = y; }public boolean equals(Point other){return this.x == other. x &&this.y == other.y ;}public double computeDistance(Point other){double a = (this.y other.y) * (this.y other.y);double b = this.x other.x) * (this.x other.x);return Math.sqrt(a+b);}public void show(){S.O.P( x= +x);S.O.P( y= +y);}} End of Point ClassOperations 9. BITS Pilani, Pilani CampusClass PointTestclass PointTest{public static void main(String args[ ]){Point P1 = new Point();P1.show();Point P2 = P1;P2.show();System.out.println(P1.equals(P2));System.out.println(P1.computeDistance(P2));}// End of main() Method}// End of PointTest 10. BITS Pilani, Pilani CampusHow to Create an Instance of a class(Creating Objects)Objects are always created/constructed/instantiated dynamicallyusing new opeartor.Syntax : = new ConstructorMethod();Constructor Method Method having same name as name of classExamples :BOX b1 = new BOX(); // Valid iff constructor is unparametrizedBOX b2 = new BOX(10,6,8); // Valid iff constructor is parametrized 11. BITS Pilani, Pilani CampusObject Creation ExamplesBOX b1 = new BOX();BOX b2 = b1;b1b2b2 is just another reference for the same objectBOXl b hONLY ONE OBJECT IS CREATED IN ABOVE STATEMENTS 12. BITS Pilani, Pilani CampusHow to Access Class members1. Private members of a class are only visible inside class body.2. Protected members have package scope and are accessible tosubclasses in other packages as well.3. private protected members are only accessible to subclasses in samepackage or other package. [Does not have Package Scope]4. public fields/methods are accessible from every where.5. Every access to public or friendly access fields of class is only throughobjects of that class. (Except static fields which are accessible throughclass name)Syntax.. ;.; 13. BITS Pilani, Pilani Campusclass Rectangle{int length;int width;void setData(int l,int w){length = l;width = w;}void printSides(){System.out.println("Length is:"+length);System.out.println("Width is:"+width);}int area() { return length * width ;}} // End of classclass RectangleTest{public static void main(String args[]){Rectangle r1 = new Rectangle();r1.setData(10,8);r1.printSides();System.out.println("Area ="+r1.area());Rectangle r2 = new Rectangle();r1.setData(100,80);r1.printSides();System.out.println("Area ="+r2.area());}} // End of class/* OutputE:New FolderJava>java RectangleTestLength is:10Width is:8Area =80Length is:100Width is:80Area =0*/Example 14. BITS Pilani, Pilani Campusclass Rectangle{int length;int width;void setData(int l,int w){length = l;width = w;}void printSides(){System.out.println("Length is:"+length);System.out.println("Width is:"+width);}int area() { return length * width ;}}class RectangleTest{public static void main(String args[]){Rectangle r1 = new Rectangle();r1.printSides();r1.setData(10,8);System.out.println("Area ="+r1.area());Rectangle r2 = new Rectangle();r2.printSides();r1.setData(100,80);System.out.println("Area ="+r2.area());}}/*E:New FolderJava>java RectangleTestLength is:0Width is:0Area =80Length is:0Width is:0Area =0*/ 15. BITS Pilani, Pilani CampusConstructors1. If a class has any method with the same name as its class then it isconstructor method for that class2. Used to initialize the objects upon creation3. In the absence of constructor method we have to specifically add amethod for object initialization4. If no constructor is defined for the class then a default constructor isprovided by Java run time environment (Without Parameters).5. Constructor method has no return type not even void.6. Code written inside constructor method is automatically executed forevery object creation of that class. 16. BITS Pilani, Pilani CampusTypes of Constructors1. Unparametrized Constructor2. Parametrized Constructor3. Overloaded Constructor 17. BITS Pilani, Pilani CampusUnparametrized Constructor If a class does not supply any constructor thenJRE supplies a default constructor with noparameters Class can have its own constructor of anytypes. If a class supplies its own constructor thendefault constructor becomes hidden. 18. BITS Pilani, Pilani CampusClass With No Constructorclass XYZ{double a,b;void setData(double x, double y){a = x;b = y;}void print(){System.out.println("a="+a);System.out.println("b="+b);}}class XYZTEST{public static void main(String args[]){XYZ xyz = new XYZ();xyz.print();}}D:Java1>java XYZTESTa=0.0b=0.0 19. BITS Pilani, Pilani CampusClass With Constructorclass XYZ{double a,b;XYZ(){S.O.P(Object XYZ created);}}class XYZTEST{public static void main(String args[]){XYZ xyz = new XYZ();}}D:Java1>java XYZTESTObject XYZ createdClass with Unparametrized Constructor 20. BITS Pilani, Pilani CampusClass with Parametrized Constructorclass XYZ{double a,b;XYZ(double a, double b){this.a = a;this.b = b;print();}void print(){System.out.println("a="+a);System.out.println("b="+b);}}class XYZTEST{public static void main(String args[]){// XYZ xyz = new XYZ(); WrongXYZ xyz = new XYZ(10.8,6.5);xyz.print();}}D:Java1>java XYZTESTa=10.8b=6.5a=10.8b=6.5 21. BITS Pilani, Pilani CampusClass with Overloaded Constructorclass XYZ{double a,b;XYZ(){a = 10;b = 8;print();}XYZ(double a, double b){this.a = a;this.b = b;print();}void print(){System.out.println("a="+a);System.out.println("b="+b);}}class XYZTEST{public static void main(String args[]){XYZ x1 = new XYZ();XYZ x2 = new XYZ(10.8,6.5);x1.print();x2.print();}}D:Java1>java XYZTESTa=10.0b=8.0a=10.8b=6.5a=10.0b=8.0a=10.8b=6.5 22. Constructor Examples(Parametrized Constructor) class Triangle { double side1,side2,side3; Triangle(double side1,double side2,double side3) { this.side1 = side1; this.side2 = side2; this.side3 = side3; System.out.println ("Triangle Created with sides :"+side1 +" " +side2+ " "+side3); } }BITS Pilani, Pilani Campusclass TriangleTest{public static void main(String args[]){// Triangle t1 = new Triangle(); This Line will give compile time errorTriangle t1 = new Triangle(10.56,4.56,3.45);Triangle t2 = new Triangle(10,4,9);Triangle t3 = new Triangle(1,4,3);}} 23. BITS Pilani, Pilani Campus/* Out PutE:New FolderJava>javac TriangleTest.javaE:New FolderJava>java TriangleTestTriangle Created with sides :10.56 4.56 3.45Triangle Created with sides :10.0 4.0 9.0Triangle Created with sides :1.0 4.0 3.0*/ 24. BITS Pilani, Pilani CampusOverloaded Constructors class Triangle { double side1,side2,side3; Triangle(double side) { side1= side2 = side3 = side; System.out.println("Equilateral Triangle Created with sides :"+side); } Triangle(double side1,double side2) { this.side1 = side1; this.side2 = this.side3 = side2; System.out.println("Isoceles Triangle Crea