This document summarizes a presentation on object-oriented programming in ActionScript 3.0 given by Peter Elst in Edinburgh, Scotland from June 4-6, 2008. The presentation addressed common misconceptions about object-oriented programming, explained key concepts like classes, inheritance, encapsulation, and polymorphism, and described common design patterns like the observer and singleton patterns. Attendees were encouraged to learn more through books, courses, and contacting Peter Elst directly.
2. Object-Oriented Programming
■ Difficult
■ Scary
■ Overhead
■ Only for large teams
4th-6th June 2008
Edinburgh, Scotland
3. Object-Oriented Programming
■ Difficult? Structured code
■ Scary
■ Overhead
■ Only for large teams
4th-6th June 2008
Edinburgh, Scotland
4. Object-Oriented Programming
■ Difficult? Structured code
■ Scary? Initial learning curve
■ Overhead
■ Only for large teams
4th-6th June 2008
Edinburgh, Scotland
5. Object-Oriented Programming
■ Difficult? Structured code
■ Scary? Initial learning curve
■ Overhead? Promotes code reuse
■ Only for large teams
4th-6th June 2008
Edinburgh, Scotland
6. Object-Oriented Programming
■ Difficult? Structured code
■ Scary? Initial learning curve
■ Overhead? Promotes code reuse
■ Only for large teams? Useful for anyone
4th-6th June 2008
Edinburgh, Scotland
7. Classes (the artist formerly known as prototype)
■ The way things were:
function Conference() {
this.name = quot;Flashforwardquot;;
}
Conference.prototype.getName = function() {
trace(quot;conference name: quot;+this.name);
}
var myConference = new Conference();
myConference.getName();
4th-6th June 2008
Edinburgh, Scotland
8. Classes (the artist formerly known as prototype)
■ The way things are:
package {
public class Conference {
public var name:String = quot;Flashforwardquot;;
public function getName():void {
trace(quot;conference name: quot;+this.name);
}
}
}
4th-6th June 2008
Edinburgh, Scotland
9. Instances
■ Classes provide a blueprint
■ Instances set their values for properties
4th-6th June 2008
Edinburgh, Scotland
10. Inheritance (getting rich the easy way)
■ Classes can extend each-other
■ Avoids code duplication
■ Properties and methods can be overridden
package {
public class SuperClass extends BaseClass {
public function SuperClass() {
super();
}
}
}
4th-6th June 2008
Edinburgh, Scotland
11. Inheritance vs composition
■ Inheritance deals with an is a relationship
■ Composition is used for has a relationships
Employee is a Person
Employee has a Job
4th-6th June 2008
Edinburgh, Scotland
12. Encapsulation (don't touch my stuff)
■ Protect the inner workings of your code
through the use of access modifiers
■ Provide an API for other classes to use by
providing getter/setter methods
public - anything can access this
private - only the class itself can access
protected - class and its subclasses can access
internal (default) - all classes in the same class package
4th-6th June 2008
Edinburgh, Scotland
13. Polymorphism (copycat behavior)
■ Have classes use the same method names
■ Allows classes to be swapped at runtime
■ Same name but different implementation
Doctor.work()
Fireman.work()
WebDeveloper.work()
4th-6th June 2008
Edinburgh, Scotland
14. Interfaces (sign on the dotted line)
■ Classes can use one or more interfaces
■ Interfaces require a class to implement a
specific set of methods
■ Used to formalize polymorphism
■ Interfaces can extend each-other
4th-6th June 2008
Edinburgh, Scotland
16. Observer pattern
■ Problem: notify other classes when an
update occurs in a data model
■ Solution: keep an array of all instances that
want to be notified and call their update
method then the model has changed
4th-6th June 2008
Edinburgh, Scotland
17. Singleton pattern
■ Problem: allow only one instance of a class
to exist in an application
■ Solution: prevent the constructor from being
called outside of the class scope and provide
a static method for returning the single class
instance
4th-6th June 2008
Edinburgh, Scotland