Click here to load reader
Upload
gourav-tiwari
View
343
Download
0
Embed Size (px)
Citation preview
Self, Class & Module
- Gourav Tiwari
# 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
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...
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
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
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...
Modules● are not classes
● do not have instances
● are objects of Module class
● have module methods and module constants
● mixes-in with classes
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
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…
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
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...
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…
Thank You!