Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 Miscellaneous Java … a collection of short topics that we need to get to at some point …

Similar presentations


Presentation on theme: "1 Miscellaneous Java … a collection of short topics that we need to get to at some point …"— Presentation transcript:

1 1 Miscellaneous Java … a collection of short topics that we need to get to at some point …

2 2 Topics Look at Student.java example Formatting output Method overloading ArrayList revisited Testing (time permitting)

3 3 Formatting Output The default output from System.out.print isn’t always formatted the way we want  e.g. System.out.print(3.0/7);  output: 0.42857142857142855 It is also hard to combine values  e.g. produce “3 + 4 = 7” from a=3 and b=4  need to print 5 things seperately: a, “ + “, b “ = “, a+b

4 4 printf The system.out.printf statement can output values based on a “format string”  similar to printf in C  uses place holders to define an abstract form  new in Java 5.0 e.g. System.out.printf(“%d + %d %d\n”,a,b,a+b);

5 5 printf Inputs  A String object, left mostly as is  % sign used to precede replacements Common types:  %d: int/long  %f - %e: float/double decimals – scientific  %s: String  %: prints a %

6 6 printf Can control number of characters printed and decimal places  e.g. %10.2f replacement will take 10 characters and have 2 decimal places: “ 34.21”  e.g. %8d will take 8 characters: “ 34” Can also control other details  e.g. %08d replacement will take 8 characters, padded with zeroes: “00000034”

7 7 String.format Another way to do String formatting  Return a String object instead of printing directly to the screen Use the static function format in the String class e.g. String s = String.format (“%d + %d = %d\n”,a,b,a+b);

8 8 Example 1 for(int i=0; i<=10; i++) System.out.printf(“%2d %6.0f\n”, i, Math.pow(2, i)); What does this code output?

9 9 Example 2 In Student.java, we could add a toString method: String toString() { return String.format(“%09d: %s, %s”, studentNumber, lastName, firstName); }

10 10 Why this approach is good Simple, flexible string formatting Similar to C, which is useful for translating legacy code Particularly useful for just testing outputs… when the print isn’t “really” part of the program  In this case introducing a bunch of new objects seems unecessary

11 11 Why this approach is not so good This is not a good example of object-oriented programming  Formatting a string is an often-required task  The formatting is independent of the surrounding code An object-oriented approach suggests introducing objects for formatting

12 12 Formatting Output The Java standard class library contains classes that provide formatting capabilities The NumberFormat class allows you to format values as currency or percentages The DecimalFormat class allows you to format values based on a pattern Both are part of the java.text package

13 13 Formatting Output The NumberFormat class has static methods that return a formatter object getCurrencyInstance() getPercentInstance() Each formatter object has a method called format that returns a string with the specified information in the appropriate format

14 14 Formatting Output {import java.text.NumberFormat; … NumberFormat fmt = NumberFormat.getCurrencyInstance(); double cost = 4.19; double tax = 0.06; double totalcost = cost + cost * tax; System.out.println(“Cost: “ + fmt.format(totalcost)); } Output Cost: $4.44 (actual double value = 4.4414) see Purchase.java in text for a larger example

15 15 Formatting Output The DecimalFormat class can be used to format a floating point value in various ways For example, you can specify that the number should be truncated to three decimal places The constructor of the DecimalFormat class takes a string that represents a pattern for the formatted number See CircleStats.java in textCircleStats.java

16 16 Multiple Argument Types The print method can take many types of arguments System.out.println(16);\\ int System.out.println(true);\\ boolean System.out.println(“Hello”);\\ Object (String) System.out.println(s);\\ Object (Student) How would we define such a function? public static void print(????) Need an argument type… which one?

17 17 Multiple Argument Types There are actually several print methods: public static void print(int i){…} public static void print(boolean b){…} public static void print(String s){…} public static void print(Object obj){…} When print is called, the compiler matches the arguments you give with the methods available

18 18 Multiple Argument Types Strong-typing makes this unambiguous float tryMe(int x) { return x +.375; } float tryMe(int x, float y) { return x*y; } result = tryMe(25, 4.32) Invocation

19 19 Method Overloading Method overloading is the process of giving a single method name multiple definitions If a method is overloaded, the method name is not sufficient to determine which method is being called The signature of each overloaded method must be unique The signature includes the number, type, and order of the parameters

20 20 Why do we overload? Similar operation to do on different types  printing is the simplest example Similar operation to do with different arguments  sum(int i1, int i2){…}  sum(int i1, int i2, int i3){…} Handling incomplete information  addMember(String name, int birth){…}  addMember(String name){…}

21 21 Why do we overload? Component-wise operations on arrays static int addOne(int i) { return i+1; } static int[] addOne(int[] arr) { for(int i=0; i<arr.length; i++) addOne(arr[i]); return arr; }

22 22 Overloading Constructors Constructors can be overloaded (and they often are)  Student(int number){…}  Student(String name){…} Construct a new object with the information available

23 23 Overloading: Return types Consider the following functions: // returns the square root of d static double squareRoot(double d) { return Math.sqrt(d); } // returns the square root rounded to an integer static int squareRoot(double d) { int i = (int)Math.sqrt(d); return i; }

24 24 What Happens in Binding? Complier looks for the right method int squareRoot(double x) { … } double squareRoot(double x) { … } result = squareRoot(4.32) ? ?

25 25 Overloading: Return types The return type is not part of the signature  The compiler cannot distinguish two methods that differ only in the return type However… overloaded methods can differ in the return type...  provided there is some other difference as well Key idea: you need to be giving enough information for Java to pick out one specific method declaration

26 26 ArrayList Revisited Recall: the ArrayList class is a growable and shrinkable list In general, it contains objects from the generic Object class Uses a special syntax if we want to restrict to a specific type To deal with primitive types… use wrappers

27 27 Example: DoubleArrayList DoubleArrayList.java Notes:  ArrayList declares an arraylist containing objects of type  Autoboxing allows us to add double and Double variables into ArrayList  ArrayList does not work

28 28 Testing Testing can mean many different things It certainly includes running a completed program with various inputs It also includes any evaluation performed by human or computer to assess quality Some evaluations should occur before coding even begins The earlier we find an problem, the easier and cheaper it is to fix

29 29 Testing The goal of testing is to find errors As we find and fix errors, we raise our confidence that a program will perform as intended We can never really be sure that all errors have been eliminated So when do we stop testing?  Conceptual answer: Never  Snide answer: When we run out of time  Better answer: When we are willing to risk that an undiscovered error still exists

30 30 Reviews A review is a meeting in which several people examine a design document or section of code It is a common and effective form of human-based testing Presenting a design or code to others:  makes us think more carefully about it  provides an outside perspective Reviews are sometimes called inspections or walkthroughs

31 31 Test Cases A test case is a set of input and user actions, coupled with the expected results Often test cases are organized formally into test suites which are stored and reused as needed For medium and large systems, testing must be a carefully managed process Many organizations have a separate Quality Assurance (QA) department to lead testing efforts

32 32 Defect and Regression Testing Defect testing is the execution of test cases to uncover errors The act of fixing an error may introduce new errors After fixing a set of errors we should perform regression testing – running previous test suites to ensure new errors haven't been introduced It is not possible to create test cases for all possible input and user actions Therefore we should design tests to maximize their ability to find problems

33 33 Black-Box Testing In black-box testing, test cases are developed without considering the internal logic They are based on the input and expected output Input can be organized into equivalence categories Two input values in the same equivalence category would produce similar results Therefore a good test suite will cover all equivalence categories and focus on the boundaries between categories

34 34 White-Box Testing White-box testing focuses on the internal structure of the code The goal is to ensure that every path through the code is tested Paths through the code are governed by any conditional or looping statements in a program A good testing effort will include both black-box and white-box tests


Download ppt "1 Miscellaneous Java … a collection of short topics that we need to get to at some point …"

Similar presentations


Ads by Google