Last active
December 19, 2015 13:19
-
-
Save amscotti/5961171 to your computer and use it in GitHub Desktop.
Syntax comparison of Classes and Inheritance using CoffeeScript, Dart, and TypeScript.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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