SlideShare a Scribd company logo
An introduction to Ruby's object
             model

    Riviera.rb – 08/01/2013
           Nicolas Bondoux
Overview
●   Introduction to module and classes
●   Singleton class; case of meta-classes
●   Tools for meta-programming
●   Using modules for extending objects: mixins
A simple class
class LinkedElement
  #constructor
                                          ●   A class definition
  def initialize(content,link)                  contains
    @content = content
    @link = link
  end
                                                  –   Instance methods
  # setter                                        –   Constants
  def content=(content)
    @content = content
  end
                                                  –   Class variables
  #getter
                                          ●   Instance variables are
  def content
    return @content
                                                prefixed by @; they
  end                                           are manipulated
  # automatic generation setter/getter:         through instance
  attr_accessor :link
end  
                                                methods
Class instances
irb(main):192:0> a = LinkedElement.new("a", nil)
=> #<LinkedElement:0x00000001b63b58 @content="a", @link=nil>

irb(main):193:0> b = LinkedElement.new("b",a)
=> #<LinkedElement:0x00000001b5daf0 @content="b", 
@link=#<LinkedElement:0x00000001b63b58 @content="a", @link=nil>>

irb(main):194:0> b.link()
=> #<LinkedElement:0x00000001b63b58 @content="a", @link=nil>

irb(main):195:0> b.@link
SyntaxError: (irb):195: syntax error, unexpected tIVAR
    from /usr/bin/irb:12:in `<main>'

irb(main):196:0> b.content
=> "b"

b.instance_variables
=> [:@content, :@link]

●   A class be instantiated using #new (class method)
●   Instance variables live within the instance, but are not
    directly accessible → need of getter and setters
Objects' equality
●   Objects comparison:
        –   == → true if the content of two objects
        –   .eql? → true if == and class of the two objects;
                 ● Used alongside with .hash for hash maps
        –   .equal? : true if the same instance on both sides
●   == and .eql? Must be provided by class implementation
Classes inheritance
class Toto                         irb(main):027:0* Toto.new.myNameIs
  def myNameIs                     => "My Name Is Toto."
    return "My Name Is #{name}."   irb(main):028:0> Titi.new.myNameIs
  end                              => "My Name Is Titi."
  def name
    "Toto"                         irb(main):030:0* t = Titi.new
  end                              => #<Titi:0x00000001d376c8>
end                                irb(main):035:0> t.class
                                   => Titi
class Titi < Toto                  irb(main):036:0> 
  def name                         t.class.superclass
    "Titi"                         => Toto
  end                              irb(main):037:0> t.is_a? Titi
end                                => true
                                   irb(main):038:0> t.is_a? Toto
                                   => true
                                   irb(main):039:0> Toto === t
                                   => true
                                   irb(main):040:0> Toto.superclass
                                   => Object
Self
●   “self” keyword represents the instance in which the code is
    executed
         –   inside a method definition , the instance on which
               method is defined
         –   Inside class/module definition: the class/module being
               defined
                         class TestSelf
                           puts self
                           def f
                             return self
                           end
                         end
                         # display TestSelf

                         t = TestSelf.new
                         t.f.equal? t
                         => true
Class methods and variables
class TestClassMethod
  #class variable
  @@a=0
  #class method
  def self.counter
    @@a=0
  end
  #instance method
  def putsSelf
    puts self
    @@a+=1
  end
end

●   Class are objects: class methods are their instance methods!
●   Class variables are prefixed with @@
●   Ruby magic: class variables from parent classes are
      accessible to child classes
●   Class variables are accessible anywhere in class definition
Classes methods: example
class LinkedElement
  class LinkedElementEnd
  end
  #class variable
  @@end = LinkedElementEnd.new

  #example of constant
  End = @@end
  #class method

  def self.end
    @@end
  end
end

irb(main):015:0* LinkedElement.end().equal? LinkedElement::End
=> true
irb(main):016:0> LinkedElement.class_variables
=> [:@@end]

irb(main):069:0>  a= LinkedElement.new("a", LinkedElement.end)
=> #<LinkedElement:0x00000001931df8 @content="a", 
@link=#<LinkedElement::LinkedElementEnd:0x0000000152e8c8>>

irb(main):070:0> b=LinkedElement.new("b",a)
=> #<LinkedElement:0x0000000192a8c8 @content="b", 
@link=#<LinkedElement:0x00000001931df8 @content="a", 
@link=#<LinkedElement::LinkedElementEnd:0x0000000152e8c8>>>
Adding methods to a class
●   Class definition can be extended anytime
●   Let's add a size method to our linked list:
      class LinkedElement
        def size
          @link.size + 1
        end
        class LinkedElementEnd
          def size
           0
          end
        end
      end

      irb(main):081:0> a.size
      => 1
      irb(main):082:0> b.size
      => 2
Structs
●   Struct.new allow to dynamically create Classes, with getter
      and setters
      irb(main):008:0> MyClass = Struct.new(:a,:b, :c)
      => MyClass
      irb(main):009:0> m = MyClass.new(1,10)
      => m = MyClass.new(1,10)

      irb(main):011:0> m.a=2
      => 2

      irb(main):013:0> m.to_a
      => [2, 10, nil]


●   Instance of struct have, among others .eql?, .equal?, .hash
      methods defined !
●   Very useful to quickly define records, keys …
●   Structs can then be inherited from/extended like any classes
Modules
●   Module is a parent type of Class;
         –   A module is an instance of Module
●   Modules are like classes, except that
         –   They cannot be instantiated
         –   No inheritance: they cannot have parent or child
●   Still, they are objects:
         –   They have instance variables, (class) methods
●   And they also have
         –   class variables
         –   and instance methods → used for the mixins
●   Modules are useful for namespaces
Modules (2)
module M1
  #constant:
  C=1

  def self.f
    "f1; self is #{self}"
  end
end

module M2
  def self.f
    "f2; self is #{self}"
  end
end

irb(main):026:0* M1.f
=> "f1; self is M1"
irb(main):028:0* M2.f
=> "f2; self is M2"
irb(main):033:0> M1::C
=> 1
A very simplified diagram


                  Object




           MyParentClass   Module   MyModule


Instance         MyClass   Class



   .class
   .superclass
Extending instances:
●   We have already seen that class methods of a class A are
    instance methods specific to the object A
           –    It is possible to add methods to instances!
        a="5"

        def a.mult(x)
           "#{self.to_i*x}"
        znd

        irb(main):096:0* a.mult(10)
        => "50"


●    Where is stored “mult” Method ? In the Singleton class !
    irb(main):103:0> a.singleton_class
    => #<Class:#<String:0x000000018ec7a8>>
    irb(main):104:0> a.singleton_class.ancestors
    => [String, Comparable, Object, Kernel, BasicObject]
    irb(main):105:0> a.singleton_class.superclass
    => String
What are singleton classes ?
●   One instance has its own singleton
●   Those are anonymous and invisible classes, inserted at the
    bottom of the class hierarchy
●   They are used to hold methods that are specific to an instance
                                  Object




                 class            String



         a                         (a)
                singleton_class
Singleton classes of classes: meta-
                   classes
●   Meta-classes: the singleton classes of methods
         –   This is where class methods are stored!
●   Meta-classes magic:
         –   when looking for a class methods ruby search in the
              meta-classes of all the inheritance chain!
         –   This is because meta-classes inheritance scheme is
               parallel to class inheritance scheme
Meta-classes: a diagram


                   Object         Class




             MyParentClass     (MyParentClass)


                  MyClass         (MyClass)


Instance          (Instance)

       .singleton_class
       .superclass
Extending the singleton classes
class Toto
  #instance method of Toto
                                                 # Singleton class can also be 
  def f
                                                 accessed explicitly
  end
                                                 class << Toto
                                                   def h
  #class method of Toto
                                                     return self
  def self.g
                                                   end
  end
                                                 end
end

#class method of Toto
                                                 class Toto
def Toto.g
                                                   class << self
end
                                                     def i1
                                                     end
# ­> def x.g  .... ­> add an instance method to 
                                                     
the singleton class of x !
                                                     def i2
                                                     end
                                                   end
                                                 end
                                                 # i1 and i2 are class methods of 
                                                 Toto !!!
instance_eval/instance_exec
●   instance_eval allow to execute code in the context of an
       instance;
         –   Ruby magic: self represents the instance, but methods
              are added to the singleton class!
     class TestInstanceEval
       def initialize
         @a=5
       end
     end
     b=5

     irb(main):189:0> t.instance_eval "@a"
     => 5
     irb(main):190:0* t.instance_eval "def f; puts @a+#{b};end"
     => nil
     irb(main):191:0> t.f
     10
Mixins
●   Mixins are a way to add properties to an object
●   They are modules referenced by classes
●   Instance methods of the module becomes available to
    instances of the class
●   Include: the module becomes an included module of the Class
         –   the instance methods of an module become instance
               methods of the Class → used to extend classes
●   Extend: the module becomes an included module of the
    singleton of the class → allow to extends objects, add class
    methods to classes ...
Mixins: examples
module AppendModule
  def append(x)
    return LinkedElement.new(x,self)
  end
end

#add append method to LinkedElement and LinkedElementEnd

class LinkedElement
  #add append as instance method of LinkedElement
  include AppendModule
  class LinkedElementEnd
    include AppendModule
  end
end

irb(main):268:0> l = LinkedElement::End.append("z").append("y").append("x")
=> #<LinkedElement:0x00000001d18138 @content="x", 
@link=#<LinkedElement:0x00000001d18188 @content="y", 
@link=#<LinkedElement:0x00000001d181d8 @content="z", 
@link=#<LinkedElement::LinkedElementEnd:0x00000001f04f78>>>>

irb(main):269:0> l.size
=> 3

irb(main):270:0> LinkedElement.included_modules
=> [AppendModule, Kernel]
Any questions?

More Related Content

What's hot

Unit 2-data types,Variables,Operators,Conitionals,loops and arrays
Unit 2-data types,Variables,Operators,Conitionals,loops and arraysUnit 2-data types,Variables,Operators,Conitionals,loops and arrays
Unit 2-data types,Variables,Operators,Conitionals,loops and arrays
DevaKumari Vijay
 
First fare 2011 frc-java-introduction
First fare 2011 frc-java-introductionFirst fare 2011 frc-java-introduction
First fare 2011 frc-java-introduction
Oregon FIRST Robotics
 
Generics in java
Generics in javaGenerics in java
Generics in java
suraj pandey
 
Java Basic day-2
Java Basic day-2Java Basic day-2
Java Basic day-2
Kamlesh Singh
 
Java
JavaJava
Introduction to java
Introduction to javaIntroduction to java
Introduction to java
rishi ram khanal
 
Java: Objects and Object References
Java: Objects and Object ReferencesJava: Objects and Object References
Java: Objects and Object References
Tareq Hasan
 
6 Object Oriented Programming
6 Object Oriented Programming6 Object Oriented Programming
6 Object Oriented Programming
Deepak Hagadur Bheemaraju
 
The ruby programming language
The ruby programming languageThe ruby programming language
The ruby programming language
praveen0202
 
‫Object Oriented Programming_Lecture 3
‫Object Oriented Programming_Lecture 3‫Object Oriented Programming_Lecture 3
‫Object Oriented Programming_Lecture 3
Mahmoud Alfarra
 
Chapter 02: Classes Objects and Methods Java by Tushar B Kute
Chapter 02: Classes Objects and Methods Java by Tushar B KuteChapter 02: Classes Objects and Methods Java by Tushar B Kute
Chapter 02: Classes Objects and Methods Java by Tushar B Kute
Tushar B Kute
 
C# Summer course - Lecture 3
C# Summer course - Lecture 3C# Summer course - Lecture 3
C# Summer course - Lecture 3
mohamedsamyali
 
Class introduction in java
Class introduction in javaClass introduction in java
Class introduction in java
yugandhar vadlamudi
 
Java basics variables
 Java basics   variables Java basics   variables
Java basics variables
JoeReddieMedia
 
Python oop third class
Python oop   third classPython oop   third class
Python oop third class
Aleksander Fabijan
 
‫‫Chapter4 Polymorphism
‫‫Chapter4 Polymorphism‫‫Chapter4 Polymorphism
‫‫Chapter4 Polymorphism
Mahmoud Alfarra
 
Chapter 01 Introduction to Java by Tushar B Kute
Chapter 01 Introduction to Java by Tushar B KuteChapter 01 Introduction to Java by Tushar B Kute
Chapter 01 Introduction to Java by Tushar B Kute
Tushar B Kute
 
NSCoder Swift - An Introduction to Swift
NSCoder Swift - An Introduction to SwiftNSCoder Swift - An Introduction to Swift
NSCoder Swift - An Introduction to Swift
Andreas Blick
 
Object Oriented Programming_Lecture 2
Object Oriented Programming_Lecture 2Object Oriented Programming_Lecture 2
Object Oriented Programming_Lecture 2
Mahmoud Alfarra
 
Java basic
Java basicJava basic
Java basic
Sonam Sharma
 

What's hot (20)

Unit 2-data types,Variables,Operators,Conitionals,loops and arrays
Unit 2-data types,Variables,Operators,Conitionals,loops and arraysUnit 2-data types,Variables,Operators,Conitionals,loops and arrays
Unit 2-data types,Variables,Operators,Conitionals,loops and arrays
 
First fare 2011 frc-java-introduction
First fare 2011 frc-java-introductionFirst fare 2011 frc-java-introduction
First fare 2011 frc-java-introduction
 
Generics in java
Generics in javaGenerics in java
Generics in java
 
Java Basic day-2
Java Basic day-2Java Basic day-2
Java Basic day-2
 
Java
JavaJava
Java
 
Introduction to java
Introduction to javaIntroduction to java
Introduction to java
 
Java: Objects and Object References
Java: Objects and Object ReferencesJava: Objects and Object References
Java: Objects and Object References
 
6 Object Oriented Programming
6 Object Oriented Programming6 Object Oriented Programming
6 Object Oriented Programming
 
The ruby programming language
The ruby programming languageThe ruby programming language
The ruby programming language
 
‫Object Oriented Programming_Lecture 3
‫Object Oriented Programming_Lecture 3‫Object Oriented Programming_Lecture 3
‫Object Oriented Programming_Lecture 3
 
Chapter 02: Classes Objects and Methods Java by Tushar B Kute
Chapter 02: Classes Objects and Methods Java by Tushar B KuteChapter 02: Classes Objects and Methods Java by Tushar B Kute
Chapter 02: Classes Objects and Methods Java by Tushar B Kute
 
C# Summer course - Lecture 3
C# Summer course - Lecture 3C# Summer course - Lecture 3
C# Summer course - Lecture 3
 
Class introduction in java
Class introduction in javaClass introduction in java
Class introduction in java
 
Java basics variables
 Java basics   variables Java basics   variables
Java basics variables
 
Python oop third class
Python oop   third classPython oop   third class
Python oop third class
 
‫‫Chapter4 Polymorphism
‫‫Chapter4 Polymorphism‫‫Chapter4 Polymorphism
‫‫Chapter4 Polymorphism
 
Chapter 01 Introduction to Java by Tushar B Kute
Chapter 01 Introduction to Java by Tushar B KuteChapter 01 Introduction to Java by Tushar B Kute
Chapter 01 Introduction to Java by Tushar B Kute
 
NSCoder Swift - An Introduction to Swift
NSCoder Swift - An Introduction to SwiftNSCoder Swift - An Introduction to Swift
NSCoder Swift - An Introduction to Swift
 
Object Oriented Programming_Lecture 2
Object Oriented Programming_Lecture 2Object Oriented Programming_Lecture 2
Object Oriented Programming_Lecture 2
 
Java basic
Java basicJava basic
Java basic
 

Viewers also liked

Pry at the Ruby Drink-up of Sophia, February 2012
Pry at the Ruby Drink-up of Sophia, February 2012Pry at the Ruby Drink-up of Sophia, February 2012
Pry at the Ruby Drink-up of Sophia, February 2012
rivierarb
 
DRb at the Ruby Drink-up of Sophia, December 2011
DRb at the Ruby Drink-up of Sophia, December 2011DRb at the Ruby Drink-up of Sophia, December 2011
DRb at the Ruby Drink-up of Sophia, December 2011
rivierarb
 
Ruby and Twitter at the Ruby drink-up of Sophia, January 2013
Ruby and Twitter at the Ruby drink-up of Sophia, January 2013Ruby and Twitter at the Ruby drink-up of Sophia, January 2013
Ruby and Twitter at the Ruby drink-up of Sophia, January 2013
rivierarb
 
Piloting processes through std IO at the Ruby Drink-up of Sophia, January 2012
Piloting processes through std IO at the Ruby Drink-up of Sophia, January 2012Piloting processes through std IO at the Ruby Drink-up of Sophia, January 2012
Piloting processes through std IO at the Ruby Drink-up of Sophia, January 2012
rivierarb
 
Ruby 2.0 at the Ruby drink-up of Sophia, February 2013
Ruby 2.0 at the Ruby drink-up of Sophia, February 2013Ruby 2.0 at the Ruby drink-up of Sophia, February 2013
Ruby 2.0 at the Ruby drink-up of Sophia, February 2013
rivierarb
 
Ruby and Docker on Rails
Ruby and Docker on RailsRuby and Docker on Rails
Ruby and Docker on Rails
Muriel Salvan
 
Ruby C extensions at the Ruby drink-up of Sophia, April 2012
Ruby C extensions at the Ruby drink-up of Sophia, April 2012Ruby C extensions at the Ruby drink-up of Sophia, April 2012
Ruby C extensions at the Ruby drink-up of Sophia, April 2012
rivierarb
 
Quines—Programming your way back to where you were
Quines—Programming your way back to where you wereQuines—Programming your way back to where you were
Quines—Programming your way back to where you were
Jean-Baptiste Mazon
 
The Dark Side of Programming Languages
The Dark Side of Programming LanguagesThe Dark Side of Programming Languages
The Dark Side of Programming Languages
Jean-Baptiste Mazon
 
Untitled talk at Riviera.rb
Untitled talk at Riviera.rbUntitled talk at Riviera.rb
Untitled talk at Riviera.rb
Jean-Baptiste Mazon
 

Viewers also liked (10)

Pry at the Ruby Drink-up of Sophia, February 2012
Pry at the Ruby Drink-up of Sophia, February 2012Pry at the Ruby Drink-up of Sophia, February 2012
Pry at the Ruby Drink-up of Sophia, February 2012
 
DRb at the Ruby Drink-up of Sophia, December 2011
DRb at the Ruby Drink-up of Sophia, December 2011DRb at the Ruby Drink-up of Sophia, December 2011
DRb at the Ruby Drink-up of Sophia, December 2011
 
Ruby and Twitter at the Ruby drink-up of Sophia, January 2013
Ruby and Twitter at the Ruby drink-up of Sophia, January 2013Ruby and Twitter at the Ruby drink-up of Sophia, January 2013
Ruby and Twitter at the Ruby drink-up of Sophia, January 2013
 
Piloting processes through std IO at the Ruby Drink-up of Sophia, January 2012
Piloting processes through std IO at the Ruby Drink-up of Sophia, January 2012Piloting processes through std IO at the Ruby Drink-up of Sophia, January 2012
Piloting processes through std IO at the Ruby Drink-up of Sophia, January 2012
 
Ruby 2.0 at the Ruby drink-up of Sophia, February 2013
Ruby 2.0 at the Ruby drink-up of Sophia, February 2013Ruby 2.0 at the Ruby drink-up of Sophia, February 2013
Ruby 2.0 at the Ruby drink-up of Sophia, February 2013
 
Ruby and Docker on Rails
Ruby and Docker on RailsRuby and Docker on Rails
Ruby and Docker on Rails
 
Ruby C extensions at the Ruby drink-up of Sophia, April 2012
Ruby C extensions at the Ruby drink-up of Sophia, April 2012Ruby C extensions at the Ruby drink-up of Sophia, April 2012
Ruby C extensions at the Ruby drink-up of Sophia, April 2012
 
Quines—Programming your way back to where you were
Quines—Programming your way back to where you wereQuines—Programming your way back to where you were
Quines—Programming your way back to where you were
 
The Dark Side of Programming Languages
The Dark Side of Programming LanguagesThe Dark Side of Programming Languages
The Dark Side of Programming Languages
 
Untitled talk at Riviera.rb
Untitled talk at Riviera.rbUntitled talk at Riviera.rb
Untitled talk at Riviera.rb
 

Similar to Ruby object model at the Ruby drink-up of Sophia, January 2013

Presentation 3rd
Presentation 3rdPresentation 3rd
Presentation 3rd
Connex
 
Object Oriented Programming.pptx
Object Oriented Programming.pptxObject Oriented Programming.pptx
Object Oriented Programming.pptx
SAICHARANREDDYN
 
Introduction to Python - Part Three
Introduction to Python - Part ThreeIntroduction to Python - Part Three
Introduction to Python - Part Three
amiable_indian
 
Metaprogramming Primer (Part 1)
Metaprogramming Primer (Part 1)Metaprogramming Primer (Part 1)
Metaprogramming Primer (Part 1)
Christopher Haupt
 
Ruby object model - Understanding of object play role for ruby
Ruby object model - Understanding of object play role for rubyRuby object model - Understanding of object play role for ruby
Ruby object model - Understanding of object play role for ruby
Tushar Pal
 
جلسه هفتم پایتون برای هکر های قانونی دوره مقدماتی پاییز ۹۲
جلسه هفتم پایتون برای هکر های قانونی دوره مقدماتی پاییز ۹۲جلسه هفتم پایتون برای هکر های قانونی دوره مقدماتی پاییز ۹۲
جلسه هفتم پایتون برای هکر های قانونی دوره مقدماتی پاییز ۹۲
Mohammad Reza Kamalifard
 
The Next Generation MOP, Jochen Theodorou, GR8Conf 2013
The Next Generation MOP, Jochen Theodorou, GR8Conf 2013 The Next Generation MOP, Jochen Theodorou, GR8Conf 2013
The Next Generation MOP, Jochen Theodorou, GR8Conf 2013
GR8Conf
 
Active Support Core Extensions (1)
Active Support Core Extensions (1)Active Support Core Extensions (1)
Active Support Core Extensions (1)
RORLAB
 
About Python
About PythonAbout Python
About Python
Shao-Chuan Wang
 
Python classes objects
Python classes objectsPython classes objects
Python advance
Python advancePython advance
Python advance
Mukul Kirti Verma
 
Presentation 4th
Presentation 4thPresentation 4th
Presentation 4th
Connex
 
Python_Unit_2 OOPS.pptx
Python_Unit_2  OOPS.pptxPython_Unit_2  OOPS.pptx
Python_Unit_2 OOPS.pptx
ChhaviCoachingCenter
 
Python3
Python3Python3
Python3
Ruchika Sinha
 
Reusable Ruby • Rt 9 Ruby Group • Jun 2012
Reusable Ruby • Rt 9 Ruby Group • Jun 2012Reusable Ruby • Rt 9 Ruby Group • Jun 2012
Reusable Ruby • Rt 9 Ruby Group • Jun 2012
skinandbones
 
Python - OOP Programming
Python - OOP ProgrammingPython - OOP Programming
Python - OOP Programming
Andrew Ferlitsch
 
PYTHON-Chapter 3-Classes and Object-oriented Programming: MAULIK BORSANIYA
PYTHON-Chapter 3-Classes and Object-oriented Programming: MAULIK BORSANIYAPYTHON-Chapter 3-Classes and Object-oriented Programming: MAULIK BORSANIYA
PYTHON-Chapter 3-Classes and Object-oriented Programming: MAULIK BORSANIYA
Maulik Borsaniya
 
Object oriented programming
Object oriented programmingObject oriented programming
Object oriented programming
MH Abid
 
OOPS.pptx
OOPS.pptxOOPS.pptx
The Dark Art of Rails Plugins (2008)
The Dark Art of Rails Plugins (2008)The Dark Art of Rails Plugins (2008)
The Dark Art of Rails Plugins (2008)
lazyatom
 

Similar to Ruby object model at the Ruby drink-up of Sophia, January 2013 (20)

Presentation 3rd
Presentation 3rdPresentation 3rd
Presentation 3rd
 
Object Oriented Programming.pptx
Object Oriented Programming.pptxObject Oriented Programming.pptx
Object Oriented Programming.pptx
 
Introduction to Python - Part Three
Introduction to Python - Part ThreeIntroduction to Python - Part Three
Introduction to Python - Part Three
 
Metaprogramming Primer (Part 1)
Metaprogramming Primer (Part 1)Metaprogramming Primer (Part 1)
Metaprogramming Primer (Part 1)
 
Ruby object model - Understanding of object play role for ruby
Ruby object model - Understanding of object play role for rubyRuby object model - Understanding of object play role for ruby
Ruby object model - Understanding of object play role for ruby
 
جلسه هفتم پایتون برای هکر های قانونی دوره مقدماتی پاییز ۹۲
جلسه هفتم پایتون برای هکر های قانونی دوره مقدماتی پاییز ۹۲جلسه هفتم پایتون برای هکر های قانونی دوره مقدماتی پاییز ۹۲
جلسه هفتم پایتون برای هکر های قانونی دوره مقدماتی پاییز ۹۲
 
The Next Generation MOP, Jochen Theodorou, GR8Conf 2013
The Next Generation MOP, Jochen Theodorou, GR8Conf 2013 The Next Generation MOP, Jochen Theodorou, GR8Conf 2013
The Next Generation MOP, Jochen Theodorou, GR8Conf 2013
 
Active Support Core Extensions (1)
Active Support Core Extensions (1)Active Support Core Extensions (1)
Active Support Core Extensions (1)
 
About Python
About PythonAbout Python
About Python
 
Python classes objects
Python classes objectsPython classes objects
Python classes objects
 
Python advance
Python advancePython advance
Python advance
 
Presentation 4th
Presentation 4thPresentation 4th
Presentation 4th
 
Python_Unit_2 OOPS.pptx
Python_Unit_2  OOPS.pptxPython_Unit_2  OOPS.pptx
Python_Unit_2 OOPS.pptx
 
Python3
Python3Python3
Python3
 
Reusable Ruby • Rt 9 Ruby Group • Jun 2012
Reusable Ruby • Rt 9 Ruby Group • Jun 2012Reusable Ruby • Rt 9 Ruby Group • Jun 2012
Reusable Ruby • Rt 9 Ruby Group • Jun 2012
 
Python - OOP Programming
Python - OOP ProgrammingPython - OOP Programming
Python - OOP Programming
 
PYTHON-Chapter 3-Classes and Object-oriented Programming: MAULIK BORSANIYA
PYTHON-Chapter 3-Classes and Object-oriented Programming: MAULIK BORSANIYAPYTHON-Chapter 3-Classes and Object-oriented Programming: MAULIK BORSANIYA
PYTHON-Chapter 3-Classes and Object-oriented Programming: MAULIK BORSANIYA
 
Object oriented programming
Object oriented programmingObject oriented programming
Object oriented programming
 
OOPS.pptx
OOPS.pptxOOPS.pptx
OOPS.pptx
 
The Dark Art of Rails Plugins (2008)
The Dark Art of Rails Plugins (2008)The Dark Art of Rails Plugins (2008)
The Dark Art of Rails Plugins (2008)
 

Recently uploaded

Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
Zilliz
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
ssuserfac0301
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
Zilliz
 
Webinar: Designing a schema for a Data Warehouse
Webinar: Designing a schema for a Data WarehouseWebinar: Designing a schema for a Data Warehouse
Webinar: Designing a schema for a Data Warehouse
Federico Razzoli
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
panagenda
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
danishmna97
 
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Speck&Tech
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
panagenda
 
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development ProvidersYour One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
akankshawande
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
Zilliz
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
MichaelKnudsen27
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Malak Abu Hammad
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
Jason Packer
 
WeTestAthens: Postman's AI & Automation Techniques
WeTestAthens: Postman's AI & Automation TechniquesWeTestAthens: Postman's AI & Automation Techniques
WeTestAthens: Postman's AI & Automation Techniques
Postman
 
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
IndexBug
 
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
saastr
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
Daiki Mogmet Ito
 
OpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - AuthorizationOpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - Authorization
David Brossard
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
Tomaz Bratanic
 

Recently uploaded (20)

Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
 
Webinar: Designing a schema for a Data Warehouse
Webinar: Designing a schema for a Data WarehouseWebinar: Designing a schema for a Data Warehouse
Webinar: Designing a schema for a Data Warehouse
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
 
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
 
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development ProvidersYour One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
 
WeTestAthens: Postman's AI & Automation Techniques
WeTestAthens: Postman's AI & Automation TechniquesWeTestAthens: Postman's AI & Automation Techniques
WeTestAthens: Postman's AI & Automation Techniques
 
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
 
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
 
OpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - AuthorizationOpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - Authorization
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
 

Ruby object model at the Ruby drink-up of Sophia, January 2013