/* Program to illustrate references to objects in Java
   this version uses static methods
 */

package course;  // a package statement always comes first, but
                 // a default package is implicit if no package is declared

// no need to import Course class, as Course class already in package coure

public class JavaReferencesB {

    public static void changeCredits (Course courseParm)
    {
        courseParm.setCredits (12);
        System.out.println ("revised course in changeCredis\n   courseParm");
    }

    public static void newCourse (Course newParm)
    {
        System.out.println ("newCourse original parmeter\n   " + newParm);
        newParm = new Course ("TUT", 101, 4, "Tutorial"); 
        System.out.println ("newCourse new parmeter\n   " + newParm);
    }   

    public static void main (String Args[])
    {
        System.out.println ("Program to illustrate references in Java");

        Course coursea = new Course ("CSC", 207, 4, "OOP");
        Course courseb = coursea;

        System.out.println ("Initial variables (course b references course a)");
        System.out.println ("coursea\n   " + coursea);
        System.out.println ("courseb\n   " + courseb);

        coursea.setNumTitle (6, "Classes and Objects");
        System.out.println ("Assignment:  coursea number and  title changed");
        System.out.println ("coursea\n   " + coursea);
        System.out.println ("courseb\n   " + courseb);

        coursea.setNumTitle (11001111, "Classes and Objects");
        System.out.println ("Assignment:  coursea number and  title changed");
        System.out.println ("coursea\n   " + coursea);
        System.out.println ("courseb\n   " + courseb);

        changeCredits (coursea);
        System.out.println ("Method call:  coursea credits changed during call");
        System.out.println ("coursea\n   " + coursea);
        System.out.println ("courseb\n   " + courseb);

        newCourse (coursea);
        System.out.println ("Method call:  coursea becomes new Course");
        System.out.println ("coursea\n   " + coursea);
        System.out.println ("courseb\n   " + courseb);


    }
}
