26
Understanding Ruby’s Object Model Chris Pine July 10, 2003

ChrisPine_UROM.ppt

Embed Size (px)

Citation preview

Understanding Ruby’s Object Model

Chris Pine

July 10, 2003

Chris Pine

Some Ruby Basics

1234567.class Fixnum

'hello'.class String

Chris Pine

Some Ruby Basics

1234567.class Fixnum

'hello'.class String

Fixnum.superclass Integer

String.superclass Object

Chris Pine

Some Ruby Basics

1234567.class Fixnum

'hello'.class String

Fixnum.superclass Integer

String.superclass Object

'hello'.kind_of?(String) true

1234567.kind_of?(Integer) true

1234567.kind_of?(String) false

Chris Pine

A Little Quiz

Object.kind_of?(Object) ?

Chris Pine

A Little Quiz

Object.kind_of?(Object) true

Object.kind_of?(Class) ?

Chris Pine

A Little Quiz

Object.kind_of?(Object) true

Object.kind_of?(Class) true

Class.kind_of?(Object) ?

Chris Pine

A Little Quiz

Object.kind_of?(Object) true

Object.kind_of?(Class) true

Class.kind_of?(Object) true

Class.kind_of?(Class) ?

Chris Pine

A Little Quiz

Object.kind_of?(Object) true

Object.kind_of?(Class) true

Class.kind_of?(Object) true

Class.kind_of?(Class) true

'hey'.kind_of?(String) ?

Chris Pine

A Little Quiz

Object.kind_of?(Object) true

Object.kind_of?(Class) true

Class.kind_of?(Object) true

Class.kind_of?(Class) true

'hey'.kind_of?(String) true

String.kind_of?(Class) ?

Chris Pine

A Little Quiz

Object.kind_of?(Object) true

Object.kind_of?(Class) true

Class.kind_of?(Object) true

Class.kind_of?(Class) true

'hey'.kind_of?(String) true

String.kind_of?(Class) true

Fixnum.kind_of?(Integer) ?

Chris Pine

A Little Quiz

Object.kind_of?(Object) true

Object.kind_of?(Class) true

Class.kind_of?(Object) true

Class.kind_of?(Class) true

'hey'.kind_of?(String) true

String.kind_of?(Class) true

Fixnum.kind_of?(Integer) false

Chris Pine

Wrong Mental Picture

Object class

Classes

Subclasses

objects

Chris Pine

What We Know…

aClass.superclass.superclass…

Object

Object.superclass nil

Chris Pine

What We Know…

aClass.superclass.superclass…

Object

Object.superclass nil

anObject.class.class… Class

Class.class Class

Chris Pine

What We Know…

aClass.superclass.superclass…

Object

Object.superclass nil

anObject.class.class… Class

Class.class Class

aClass.class Class

anObject.class.class Class

Chris Pine

Superclass Relationships

Object

Module

Class

String

Integer Fixnum

Chris Pine

Class Relationships

Object

Module

String

Integer Fixnum

5'hi'

Class

Chris Pine

Relationships

anObject.class

aClass.superclass

anObject.kind_of?

*

Chris Pine

Right Mental Picture

Object

Module

Class

String

Integer Fixnum

5'hi'

Chris Pine

Modules

module FooMod class String def foo include FooMod 'BIGFOO!' end endend

Object Proxy:FooMod

foo

Stringreversesplit…

Chris Pine

Singleton Classes (objects)

me = 'Chris'

def me.wife 'Katy'end

String 'Chris'(S)

'Chris'

reversesplit…

wife

Chris Pine

Singleton Classes (classes)

poly = Polygon.new

poly.area 12.823

Polygon.largest poly

tri = Triangle.new

tri.area 9.816

tri.hypotenuse 7.244

Triangle.largest tri

Chris Pine

Singleton Classes (classes)

Polygon Trianglehypotenusearea

largest

new

Class Polygon(S)?

?

?

?

Chris Pine

Polygon Trianglehypotenusearea

largest

new

Class

Poly(S) Tri(S)

Object

Obj(S) Class(S)

Mod(S)

Module