KEMBAR78
The ruby programming language | PPT
The Ruby Programming Language
Carol Wolf
Computer Science
Object Orientation
 Ruby is fully object oriented; everything is an object.
 Inheritance is shown by ‘<‘ instead of ‘extends’.
 Java: class Student extends Person
 Ruby: class Student < Person
 Modules are used to group classes
 class Person < ActiveRecord:: Base
 Modules are like namespaces in html and xml.
 Access controls are similar to Java: public, protected and
private. Each controls everything following it in a class.
 All variables are accessed by reference.
Variables and Symbols
 Ruby is weakly typed. Variables receive their types during
assignment.
 There is no boolean type, but everything has a value. False
and nil are false and all other objects are true.
 Instance variables (class variables) begin with the ‘@’ sign.
 @name, @age, @course
 Global variables begin with two ‘@’ signs. They are almost
never used.
 Symbols seem to be peculiar to Ruby. They begin with a
colon.
 :name, :age, :course
 Symbols have a name (string) and value (integer) but no
location.
Blocks
 If a block consists of a single line, it is enclosed in curly braces.
 Usually blocks begin with a control statement and are
terminated with the keyword, ‘end’.
 Indentation, usually two spaces, is used to indicate what is in
the block. Common errors are to have either too few or too
many ‘ends’.
 Variables within a block are local to the block unless they are
instance variables starting with the ‘@’ sign.
 Methods begin with the keyword, ‘def’, and are terminated
with an ‘end’.
 Parameters are enclosed with parentheses. If a method has
no parameters, the parentheses are optional.
Example Program – Java
public class People
{ public static void main (String [] args)
{ Person girl = new Person ("Alice", 5);
girl.show_person ();
}
} // People
class Person
{ String name;
int age;
Person (String name, int age)
{ this.name = name;
this.age = age;
}
protected void show_person ()
{ System.out.println (name);
System.out.println (age);
}
} // Person
Example Program - Ruby
class Person
attr_accessor :name, :age
  # initialize is the same as a constructor
def initialize (name, age)
@name = name
@age = age
end
# puts is the same as println
# print is the same as print
def show_person
puts @name
puts @age
end
end
girl = Person.new("Alice", 5)
girl.show_person
Instantiation and Initialization
 Ruby has girl = Person.new(“Alice”, 5).
 Java has Person girl = new Person(“Alice”,5);
 Java comments begin with ‘//’; Ruby’s with ‘#’.
 In Ruby we can write
 attr_accessor :name, :age
instead of getters and setters.
 String getName () { }
 void setName (String name) { }
Data Structures
 Arrays
 Indexed with integers starting at 0.
 Contents do not have to all be the same type.
 Contents can be assigned in a list using square brackets.
 order = [“blue”, 6, 24.95]
 Arrays are objects so must be instantiated with ‘new’.
 Hash Tables
 Key – value pairs
 Keys are almost always symbols
 Contents can be assigned in a list of key-value pairs using curly
braces.
 order = {:color => “blue”, :size => 6, :price => 24.95}
 To retrieve an element, use square brackets
 @size = order[:size]
Control Structures: Conditionals
if order[:color] == “blue”
…
elsif order[:size] == 6
…
else
…
end
Control Structures: Iteration
 for, while and until
for item in order do
puts item
 Iterator ‘each’
sum = 0
[1..10].each do |count|
sum += count
end
puts sum
 count is a parameter to the block and has no value outside of
it.
Exceptions
begin
…
rescue
…
rescue
…
ensure
…
end
 rescue and ensure are the same as catch and finally
 Ruby also has throw and catch, similar to Java
Conventions
 Class names begin with upper case letters.
 Method and variable names use lower case.
 For names with more than one word:
 Class names use camel (or bumpy) case
 class ActiveRecord
 Method and variable names separate words with underscores.
 def show_person
 @little_girl
 In Rails, table names are the plurals of the record names
 Single record is course
 Table is called courses
 But the model class is called Course.
References
 Dave Thomas, Programming Ruby 1.9, the Pragmatic
Progammers’ Guide, 3rd
edition, The Pragmatic
Programmers, 2009
 Sam Ruby, Dave Thomas and David Heinemeier
Hannson, Agile Web Development with Rails, 4th
edition,
2010, Chapter 4

The ruby programming language

  • 1.
    The Ruby ProgrammingLanguage Carol Wolf Computer Science
  • 2.
    Object Orientation  Rubyis fully object oriented; everything is an object.  Inheritance is shown by ‘<‘ instead of ‘extends’.  Java: class Student extends Person  Ruby: class Student < Person  Modules are used to group classes  class Person < ActiveRecord:: Base  Modules are like namespaces in html and xml.  Access controls are similar to Java: public, protected and private. Each controls everything following it in a class.  All variables are accessed by reference.
  • 3.
    Variables and Symbols Ruby is weakly typed. Variables receive their types during assignment.  There is no boolean type, but everything has a value. False and nil are false and all other objects are true.  Instance variables (class variables) begin with the ‘@’ sign.  @name, @age, @course  Global variables begin with two ‘@’ signs. They are almost never used.  Symbols seem to be peculiar to Ruby. They begin with a colon.  :name, :age, :course  Symbols have a name (string) and value (integer) but no location.
  • 4.
    Blocks  If ablock consists of a single line, it is enclosed in curly braces.  Usually blocks begin with a control statement and are terminated with the keyword, ‘end’.  Indentation, usually two spaces, is used to indicate what is in the block. Common errors are to have either too few or too many ‘ends’.  Variables within a block are local to the block unless they are instance variables starting with the ‘@’ sign.  Methods begin with the keyword, ‘def’, and are terminated with an ‘end’.  Parameters are enclosed with parentheses. If a method has no parameters, the parentheses are optional.
  • 5.
    Example Program –Java public class People { public static void main (String [] args) { Person girl = new Person ("Alice", 5); girl.show_person (); } } // People class Person { String name; int age; Person (String name, int age) { this.name = name; this.age = age; } protected void show_person () { System.out.println (name); System.out.println (age); } } // Person
  • 6.
    Example Program -Ruby class Person attr_accessor :name, :age   # initialize is the same as a constructor def initialize (name, age) @name = name @age = age end # puts is the same as println # print is the same as print def show_person puts @name puts @age end end girl = Person.new("Alice", 5) girl.show_person
  • 7.
    Instantiation and Initialization Ruby has girl = Person.new(“Alice”, 5).  Java has Person girl = new Person(“Alice”,5);  Java comments begin with ‘//’; Ruby’s with ‘#’.  In Ruby we can write  attr_accessor :name, :age instead of getters and setters.  String getName () { }  void setName (String name) { }
  • 8.
    Data Structures  Arrays Indexed with integers starting at 0.  Contents do not have to all be the same type.  Contents can be assigned in a list using square brackets.  order = [“blue”, 6, 24.95]  Arrays are objects so must be instantiated with ‘new’.  Hash Tables  Key – value pairs  Keys are almost always symbols  Contents can be assigned in a list of key-value pairs using curly braces.  order = {:color => “blue”, :size => 6, :price => 24.95}  To retrieve an element, use square brackets  @size = order[:size]
  • 9.
    Control Structures: Conditionals iforder[:color] == “blue” … elsif order[:size] == 6 … else … end
  • 10.
    Control Structures: Iteration for, while and until for item in order do puts item  Iterator ‘each’ sum = 0 [1..10].each do |count| sum += count end puts sum  count is a parameter to the block and has no value outside of it.
  • 11.
    Exceptions begin … rescue … rescue … ensure … end  rescue andensure are the same as catch and finally  Ruby also has throw and catch, similar to Java
  • 12.
    Conventions  Class namesbegin with upper case letters.  Method and variable names use lower case.  For names with more than one word:  Class names use camel (or bumpy) case  class ActiveRecord  Method and variable names separate words with underscores.  def show_person  @little_girl  In Rails, table names are the plurals of the record names  Single record is course  Table is called courses  But the model class is called Course.
  • 13.
    References  Dave Thomas,Programming Ruby 1.9, the Pragmatic Progammers’ Guide, 3rd edition, The Pragmatic Programmers, 2009  Sam Ruby, Dave Thomas and David Heinemeier Hannson, Agile Web Development with Rails, 4th edition, 2010, Chapter 4