Skip to content

Instantly share code, notes, and snippets.

@amscotti
Last active December 19, 2015 13:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save amscotti/5961171 to your computer and use it in GitHub Desktop.
Save amscotti/5961171 to your computer and use it in GitHub Desktop.
Syntax comparison of Classes and Inheritance using CoffeeScript, Dart, and TypeScript.
class Character
@name
constructor: (person, @role) ->
@name = "#{person.firstname} #{person.lastname}"
toString: () ->
"#{@role} played by #{@name}"
class Doctor extends Character
constructor: (person, @doctor) ->
super person, "The Doctor"
toString: () ->
"#{super.toString()}, The #{@doctor} Doctor"
class Companion extends Character
constructor: (person, role, @companionTo) ->
super person, role
toString: () ->
"#{super.toString()}, companion of the #{@companionTo} Doctor"
eleventh = new Doctor({firstname: "Matt", lastname: "Smith"}, 11)
amy = new Companion({firstname: "Karen", lastname: "Gillan"}, "Amy Pond", 11)
clara = new Companion({firstname: "Jenna-Louise", lastname: "Coleman"}, "Clara Oswald", 11)
console.log eleventh.toString()
console.log amy.toString()
console.log clara.toString()
class Person {
String firstname;
String lastname;
Person(this.firstname, this.lastname);
}
class Character {
String name;
String role;
Character(Person person, this.role) {
this.name = "${person.firstname} ${person.lastname}";
}
toString() => "${this.role} played by ${this.name}";
}
class Doctor extends Character {
int doctor;
Doctor(Person person, this.doctor) : super(person, "The Doctor");
toString() => "${super.toString()}, The ${this.doctor} Doctor";
}
class Companion extends Character {
int companionTo;
Companion(Person person, String role, this.companionTo): super(person, role);
toString() => "${super.toString()}, companion of the ${this.companionTo} Doctor";
}
void main() {
var eleventh = new Doctor(new Person("Matt", "Smith"), 11);
var amy = new Companion(new Person("Karen","Gillan"), "Amy Pond", 11);
var clara = new Companion(new Person("Jenna-Louise","Coleman"), "Clara Oswald", 11);
print(eleventh);
print(amy);
print(clara);
}
interface Person {
firstname: string;
lastname: string;
}
class Character {
public name: string;
constructor(person: Person, public role: string) {
this.name = person.firstname + " " + person.lastname;
}
toString(): string {
return this.role + " played by " + this.name;
}
}
class Doctor extends Character {
constructor(person: Person, public doctor: number) {
super(person, "The Doctor");
}
toString(): string {
return super.toString() + ", The " + this.doctor + " Doctor";
}
}
class Companion extends Character {
constructor(person: Person, role: string, public companionTo: number) {
super(person, role);
}
toString(): string {
return super.toString() + ", companion of the " + this.companionTo + " Doctor";
}
}
var eleventh = new Doctor({firstname: "Matt", lastname: "Smith"}, 11);
var amy = new Companion({firstname: "Karen", lastname: "Gillan"}, "Amy Pond", 11);
var clara = new Companion({firstname: "Jenna-Louise", lastname: "Coleman"}, "Clara Oswald", 11);
console.log(eleventh.toString());
console.log(amy.toString());
console.log(clara.toString());
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment