Download presentation
Presentation is loading. Please wait.
Published byGodwin McDowell Modified over 8 years ago
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!
41
? ncameron@ecs.vuw.ac.nz41 Questions
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.