1.
initialize
is a special
method in Ruby programs.When you call Class.new
to create a new object,
Ruby allocates some memory to hold an uninitialized object and then calls that
object's initialize
method, passing in any parameters that were passed
to new
.
This gives you a chance to write code that sets up your object's state.
2.
@isbn is an instance variable, and the
“at” sign is actually part of its name.
3.
The Float
method takes its
argument and converts it to a floating-point number, terminating the program
with an error if that conversion fails.
4.
The p
method prints out an
internal representation of an object. Using it, we can see an object’s states (
instance variables).
5.
puts
simply writes
strings to your program’s standard output. When you pass it an object based on
a class you wrote, it writes the name of the object’s class, followed by a
colon and the object’s unique identifier (a hexadecimal number). It puts the
whole lot inside #<...>
. Ruby has a standard message, to_s
, that it sends to
any object it wants to render as a string. The puts
method calls to_s
in that object to get its string representation.
6.
Ruby provides a convenient shortcut. attr_reader
creates these attribute reader methods for you:
class BookInStock
attr_reader :isbn, :price
def initialize(isbn, price)
@isbn = isbn
@price = Float(price)
end
# ..
end
attr_reader
creates the
accessor methods, but the variables themselves don't need to be declared—they just
pop into existence when you use them.
7.
When you want to set the value of an
attribute for an object. You do that by creating a Ruby method whose name ends
with an equals sign:
def price=(new_price)
@price = new_price
end
8.
The assignment book.price = book.price * 0.75
invokes the method price=
in the book
object. If you create a method
whose name ends with an equals sign, that name can appear on the left side of
an assignment.
9.
If you want a write-only accessor, you
can use the form attr_writer
. If you want both a reader and a writer for a given
attribute, so you can use attr_accessor
method:
class BookInStock
attr_reader :isbn
attr_accessor :price
end
10.
floating-point numbers don’t always
have an exact internal representation. When we multiply 33.8 by 100, we get
3379.99999999999954525265. The Integer method would truncate this to 3379.
Adding 0.5 before calling Integer rounds up the floating-point value, ensuring
we get the best integer representation.
11.
An attribute is just a method.
Sometimes an attribute simply returns the value of an instance variable.
Sometimes an attribute returns the result of a calculation. And sometimes those
funky methods with equals signs at the end of their names are used to update
the state of an object.
12.
Ruby comes with a good CSV library:
def read_in_csv_data(csv_file_name)
books_in_stock = []
CSV.foreach(csv_file_name, headers: true) do |row|
books_in_stock << BookInStock.new(row["ISBN"], row["Amount"])
end
end
On the first line, we tell the CSV library to open the
file with the given name. The
headers: true
option tells the
library to parse the first line of the file as the names of the columns. The
library then reads the rest of the file, passing each row in turn to the block.
13.
Ruby has a couple of helper methods
that let us load external files. We can use require
to load in the
Ruby library(such as CSV) and require_relative
to load in ruby
files in the same directory as the current file is.
14.
Ruby gives you three levels of
protection:
a)
Public methods can be called by
anyone—no access control is enforced. Methods are public by default (except for
initialize
,
which is always private).
b)
Protected methods can be invoked only
by objects of the defining class and its subclasses. Access is kept within the
family.
c)
Private methods cannot be called with
an explicit receiver—the receiver is always the current object, also known as self.
This means that private methods can be called only in the context of the
current object; you can’t invoke another object's private methods.
15.
Access control is determined dynamically,
as the program runs, not statically. You will get an access violation only when
the code attempts to execute the restricted method.
16.
If used with no arguments, the three
functions set the default access control of subsequently defined methods:
class MyClass
def method1 # default is 'public'
#...
end
protected # subsequent methods will be 'protected'
def method2 # will be 'protected'
#...
end
private # subsequent methods will be 'private'
def method3 # will be 'private'
#...
end
public # subsequent methods will be 'public'
def method4 # so this will be 'public'
#...
end
end
Alternatively, you can set access levels of named methods
by listing them as arguments to the access control functions:
class MyClass
def method1
end
def method2
end
# ... and so on
public :method1, :method4
protected :method2
private :method3
end
17.
A variable is simply a reference to an
object. Objects float around in a big pool somewhere (the heap, most of the
time) and are pointed to by variables. The dup
method of String
, which creates a
new string object with identical contents.
18.
You can prevent anyone from changing a
particular object by freezing it (invoke the freeze method of the object).
Attempt to alter a frozen object, and Ruby will raise a RuntimeError exception.
分享到:
相关推荐
Chapter 1, Introduction to Scala, will teach big data analytics using ... methods, classes, and objects in Scala; packages and package objects; traits and trait linearization; and Java interoperability.
Source Insight automatically shows references to functions, variables, classes, and more - almost instantly. Search across your project using advanced search features. Read More Code Analysis Source ...
Create, name, and assign values to variables. Use common statements to implement flow control, looping, and exception handling. Create methods (functions and subroutines) that can return values and ...
The testing of the classes involves creating objects of the classes and calling their functions to perform operations. The testing data is provided for each class, including the circle, rectangle, and...
- **Classes and Objects:** OOP revolves around the concept of objects, which are instances of classes. Classes define the structure and behavior of objects. You'll learn how to define classes, create ...
Chapter 2: Variables and Data Types Chapter 3: Language Statements Chapter 4: Procedures and Functions Chapter 5: Arrays and Records Chapter 6: All About Strings Part II Chapter 7: Objects Chapter 8:...
3 Classes, Objects, and Methods 27 4 Data Types and Expressions 51 5 Program Looping 71 6 Making Decisions 93 7 More on Classes 127 8 Inheritance 151 9 Polymorphism, Dynamic Typing, and Dynamic ...
Classes and Modules Section 2.3. Procedures Section 2.4. Variables Section 2.5. Conditional Statements Section 2.6. Loops Section 2.7. Expressions Section 2.8. Exceptions Section 2.9. ...
- **Objective-C Classes, Objects, and Methods**: Provides a detailed look at how to define and use classes, objects, and methods in Objective-C. - **Diving into Objective-C**: Explores more advanced ...
Chapter 3 of the C++ programming course delves into the fundamental concepts of object-oriented programming, specifically focusing on classes and objects. Object-oriented programming (OOP) is a ...
3 Classes, Objects, and Methods 4 Data Types and Expressions 5 Program Looping 6 Making Decisions 7 More on Classes 8 Inheritance 9 Polymorphism, Dynamic Typing, and Dynamic Binding 10 More on ...
3 Classes, Objects, and Methods 4 Data Types and Expressions 5 Program Looping 6 Making Decisions 7 More on Classes 8 Inheritance 9 Polymorphism, Dynamic Typing, and Dynamic Binding...
The first section of Perl to Python Programming will show you the basic layout and approach of the two languages whilst the second ...differences of using Python data types and objects over Perl variables....
We then discuss the mode of R objects and its classes and then highlight different R data types with their basic operations. The primary focus on group-wise data manipulation with the split-apply-...
The string Class: An Introduction to Classes and Objects 426 Section 10.1. Objects, Classes, and Object-Oriented Systems 427 Section 10.2. Introduction to string Objects 430 Section 10.3. ...
Why learn Scala? You don’t need to be a data scientist or distributed computing expert to appreciate this ... Objects, Case Classes and Traits Chapter 10. Advanced Typing Appendix A. Reserved Words