SlideShare a Scribd company logo
4
Most read
5
Most read
6
Most read
Ruby
Programming Language
Introduction
28 Jun 2015
Kwangshin Oh
kwangshin@gmail.com
http://kwangshin.pe.kr
Seven Languages in Seven Weeks
A Pragmatic
Guide to
Learning
Programming
Languages
By Bruce A. Tate
Why New Programming Language?
“Learning a new programming language will show you
new ways of thinking, and new approaches to problem solving
that will help you be a better programmer in any language.”
- Pragmatic Bookshelf
“Ultimately, programming is about understanding, and
understanding is about ideas. So, exposure to new ideas is essential
to a deeper understanding of what programming is all about.”
- Foreword By Joe Armstrong, creator of Erlang
Agenda
 Ruby is…
 History & Why?
 With a Spoonful of Sugar
 So, Ruby is…
 Ruby: Interpreted Language
 Ruby: Interpreted Language – Example
 Compare: Compiled Language - Java
 Ruby: Object-Oriented Language
 Ruby: Pure Object-Oriented Language
 Ruby: Dynamically Typed Language
 What is Duck Typing?
 Ruby: Duck Typing Code Example
 Download & Installation
 Ruby Code
 Reference
Ruby is…
 Programming Language!
Dynamic
Open Source
 Focus on…
Simplicity
Productivity
 Has an elegant syntax
Natural to read
Easy to write
Image Source: Ruby Programming Language
History & Why?
 Ruby’s Creator
Yukihiro “Matz” Matsumoto
 Created in about 1993
 Motivation
The primary motivation was to amuse himself!
Just a hobby at the beginning
New object-oriented language that combines
characteristics from Lisp, Smalltalk and Perl
To enhance programmers’ productivity
“Ruby is simple in appearance, but is very complex inside, just like our human body.”
- Matz, speaking on the Ruby-Talk mailing list, May 12th, 2000.
Image Source: Ruby Everywhere
With a Spoonful of Sugar
 Ruby with more syntactic sugar
Makes code easier to read and write
 Focus on the efficiency of the
programmers
“A spoonful of sugar makes the medicine go down.”
Mary Poppins
Image Source: Disney Wiki – A Spoonful of Sugar
So, Ruby is…
 Interpreted Language
Ruby code is executed by an interpreter
 Object-Oriented Language
Encapsulation
Inheritance
Polymorphism
 Dynamically Typed Language
Types are bound at execution time
Image Source: Skillcrush - Ruby
Interactive
Console
Ruby File
(*.rb)
Ruby: Interpreted Language
Image Source: http://www.iconsdb.com, http://dryicons.com and http://findicons.com
Ruby
Interpreter
Interactive
Console
Ruby File
(Ha.rb)
Ruby: Interpreted Language - Example
D:Ruby22bin>type Ha.rb
3.Times do
print “Ha “
end
D:Ruby22bin>ruby Ha.rb
Ha Ha Ha
D:Ruby22bin>
D:Ruby22bin>ruby
3.Times do
print “Ha “
end
^D
Ha Ha Ha
D:Ruby22bin>
Compare: Compiled Language - Java
Java Source File
(*.java)
Java
Compiler
Java Class File
(*.class)
JRE
(Java Runtime Environment)
Ruby: Object-Oriented Language
 Encapsulation
[State & Behavior] : Packaged together
 Inheritance
[Class Tree] : Object types are organized
 Polymorphism
[Many Forms]
: Objects can be shown
Image Source: What Is an Object?
Image Source: What Is Inheritance?Image Source: Object-Oriented Concepts
Ruby: Pure Object-Oriented Language
 Ruby Programming Language
Everything is an object!
 Compare: Java Programming Language
Primitive types (int, char, ……) are not objects!
D:Ruby22bin>irb
irb(main):001:0> 4
=> 4
irb(main):002:0> 4.class
=> Fixnum
irb(main):003:0> 4 + 4
=> 8
irb(main):004:0> 4.methods
=> [:to_s, :inspect, :-
@, :+, ∙∙∙∙∙∙, :__id__]
irb(main):005:0>
Ruby: Dynamically Typed Language
Types are bound
at execution time
Flexibility
Execution Safety
 Types are bound
at compile time
 Flexibility
 Execution Safety
Dynamically Typed
Statically Typed
Java
What is Duck Typing?
Quacks
like a duck
Swims
like a duck
Walks
like a duck
Call it
a duck
“When I see a bird that walks like a duck and
swims like a duck and quacks like a duck,
I call that bird a duck.” - James Whitcomb Riley
Image Source: https://www.iconfinder.com and http://www.vectors4all.net/
Ruby: Duck Typing Code Example
D:Ruby22bin>irb
irb(main):001:0> i = 0
=> 0
irb(main):002:0> a = ['100', 100.0]
=> ["100", 100.0]
irb(main):003:0> while i < 2
irb(main):004:1> puts a[i].to_i
irb(main):005:1> i = i + 1
irb(main):006:1> end
100
100
=> nil
irb(main):007:0>
We consider this to_i method as quack!
Duck typing doesn’t care
what the underlying type might be
(whether string or float).
string
float
Download & Installation
 Current Stable Version
 Ruby 2.2.2 (As of 28 Jun 2015)
 Windows
 RubyInstaller - http://rubyinstaller.org/downloads/
 OS X
 Homebrew - http://brew.sh/
 Debian GNU/Linux and Ubuntu
 apt – command : $ sudo apt-get install ruby-full
 CentOS, Fedora, and RHEL
 yum – command :$ sudo yum install ruby
Ruby: Sample Code
D:Ruby22bin>ruby
properties = ['object oriented', 'duck typed', 'productive', 'fun']
properties.each {|property| puts "Ruby is #{property}."}
^D
Ruby is object oriented.
Ruby is duck typed.
Ruby is productive.
Ruby is fun.
D:Ruby22bin>
Ruby Code: Hello World!
D:Ruby22bin>irb
irb(main):001:0> puts 'Hello World!'
Hello World!
=> nil
irb(main):002:0> language = 'Ruby'
=> "Ruby"
irb(main):003:0> puts "Hello, #{language}"
Hello, Ruby
=> nil
irb(main):004:0> language = 'my Ruby'
=> "my Ruby"
irb(main):005:0> puts "Hello, #{language}"
Hello, my Ruby
=> nil
irb(main):006:0>
Ruby’s Interactive Console
<One Quote String>
Interpreted Literally
<Two Quotes String>
String Evaluation
Ruby Code: Comparison Operators
D:Ruby22bin>irb
irb(main):001:0> x = 4
=> 4
irb(main):002:0> x < 5
=> true
irb(main):003:0> x > 4
=> false
irb(main):004:0> false.class
=> FalseClass
irb(main):005:0> true.class
=> TrueClass
irb(main):006:0> puts 'X value is equal to 4.' if x == 4
X value is equal to 4.
=> nil
irb(main):007:0>
Everything is an object
in Ruby!
Ruby Code: Loops – until & while
D:Ruby22bin>irb
irb(main):001:0> x = 5
=> 5
irb(main):002:0> x = x - 1 until x == 1
=> nil
irb(main):003:0> x
=> 1
irb(main):004:0> while x < 5
irb(main):005:1> x = x + 1
irb(main):006:1> puts x
irb(main):007:1> end
2
3
4
5
=> nil
Ruby Code: Expressions - true & false
D:Ruby22bin>irb
irb(main):001:0> puts '1 is true in Ruby' if 1
1 is true in Ruby
=> nil
irb(main):002:0> puts 'String is true in Ruby' if 'Kwangshin Oh'
(irb):2: warning: string literal in condition
String is true in Ruby
=> nil
irb(main):003:0> puts '0 is also true in Ruby' if 0
0 is also true in Ruby
=> nil
irb(main):004:0> puts 'The false is false in Ruby' if false
=> nil
irb(main):005:0> puts 'The nil is false in Ruby' if nil
=> nil
irb(main):006:0>
Everything
( but nil and false )
evaluate to true!
Reference
 Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Language
by Bruce A. Tate
 https://pragprog.com/book/btlang/seven-languages-in-seven-weeks
 Ruby Programming Language
 https://www.ruby-lang.org/
 Ruby-Talk mailing list, May 12th, 2000
 http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/2773
 Disney Wiki – A Spoonful of Sugar
 http://disney.wikia.com/wiki/A_Spoonful_of_Sugar
 Matzにっき (Matz Diary)
 http://www.rubyist.net/~matz/
 The Java™ Tutorials - Object-Oriented Programming Concepts
 https://docs.oracle.com/javase/tutorial/java/concepts/index.html
 Duck typing
 https://en.wikipedia.org/wiki/Duck_typing

More Related Content

PPTX
Basic Python Introduction Lecture 1.pptx
PPTX
Ruby programming
PDF
Ruby Presentation
PPTX
sl-unit2 ppt for cse in b.tech jntuh iii year
PDF
MCA NOTES.pdf
PDF
Memory Management In Python The Basics
PDF
Let us c++ yeshwant kanetkar
PPTX
Web development with Python
Basic Python Introduction Lecture 1.pptx
Ruby programming
Ruby Presentation
sl-unit2 ppt for cse in b.tech jntuh iii year
MCA NOTES.pdf
Memory Management In Python The Basics
Let us c++ yeshwant kanetkar
Web development with Python

What's hot (20)

PDF
Let's Learn Ruby - Basic
PDF
Introduction to Ruby
ODP
PDF
Ruby on Rails Presentation
PPT
Ruby Basics
 
PDF
Asynchronous JavaScript Programming
PPT
Java script final presentation
PPTX
Java script
PPTX
Introduction to Node.js
PPTX
Programming Languages: Trends for 2021
PPT
JavaScript Objects
PPTX
PHP Presentation
PDF
Fundamental JavaScript [UTC, March 2014]
PPT
Class 5 - PHP Strings
PPT
PHP - Introduction to Object Oriented Programming with PHP
PPT
Introduction to Javascript
PPTX
Introduction to php
PPT
Php Presentation
Let's Learn Ruby - Basic
Introduction to Ruby
Ruby on Rails Presentation
Ruby Basics
 
Asynchronous JavaScript Programming
Java script final presentation
Java script
Introduction to Node.js
Programming Languages: Trends for 2021
JavaScript Objects
PHP Presentation
Fundamental JavaScript [UTC, March 2014]
Class 5 - PHP Strings
PHP - Introduction to Object Oriented Programming with PHP
Introduction to Javascript
Introduction to php
Php Presentation
Ad

Viewers also liked (20)

PDF
Introduction to Ruby
PDF
Ruby on Rails Presentation
PDF
Ruby on Rails for beginners
PDF
Vaporware To Awesome
PDF
Feeling Objects: Pattern Matching in Ruby
PDF
Reflection in Ruby
PDF
Lemme tell ya 'bout Ruby
PDF
Ruby Programming Introduction
PPTX
핀테크 코리아 2014 후기 - 오광신
PDF
Ruby Egison
PDF
Why Ruby
PPTX
Sapphire Presentation for Review_CPG_Food.PPTX
PDF
Pure Function and Rx
PDF
Akka Fault Tolerance
PDF
[Spring Camp 2013] Java Configuration 없인 못살아!
PDF
Sapphire Presentation
PPT
Web Development Ppt
PDF
Compose Async with RxJS
PDF
java 8 람다식 소개와 의미 고찰
KEY
Introducing Ruby
Introduction to Ruby
Ruby on Rails Presentation
Ruby on Rails for beginners
Vaporware To Awesome
Feeling Objects: Pattern Matching in Ruby
Reflection in Ruby
Lemme tell ya 'bout Ruby
Ruby Programming Introduction
핀테크 코리아 2014 후기 - 오광신
Ruby Egison
Why Ruby
Sapphire Presentation for Review_CPG_Food.PPTX
Pure Function and Rx
Akka Fault Tolerance
[Spring Camp 2013] Java Configuration 없인 못살아!
Sapphire Presentation
Web Development Ppt
Compose Async with RxJS
java 8 람다식 소개와 의미 고찰
Introducing Ruby
Ad

Similar to Ruby Programming Language - Introduction (20)

PDF
Ruby an overall approach
DOCX
Page List & Sample Material (Repaired)
PPTX
Ruby for .NET developers
PDF
Introduction to Ruby & Modern Programming
PPTX
Ruby introductions
PDF
Ruby tutorial
KEY
Learn Ruby 2011 - Session 2
KEY
Introduction to Ruby
PPTX
Ruby -the wheel Technology
PPTX
Ruby for PHP developers
PPTX
Ruby basics
PPTX
How to use Ruby in QA, DevOps, Development. Ruby lang Intro
ZIP
Meta Programming in Ruby - Code Camp 2010
PDF
Moving from C++ to Ruby
DOC
Pré Descobrimento Do Brasil
PDF
Workin On The Rails Road
PDF
ruby_vs_perl_and_python
PDF
ruby_vs_perl_and_python
PPTX
Why ruby
Ruby an overall approach
Page List & Sample Material (Repaired)
Ruby for .NET developers
Introduction to Ruby & Modern Programming
Ruby introductions
Ruby tutorial
Learn Ruby 2011 - Session 2
Introduction to Ruby
Ruby -the wheel Technology
Ruby for PHP developers
Ruby basics
How to use Ruby in QA, DevOps, Development. Ruby lang Intro
Meta Programming in Ruby - Code Camp 2010
Moving from C++ to Ruby
Pré Descobrimento Do Brasil
Workin On The Rails Road
ruby_vs_perl_and_python
ruby_vs_perl_and_python
Why ruby

More from Kwangshin Oh (6)

PPT
CS6201 Software Reuse - Design Patterns
PPT
CS6270 Virtual Machines - Java Virtual Machine Architecture and APIs
PPT
CS6270 Virtual Machines - Retargetable Binary Translators
PPT
CS5261 Group 8 Presentation - US Mobile Industry
PPT
Jini Network Technology
PPT
Object-Oriented Programming Concepts
CS6201 Software Reuse - Design Patterns
CS6270 Virtual Machines - Java Virtual Machine Architecture and APIs
CS6270 Virtual Machines - Retargetable Binary Translators
CS5261 Group 8 Presentation - US Mobile Industry
Jini Network Technology
Object-Oriented Programming Concepts

Recently uploaded (20)

PPTX
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
PDF
Which alternative to Crystal Reports is best for small or large businesses.pdf
PDF
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
PPTX
history of c programming in notes for students .pptx
PDF
How to Migrate SBCGlobal Email to Yahoo Easily
PDF
Adobe Illustrator 28.6 Crack My Vision of Vector Design
PPTX
ManageIQ - Sprint 268 Review - Slide Deck
PPTX
ISO 45001 Occupational Health and Safety Management System
PPTX
Operating system designcfffgfgggggggvggggggggg
PDF
Navsoft: AI-Powered Business Solutions & Custom Software Development
PPTX
ai tools demonstartion for schools and inter college
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
PDF
top salesforce developer skills in 2025.pdf
PDF
How to Choose the Right IT Partner for Your Business in Malaysia
PDF
System and Network Administraation Chapter 3
PDF
System and Network Administration Chapter 2
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 41
PDF
PTS Company Brochure 2025 (1).pdf.......
PPTX
Odoo POS Development Services by CandidRoot Solutions
PPTX
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
Which alternative to Crystal Reports is best for small or large businesses.pdf
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
history of c programming in notes for students .pptx
How to Migrate SBCGlobal Email to Yahoo Easily
Adobe Illustrator 28.6 Crack My Vision of Vector Design
ManageIQ - Sprint 268 Review - Slide Deck
ISO 45001 Occupational Health and Safety Management System
Operating system designcfffgfgggggggvggggggggg
Navsoft: AI-Powered Business Solutions & Custom Software Development
ai tools demonstartion for schools and inter college
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
top salesforce developer skills in 2025.pdf
How to Choose the Right IT Partner for Your Business in Malaysia
System and Network Administraation Chapter 3
System and Network Administration Chapter 2
Internet Downloader Manager (IDM) Crack 6.42 Build 41
PTS Company Brochure 2025 (1).pdf.......
Odoo POS Development Services by CandidRoot Solutions
Lecture 3: Operating Systems Introduction to Computer Hardware Systems

Ruby Programming Language - Introduction

  • 1. Ruby Programming Language Introduction 28 Jun 2015 Kwangshin Oh kwangshin@gmail.com http://kwangshin.pe.kr
  • 2. Seven Languages in Seven Weeks A Pragmatic Guide to Learning Programming Languages By Bruce A. Tate
  • 3. Why New Programming Language? “Learning a new programming language will show you new ways of thinking, and new approaches to problem solving that will help you be a better programmer in any language.” - Pragmatic Bookshelf “Ultimately, programming is about understanding, and understanding is about ideas. So, exposure to new ideas is essential to a deeper understanding of what programming is all about.” - Foreword By Joe Armstrong, creator of Erlang
  • 4. Agenda  Ruby is…  History & Why?  With a Spoonful of Sugar  So, Ruby is…  Ruby: Interpreted Language  Ruby: Interpreted Language – Example  Compare: Compiled Language - Java  Ruby: Object-Oriented Language  Ruby: Pure Object-Oriented Language  Ruby: Dynamically Typed Language  What is Duck Typing?  Ruby: Duck Typing Code Example  Download & Installation  Ruby Code  Reference
  • 5. Ruby is…  Programming Language! Dynamic Open Source  Focus on… Simplicity Productivity  Has an elegant syntax Natural to read Easy to write Image Source: Ruby Programming Language
  • 6. History & Why?  Ruby’s Creator Yukihiro “Matz” Matsumoto  Created in about 1993  Motivation The primary motivation was to amuse himself! Just a hobby at the beginning New object-oriented language that combines characteristics from Lisp, Smalltalk and Perl To enhance programmers’ productivity “Ruby is simple in appearance, but is very complex inside, just like our human body.” - Matz, speaking on the Ruby-Talk mailing list, May 12th, 2000. Image Source: Ruby Everywhere
  • 7. With a Spoonful of Sugar  Ruby with more syntactic sugar Makes code easier to read and write  Focus on the efficiency of the programmers “A spoonful of sugar makes the medicine go down.” Mary Poppins Image Source: Disney Wiki – A Spoonful of Sugar
  • 8. So, Ruby is…  Interpreted Language Ruby code is executed by an interpreter  Object-Oriented Language Encapsulation Inheritance Polymorphism  Dynamically Typed Language Types are bound at execution time Image Source: Skillcrush - Ruby
  • 9. Interactive Console Ruby File (*.rb) Ruby: Interpreted Language Image Source: http://www.iconsdb.com, http://dryicons.com and http://findicons.com Ruby Interpreter
  • 10. Interactive Console Ruby File (Ha.rb) Ruby: Interpreted Language - Example D:Ruby22bin>type Ha.rb 3.Times do print “Ha “ end D:Ruby22bin>ruby Ha.rb Ha Ha Ha D:Ruby22bin> D:Ruby22bin>ruby 3.Times do print “Ha “ end ^D Ha Ha Ha D:Ruby22bin>
  • 11. Compare: Compiled Language - Java Java Source File (*.java) Java Compiler Java Class File (*.class) JRE (Java Runtime Environment)
  • 12. Ruby: Object-Oriented Language  Encapsulation [State & Behavior] : Packaged together  Inheritance [Class Tree] : Object types are organized  Polymorphism [Many Forms] : Objects can be shown Image Source: What Is an Object? Image Source: What Is Inheritance?Image Source: Object-Oriented Concepts
  • 13. Ruby: Pure Object-Oriented Language  Ruby Programming Language Everything is an object!  Compare: Java Programming Language Primitive types (int, char, ……) are not objects! D:Ruby22bin>irb irb(main):001:0> 4 => 4 irb(main):002:0> 4.class => Fixnum irb(main):003:0> 4 + 4 => 8 irb(main):004:0> 4.methods => [:to_s, :inspect, :- @, :+, ∙∙∙∙∙∙, :__id__] irb(main):005:0>
  • 14. Ruby: Dynamically Typed Language Types are bound at execution time Flexibility Execution Safety  Types are bound at compile time  Flexibility  Execution Safety Dynamically Typed Statically Typed Java
  • 15. What is Duck Typing? Quacks like a duck Swims like a duck Walks like a duck Call it a duck “When I see a bird that walks like a duck and swims like a duck and quacks like a duck, I call that bird a duck.” - James Whitcomb Riley Image Source: https://www.iconfinder.com and http://www.vectors4all.net/
  • 16. Ruby: Duck Typing Code Example D:Ruby22bin>irb irb(main):001:0> i = 0 => 0 irb(main):002:0> a = ['100', 100.0] => ["100", 100.0] irb(main):003:0> while i < 2 irb(main):004:1> puts a[i].to_i irb(main):005:1> i = i + 1 irb(main):006:1> end 100 100 => nil irb(main):007:0> We consider this to_i method as quack! Duck typing doesn’t care what the underlying type might be (whether string or float). string float
  • 17. Download & Installation  Current Stable Version  Ruby 2.2.2 (As of 28 Jun 2015)  Windows  RubyInstaller - http://rubyinstaller.org/downloads/  OS X  Homebrew - http://brew.sh/  Debian GNU/Linux and Ubuntu  apt – command : $ sudo apt-get install ruby-full  CentOS, Fedora, and RHEL  yum – command :$ sudo yum install ruby
  • 18. Ruby: Sample Code D:Ruby22bin>ruby properties = ['object oriented', 'duck typed', 'productive', 'fun'] properties.each {|property| puts "Ruby is #{property}."} ^D Ruby is object oriented. Ruby is duck typed. Ruby is productive. Ruby is fun. D:Ruby22bin>
  • 19. Ruby Code: Hello World! D:Ruby22bin>irb irb(main):001:0> puts 'Hello World!' Hello World! => nil irb(main):002:0> language = 'Ruby' => "Ruby" irb(main):003:0> puts "Hello, #{language}" Hello, Ruby => nil irb(main):004:0> language = 'my Ruby' => "my Ruby" irb(main):005:0> puts "Hello, #{language}" Hello, my Ruby => nil irb(main):006:0> Ruby’s Interactive Console <One Quote String> Interpreted Literally <Two Quotes String> String Evaluation
  • 20. Ruby Code: Comparison Operators D:Ruby22bin>irb irb(main):001:0> x = 4 => 4 irb(main):002:0> x < 5 => true irb(main):003:0> x > 4 => false irb(main):004:0> false.class => FalseClass irb(main):005:0> true.class => TrueClass irb(main):006:0> puts 'X value is equal to 4.' if x == 4 X value is equal to 4. => nil irb(main):007:0> Everything is an object in Ruby!
  • 21. Ruby Code: Loops – until & while D:Ruby22bin>irb irb(main):001:0> x = 5 => 5 irb(main):002:0> x = x - 1 until x == 1 => nil irb(main):003:0> x => 1 irb(main):004:0> while x < 5 irb(main):005:1> x = x + 1 irb(main):006:1> puts x irb(main):007:1> end 2 3 4 5 => nil
  • 22. Ruby Code: Expressions - true & false D:Ruby22bin>irb irb(main):001:0> puts '1 is true in Ruby' if 1 1 is true in Ruby => nil irb(main):002:0> puts 'String is true in Ruby' if 'Kwangshin Oh' (irb):2: warning: string literal in condition String is true in Ruby => nil irb(main):003:0> puts '0 is also true in Ruby' if 0 0 is also true in Ruby => nil irb(main):004:0> puts 'The false is false in Ruby' if false => nil irb(main):005:0> puts 'The nil is false in Ruby' if nil => nil irb(main):006:0> Everything ( but nil and false ) evaluate to true!
  • 23. Reference  Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Language by Bruce A. Tate  https://pragprog.com/book/btlang/seven-languages-in-seven-weeks  Ruby Programming Language  https://www.ruby-lang.org/  Ruby-Talk mailing list, May 12th, 2000  http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/2773  Disney Wiki – A Spoonful of Sugar  http://disney.wikia.com/wiki/A_Spoonful_of_Sugar  Matzにっき (Matz Diary)  http://www.rubyist.net/~matz/  The Java™ Tutorials - Object-Oriented Programming Concepts  https://docs.oracle.com/javase/tutorial/java/concepts/index.html  Duck typing  https://en.wikipedia.org/wiki/Duck_typing