Tải bản đầy đủ (.ppt) (30 trang)

Các vấn đề hiện đại Công nghệ phần mềm: Slide Ruby On Rails

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (326.79 KB, 30 trang )

Gi i thi u ngôn ng ớ ệ ữ
Ruby
Members:
Phan Duy Toàn
Nguy n Văn N iễ ộ
N i dung chínhộ
I. T ng quan v Rubyổ ề
II. Ruby Advance
III. Demo
2
T ng quan v Rubyổ ề
Yukihiro Matsumoto (Matz)

Sinh ngày: 14 - 04 – 1965

Quốc tịch: Nhật

Nghề nghiệp: Computer scientist,
programmer
3
“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.
T ng quan v Rubyổ ề

Ruby là:

S k t h p thành công c a Smalltalk, Python, Perl. ự ế ợ ủ

Ngôn ng l p trình c p cao.ữ ậ ấ


Đ c thông d ch gi ng Perl, Pythonượ ị ố

H ng đ i t ng gi ng Smalltalk, Javaướ ố ượ ố

Đ c vi t b i Matz năm 1993ượ ế ở
4
T ng quan v Rubyổ ề

M t s đ c tr ng c a Ruby:ộ ố ặ ư ủ

H ng đ i t ng thu n túyướ ố ượ ầ

D h c t p và nghiên c u.ễ ọ ậ ứ

Mã ngu n mồ ở

R t nhi u th vi nấ ề ư ệ

Code ít, l i ítỗ
5
T ng quan v Rubyổ ề

Variables:

$ten_bien: bi n toàn c 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 ế ự ể ể ử ụ
ph ng th c khác nhau c a 1 classươ ứ ủ


@@ten_bien: bi n l p, gi ng bi n staticế ớ ố ế

ten_bien: bi n localế

Pseudo-Variables:

self: gi ng $this trong PHPố

nil: gi ng null trong PHP. ố


6
T ng quan v Rubyổ ề

Constant :

Cú pháp:
Tên_h ng = giá_trằ ị

Ví d :ụ
Const = 5
MyConst = ‘my constant’
7
T ng quan v Rubyổ ề

Types
Integer Numbers, Floating Numbers, Boolean

String
String là lớp dùng để thể hiện chuỗi ký tự

string = ‘hello world!’

Ruby Arrays

Cách khai báo
arr = [1, 2, 3]
arr = Array.new

Các d ng:ạ
arr = [1, 2, 3]
arr = [[1,2],[3,4,5,6],[7,8,9]]
subArr = arr[0,2]
8
T ng quan v Rubyổ ề

Ruby Hashes
hsh = { "red" => 0xf00, "green" => 0x0f0 }
for key, value in hsh
puts “#{key} is #{value}”
end

Ruby Ranges
for n in 10 15
puts n
end
9
T ng quan v Rubyổ ề

Operator


S h c: +, -, *, /, %, …ố ọ

So sánh: ==, !=, >, >=, <, <=, …

Gán: =, +=, …

Logic: &&, ||, !, …
10
T ng quan v Rubyổ ề

if else
x=1
if x > 2
puts “x is greater than 2”
elsif x < 2 && x >= 0
puts “x is 0, 1 or 2”
else
puts “x is smaller than 0”
end
11
T ng quan v Rubyổ ề

case
age = 5
case age
when 0 2
puts "baby"
when 3 6
puts “youth”
else

puts “adult”
end
12
T ng quan v Rubyổ ề

while
i = 0
num = 5
while i < num do

puts “i = #i”)
i +=1
end


for
for i in 0 5
puts “i = #{i}”
end
ary = [ "fred", 10, 3.14]
for j in ary
puts “j = #{j}”
end

13

break : thoát kh i vòng l pỏ ặ

next : nh y sang b c l p k ti pả ướ ặ ế ế
T ng quan v 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
T ng quan v Rubyổ ề

Class
class Hello [< Class]
def initialize( name )
@name = name
end
def salute
puts "Hello #{@name}!"
end
End
# Create a new object
h = Hello.new("Ruby")
# Output "Hello Ruby!"
h.Salute
15
T ng quan v Rubyổ ề

Module

Modules là nhóm các thành phần hàm, biến, hằng số và chạy
độc lập

Ví d :ụ
module MyModule
def MyModule.intro
puts "This is the intro of modul"
end
def MyModule.sayHello
puts "Hello"
end
end
16
T ng quan v Rubyổ ề

M t s framework cho Ruby:ộ ố

Sinatra: Kích th c nhướ ỏ

Padrino: Kích th c trung bìnhướ

Rails: Kích th c l nướ ớ

Ngoài ra, còn nhi u framework khác nh : Camping, ề ư
Cramp, Cuba, Salad…
17
T ng quan v Rubyổ ề

u đi mƯ ể


Cú pháp trong sáng h n.ơ

H ng đ i t ng thu n ướ ố ượ ầ
túy.

Kh năng khai thác văn ả
b n m nhả ạ

Có tính c u trúc và n ấ ổ
đ nh h n.ị ơ

Nh c đi mượ ể

S l ng dòng code l n ố ượ ớ
h n các ngôn ng khác ơ ữ
nh Python, Perl …ư

Là ngôn ng ch y khá ữ ạ
ch m.ậ
18
Ruby Advance

Ruby Object oriented

Ruby là m t ngôn ng l p trình thu n h ng đ i t ng. M i th trong ộ ữ ậ ầ ướ ố ượ ọ ứ
Ruby đ u là Object, t các class cho đ n nh ng th c b n nh t: ề ừ ế ữ ứ ơ ả ấ
strings, number, true và false, M t class b n thân nó là m t ộ ả ộ
Object, đ c k th a t l p ượ ế ừ ừ ớ Class.

Gi ng nh Java, m t class bao g m ố ư ộ ồ attributes và methods


Khai báo class
class <class name>
code
end

Đ nh nghĩa objectị
<object name> = <class name>.new

Constructor Method
def initialize
code
end
19
Ruby Advance

Ruby Object oriented (ti p)ế

Attributes (Instance variables) c a Object là private v i các Object ủ ớ
khác và 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 mà đ c k th a.ố ớ ượ ế ừ

Ngoài ra, t bên ngoài class, có th truy c p gián ti p đ n các ừ ể ậ ế ế
attributes thông qua các accessor method và setter method (t ng t ươ ự
các ph ng th c get và set trong java)ươ ứ
class Person
def initialize(n) # initialize method
@name = n
end
def printName # accessor method

@name
end
end
20
Ruby Advance

Ruby Object oriented (ti p)ế

Variables và Method của class: được share giữa các object
class Box
@@count = 0
def initialize(w,h)
@width, @height = w, h
@@count += 1
end
def self.printCount()
puts "Box count is : #@@count"
end
end
box1 = Box.new(10, 20)
box2 = Box.new(30, 100)
Box.printCount()
21
Ruby Advance

Ruby Object oriented (ti 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ụ ố ớ


Inheritance: ch h tr đ n k th a, không h tr đa k th a. Thay ỉ ỗ ợ ơ ế ừ ỗ ợ ế ừ
vào đó Ruby đ a ra khái ni m ư ệ Mixins.

Overriding: các l p con có th thay đ i hành vi c a các method đã ớ ể ổ ủ
đ c đ nh nghĩa s n l p chaượ ị ẵ ở ớ

Overloading: gi ng n p ch ng toán t trong C++ố ạ ồ ử
class Complex
def initialize(r, v)
@real, @virtual = v
end
def +(other)
Complex.new(@real+other.real, @virtual+other.virtual)
end
end
22
Ruby Advance

Ruby Database Access

Các script Ruby t ng tác v i các database thông qua m t ươ ớ ộ
interface đ c l p v i c s d li u đ c cung c p b i ộ ậ ớ ơ ở ữ ệ ượ ấ ở
Ruby DBI module

DBI t o ra m t l p tr u t ng hóa gi a code Ruby và ạ ộ ớ ừ ượ ữ
database n m bên d i. Nó đ nh nghĩa m t t p các ằ ướ ị ộ ậ
method, các variables và các conventions mà cung c p ấ
m t consistence database interface, đ c l p v i database ộ ộ ậ ớ
đang đ c s d ng. Nh v y, l p trình viên có th d ượ ử ụ ờ ậ ậ ể ễ
dàng giao tác v i database mà không c n quan tâm đ n ớ ầ ế

lo i DBMS nào đang đ c s d ng.ạ ượ ử ụ
23
Ruby Advance

DBI Application’s Architecture
24
Ruby
Script
A
P
I
DBI
DBD: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 ộ ậ ớ ấ ộ ậ
ph ng th c đ giao tác v i databaseươ ứ ể ớ

DBD layer: ph thu c database, cung c p các drivers cho ụ ộ ấ
t ng database t ng ng. M i drivers s thông d ch các ừ ươ ứ ỗ ẽ ị
request t DBI layer và ánh x chúng thành các request ừ ạ

phù h p v i lo i database đang đ c s d ng. ợ ớ ạ ượ ử ụ
Ruby Advance

Sending Mailing

Ruby cung c p class ấ Net::SMTP cài đ t giao th c SMTP ặ ứ
phía client-side

T o SMTP object, và th c hi n k t n i đ n Server thông ạ ự ệ ế ố ế
qua port. M c đ nh server là localhost, port 25ặ ị
Net::SMTP.new (<Server>, <Port>)

Th c hi n k t n i đ n Server, v i account và password ự ệ ế ố ế ớ
v i đ nh d ng cho mã hóa là Authtype. M c đ nh Authtype ớ ị ạ ặ ị
là craim_md5
Net::SMTP.start(<Domain>, <Account>, <Password>,
<Authtype>)

G i mailử
Net::SMTP.sendmail(message, ‘’,
‘’)
25

×