Cha đẻ của Ruby là Matshumoto Yukishiro hay còn được biết đến với tên Matz. Ruby là sự kết hợp thành công của Smalltalk, Python, Perl,... Ruby mang đầy đủ các đặc điểm ưu việt của các ngôn ngữ đã có từ trước đó như: tính thông dịch (Perl, Python), hướng đối tượng (Smalltalk, Java). Phiên bản hiện tại của Ruby là 2.0.Ruby có cú pháp đơn giản. Mang đặc điểm của nhiều ngôn ngữ khác: hướng đối tượng (class, method, object…), chồng toán tử (operation overloading), Xử lý các ngoại lệ (Exception handling), trình gom và xử lí rác (garbage collection), nhập liệu tự động (dynamic loading) và độc lập trong cấu trúc, dependency injection, iterator. Ngoài các đặc điểm chung, Matz cũng đưa vào một số khái niệm khác như mixin, singleton method, renaming, closures… tính khả chuyển cao (high transportability) nên chạy được trên nhiều nên khác nhau như: Unices, Windows, DOS, OSX, OS2, Amiga… Ruby cũng hỗ trợ rất nhiều thư viện chuẩn cho lập trình viên.
Trang 1Gi i thi u ngôn ng ới thiệu ngôn ngữ ệu ngôn ngữ ữ
Ruby
Trang 2N i dung chính ội
I T ng quan v Ruby ổng quan về Ruby ề Ruby
II Ruby Advance
2
Trang 3T ng quan v Ruby ổng quan về Ruby ề Ruby
Yukihiro Matsumoto (Matz)
Trang 4T ng quan v Ruby ổng quan về Ruby ề Ruby
Ruby là:
S k t h p thành công c a Smalltalk, Python, Perl ự kết hợp thành công của Smalltalk, Python, Perl ết hợp thành công của Smalltalk, Python, Perl ợp thành công của Smalltalk, Python, Perl ủa Smalltalk, Python, Perl
Ngôn ng l p trình c p cao.ữ lập trình cấp cao ập trình cấp cao ấp cao
Đượp thành công của Smalltalk, Python, Perl c thông d ch gi ng Perl, Pythonịch giống Perl, Python ống Perl, Python
Hướng đối tượng giống Smalltalk, Javang đ i tống Perl, Python ượp thành công của Smalltalk, Python, Perl ng gi ng Smalltalk, Javaống Perl, Python
Đượp thành công của Smalltalk, Python, Perl c vi t b i Matz năm 1993ết hợp thành công của Smalltalk, Python, Perl ởi Matz năm 1993
4
Trang 5T ng quan v Ruby ổng quan về Ruby ề Ruby
M t s đ c tr ng c a Ruby: ội ố đặc trưng của Ruby: ặc trưng của Ruby: ưng của Ruby: ủa Ruby:
Hướng đối tượng giống Smalltalk, Javang đ i tống Perl, Python ượp thành công của Smalltalk, Python, Perl ng thu n túyần túy
D h c t p và nghiên c u.ễ học tập và nghiên cứu ọc tập và nghiên cứu ập trình cấp cao ứu
Mã ngu n mồn mở ởi Matz năm 1993
R t nhi u th vi nấp cao ều thư viện ư ện
Code ít, l i ítỗi ít
Trang 6T ng quan v Ruby ổng quan về Ruby ề Ruby
Variables:
$ten_bien: bi n toàn c c, có th s d ng trong các class ết hợp thành công của Smalltalk, Python, Perl ục, có thể sử dụng trong các class ể sử dụng trong các class ử dụng trong các class ục, có thể sử dụng trong các class khác nhau
@ten_bien: bi n th c th , có th s d ng trong các ết hợp thành công của Smalltalk, Python, Perl ự kết hợp thành công của Smalltalk, Python, Perl ể sử dụng trong các class ể sử dụng trong các class ử dụng trong các class ục, có thể sử dụng trong các class
phương thức khác nhau của 1 classng th c khác nhau c a 1 classứu ủa Smalltalk, Python, Perl
@@ten_bien: bi n l p, gi ng bi n staticết hợp thành công của Smalltalk, Python, Perl ớng đối tượng giống Smalltalk, Java ống Perl, Python ết hợp thành công của Smalltalk, Python, Perl
ten_bien: bi n localết hợp thành công của Smalltalk, Python, Perl
Pseudo-Variables:
self: gi ng $this trong PHPống Perl, Python
nil: gi ng null trong PHP ống Perl, Python
…
6
Trang 7T ng quan v Ruby ổng quan về Ruby ề Ruby
Trang 8T ng quan v Ruby ổng quan về Ruby ề Ruby
Types
Integer Numbers, Floating Numbers, Boolean
String
String là lớp dùng để thể hiện chuỗi ký tự
string = ‘hello world!’
Trang 9T ng quan v Ruby ổng quan về Ruby ề Ruby
Ruby Hashes
hsh = { "red" => 0xf00, "green" => 0x0f0 }
for key, value in hsh
puts “#{key} is #{value}”
Trang 10T ng quan v Ruby ổng quan về Ruby ề Ruby
Trang 11T ng quan v Ruby ổng quan về Ruby ề Ruby
Trang 12T ng quan v Ruby ổng quan về Ruby ề Ruby
Trang 13T ng quan v Ruby ổng quan về Ruby ề Ruby
end ary = [ "fred", 10, 3.14]
for j in ary puts “j = #{j}”
end
Trang 14T ng quan v Ruby ổng quan về Ruby ề Ruby
Blocks
Trong quá trình sử dụng các cấu trúc liệt kê, chúng ta
thường thấy một nhóm các câu lệnh nằm trong cặp ngoặc nhọn hoặc trong lòng khối begin/end Người ta gọi đó là
block Thông thường block bao giờ cũng được thực hiện sau lời gọi hàm
Ví d : ụ:
10.downto(0){|x| print x}
14
Trang 15T ng quan v Ruby ổng quan về Ruby ề Ruby
class Hello [< Class]
def initialize( name )
Trang 16T ng quan v Ruby ổng quan về Ruby ề Ruby
Trang 17T ng quan v Ruby ổng quan về Ruby ề Ruby
M t s framework cho Ruby: ội ố đặc trưng của Ruby:
Sinatra: Kích thướng đối tượng giống Smalltalk, Javac nhỏi vòng lặp
Padrino: Kích thướng đối tượng giống Smalltalk, Javac trung bình
Rails: Kích thướng đối tượng giống Smalltalk, Java ớng đối tượng giống Smalltalk, Javac l n
Ngoài ra, còn nhi u framework khác nh : Camping, ều thư viện ư
Cramp, Cuba, Salad…
Trang 18T ng quan v Ruby ổng quan về Ruby ề Ruby
Ưu điểm u đi m ểm
Cú pháp trong sáng h n.ơng thức khác nhau của 1 class
Hướng đối tượng giống Smalltalk, Javang đ i tống Perl, Python ượp thành công của Smalltalk, Python, Perl ng thu n ần túy
túy
Kh năng khai thác văn ảy sang bước lặp kế tiếp
b n m nhảy sang bước lặp kế tiếp ạnh
Có tính c u trúc và n ấp cao ổn
đ nh h n.ịch giống Perl, Python ơng thức khác nhau của 1 class
Nh ưng của Ruby:ợc điểm c đi m ểm
S lống Perl, Python ượp thành công của Smalltalk, Python, Perl ng dòng code l n ớng đối tượng giống Smalltalk, Java
h n các ngôn ng khác ơng thức khác nhau của 1 class ữ lập trình cấp cao
nh Python, Perl …ư
Là ngôn ng ch y khá ữ lập trình cấp cao ạnh
ch m.ập trình cấp cao
18
Trang 19Ruby Advance
Ruby Object oriented
Ruby là m t ngôn ng l p trình thu n h ột ngôn ngữ lập trình thuần hướng đối tượng Mọi thứ trong ữ lập trình cấp cao ập trình cấp cao ần túy ướng đối tượng giống Smalltalk, Java ng đ i t ống Perl, Python ượp thành công của Smalltalk, Python, Perl ng M i th trong ọc tập và nghiên cứu ứu Ruby đ u là Object, t các class cho đ n nh ng th c b n nh t: ều thư viện ừ các class cho đến những thứ cơ bản nhất: ết hợp thành công của Smalltalk, Python, Perl ữ lập trình cấp cao ứu ơng thức khác nhau của 1 class ảy sang bước lặp kế tiếp ấp cao.
strings, number, true và false, M t class b n thân nó là m t ột ngôn ngữ lập trình thuần hướng đối tượng Mọi thứ trong ảy sang bước lặp kế tiếp ột ngôn ngữ lập trình thuần hướng đối tượng Mọi thứ trong Object,
đ ượp thành công của Smalltalk, Python, Perl c k th a t l p ết hợp thành công của Smalltalk, Python, Perl ừ các class cho đến những thứ cơ bản nhất: ừ các class cho đến những thứ cơ bản nhất: ớng đối tượng giống Smalltalk, Java Class.
Gi ng nh Java, m t class bao g m ống Perl, Python ư ột ngôn ngữ lập trình thuần hướng đối tượng Mọi thứ trong ồn mở attributes và methods
Khai báo class
class <class name>
code
end
Đ nh nghĩa object ịch giống Perl, Python
Trang 20Ruby Advance
Attributes (Instance variables) c a Object là private v i các Object khác và ủa Smalltalk, Python, Perl ớng đối tượng giống Smalltalk, Java không th truy c p t bên ngoài c a class Chúng ch có s n đ i v i các object ể sử dụng trong các class ập trình cấp cao ừ các class cho đến những thứ cơ bản nhất: ủa Smalltalk, Python, Perl ỉ có sẵn đối với các object ẵn đối với các object ống Perl, Python ớng đối tượng giống Smalltalk, Java
mà đ ượp thành công của Smalltalk, Python, Perl c k th a ết hợp thành công của Smalltalk, Python, Perl ừ các class cho đến những thứ cơ bản nhất:
Ngoài ra, t bên ngoài class, có th truy c p gián ti p đ n các attributes ừ các class cho đến những thứ cơ bản nhất: ể sử dụng trong các class ập trình cấp cao ết hợp thành công của Smalltalk, Python, Perl ết hợp thành công của Smalltalk, Python, Perl
thông qua các accessor method và setter method (t ương thức khác nhau của 1 class ng t các ph ự kết hợp thành công của Smalltalk, Python, Perl ương thức khác nhau của 1 class ng th c ứu get và set trong java)
Trang 21Ruby Advance
Ruby Object oriented (ti p) ếp)
Variables và Method của class: được share giữa các object
Trang 22Ruby Advance
Ruby Object oriented (ti p) ếp)
3 level of access at instance method: private, protected, public Các
level này không áp d ng đ i v i instance và class variables ục, có thể sử dụng trong các class ống Perl, Python ớng đối tượng giống Smalltalk, Java
Inheritance: ch h tr đ n k th a, không h tr đa k th a Thay ỉ có sẵn đối với các object ỗi ít ợp thành công của Smalltalk, Python, Perl ơng thức khác nhau của 1 class ết hợp thành công của Smalltalk, Python, Perl ừ các class cho đến những thứ cơ bản nhất: ỗi ít ợp thành công của Smalltalk, Python, Perl ết hợp thành công của Smalltalk, Python, Perl ừ các class cho đến những thứ cơ bản nhất: vào đó Ruby đ a ra khái ni m ư ện Mixins.
Overriding: các l p con có th thay đ i hành vi c a các method đã ớng đối tượng giống Smalltalk, Java ể sử dụng trong các class ổn ủa Smalltalk, Python, Perl
đ ượp thành công của Smalltalk, Python, Perl c đ nh nghĩa s n l p cha ịch giống Perl, Python ẵn đối với các object ởi Matz năm 1993 ớng đối tượng giống Smalltalk, Java
Overloading: gi ng n p ch ng toán t trong C++ ống Perl, Python ạnh ồn mở ử dụng trong các class
Trang 23Ruby Advance
Ruby Database Access
Các script Ruby tương thức khác nhau của 1 classng tác v i các database thông qua m t ớng đối tượng giống Smalltalk, Java ột ngôn ngữ lập trình thuần hướng đối tượng Mọi thứ trong interface đ c l p v i c s d li u đột ngôn ngữ lập trình thuần hướng đối tượng Mọi thứ trong ập trình cấp cao ớng đối tượng giống Smalltalk, Java ơng thức khác nhau của 1 class ởi Matz năm 1993 ữ lập trình cấp cao ện ượp thành công của Smalltalk, Python, Perl c cung c p b i ấp cao ởi Matz năm 1993
Ruby DBI module
DBI t o ra m t l p tr u tạnh ột ngôn ngữ lập trình thuần hướng đối tượng Mọi thứ trong ớng đối tượng giống Smalltalk, Java ừ các class cho đến những thứ cơ bản nhất: ượp thành công của Smalltalk, Python, Perl ng hóa gi a code Ruby và ữ lập trình cấp cao
database n m bên dằng = giá_trị ướng đối tượng giống Smalltalk, Javai Nó đ nh nghĩa m t t p các ịch giống Perl, Python ột ngôn ngữ lập trình thuần hướng đối tượng Mọi thứ trong ập trình cấp cao
method, các variables và các conventions mà cung c p ấp cao
m t consistence database interface, đ c l p v i database ột ngôn ngữ lập trình thuần hướng đối tượng Mọi thứ trong ột ngôn ngữ lập trình thuần hướng đối tượng Mọi thứ trong ập trình cấp cao ớng đối tượng giống Smalltalk, Javađang đượp thành công của Smalltalk, Python, Perl c s d ng Nh v y, l p trình viên có th d ử dụng trong các class ục, có thể sử dụng trong các class ờ vậy, lập trình viên có thể dễ ập trình cấp cao ập trình cấp cao ể sử dụng trong các class ễ học tập và nghiên cứu
dàng giao tác v i database mà không c n quan tâm đ n ớng đối tượng giống Smalltalk, Java ần túy ết hợp thành công của Smalltalk, Python, Perl
Trang 24DBD:Oracle
Postgr eSQL RDBMS
MySQL RDBMS
Oracle RDBMS DBD:MySQL
DBD:Postgr eSQL
DBI layer: đ c l p v i database, cung c p m t t p các ột ngôn ngữ lập trình thuần hướng đối tượng Mọi thứ trong ập trình cấp cao ớng đối tượng giống Smalltalk, Java ấp cao ột ngôn ngữ lập trình thuần hướng đối tượng Mọi thứ trong ập trình cấp cao
phương thức khác nhau của 1 classng th c đ giao tác v i databaseứu ể sử dụng trong các class ớng đối tượng giống Smalltalk, Java
DBD layer: ph thu c database, cung c p các drivers cho ục, có thể sử dụng trong các class ột ngôn ngữ lập trình thuần hướng đối tượng Mọi thứ trong ấp cao
t ng database từ các class cho đến những thứ cơ bản nhất: ương thức khác nhau của 1 classng ng M i drivers s thông d ch các ứu ỗi ít ẽ thông dịch các ịch giống Perl, Pythonrequest t DBI layer và ánh x chúng thành các request ừ các class cho đến những thứ cơ bản nhất: ạnhphù h p v i lo i database đang đợp thành công của Smalltalk, Python, Perl ớng đối tượng giống Smalltalk, Java ạnh ượp thành công của Smalltalk, Python, Perl c s d ng ử dụng trong các class ục, có thể sử dụng trong các class
Trang 25Net::SMTP.new (<Server>, <Port>)
Th c hi n k t n i đ n Server, v i account và password v i ự kết hợp thành công của Smalltalk, Python, Perl ện ết hợp thành công của Smalltalk, Python, Perl ống Perl, Python ết hợp thành công của Smalltalk, Python, Perl ớng đối tượng giống Smalltalk, Java ớng đối tượng giống Smalltalk, Java
đ nh d ng cho mã hóa là Authtype M c đ nh Authtype là ịch giống Perl, Python ạnh ặp ịch giống Perl, Pythoncraim_md5
Net::SMTP.start(<Domain>, <Account>, <Password>,
Trang 26Ruby Advance
Ruby/TK Guid
Tk là chu n giao di n đ h a c a Ruby.ẩn giao diện đồ họa của Ruby ện ồn mở ọc tập và nghiên cứu ủa Smalltalk, Python, Perl
Tk cho phép t o GUI đ c l p v i platform Tk ch y trên ạnh ột ngôn ngữ lập trình thuần hướng đối tượng Mọi thứ trong ập trình cấp cao ớng đối tượng giống Smalltalk, Java ạnhWindows, Mac, Linux, và trên m i h đi u hành này, GUI ỗi ít ện ều thư viện
đượp thành công của Smalltalk, Python, Perl c t o ra s có giao di n gi ng nhau.ạnh ẽ thông dịch các ện ống Perl, Python
Ứng dụng Tk là một hệ thống phân cấp các widget ng d ng Tk là m t h th ng phân c p các widget ục, có thể sử dụng trong các class ột ngôn ngữ lập trình thuần hướng đối tượng Mọi thứ trong ện ống Perl, Python ấp cao
Widget là component c b n nh t, b t kỳ widget nào ơng thức khác nhau của 1 class ảy sang bước lặp kế tiếp ấp cao ấp cao
cũng đượp thành công của Smalltalk, Python, Perl c đ t trong 1 widget khác và b n thân nó cũng ặp ảy sang bước lặp kế tiếp
ch a các widget khác Widget chính trong Tk là widget ứu
root, đượp thành công của Smalltalk, Python, Perl c t o ra b ng cách t o m t instance t TkRootạnh ằng = giá_trị ạnh ột ngôn ngữ lập trình thuần hướng đối tượng Mọi thứ trong ừ các class cho đến những thứ cơ bản nhất: root = TkRoot.new
26
Trang 27Ruby Advance
Webservice
S d ng giao th c SOAP (Simple Object Acces Protocol).ử dụng trong các class ục, có thể sử dụng trong các class ứu
Trên Ruby, b n cài đ t SOAP có tên SOAP4R.ảy sang bước lặp kế tiếp ặp
SOAP4R h tr 2 lo i SOAP server applications:ỗi ít ợp thành công của Smalltalk, Python, Perl ạnh
CGI/FastCGI based (SOAP::RPC::CGIStub)
Standalone (SOAP::RPC:StandaloneServer)
SOAP::RPC::Driver h tr cho vi c vi t ng d ng SOAP ỗi ít ợp thành công của Smalltalk, Python, Perl ện ết hợp thành công của Smalltalk, Python, Perl ứu ục, có thể sử dụng trong các class
client applications
Trang 28 K th a trong Rubyết hợp thành công của Smalltalk, Python, Perl ừ các class cho đến những thứ cơ bản nhất:
Sending mail use a gmail
Webservice
28
Trang 29T ng k t ổng quan về Ruby ếp)
Là s k t h p c a nhi u ngôn ng khác nhau.ự kết hợp thành công của Smalltalk, Python, Perl ết hợp thành công của Smalltalk, Python, Perl ợp thành công của Smalltalk, Python, Perl ủa Smalltalk, Python, Perl ều thư viện ữ lập trình cấp cao
Mang u đi m đ c tr ng c a hư ể sử dụng trong các class ặp ư ủa Smalltalk, Python, Perl ướng đối tượng giống Smalltalk, Javang đ i tống Perl, Python ượp thành công của Smalltalk, Python, Perl ng thu n túy.ần túy
S d ng công ngh m i nh t.ử dụng trong các class ục, có thể sử dụng trong các class ện ớng đối tượng giống Smalltalk, Java ấp cao
Là ngôn ng khá m i.ữ lập trình cấp cao ớng đối tượng giống Smalltalk, Java
Trang 30Thanks for watching