13

Click here to load reader

Self, Class and Module

Embed Size (px)

Citation preview

Page 1: Self, Class and Module

Self, Class & Module

- Gourav Tiwari

Page 2: Self, Class and Module

# Object self example:

class User

def initialize(name)

@name = name

end

def user_name

@name

end

end

john = User.new('John')

ram = User.new('Ram')

def ram.soul

'divine'

end

self -> Current Object

Page 3: Self, Class and Module

method_missing, superclass...

ram

Anonymous Class

superclass

Class def…

User Class

superclass

Class def...

Object Class

superclass

Class def...

BasicObject Class

superclass

Class def...

Kernel Module

Module def...

Page 4: Self, Class and Module

Unusual way of defining a class# class example:

User = Class.new do

def initialize(name)

@name = name

end

def user_name

@name

end

end

john = User.name('John')

ram = User.new('Ram')

def ram.soul

'divine'

end

Page 5: Self, Class and Module

Self# Class self example:

class User

# self is set here to User class

def initialize(name)

@name = name

end

def self.all

'All Users!'

end

end

Page 6: Self, Class and Module

method_missing, superclass...

User

Anonymous Class

superclass

Class def…

class Class

superclass

Class def...

Module Class

superclass

Class def...

BasicObject Class

superclass

Class def...

User Class

superclass

Class def...

Object Class

superclass

Class def...

Page 7: Self, Class and Module

Modules● are not classes

● do not have instances

● are objects of Module class

● have module methods and module constants

● mixes-in with classes

Page 8: Self, Class and Module

Modules: includemodule MyModule

def obj_id

"The object id is #{object_id}"

end

end

class User

include MyModule

end

ram = User.new

ram.obj_id

Page 9: Self, Class and Module

include makes a reference to module

ram

Anonymous Class

superclass

Class def…

User Class

superclass

Class def...

Object Class

superclass

Class def...

BasicObject Class

superclass

Class def...

Kernel Module

Module def...

Anonymous Class

superclass

Class def…

module MyModule

Class def…

Page 10: Self, Class and Module

Modules: extendmodule MyModule

def class_name

"The class name is #{name}"

end

end

class User

extend MyModule

end

User.class_name

user = User.new

user.extend MyModule

Page 11: Self, Class and Module

extend: includes module in Ano class

User

Anonymous Classinclude MyModulesuperclass

Class def…

class Class

superclass

Class def...

Module Class

superclass

Class def...

BasicObject Class

superclass

Class def...

User Class

superclass

Class def...

Object Class

superclass

Class def...

Page 12: Self, Class and Module

extend: includes module in Ano class

ram

Anonymous Classinclude MyModulesuperclass

Class def…

User Class

superclass

Class def...

Object Class

superclass

Class def...

BasicObject Class

superclass

Class def...

Kernel Module

Module def...

Anonymous Class

superclass

Class def…

module MyModule

Class def…

Page 13: Self, Class and Module

Thank You!