Ruby: 学习日志2: Class
来源:互联网 发布:网络成瘾的危害 编辑:程序博客网 时间:2024/05/01 23:41
#classes
class Song
def initialize(name, artist, duration)
@name = name
@artist = artist
@duration = duration
end
end
class Song
def to_s()
"Song: #@name---#@artist (#@duration)"
end
end
class KaraokeSong < Song
def initialize(name, artist, duration, lyrics)
super(name, artist, duration)
@lyrics = lyrics
end
end
song = Song.new("my fortune", "olojiang", 24)
puts song.inspect
puts song.to_s
class KaraokeSong
def to_s
#"Song: #@name -- #@artist (#@duration) [#@lyrics]"
super + " [#@lyrics]"
end
end
song2 = KaraokeSong.new("discovery" ,"olojiang", 25, "going on..")
puts
puts song2.to_s
class Song
attr_reader :name, :artist, :duration
end
puts song2.artist
class Song
def name
@name
end
def artist
@artist
end
def duration
@duration
end
end
puts song2.name
class Song
def duration=(new_duration)
@duration = new_duration
end
end
puts song2.to_s
song2.duration = 22
puts song2.duration
class Song
attr_writer :name, :artist
end
song2.name = "Hello ruby"
puts song2
class Song
def duration_in_minutes=(new_duration)
@duration = new_duration*60
end
def duration_in_minutes
@duration/60.0
end
end
puts song2.duration_in_minutes;
song2.duration_in_minutes = 4.5;
puts song2.duration;
# class variable
class XSong < Song
@@plays = 0
def initialize(title, artist, duration, plays)
super(title,artist,duration)
@plays = plays
end
def play
@plays += 1
@@plays += 1
puts "This song plays #{@plays} times, total #{@@plays}"
end
end
s2 = XSong.new("test","olojiang",234,0)
s1 = XSong.new("test2","olo",2234,0)
s2.play
s2.play
s1.play
s1.play
s1.play
#Class Method
#File.delete("e:/test.txt")
class SongList
MAX_LENGTH = 5*60
def SongList.is_too_long(length)
puts("length is #{length}: " , length>MAX_LENGTH)
end
end
SongList.is_too_long(s1.duration)
SongList.is_too_long(s2.duration)
#Singletons and Constructor
class Mylogger
private_class_method :new
@@logger = nil
def Mylogger.create
@@logger = new unless @@logger
@@logger
end
end
puts
puts Mylogger.create
puts Mylogger.create
class Shape
def initialize(num_of_sides, perimeter)
end
end
class Shape
def Shape.triangle(side_length)
return Shape.new(3, 3*side_length)
end
def Shape.square(side_length)
return Shape.new(4,4*side_length)
end
end
puts
puts Shape.square(20)
# access control
class Shape
private
def add(a,b)
a+b
end
protected
def minus(a,b)
a-b
end
public
def multiply(a, b)
a*b
end
public :add
private :minus
end
# access contorl example
class Accounts
attr_reader :checking, :savings
def initialize(checking, savings)
@checking = checking
@savings = savings
end
private
def debit(account, amount)
account.balance -= amount
end
def credit(account, amount)
account.balance += amount
end
public
def transfer(amount)
debit(@checking, amount)
credit(@savings, amount)
end
end
class Account
attr_reader :balance
attr_writer :balance
def initialize(balance)
@balance = balance
end
end
checking = Account.new(234)
savings = Account.new(3)
accounts = Accounts.new(checking, savings)
accounts.transfer(100)
puts "checking: #{accounts.checking.balance}"
puts "savings: #{accounts.savings.balance}"
#variable
puts
person="jiwei"
puts person.id
puts person.class
puts person
person2 = person
person3 = person.dup
##person.freeze
person2[0] = "x"
puts "person: #{person}"
puts "person2: #{person2}"
puts "person3: #{person3}"
class Song
def initialize(name, artist, duration)
@name = name
@artist = artist
@duration = duration
end
end
class Song
def to_s()
"Song: #@name---#@artist (#@duration)"
end
end
class KaraokeSong < Song
def initialize(name, artist, duration, lyrics)
super(name, artist, duration)
@lyrics = lyrics
end
end
song = Song.new("my fortune", "olojiang", 24)
puts song.inspect
puts song.to_s
class KaraokeSong
def to_s
#"Song: #@name -- #@artist (#@duration) [#@lyrics]"
super + " [#@lyrics]"
end
end
song2 = KaraokeSong.new("discovery" ,"olojiang", 25, "going on..")
puts
puts song2.to_s
class Song
attr_reader :name, :artist, :duration
end
puts song2.artist
class Song
def name
@name
end
def artist
@artist
end
def duration
@duration
end
end
puts song2.name
class Song
def duration=(new_duration)
@duration = new_duration
end
end
puts song2.to_s
song2.duration = 22
puts song2.duration
class Song
attr_writer :name, :artist
end
song2.name = "Hello ruby"
puts song2
class Song
def duration_in_minutes=(new_duration)
@duration = new_duration*60
end
def duration_in_minutes
@duration/60.0
end
end
puts song2.duration_in_minutes;
song2.duration_in_minutes = 4.5;
puts song2.duration;
# class variable
class XSong < Song
@@plays = 0
def initialize(title, artist, duration, plays)
super(title,artist,duration)
@plays = plays
end
def play
@plays += 1
@@plays += 1
puts "This song plays #{@plays} times, total #{@@plays}"
end
end
s2 = XSong.new("test","olojiang",234,0)
s1 = XSong.new("test2","olo",2234,0)
s2.play
s2.play
s1.play
s1.play
s1.play
#Class Method
#File.delete("e:/test.txt")
class SongList
MAX_LENGTH = 5*60
def SongList.is_too_long(length)
puts("length is #{length}: " , length>MAX_LENGTH)
end
end
SongList.is_too_long(s1.duration)
SongList.is_too_long(s2.duration)
#Singletons and Constructor
class Mylogger
private_class_method :new
@@logger = nil
def Mylogger.create
@@logger = new unless @@logger
@@logger
end
end
puts
puts Mylogger.create
puts Mylogger.create
class Shape
def initialize(num_of_sides, perimeter)
end
end
class Shape
def Shape.triangle(side_length)
return Shape.new(3, 3*side_length)
end
def Shape.square(side_length)
return Shape.new(4,4*side_length)
end
end
puts
puts Shape.square(20)
# access control
class Shape
private
def add(a,b)
a+b
end
protected
def minus(a,b)
a-b
end
public
def multiply(a, b)
a*b
end
public :add
private :minus
end
# access contorl example
class Accounts
attr_reader :checking, :savings
def initialize(checking, savings)
@checking = checking
@savings = savings
end
private
def debit(account, amount)
account.balance -= amount
end
def credit(account, amount)
account.balance += amount
end
public
def transfer(amount)
debit(@checking, amount)
credit(@savings, amount)
end
end
class Account
attr_reader :balance
attr_writer :balance
def initialize(balance)
@balance = balance
end
end
checking = Account.new(234)
savings = Account.new(3)
accounts = Accounts.new(checking, savings)
accounts.transfer(100)
puts "checking: #{accounts.checking.balance}"
puts "savings: #{accounts.savings.balance}"
#variable
puts
person="jiwei"
puts person.id
puts person.class
puts person
person2 = person
person3 = person.dup
##person.freeze
person2[0] = "x"
puts "person: #{person}"
puts "person2: #{person2}"
puts "person3: #{person3}"
- Ruby: 学习日志2: Class
- ruby 学习日志1
- Ruby学习笔记-Method,Class
- Ruby: 学习日志1: 基础
- ruby class
- Ruby: 学习日志3: Containers, Blocks, Iterators
- Ruby学习笔记1 -- 基本语法和数据类型, Class
- Ruby学习笔记2
- ruby-module和class
- Ruby之Class
- Ruby学习札记(2)-注释
- Ruby学习笔记(2)
- ruby 学习笔记 2 -变量
- ruby acess分析日志
- [Ruby笔记]20.Ruby super initialize class
- ruby学习
- 学习Ruby
- ruby 学习
- c#学习
- 看《三百勇士》
- Linux mysql apache tomcat gcc
- 一些专家的个人观点,五大趋势,以及由此形成的第六大趋势
- WEB用户控件和WEB自定义控件的区别
- Ruby: 学习日志2: Class
- XML的简单读取与写入
- 从Infragistics UltraWebGrid 导出数据到 Excel 序列
- Pascal 过程与函数
- 排序
- ubuntu挂载U盘和硬盘
- Java IO 基本知识
- spring的学习
- 如何做好一个项目经理?