





Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
A supplement to cmsc 131, focusing on junit testing and constructors in java. It covers setting up junit testing in eclipse, the concept of junit as a utility for software testing, and the execution of unit tests. Additionally, it explains constructors, their elements, and the difference between default and copy constructors. The document also touches upon classes and objects, their relationship with variables, and the concept of accessors and mutators.
Typology: Study notes
1 / 9
This page cannot be seen from the preview
Don't miss anything!






public class AuxMath { public static int maximum(int x, int y) { if (x > y) return x; return y; } public static int minimum(int x, int y) { if (x < y) return x; return y; } } import junit.framework.TestCase; public class JUnitTestExample extends TestCase { public void testOneMaximum() { int expectedResults = 20; assertEquals(expectedResults, AuxMath.maximum(10, 20)); } public void testTwoMinimum() { int expectedResults = 5; assertEquals(expectedResults, AuxMath.minimum(30, 5)); } }
Run -> Run As -> JUnit Test
Green Bar – All test generated expected results. Brown Bar – Some tests failed (JUnit Failures). To see more details double click on JUnit tab.
month = m; day = d; year = y; if ( m < 1 || m > 12 ) { System.out.println( “Error: month is out of range" ); System.exit( 0 ); } }
A constructor with no arguments (sometimes called a default constructor). It is a good idea to provide such a constructor, since a class user may not have a good initial setting for class known.
If you do not provide any constructor, Java provides one that sets:
public Rational( Rational r ) {// copy constructor if ( r == null ) { // cannot initialize from null! System.out.println( "Illegal construction from null reference" ); System.exit( 0 ); } set( r.numer, r.denom ); }
Methods define an object’s behavior Method visibility: public: Accessible from both inside and outside the class private: Accessible from only inside the class Method types: Each method returns a value of a specified type or no value (void). Parameters: Static/Non-static Methods: Non-Static (the default): associated with a single instance Static: are not associated with any one instance, but are shared by all. Overloading: Having the same name, but different parameter types.
Numerator: int numer; Denominator: int denom;
No-argument (default) constructor: Standard constructor: Integer-valued constructor: Copy constructor:
set( int n, int d )
public class Rational { // … (instance variables and constructors omitted)… public String toString( ) { String result = numer + "/" + denom + " ( " + doubleValue( ) + " )"; return result; } public int getNumerator( ) { return numer; } public int getDenominator( ) { return denom; } public double doubleValue( ) { return ( double ) numer / ( double ) denom; } public float floatValue( ) { return ( float ) numer / ( float ) denom; } public void setNumerator( int n ) { numer = n; } public void setDenominator( int d ) { denom = d; } public void setValue( int v ) { set( v, 1 ); } // … (rest of class omitted for now)… }
public static void main( String[ ] args ) { Rational u0; u0.setNumerator( 3 ); Rational u1 = null; u1.setNumerator( 3 ); Rational u2 = new Rational( ); u2.setNumerator( 2 ); u2.setDenominator( 3 ); System.out.println( u2 ); System.out.println( u2.toString( ) ); System.out.println( "float = " + u2.floatValue( ) ); System.out.println( "double = " + u2.doubleValue( ) ); u2.setDenominator( u2.getNumerator( ) ); }
Static multiplication of two arguments: Returns a new rational: Rational p = Rational.multiply( q, r ); // p = qr This method will call new to create a new Rational number and return its reference. Nonstatic equivalent of the above: Returns a new rational: Rational p = q.multiply( r ); // p = qr This behaves the same as the above method. But the style is little uglier, because it lacks symmetry. (We won’t do this.) Nonstatic multiplication, which modifies q: q.multiplyBy( r ); // q *= r No new object is created, and q is modified as a result. It is okay for this to be asymmetric, since only q is modified.
public class Rational { // … (previous stuff omitted)… public static Rational multiply( Rational q, Rational r ) { return new Rational( q.numer * r.numer, q.denom *r.denom ); } public void multiplyBy( Rational r ) { numer *= r.numer; denom *= r.denom; } // … (rest of class omitted for now)… } public static void main( String[ ] args ) { Rational s1 = new Rational( -3, 8 ); Rational s2 = new Rational( 2 ); Rational s3 = Rational.multiply( s1, s2 ); System.out.println( s1 ); System.out.println( s2 ); System.out.println( s3 ); s1.multiplyBy( s2 ); System.out.println( s1 ); }