package lectures.class_dual_roles.statics;
import util.annotations.WebDocuments;


/**
 * SEPARATION OF CONCERNS
 * The separation of concerns principle says that if a set of methods and 
 * variables, S1, can be defined independently of another set of methods and 
 * variables, D2, then the two sets should be in different classes. Dependence
 * is not a commutative. S1 can depend on S2, but S2 can be independent of S1.
 * If one of these sets is independent of the other set, then different classes
 * C1 and C2 should be defined for them, with one class possibly using methods
 * from the the other.
 * 
 * 
 * (T/F) The class Permutations depends on the class Factorials.
 * (T/F) The class Factorials depends on the class Permutations.
 * (T/F) The separation of concerns principle implies that the  methods in
 * Factorials and Permutations should be in different classes.
 * 
 *
 */
@WebDocuments({"Lectures/ClassDualRolesStatics.pptx", "Lectures/ClassDualRolesStatics.pdf", "Videos/ClassDualRolesStatics.avi"})
public class Permutations {
    public static long numPermutations(int n, int r) {      
        return Factorials.loopingFactorial(n) / Factorials.loopingFactorial(n-r);
    }
    
}
/*
 * Go next to: {StaticLoopingFactorialSpreadsheet}(F3 or CTRL/Command Click on its name)
 */