Flash / Flex / ActionScript/Class/Composition
Class composition
<source lang="java">
package {
public class Employee { public function doWork():int { return 1; } }
}
class Manager { protected var employees:Array; public function Manager(numberOfEmployees:int) { employees = new Array(); for (var i:int = 0; i < numberOfEmployees; i++) { employees[i] = new Employee(); } } public function delegateWork():int { var totalWork:int = 0; for each (var employee:Employee in employees) { totalWork += employee.doWork(); } return totalWork; } } class Company { public function Company() { var manager:Manager = new Manager(10); var completedWork:int = manager.delegateWork(); trace(completedWork); //10 } } </source>
Inheritance vs. Composition
<source lang="java">
package {
public class House { public var kitchen:Kitchen; public var livingroom:LivingRoom; public var bedrooms:Array; public function House(numberOfBeds:int) { kitchen = new Kitchen(); livingroom = new LivingRoom(); bedrooms = new Array(); for (var i:int = 0; i < numberOfBeds; i++) { bedrooms[i] = new Bedroom(); } } }
} class Kitchen{ } class LivingRoom{ } class Bedroom{ }
</source>