Presentation is loading. Please wait.

Presentation is loading. Please wait.

Tribal Ownership Nicholas Cameron James Noble Tobias Wrigstad Victoria University of Wellington Uppsala University.

Similar presentations


Presentation on theme: "Tribal Ownership Nicholas Cameron James Noble Tobias Wrigstad Victoria University of Wellington Uppsala University."— Presentation transcript:

1 Tribal Ownership Nicholas Cameron James Noble Tobias Wrigstad Victoria University of Wellington Uppsala University

2 ncameron@ecs.vuw.ac.nz2 Tribe c1:Canvas world s1:Shape s2:Shape r1:Rectangle c2:Canvas s3:Shape s4:Shape r2:Rectangle c3:InCanvas...

3 ncameron@ecs.vuw.ac.nz3 Ownership c1:Canvas world s1:Shape s2:Shape r1:Rectangle c2:Canvas s3:Shape s4:Shape r2:Rectangle c3:InCanvas...

4 ncameron@ecs.vuw.ac.nz4 Tribal Ownership c1:Canvas world s1:Shape s2:Shape r1:Rectangle c2:Canvas s3:Shape s4:Shape r2:Rectangle c3:InCanvas...

5 ? ncameron@ecs.vuw.ac.nz5 Questions

6 Virtual Classes Nested Classes Family Polymorphism Class Families Nested Inheritance... ncameron@ecs.vuw.ac.nz6

7 Virtual Classes Scala Newspeak GBeta... ncameron@ecs.vuw.ac.nz7

8 Tribe class Canvas { class Shape {... } class Circle extends Shape {... } class Rectangle extends Shape {... }... } class ICanvas extends Canvas { class Shape { void onClick() {... } } ncameron@ecs.vuw.ac.nz8

9 Tribe class Canvas { class Shape {... } class Circle extends Shape {... } class Rectangle extends Shape {... }... } class InCanvas extends Canvas { class Shape { void onClick() {... } } ncameron@ecs.vuw.ac.nz9

10 10 Tribe Canvas Shape Circle Rectangle

11 ncameron@ecs.vuw.ac.nz11 Tribe Canvas Shape Circle Rectangle InCanvas Shape Circle Rectangle onClick()

12 ncameron@ecs.vuw.ac.nz12 Canvas Shape Circle Rectangle InCanvas Shape Circle Rectangle onClick()

13 ncameron@ecs.vuw.ac.nz13 Tribe c1:Canvas world s1:Shape s2:Shape r1:Rectangle c2:Canvas s3:Shape s4:Shape r2:Rectangle c3:InCanvas...

14 c1.Shape c2.Shape ncameron@ecs.vuw.ac.nz14 Tribe Types

15 class Canvas { this.Shape f1; world.Canvas f2; class Shape { this.out.out.Canvas f3; this.out.Circle f4; } class Circle extends Shape {... } } ncameron@ecs.vuw.ac.nz15 Tribe Types

16 ncameron@ecs.vuw.ac.nz16 Tribe Types class Canvas { this.Shape f1; world.Canvas f2; class Shape {... } } :Canvas f1:Shape world f2:Canvasf4:Canvas f3:Circle :Shape

17 ncameron@ecs.vuw.ac.nz17 Tribe Types :Canvas f1:Shape world f2:Canvasf4:Canvas f3:Circle :Shape class Canvas {... class Shape { this.out.Circle f3; this.out.out.Canvas f4; }

18 ncameron@ecs.vuw.ac.nz18

19 ncameron@ecs.vuw.ac.nz19 Ownership Types

20 class List { ListNode first;... } class ListNode { ListNode next; Object datum;... } new List (); ncameron@ecs.vuw.ac.nz20 Ownership Types

21 ? ncameron@ecs.vuw.ac.nz21 What if...

22 ncameron@ecs.vuw.ac.nz22ncameron@ecs.vuw.ac.nz22 c1:Canvas world s1:Shape r1:Rectangle c2:Canvas s3:Shape r2:Rectangle

23 c1.Shape ncameron@ecs.vuw.ac.nz23 Tribal Ownership

24 class Canvas { this.Shape f1; world.Canvas f2; class Shape { this.out.Circle f3; this.out.out.Canvas f4; } class Circle extends Shape {... } } ncameron@ecs.vuw.ac.nz24 Tribe

25 class Canvas { this.Shape f1; world.Canvas f2; class Shape { this.out.Circle f3; this.out.out.Canvas f4; } class Circle extends Shape {... } } ncameron@ecs.vuw.ac.nz25 Tribal Ownership

26 class List { ListNode first;... } class ListNode { ListNode next; Object datum;... } new List (); ncameron@ecs.vuw.ac.nz26 What about List?

27 class List { this.ListNode first; class ListNode { this.out.ListNode next; X datum;... }... } new this.List (); ncameron@ecs.vuw.ac.nz27 What about List? - Generics

28 class List { this.ListNode first; class ListNode { this.out.ListNode next; X datum;... }... } new this.List (); ncameron@ecs.vuw.ac.nz28 What about List? - Generics

29 class List { this.ListNode first; class ListNode { this.out.ListNode next; X datum;... }... } new this.List (); ncameron@ecs.vuw.ac.nz29 What about List?

30 module Collections { class List {... } class Foo imports world.Collections { this.List f; } ncameron@ecs.vuw.ac.nz30 What about List? – Module classes

31 ncameron@ecs.vuw.ac.nz31 Encapsulation

32 Owners-as-Dominators Owners-as-Modifiers ncameron@ecs.vuw.ac.nz32 Encapsulation

33 ncameron@ecs.vuw.ac.nz33 Descriptive Ownership

34 ncameron@ecs.vuw.ac.nz34 O-as-D

35 Owners-as-Local-Dominators ncameron@ecs.vuw.ac.nz35 Encapsulation

36 ncameron@ecs.vuw.ac.nz36 O-as-LD

37 ncameron@ecs.vuw.ac.nz37 O-as-LD private public Only public classes can be named externally

38 Virtual classes in Tribe give ownership – No syntactic overhead Generics Module classes – Cross family inheritance Owners-as-Local-Dominators ncameron@ecs.vuw.ac.nz38 Summary

39 ncameron@ecs.vuw.ac.nz39 Thank you!

40

41 ? ncameron@ecs.vuw.ac.nz41 Questions


Download ppt "Tribal Ownership Nicholas Cameron James Noble Tobias Wrigstad Victoria University of Wellington Uppsala University."

Similar presentations


Ads by Google