SlideShare ist ein Scribd-Unternehmen logo
1 von 30
Learn Ruby 2011
     Session 4
Our Sponsors
Flatsourcing, iSeatz, Koda, and Launchpad
Objects, Oh My
Objects, Attributes, Inheritance & More
Questions
Having any problems? Discover anything cool?
Classes

• Classes are the blueprints of Objects
• Classes define the way an Object keeps
  state, what it’s value is
• Classes define the way an Object behaves,
  what methods it provides
Classes & Attributes

class BookInStock
  def initialize(isbn, price)
    @isbn = isbn
    @price = Float(price)
  end
end
Classes & Attributes


book = BookInStock.new(“1234”, 3.00)
p book

#<BookInStock:... @isbn=”1234”, @price=3.00>
Classes & Attributes

class BookInStock
  def initialize(isbn, price)
    @isbn = isbn
    @price = Float(price)
  end
  def to_s
    “ISBN: #{@isbn}, price: #{@price}”
  end
end
Classes & Attributes


book = BookInStock.new(“1234”, 3.00)
puts book

ISBN: 1234, price: 3.00
Classes & Attributes

class BookInStock
  attr_reader :isbn, :price

  def initialize(isbn, price)
    @isbn = isbn
    @price = Float(price)
  end
end
Classes & Attributes


book = BookInStock.new(“1234”, 3.00)
puts “ISBN: #{book.isbn}, price: #{book.price}”

ISBN: 1234, price: 3.00
Classes & Attributes

class BookInStock
  attr_reader :isbn
  attr_accessor :price

  def initialize(isbn, price)
    @isbn = isbn
    @price = Float(price)
  end
end
Classes & Attributes

book = BookInStock.new(“1234”, 3.00)
puts “ISBN: #{book.isbn}, price: #{book.price}”

ISBN: 1234, price: 3.00

book.price = 4.00
puts “ISBN: #{book.isbn}, price: #{book.price}”

ISBN: 1234, price: 4.00
Classes & Attributes
class BookInStock
  attr_reader :isbn
  #attr_accessor :price
  attr_reader :price
  attr_writer :price

  def initialize(isbn, price)
    @isbn = isbn
    @price = Float(price)
  end
end
Classes & Attributes
class BookInStock
  attr_reader :isbn, :price

  def initialize(isbn, price)
    @isbn = isbn
    @price = Float(price)
  end

  def price=(new_price)
    @price = Float(new_price)
  end
end
Classes & Attributes
class BookInStock
  def initialize(isbn, price)
    #...
    @@count += 1
  end

  #...

  def self.count
    @@count
  end
end
Classes & Attributes

book1 = BookInStock.new(“1234”, 3.00)
puts BookInStock.count

1

book2 = BookInStock.new(“1235”, 5.19)
book3 = BookInStock.new(“1236”, 4.00)
puts BookInStock.count

3
Access Control

• Public methods (the default) can be called by
  anyone in any context
• Protected methods can only be called by the
  Class that defines them or its Subclasses
• Private methods can only be called by the
  within the Class that defines them
Access Control

class BookInStock
  #...

private
  #...
protected
  #...
public
  #...
end
Access Control

class BookInStock
  #...

  private :method1
  protected :method2, :method3
  public :method4
end
Inheritance


• Inheritance allows a Subclass to inherit the
  behavior of it’s parent Class
• Ruby is a single-inheritance language
Inheritance

class BookOnSale < BookInStock
end

book = BookOnSale.new(“12349”, 1.00)
puts book
puts book.class

ISBN: 12349, price: 1.00
BookOnSale
Modules


• Modules provide an additional means of
  encapsulation
• Modules facilitate Mixins.
Modules
module Trig
  PI = 3.141592654

  def Trig.sin(x)
    #...
  end

  def Trig.cos(x)
    #...
  end
end

y = Trig.sin(Trig::PI/4)
Mixins

• Mixins overcome the limitations of single-
  inheritance
• Mixins allow behavior to be added to a class
  within requiring inheritance
Mixins
module OnSale
  def on_sale?
    true
  end
end

class BookOnSale < BookInStock
  include OnSale
end

b = BookOnSale.new(“12340”, 1.00)
puts “Price $#{b.price}!” unless b.on_sale?
puts “ONLY $#{b.price}!” if b.on_sale?

ONLY $1.00!
Reviewing

• Classes & Attributes
• Access Control
• Inheritance
• Modules
• Mixins
For Next Week
For the New to Programming

•   Read Chapters 9, 10, 11, 12 & 13 in LtP

•   Complete exercises for each chapter
For Everyone

•   Read Chapter 3, 4, 5 & 6 in PR1.9

•   Work through Ruby Koans: about_classes,
    about_open_classes, about_inheritance,
    about_modules
Next Week


• More about Blocks and Iterators
• Handling Errors
Exercises

• Work on specific Ruby Koans:
 • ruby about_classes.rb
 • ruby about_open_classes.rb
 • ruby about_inheritance.rb
 • ruby about_modules.rb

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (15)

OOP in PHP
OOP in PHPOOP in PHP
OOP in PHP
 
javascript
javascript javascript
javascript
 
JRuby e DSL
JRuby e DSLJRuby e DSL
JRuby e DSL
 
JavaScript - Chapter 8 - Objects
 JavaScript - Chapter 8 - Objects JavaScript - Chapter 8 - Objects
JavaScript - Chapter 8 - Objects
 
JavaScript Fundamentals & JQuery
JavaScript Fundamentals & JQueryJavaScript Fundamentals & JQuery
JavaScript Fundamentals & JQuery
 
Elm dev front-end
Elm   dev front-endElm   dev front-end
Elm dev front-end
 
Advanced Reflection in Pharo
Advanced Reflection in PharoAdvanced Reflection in Pharo
Advanced Reflection in Pharo
 
Object Oriented JavaScript - II
Object Oriented JavaScript - IIObject Oriented JavaScript - II
Object Oriented JavaScript - II
 
OOP in JavaScript
OOP in JavaScriptOOP in JavaScript
OOP in JavaScript
 
Class 7 - PHP Object Oriented Programming
Class 7 - PHP Object Oriented ProgrammingClass 7 - PHP Object Oriented Programming
Class 7 - PHP Object Oriented Programming
 
Javascript Basics by Bonny
Javascript Basics by BonnyJavascript Basics by Bonny
Javascript Basics by Bonny
 
04 inheritance
04 inheritance04 inheritance
04 inheritance
 
Php Oop
Php OopPhp Oop
Php Oop
 
Inheritance in C++
Inheritance in C++Inheritance in C++
Inheritance in C++
 
Xml dom & sax by bhavsingh maloth
Xml dom & sax by bhavsingh malothXml dom & sax by bhavsingh maloth
Xml dom & sax by bhavsingh maloth
 

Andere mochten auch

Ects 637, session seven, integration of global perspectives for marketing and...
Ects 637, session seven, integration of global perspectives for marketing and...Ects 637, session seven, integration of global perspectives for marketing and...
Ects 637, session seven, integration of global perspectives for marketing and...Resort Opportunities(tm)
 
Katanas Japonesas[1]
Katanas Japonesas[1]Katanas Japonesas[1]
Katanas Japonesas[1]edgar
 
WCOM School Board Presentastion
WCOM School Board PresentastionWCOM School Board Presentastion
WCOM School Board PresentastionMenache
 
Supremo Autobiography
Supremo AutobiographySupremo Autobiography
Supremo Autobiographyerikasupremo
 
FT Investing In Turkey | Alan Greenhalgh
FT Investing In Turkey | Alan GreenhalghFT Investing In Turkey | Alan Greenhalgh
FT Investing In Turkey | Alan GreenhalghShinesquad
 
Skil storm testing at the speed of business 2
Skil storm testing at the speed of business 2Skil storm testing at the speed of business 2
Skil storm testing at the speed of business 2Glen Noesen
 
Effective Pair Programming
Effective Pair ProgrammingEffective Pair Programming
Effective Pair ProgrammingJames Thompson
 
501, LP2 demonstration discovery - serps breakdown, saxe
501, LP2 demonstration   discovery - serps breakdown, saxe501, LP2 demonstration   discovery - serps breakdown, saxe
501, LP2 demonstration discovery - serps breakdown, saxeResort Opportunities(tm)
 
Learn Ruby 2011 - Session 1
Learn Ruby 2011 - Session 1Learn Ruby 2011 - Session 1
Learn Ruby 2011 - Session 1James Thompson
 
A New Paradigm In Linux Debug From Viosoft Corporation
A New Paradigm In Linux Debug From Viosoft CorporationA New Paradigm In Linux Debug From Viosoft Corporation
A New Paradigm In Linux Debug From Viosoft Corporationart_lee
 
Representing Uncertainty in Situation Maps for Disaster Management
Representing Uncertainty in Situation Maps for Disaster ManagementRepresenting Uncertainty in Situation Maps for Disaster Management
Representing Uncertainty in Situation Maps for Disaster Managementhje
 
Prc Compassion La Intro
Prc Compassion La IntroPrc Compassion La Intro
Prc Compassion La IntroTim Grant
 
The Dancer voor een Gezonde Organisatie
The Dancer voor een Gezonde OrganisatieThe Dancer voor een Gezonde Organisatie
The Dancer voor een Gezonde Organisatiethedancercoaching
 

Andere mochten auch (20)

Group7
Group7Group7
Group7
 
Ects 637, session seven, integration of global perspectives for marketing and...
Ects 637, session seven, integration of global perspectives for marketing and...Ects 637, session seven, integration of global perspectives for marketing and...
Ects 637, session seven, integration of global perspectives for marketing and...
 
Digital Natives
Digital NativesDigital Natives
Digital Natives
 
Katanas Japonesas[1]
Katanas Japonesas[1]Katanas Japonesas[1]
Katanas Japonesas[1]
 
WCOM School Board Presentastion
WCOM School Board PresentastionWCOM School Board Presentastion
WCOM School Board Presentastion
 
Supremo Autobiography
Supremo AutobiographySupremo Autobiography
Supremo Autobiography
 
FT Investing In Turkey | Alan Greenhalgh
FT Investing In Turkey | Alan GreenhalghFT Investing In Turkey | Alan Greenhalgh
FT Investing In Turkey | Alan Greenhalgh
 
Skil storm testing at the speed of business 2
Skil storm testing at the speed of business 2Skil storm testing at the speed of business 2
Skil storm testing at the speed of business 2
 
Thousand Islands
Thousand IslandsThousand Islands
Thousand Islands
 
Effective Pair Programming
Effective Pair ProgrammingEffective Pair Programming
Effective Pair Programming
 
Octubre
OctubreOctubre
Octubre
 
Programme guide en
Programme guide enProgramme guide en
Programme guide en
 
501, LP2 demonstration discovery - serps breakdown, saxe
501, LP2 demonstration   discovery - serps breakdown, saxe501, LP2 demonstration   discovery - serps breakdown, saxe
501, LP2 demonstration discovery - serps breakdown, saxe
 
Learn Ruby 2011 - Session 1
Learn Ruby 2011 - Session 1Learn Ruby 2011 - Session 1
Learn Ruby 2011 - Session 1
 
Richard Sykula
Richard SykulaRichard Sykula
Richard Sykula
 
A New Paradigm In Linux Debug From Viosoft Corporation
A New Paradigm In Linux Debug From Viosoft CorporationA New Paradigm In Linux Debug From Viosoft Corporation
A New Paradigm In Linux Debug From Viosoft Corporation
 
Representing Uncertainty in Situation Maps for Disaster Management
Representing Uncertainty in Situation Maps for Disaster ManagementRepresenting Uncertainty in Situation Maps for Disaster Management
Representing Uncertainty in Situation Maps for Disaster Management
 
Prc Compassion La Intro
Prc Compassion La IntroPrc Compassion La Intro
Prc Compassion La Intro
 
Relationship Building
Relationship BuildingRelationship Building
Relationship Building
 
The Dancer voor een Gezonde Organisatie
The Dancer voor een Gezonde OrganisatieThe Dancer voor een Gezonde Organisatie
The Dancer voor een Gezonde Organisatie
 

Ähnlich wie Learn Ruby 2011 - Session 4 - Objects, Oh My!

Ruby — An introduction
Ruby — An introductionRuby — An introduction
Ruby — An introductionGonçalo Silva
 
Object-Oriented Programming with PHP (part 1)
Object-Oriented Programming with PHP (part 1)Object-Oriented Programming with PHP (part 1)
Object-Oriented Programming with PHP (part 1)Bozhidar Boshnakov
 
Object Oriented Programming.pptx
Object Oriented Programming.pptxObject Oriented Programming.pptx
Object Oriented Programming.pptxSAICHARANREDDYN
 
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 rubyTushar Pal
 
Introduction to Ruby Programming Language
Introduction to Ruby Programming LanguageIntroduction to Ruby Programming Language
Introduction to Ruby Programming LanguageNicolò Calcavecchia
 
A peek into Python's Metaclass and Bytecode from a Smalltalk User
A peek into Python's Metaclass and Bytecode from a Smalltalk UserA peek into Python's Metaclass and Bytecode from a Smalltalk User
A peek into Python's Metaclass and Bytecode from a Smalltalk UserKoan-Sin Tan
 
Metaprogramming Primer (Part 1)
Metaprogramming Primer (Part 1)Metaprogramming Primer (Part 1)
Metaprogramming Primer (Part 1)Christopher Haupt
 
From Ruby to Scala
From Ruby to ScalaFrom Ruby to Scala
From Ruby to Scalatod esking
 
Is2215 lecture2 student(2)
Is2215 lecture2 student(2)Is2215 lecture2 student(2)
Is2215 lecture2 student(2)dannygriff1
 
Model Manipulation Using Embedded DSLs in Scala
Model Manipulation Using Embedded DSLs in ScalaModel Manipulation Using Embedded DSLs in Scala
Model Manipulation Using Embedded DSLs in ScalaFilip Krikava
 
Advanced Reflection in Pharo
Advanced Reflection in PharoAdvanced Reflection in Pharo
Advanced Reflection in PharoPharo
 
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
 
ITFT-Classes and object in java
ITFT-Classes and object in javaITFT-Classes and object in java
ITFT-Classes and object in javaAtul Sehdev
 
Rapid Application Development using Ruby on Rails
Rapid Application Development using Ruby on RailsRapid Application Development using Ruby on Rails
Rapid Application Development using Ruby on RailsSimobo
 

Ähnlich wie Learn Ruby 2011 - Session 4 - Objects, Oh My! (20)

Ruby — An introduction
Ruby — An introductionRuby — An introduction
Ruby — An introduction
 
Object-Oriented Programming with PHP (part 1)
Object-Oriented Programming with PHP (part 1)Object-Oriented Programming with PHP (part 1)
Object-Oriented Programming with PHP (part 1)
 
Object Oriented Programming.pptx
Object Oriented Programming.pptxObject Oriented Programming.pptx
Object Oriented Programming.pptx
 
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
 
Introduction to Ruby Programming Language
Introduction to Ruby Programming LanguageIntroduction to Ruby Programming Language
Introduction to Ruby Programming Language
 
About Python
About PythonAbout Python
About Python
 
A peek into Python's Metaclass and Bytecode from a Smalltalk User
A peek into Python's Metaclass and Bytecode from a Smalltalk UserA peek into Python's Metaclass and Bytecode from a Smalltalk User
A peek into Python's Metaclass and Bytecode from a Smalltalk User
 
Metaprogramming Primer (Part 1)
Metaprogramming Primer (Part 1)Metaprogramming Primer (Part 1)
Metaprogramming Primer (Part 1)
 
Java
JavaJava
Java
 
Lecture 1 - Objects and classes
Lecture 1 - Objects and classesLecture 1 - Objects and classes
Lecture 1 - Objects and classes
 
From Ruby to Scala
From Ruby to ScalaFrom Ruby to Scala
From Ruby to Scala
 
Is2215 lecture2 student(2)
Is2215 lecture2 student(2)Is2215 lecture2 student(2)
Is2215 lecture2 student(2)
 
Model Manipulation Using Embedded DSLs in Scala
Model Manipulation Using Embedded DSLs in ScalaModel Manipulation Using Embedded DSLs in Scala
Model Manipulation Using Embedded DSLs in Scala
 
Advanced Reflection in Pharo
Advanced Reflection in PharoAdvanced Reflection in Pharo
Advanced Reflection in Pharo
 
6 Object Oriented Programming
6 Object Oriented Programming6 Object Oriented Programming
6 Object Oriented Programming
 
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)
 
Ruby objects
Ruby objectsRuby objects
Ruby objects
 
ITFT-Classes and object in java
ITFT-Classes and object in javaITFT-Classes and object in java
ITFT-Classes and object in java
 
Introduction to Swift 2
Introduction to Swift 2Introduction to Swift 2
Introduction to Swift 2
 
Rapid Application Development using Ruby on Rails
Rapid Application Development using Ruby on RailsRapid Application Development using Ruby on Rails
Rapid Application Development using Ruby on Rails
 

Mehr von James Thompson

Interfaces Not Required — RubyHACK 2018
Interfaces Not Required — RubyHACK 2018Interfaces Not Required — RubyHACK 2018
Interfaces Not Required — RubyHACK 2018James Thompson
 
Bounded Contexts for Legacy Code
Bounded Contexts for Legacy CodeBounded Contexts for Legacy Code
Bounded Contexts for Legacy CodeJames Thompson
 
Beyond Accidental Arcitecture
Beyond Accidental ArcitectureBeyond Accidental Arcitecture
Beyond Accidental ArcitectureJames Thompson
 
Wrapping an api with a ruby gem
Wrapping an api with a ruby gemWrapping an api with a ruby gem
Wrapping an api with a ruby gemJames Thompson
 
Microservices for the Monolith
Microservices for the MonolithMicroservices for the Monolith
Microservices for the MonolithJames Thompson
 
Learn Ruby 2011 - Session 5 - Looking for a Rescue
Learn Ruby 2011 - Session 5 - Looking for a RescueLearn Ruby 2011 - Session 5 - Looking for a Rescue
Learn Ruby 2011 - Session 5 - Looking for a RescueJames Thompson
 
Learn Ruby 2011 - Session 3
Learn Ruby 2011 - Session 3Learn Ruby 2011 - Session 3
Learn Ruby 2011 - Session 3James Thompson
 
Learn Ruby 2011 - Session 2
Learn Ruby 2011 - Session 2Learn Ruby 2011 - Session 2
Learn Ruby 2011 - Session 2James Thompson
 
Rails: Scaling Edition - Getting on Rails 3
Rails: Scaling Edition - Getting on Rails 3Rails: Scaling Edition - Getting on Rails 3
Rails: Scaling Edition - Getting on Rails 3James Thompson
 
Ruby For Web Development
Ruby For Web DevelopmentRuby For Web Development
Ruby For Web DevelopmentJames Thompson
 
Ruby Testing: Cucumber and RSpec
Ruby Testing: Cucumber and RSpecRuby Testing: Cucumber and RSpec
Ruby Testing: Cucumber and RSpecJames Thompson
 

Mehr von James Thompson (13)

Interfaces Not Required — RubyHACK 2018
Interfaces Not Required — RubyHACK 2018Interfaces Not Required — RubyHACK 2018
Interfaces Not Required — RubyHACK 2018
 
Bounded Contexts for Legacy Code
Bounded Contexts for Legacy CodeBounded Contexts for Legacy Code
Bounded Contexts for Legacy Code
 
Beyond Accidental Arcitecture
Beyond Accidental ArcitectureBeyond Accidental Arcitecture
Beyond Accidental Arcitecture
 
Wrapping an api with a ruby gem
Wrapping an api with a ruby gemWrapping an api with a ruby gem
Wrapping an api with a ruby gem
 
Microservices for the Monolith
Microservices for the MonolithMicroservices for the Monolith
Microservices for the Monolith
 
Mocking & Stubbing
Mocking & StubbingMocking & Stubbing
Mocking & Stubbing
 
Learn Ruby 2011 - Session 5 - Looking for a Rescue
Learn Ruby 2011 - Session 5 - Looking for a RescueLearn Ruby 2011 - Session 5 - Looking for a Rescue
Learn Ruby 2011 - Session 5 - Looking for a Rescue
 
Learn Ruby 2011 - Session 3
Learn Ruby 2011 - Session 3Learn Ruby 2011 - Session 3
Learn Ruby 2011 - Session 3
 
Learn Ruby 2011 - Session 2
Learn Ruby 2011 - Session 2Learn Ruby 2011 - Session 2
Learn Ruby 2011 - Session 2
 
Rails: Scaling Edition - Getting on Rails 3
Rails: Scaling Edition - Getting on Rails 3Rails: Scaling Edition - Getting on Rails 3
Rails: Scaling Edition - Getting on Rails 3
 
Ruby For Web Development
Ruby For Web DevelopmentRuby For Web Development
Ruby For Web Development
 
Ruby Testing: Cucumber and RSpec
Ruby Testing: Cucumber and RSpecRuby Testing: Cucumber and RSpec
Ruby Testing: Cucumber and RSpec
 
Introducing Ruby
Introducing RubyIntroducing Ruby
Introducing Ruby
 

Kürzlich hochgeladen

TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Visualising and forecasting stocks using Dash
Visualising and forecasting stocks using DashVisualising and forecasting stocks using Dash
Visualising and forecasting stocks using Dashnarutouzumaki53779
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????blackmambaettijean
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 

Kürzlich hochgeladen (20)

TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Visualising and forecasting stocks using Dash
Visualising and forecasting stocks using DashVisualising and forecasting stocks using Dash
Visualising and forecasting stocks using Dash
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 

Learn Ruby 2011 - Session 4 - Objects, Oh My!

  • 1. Learn Ruby 2011 Session 4
  • 3. Objects, Oh My Objects, Attributes, Inheritance & More
  • 4. Questions Having any problems? Discover anything cool?
  • 5. Classes • Classes are the blueprints of Objects • Classes define the way an Object keeps state, what it’s value is • Classes define the way an Object behaves, what methods it provides
  • 6. Classes & Attributes class BookInStock def initialize(isbn, price) @isbn = isbn @price = Float(price) end end
  • 7. Classes & Attributes book = BookInStock.new(“1234”, 3.00) p book #<BookInStock:... @isbn=”1234”, @price=3.00>
  • 8. Classes & Attributes class BookInStock def initialize(isbn, price) @isbn = isbn @price = Float(price) end def to_s “ISBN: #{@isbn}, price: #{@price}” end end
  • 9. Classes & Attributes book = BookInStock.new(“1234”, 3.00) puts book ISBN: 1234, price: 3.00
  • 10. Classes & Attributes class BookInStock attr_reader :isbn, :price def initialize(isbn, price) @isbn = isbn @price = Float(price) end end
  • 11. Classes & Attributes book = BookInStock.new(“1234”, 3.00) puts “ISBN: #{book.isbn}, price: #{book.price}” ISBN: 1234, price: 3.00
  • 12. Classes & Attributes class BookInStock attr_reader :isbn attr_accessor :price def initialize(isbn, price) @isbn = isbn @price = Float(price) end end
  • 13. Classes & Attributes book = BookInStock.new(“1234”, 3.00) puts “ISBN: #{book.isbn}, price: #{book.price}” ISBN: 1234, price: 3.00 book.price = 4.00 puts “ISBN: #{book.isbn}, price: #{book.price}” ISBN: 1234, price: 4.00
  • 14. Classes & Attributes class BookInStock attr_reader :isbn #attr_accessor :price attr_reader :price attr_writer :price def initialize(isbn, price) @isbn = isbn @price = Float(price) end end
  • 15. Classes & Attributes class BookInStock attr_reader :isbn, :price def initialize(isbn, price) @isbn = isbn @price = Float(price) end def price=(new_price) @price = Float(new_price) end end
  • 16. Classes & Attributes class BookInStock def initialize(isbn, price) #... @@count += 1 end #... def self.count @@count end end
  • 17. Classes & Attributes book1 = BookInStock.new(“1234”, 3.00) puts BookInStock.count 1 book2 = BookInStock.new(“1235”, 5.19) book3 = BookInStock.new(“1236”, 4.00) puts BookInStock.count 3
  • 18. Access Control • Public methods (the default) can be called by anyone in any context • Protected methods can only be called by the Class that defines them or its Subclasses • Private methods can only be called by the within the Class that defines them
  • 19. Access Control class BookInStock #... private #... protected #... public #... end
  • 20. Access Control class BookInStock #... private :method1 protected :method2, :method3 public :method4 end
  • 21. Inheritance • Inheritance allows a Subclass to inherit the behavior of it’s parent Class • Ruby is a single-inheritance language
  • 22. Inheritance class BookOnSale < BookInStock end book = BookOnSale.new(“12349”, 1.00) puts book puts book.class ISBN: 12349, price: 1.00 BookOnSale
  • 23. Modules • Modules provide an additional means of encapsulation • Modules facilitate Mixins.
  • 24. Modules module Trig PI = 3.141592654 def Trig.sin(x) #... end def Trig.cos(x) #... end end y = Trig.sin(Trig::PI/4)
  • 25. Mixins • Mixins overcome the limitations of single- inheritance • Mixins allow behavior to be added to a class within requiring inheritance
  • 26. Mixins module OnSale def on_sale? true end end class BookOnSale < BookInStock include OnSale end b = BookOnSale.new(“12340”, 1.00) puts “Price $#{b.price}!” unless b.on_sale? puts “ONLY $#{b.price}!” if b.on_sale? ONLY $1.00!
  • 27. Reviewing • Classes & Attributes • Access Control • Inheritance • Modules • Mixins
  • 28. For Next Week For the New to Programming • Read Chapters 9, 10, 11, 12 & 13 in LtP • Complete exercises for each chapter For Everyone • Read Chapter 3, 4, 5 & 6 in PR1.9 • Work through Ruby Koans: about_classes, about_open_classes, about_inheritance, about_modules
  • 29. Next Week • More about Blocks and Iterators • Handling Errors
  • 30. Exercises • Work on specific Ruby Koans: • ruby about_classes.rb • ruby about_open_classes.rb • ruby about_inheritance.rb • ruby about_modules.rb

Hinweis der Redaktion

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n