// APS101, Winter 2009: Lecture 10 (Jan. 29) // // Review: last time we looked at class interactions. // Specifically, we looked at the aggregation relationship. // (that's when one object contains another object) // // Local variable: // a variable that's defined within a method. // other methods can't see or use this local variable. // // Global/Instance variable: // defined within a class. // visible by all methods. // // We also wrote 2 classes: // Musician.java and Band.java Musician m1 = new Musician("LilWayne", 10); m1.getSalary() m1.toString() Band b = new Band(m1, m1, m1); b.getTotalSalary() Musician m2 = new Musician("Gene Simmons", 100); m1.isEqual(m2) Musician m3 = new Musician("LilWayne", 100); m1.isEqual(m3) // We wrote a setSalary() method in Musician Musician m1 = new Musician("LilWayne", 10); Band b = new Band(m1, m1, m1); b.getTotalSalary() m1.setSalary(15) m1.getSalary() b.getTotalSalary() b.toString() // default toString() method is called! // We then wrote a toString() method in Band Musician m1 = new Musician("LilWayne", 10); Band b = new Band(m1, m1, m1); b.toString() "abc" + 'd' // we can concatenate a String with char Musician m1 = new Musician("LilWayne", 10); Band b = new Band(m1, m1, m1); b.toString() // We added instance variable numBands to Musician, // and wrote getNumBands() and joinedBand(). Musician m1 = new Musician("LilWayne", 10); m1.getNumBands() Musician m2 = new Musician("PDiddy", 10); Musician m3 = new Musician("Gene Simmons", 100); Band b = new Band(m1, m2, m3); b.getTotalSalary() b.toString() m2.setSalary(50) b.toString() m1.getNumBands() m2.getNumBands() m3.getNumBands() Band b2 = new Band(m1, m1, m1); m1.getNumBands() // We wrote method isWithinBudget(double) in Band Musician m2 = new Musician("PDiddy", 10); Band b2 = new Band(m2, m2, m2); b2.isWithinBudget(10) b2.isWithinBudget(30) b2.isWithinBudget(100) // We wrote method isEqual(Band) in Band Musician m1 = new Musician("LilWayne", 10); Musician m2 = new Musician("PDiddy", 50); Musician m3 = new Musician("50Cent", 0.5); Band b = new Band(m1, m2, m3); Band b2 = new Band(m1, m2, m3); m1.getNumBands() b.isEqual(b2) Band b3 = new Band(m1, m3, m2); b.isEqual(b3) // it's false, because the order is different! // So let's change the method to take the order into account Musician m1 = new Musician("LilWayne", 10); Musician m2 = new Musician("PDiddy", 50); Musician m3 = new Musician("50Cent", 0.5); Band b1 = new Band(m1, m2, m3); Band b2 = new Band(m1, m3, m2); b1.isEqual(b2) // true - this is good! Band b3 = new Band(m1, m1, m1); b1.isEqual(b3) // false - this is also good! Band b1 = new Band(m1, m2, m2); Band b2 = new Band(m1, m1, m2); b1.isEqual(b2) // true?? this is bad... why?