Your SlideShare is downloading. ×
Lec 9 05_sept [compatibility mode]
Lec 9 05_sept [compatibility mode]
Lec 9 05_sept [compatibility mode]
Lec 9 05_sept [compatibility mode]
Lec 9 05_sept [compatibility mode]
Lec 9 05_sept [compatibility mode]
Lec 9 05_sept [compatibility mode]
Lec 9 05_sept [compatibility mode]
Lec 9 05_sept [compatibility mode]
Lec 9 05_sept [compatibility mode]
Lec 9 05_sept [compatibility mode]
Lec 9 05_sept [compatibility mode]
Lec 9 05_sept [compatibility mode]
Lec 9 05_sept [compatibility mode]
Lec 9 05_sept [compatibility mode]
Lec 9 05_sept [compatibility mode]
Lec 9 05_sept [compatibility mode]
Lec 9 05_sept [compatibility mode]
Lec 9 05_sept [compatibility mode]
Lec 9 05_sept [compatibility mode]
Lec 9 05_sept [compatibility mode]
Lec 9 05_sept [compatibility mode]
Lec 9 05_sept [compatibility mode]
Lec 9 05_sept [compatibility mode]
Lec 9 05_sept [compatibility mode]
Lec 9 05_sept [compatibility mode]
Lec 9 05_sept [compatibility mode]
Lec 9 05_sept [compatibility mode]
Lec 9 05_sept [compatibility mode]
Lec 9 05_sept [compatibility mode]
Lec 9 05_sept [compatibility mode]
Lec 9 05_sept [compatibility mode]
Lec 9 05_sept [compatibility mode]
Lec 9 05_sept [compatibility mode]
Lec 9 05_sept [compatibility mode]
Lec 9 05_sept [compatibility mode]
Lec 9 05_sept [compatibility mode]
Lec 9 05_sept [compatibility mode]
Lec 9 05_sept [compatibility mode]
Lec 9 05_sept [compatibility mode]
Lec 9 05_sept [compatibility mode]
Lec 9 05_sept [compatibility mode]
Lec 9 05_sept [compatibility mode]
Lec 9 05_sept [compatibility mode]
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Lec 9 05_sept [compatibility mode]

84

Published on

Published in: Education, Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
84
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Math and String Classes Lecture 9 Naveen Kumar
  • 2. Constructing Objects  new Rectangle(5, 10, 20, 30) Detail: – The new operator makes a Rectangle object – It uses the parameters (5, 10, 20, and 30) to initialize the data of the object – returns the object  Usually the output of the new operator is stored in a variable Rectangle box = new Rectangle(5, 10, 20, 30);
  • 3. Constructing Objects Default constructor  new Rectangle() // constructs a rectangle with its top-left corner // at the origin (0, 0), width 0, and height 0
  • 4. Example import java.awt.Rectangle; public class Move { public static void main(String[] args) { Rectangle box = new Rectangle(5, 10, 20, 30); // Move the rectangle box.translate(15, 25); // Print information about the moved rectangle System.out.println("After moving, the top-left corner is:"); System.out.println(box.getX()); System.out.println(box.getY()); } }
  • 5. Random class  Random r = new Random();  int i = r.nextInt(int n) Returns random int ≥ 0 and < n  int i = r.nextInt() Returns random int (full range)  long i = r.nextLong() Returns random long (full range)  float f = r.nextFloat() Returns random float ≥0.0 and <1.0  double d = r.nextDouble() Returns random double ≥ 0.0 and < 1.0  boolean b = r.nextBoolean() Returns random double (true ,false)  double x; x = Math.random(); // assigns random number to x 5 import java.util.Random;
  • 6. Object References  Describe the location of objects  The new operator returns a reference to a new object Rectangle box = new Rectangle();  Multiple object variables can refer to the same object Rectangle box = new Rectangle(5, 10, 20, 30); Rectangle box2 = box; box2.translate(15, 25);  Primitive type variables ≠ object variables
  • 7. Cast  (typeName) expression Example:  (int) (balance * 100) Purpose:  To convert an expression to a different type 7
  • 8. Constants: final  A final variable is a constant  Once its value has been set, it cannot be changed  Named constants make programs easier to read and maintain  Convention: use all-uppercase names for constants final double QUARTER_VALUE = 0.25; final double DIME_VALUE = 0.1; 8
  • 9. Constants: static final  static is used with class members  If constant values are needed in several methods, declare them together and tag them as static and final  Give static final constants public access to enable other classes to use them public class Math { . . . public static final double E = 2.7182818284590452354; public static final double PI = 3.14159265358979323846; } double circumference = Math.PI * diameter; (call without object) 9
  • 10. Syntax : Constant Definition  In a method: final typeName variableName = expression ;  In a class: accessSpecifier static final typeName variableName = expression; Example:  final double NICKEL_VALUE = 0.05;  public static final double LITERS_PER_GALLON = 3.785; Purpose:  To define a constant in a method or a class 10
  • 11. Increment, and Decrement  items++ is the same as items = items + 1  items-- subtracts 1 from items  ++a;  --a;  a++;  a--; 11
  • 12. Arithmetic Operations  / is the division operator  If both arguments are integers, the result is an integer. The remainder is discarded – 7.0 / 4 yields 1.75 – 7 / 4 yields 1  Get the remainder with % (pronounced "modulo") 7 % 4 is 312
  • 13. The Math class  Math class: contains methods like sqrt and pow  To compute xn, you write Math.pow(x, n)  However, to compute x2 it is significantly more efficient simply to compute x * x  To take the square root of a number x, use the Math.sqrt; for example, Math.sqrt(x) 13 Java.lang.Math
  • 14. Mathematical Methods in Java 14 Math.sqrt(x) square root Math.pow(x, y) power xy Math.exp(x) ex Math.log(x) natural log Math.sin(x), Math.cos(x), Math.tan(x) sine, cosine, tangent (x in radian) Math.round(x) closest integer to x Math.min(x, y), Math.max(x, y) minimum, maximum
  • 15. java.lang.Math methods Constants: E, PI  sin(_), cos(_), abs(_), tan(_),  ceil(_), floor(_), log(_),  max(_,_), min(_,_), pow(_,_), sqrt(_),  round(_), random(),  toDegrees(_), toRadians(_) 15
  • 16. Self Check  What is the value of 1729 / 100? and 1729 % 100?  What does the following statement compute ? double average = 20 + 25 + 30 / 3;  What is the value of Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)) in mathematical notation? Answers  17 and 29  Only 30 is divided by 3. To get the correct result, use parentheses. Moreover, if all three are integers, you must divide by 3.0 to avoid integer division: (20 + 25 + 30) / 3.0 16
  • 17. Calling Static Methods  A static method does not operate on an object double x = 4; double root = x.sqrt(); // Error  Static methods are defined inside classes  Naming convention: Classes start with an uppercase letter; objects start with a lowercase letter Math System.out 17
  • 18. Static Method Call  ClassName. methodName(parameters) Example:  Math.sqrt(4) Purpose:  To invoke a static method (a method that does not operate on an object) and supply its parameters18
  • 19. Self Check  Why can't you call x.pow(y) to compute xy ?  Is the call System.out.println(4) a static method call? Answers  x is a number, not an object, and you cannot invoke methods on numbers  No–the println method is called on the object System.out19
  • 20. Strings  A string is a sequence of characters  Strings are objects of the String class  String constants: "Hello, World!"  String variables: String message = "Hello, World!";  String length: int n = message.length();  Empty string: "" 20
  • 21. Concatenation  Use the + operator: String name = "Dave"; String message = "Hello, " + name; // message is "Hello, Dave"  If one of the arguments of the + operator is a string, the other is converted to a string String a = "Agent"; int n = 7; String bond = a + n; // bond is Agent7 21
  • 22. Converting between Strings and Numbers  Convert to number: int n = Integer.parseInt(str); double x = Double.parseDouble(x); int num = Integer.parseInt("1234");  Convert to string: String str = "" + n; str = Integer.toString(n); String str = String.valueOf(num);22
  • 23. Substrings  String greeting = "Hello, World!"; String sub = greeting.substring(0, 5); // sub is "Hello"  Supply start and end positions, end is not included  First position is at 0 23
  • 24. Self Check  Assuming the String variable s holds the value "Agent", what is the effect of the assignment s = s + s.length() ?  Assuming the String variable river holds the value "Mississippi", what is the value of river.substring(1, 2)? and river.substring(2, river.length() - 3)? Answers  s is set to the string Agent5  The strings "i" and  "ssissi" 24
  • 25. Frame Windows  The JFrame class JFrame frame = new JFrame();  frame.setSize(300, 400); frame.setTitle("An Empty Frame"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true);  import javax.swing.*; 25
  • 26. Frame program import javax.swing.*; public class frame { public static void main(String[] args) { JFrame frame = new JFrame(); final int FRAME_WIDTH = 300; final int FRAME_HEIGHT = 400; frame.setSize(FRAME_WIDTH, FRAME_HEIGHT); frame.setTitle("An Empty Frame"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } } 26
  • 27. Self Check  How do you display a square frame with a title bar that reads "Hello, World!"?  How can a program display two frames at once? Answers  Modify the EmptyFrameViewer program as follows: frame.setSize(300, 300); frame.setTitle("Hello, World!");  Construct two JFrame objects, set each of their sizes, and call setVisible(true) on each of them 27
  • 28. Drawing Shapes  paintComponent: called whenever the component needs to be repainted: public class frame1 extends JComponent { public void paintComponent(Graphics g) { // Recover Graphics2D Graphics2D g2 = (Graphics2D) g; . . . } } 28
  • 29. Drawing Shapes  Graphics class lets you manipulate the graphics state (such as current color)  Graphics2D class has methods to draw shape objects  Use a cast to recover the Graphics2D object from the Graphics parameter Rectangle box = new Rectangle(5, 10, 20, 30); g2.draw(box);  java.awt package29
  • 30. Rectangle Drawing Program Classes  frame1: its paintComponent method produces the drawing  frame: its main method constructs a frame and a frame1, adds the component to the frame, and makes the frame visible – Construct a frame – Construct an object of your component class: frame1 component = new frame1(); – Add the component to the frame frame.add(component); However, if you use an older version of Java (before Version 5), you must make a slightly more complicated call: frame.getContentPane().add(component); – Make the frame visible 30
  • 31. An example (produce a drawing with two boxes) import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Rectangle; import javax.swing.JPanel; import javax.swing.Jcomponent; /** A component that draws two rectangles. */ public class frame1 extends Jcomponent { public void paintComponent(Graphics g) { Graphics2D g2 = (Graphics2D) g; // Recover Graphics2D Rectangle box = new Rectangle(5, 10, 20, 30); // Construct a rectangle and g2.draw(box); // draw it box.translate(15, 25); // Move rectangle 15 units to the right and 25 units down g2.draw(box); // Draw moved rectangle } } 31
  • 32. Create frame and add drawing import javax.swing.JFrame; public class frame { public static void main(String[] args) { JFrame frame = new JFrame(); final int FRAME_WIDTH = 300; final int FRAME_HEIGHT = 400; frame.setSize(FRAME_WIDTH,FRAME_HEIGHT); frame.setTitle("Two rectangles"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame1 component = new frame1(); frame.add(component); frame.setVisible(true); } }32
  • 33. Self Check  How do you modify the program to draw two squares?  How do you modify the program to draw one rectangle and one square?  What happens if you call g.draw(box) instead of g2.draw(box)? Answers  Rectangle box = new Rectangle(5, 10, 20, 20);  Replace the call to box.translate(15, 25) with box = new Rectangle(20, 35, 20, 20);  The compiler complains that g doesn't have a draw method 33
  • 34. Applets  This is almost the same outline as for a component, with two minor differences: – You extend JApplet, not JComponent – You place the drawing code inside the paint method, not inside paintComponent  To run an applet, you need an HTML file with the applet tag  You view applets with the appletviewer 34
  • 35. JApplet /* <APPLET CODE="frameapplet.class" WIDTH=350 HEIGHT=200> </APPLET> */ import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Rectangle; import javax.swing.JApplet; /** An applet that draws two rectangles. */ public class frameapplet extends JApplet { public void paint(Graphics g) { // Prepare for extended graphics Graphics2D g2 = (Graphics2D) g; // Construct a rectangle and draw it Rectangle box = new Rectangle(5, 10, 20, 30); g2.draw(box); // Move rectangle 15 units to the right and 25 units down box.translate(15, 25); // Draw moved rectangle g2.draw(box); } } 35
  • 36. Graphical Shapes  Rectangle, Ellipse2D.Double, and Line2D.Double describe graphical shapes  We won't use the .Float classes  These classes are inner classes–doesn't matter to us except for the import statement: import java.awt.geom.Ellipse2D; // no .Double  Must construct and draw the shape Ellipse2D.Double ellipse = new Ellipse2D.Double(x, y, width, height); g2.draw(ellipse); 36
  • 37. Drawing Lines To draw a line:  Line2D.Double segment = new Line2D.Double(x1, y1, x2, y2); or  Point2D.Double from = new Point2D.Double(x1, y1); Point2D.Double to = new Point2D.Double(x2, y2); Line2D.Double segment = new Line2D.Double(from, to); 37
  • 38. Self Check  Give instructions to draw a circle with center (100,100) and radius 25  Give instructions to draw a letter "V" by drawing two line segments  Give instructions to draw a string consisting of the letter "V" Answers  g2.draw(new Ellipse2D.Double(75, 75, 50, 50);  Line2D.Double segment1 = new Line2D.Double(0, 0, 10, 30); g2.draw(segment1); Line2D.Double segment2 = new Line2D.Double(10, 30, 20, 0); g2.draw(segment2);  g2.drawString("V", 0, 30); 38 Upper-left corner, Width , Height
  • 39. Colors  Standard colors Color.BLUE, Color.RED, Color.PINK etc.  Specify red, green, blue between 0.0F and 1.0F  Color magenta = new Color(1.0F, 0.0F, 1.0F); // F = float Set color in graphics context  g2.setColor(magenta); Color is used when drawing and filling shapes  g2.fill(rectangle); // filled with current color 39
  • 40. Self Check  What are the RGB color values of Color.BLUE?  How do you draw a yellow square on a red background? Answers  0.0F, 0.0F, and 0.1F  First fill a big red square, then fill a small yellow square inside: g2.setColor(Color.RED); g2.fill(new Rectangle(0, 0, 200, 200)); g2.setColor(Color.YELLOW); g2.fill(new Rectangle(50, 50, 100, 100)); Note: Use import java.awt.Color; 40
  • 41. Drawing Graphical Shapes  Rectangle leftRectangle = new Rectangle(100, 100, 30, 60); Rectangle rightRectangle = new Rectangle(160, 100, 30, 60); Line2D.Double topLine = new Line2D.Double(130, 100, 160, 100); Line2D.Double bottomLine = new Line2D.Double(130, 160, 160, 160); 41
  • 42. Reading Text Input  A graphical application can obtain input by displaying a JOptionPane  The showInputDialog method displays a prompt and waits for user input  The showInputDialog method returns the string that the user typed String input = JOptionPane.showInputDialog("Enter x"); double x = Double.parseDouble(input); 42
  • 43. An Example import java.awt.Color; import javax.swing.Jframe; import javax.swing.JOptionPane; import javax.swing.JComponent; public class ColorViewer { public static void main(String[] args) { JFrame frame = new JFrame(); final int FRAME_WIDTH = 300; final int FRAME_HEIGHT = 400; frame.setSize(FRAME_WIDTH, FRAME_HEIGHT); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); String input; // Ask the user for red, green, blue values input = JOptionPane.showInputDialog("red:"); double red = Double.parseDouble(input); input = JOptionPane.showInputDialog("green:"); double green = Double.parseDouble(input); input = JOptionPane.showInputDialog("blue:"); double blue = Double.parseDouble(input); Color fillColor = new Color( (float) red, (float) green, (float) blue); ColoredSquarecomponent = new ColoredSquare (fillColor); frame.add(component); frame.setVisible(true); } }43
  • 44. Example cont. import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Rectangle; import javax.swing.JComponent; public class ColoredSquare extends Jcomponent { private Color fillColor; public ColoredSquare (Color aColor) { fillColor = aColor; } public void paintComponent(Graphics g) { Graphics2D g2 = (Graphics2D) g; // Select color into graphics context g2.setColor(fillColor); // Const and fill a square whose center is center of the window final int SQUARE_LENGTH = 100; Rectangle square = new Rectangle((getWidth() - SQUARE_LENGTH) / 2, (getHeight() SQUARE_LENGTH) / 2, SQUARE_LENGTH, SQUARE_LENGTH); g2.fill(square); } }44

×