Download presentation
Presentation is loading. Please wait.
Published byAlbert Jones Modified over 9 years ago
1
CSE 341, S. Tanimoto Java brief review - 1 Java Brief Review Java’s strengths Object-oriented terminology Inheritance Interfaces An example with inheritance and interfaces: class TwoDimFig
2
CSE 341, S. Tanimoto Java brief review - 2 Java’s Strengths Supports the objected-oriented paradigm Permits client-side execution of programs (Applets) on web pages. Provides portability of applications, including a standard graphics platform Supports networking including communication, parallelism, security. Provides a large standard library. Syntax close to that of C++.
3
CSE 341, S. Tanimoto Java brief review - 3 Object-Oriented Programming Terms object: encapsulation of data and code. class: a formal category of objects. instance: an object, in the context of a particular class. message: a request to an object or class for data or service. sender: the object or class from which the message comes. receiver: the object or class to which the message is sent. method: a function within a class that responds to a message.
4
CSE 341, S. Tanimoto Java brief review - 4 Inheritance One class can serve as a base class for defining a new, more restricted class called a subclass. Any instance of a (derived) class inherits the data members and method members of its parent class. A subclass typically provides additional member variables and methods. A subclass may override a member inherited from its parent by redefining it. An abstract class doesn’t provide full implementations of all of its methods and is typically used as a means to provide a uniform protocol to two or more separate subclasses. The visibility of names within and across inheritance hierarchies is controlled by the keywords public, private, protected. The default access control is “package” which itself defaults to accessibility within compilation units.
5
CSE 341, S. Tanimoto Java brief review - 5 Interfaces Since Java does not permit multiple inheritance with subclassing, (and therefore might have made it difficult for one class to integrate the functionality of several others) it compensates by providing formal interfaces. An interface consists of a name and a protocol (list of functions and their formal parameter types). A class may subclass at most one superclass but may implement any number of interfaces. A class that implements an interface must provide an implementation for each function appearing in the interface. Interfaces do not provide any code and are used to enforce (at compile time) calling conventions within software applications. Interfaces can be extended.
6
CSE 341, S. Tanimoto Java brief review - 6 An Overview of the TwoDimFig example TwoDimFig is an abstract class Circle extends TwoDimFig Polygon extends TwoDimFig Triangle extends Polygon TwoDimFig implements SizeFunctions, Paintable TestApplet instantiates Circle, Polygon, and Triangle
7
CSE 341, S. Tanimoto Java brief review - 7 class TwoDimFig import java.awt.*; public abstract class TwoDimFig implements SizeFunctions, Paintable { protected Color c; public abstract String describe(); public abstract double area(); public abstract double volume(); public abstract int nVertices(); public abstract int nFaces(); public void setColor(Color c) { this.c = c; } public abstract void paint(Graphics g); }
8
CSE 341, S. Tanimoto Java brief review - 8 interface SizeFunctions interface SizeFunctions { public double area(); public double volume(); public int nVertices(); public int nFaces(); }
9
CSE 341, S. Tanimoto Java brief review - 9 interface Paintable import java.awt.*; interface Paintable { public void setColor(Color c); public void paint(Graphics g); }
10
CSE 341, S. Tanimoto Java brief review - 10 class Circle import java.awt.*; public class Circle extends TwoDimFig { protected double r; Circle(double r) { this.r = r; } public String describe() { return "a circle with radius " + r; } public int nVertices() { return 0; } public int nFaces() { return 1; } public double area() { return r * r * 3.14159; } public double volume() { return 0.0; } public void paint(Graphics g) { g.setColor(c); g.drawOval(0, 0, (int)r, (int)r); }
11
CSE 341, S. Tanimoto Java brief review - 11 class Polygon import java.awt.*; import java.util.*; public class Polygon extends TwoDimFig { protected Vector vertices; Polygon() {} Polygon(int n) { vertices = new Vector(); int R = 100; double ANGLE = 2.0 * 3.14159 / n; for(int i = 0; i < n; i++) { Point p = new Point((int)(R + R*(Math.cos(i * ANGLE))), (int)(R + R*(Math.sin(i * ANGLE)))); vertices.addElement(p); } public String describe() { return "a polygon with " + vertices.size() + " vertices"; }
12
CSE 341, S. Tanimoto Java brief review - 12 class Polygon (slide 2 of 3) public double area() { if (vertices.size() < 3) return 0.0; Enumeration enum = vertices.elements(); Point firstVertex = (Point) enum.nextElement(); Point lastVertex = firstVertex; double total = 0.0; while(enum.hasMoreElements()) { Point thisVertex = (Point) enum.nextElement(); total += areaUnderSegment(lastVertex, thisVertex); lastVertex = thisVertex; } total += areaUnderSegment(lastVertex, firstVertex); return total; } private double areaUnderSegment(Point p1, Point p2) { return (p1.x - p2.x) * (p1.y + p2.y) / 2; }
13
CSE 341, S. Tanimoto Java brief review - 13 class Polygon (slide 3 of 3) public double volume() { return 0.0; } public int nVertices() { return vertices.size(); } public int nFaces() { return 1; } public void paint(Graphics g) { g.setColor(c); Enumeration enum = vertices.elements(); Point firstVertex = (Point) enum.nextElement(); Point lastVertex = firstVertex; while(enum.hasMoreElements()) { Point thisVertex = (Point) enum.nextElement(); g.drawLine(lastVertex.x, lastVertex.y, thisVertex.x, thisVertex.y); lastVertex = thisVertex; } g.drawLine(lastVertex.x, lastVertex.y, firstVertex.x, firstVertex.y); }
14
CSE 341, S. Tanimoto Java brief review - 14 class Triangle (1 of 2) import java.awt.*; import java.util.*; public class Triangle extends Polygon { Triangle(Point p1, Point p2, Point p3) { vertices = new Vector(); vertices.addElement(p1); vertices.addElement(p2); vertices.addElement(p3); } public String describe() { if (isIsosceles()) return "an isosceles triangle"; else return "a triangle"; }
15
CSE 341, S. Tanimoto Java brief review - 15 class Triangle (2 of 2) public boolean isIsosceles() { Point p1 = (Point) vertices.elementAt(0); Point p2 = (Point) vertices.elementAt(1); Point p3 = (Point) vertices.elementAt(2); int d12 = dist(p1,p2); int d23 = dist(p2,p3); int d31 = dist(p3,p1); return ((d12 == d23) || (d23 == d31) || (d12 == d31)); } private int dist(Point p1, Point p2) { return (int)((double) Math.sqrt((double)(((p1.x - p2.x)*(p1.x - p2.x)) + ((p1.y - p2.y)*(p1.y - p2.y)))) ); }
16
CSE 341, S. Tanimoto Java brief review - 16 A Pre-Quiz Challenge What shows up on the applet panel? What shows up in the Java console? How should the TestApplet code be changed in order to have the triangle described as a polygon with 3 sides? What would a class ThreeDimFig look like that takes advantage of the same interfaces used by TwoDimFig ? What should it be a subclass of? Should it explicitly implement any interfaces?
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.