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

27 885 2
Các vấn đề hiện đại Công nghệ phần mềm: Báo cáo Ruby On Rails

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

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.

1 | P a g e TRƯỜNG ĐẠI HỌC CÔNG NGHỆ KHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO CÁC VẤN ĐỀ HIỆN ĐẠI BỘ MÔN CÔNG NGHỆ PHẦN MỀM ĐỀ TÀI: TÌM HIỂU NGÔN NGỮ RUBY Giảng viên: TS. Võ Đình Hiếu Các sinh viên: Phan Duy Toàn Nguyễn Văn Nội Hà Nội, tháng 12 năm 2013 MỤC LỤC MỤC LỤC 1 LỜI MỞ ĐẦU 3 NỘI DUNG 4 I. Phân công công việc 4 II. Tổng quan về Ruby 4 1. Giới thiệu chung về Ruby 4 2. Ruby cơ bản 4 a. Cấu trúc một chương trình Ruby 4 b. Các dạng dữ liệu và đối tượng 5 c. Toán tử trong Ruby 6 d. Các cấu trúc điều khiển 8 e. Các cấu trúc lặp và liệt kê 10 f. Cấu trúc liệt kê 11 g. Ngoại lệ 13 h. Các từ khóa điều khiển 13 i. Methods, procs, lamdas và Closures 13 k. Thừa kế trong Ruby 17 3. Ruby nâng cao 18 a. Hướng đối tượng 18 b. Cơ sở dữ liệu 19 c. Ứng dụng Web 20 d. Gửi Email 20 e. Lập trình Socket 20 f. Web Service 20 g. Ruby/Tk 20 h. Ruby/LDAP 21 1 | P a g e Tổng quan về Ruby – CVĐHĐ CNPM i. Đa luồng 21 4. Framework trên Ruby 21 5. Ruby vs C và Perl 22 III. Cài đặt chương trình 23 1. Cài đặt Ruby 23 2. Demo ví dụ Ruby 24 Tổng Kết 25 Tài liệu tham khảo 25 Page | 2 Tổng quan về Ruby – CVĐHĐ CNPM LỜI MỞ ĐẦU Trước hết, chúng em xin cảm ơn thầy Võ Đình Hiếu đã tận tình hướng dẫn và tạo điều kiện cho chúng em hoàn thành báo cáo này. Trong báo cáo này chúng em trình bày gồm 4 phần chính: Phần I. Phân công công việc của nhớm. Phần II. Trình bày tổng quan về ngôn ngữ lập trình Ruby. Phần III. Trình bày các cú pháp lệnh, ngữ nghĩa, cấu trúc chương trình cùng một số cấu trúc thông dụng trong Ruby. Phần IV. Các tài liệu mà chúng tôi đã tham khảo và sử dụng để hoàn thành báo cáo này. Ngoài ra, phần kết luận là tổng kết những gì chúng tôi có được sau khi tìm hiểu về ngôn ngữ lập trình Ruby. Do công việc tìm hiểu và viết báo cáo trong thời gian chúng tôi làm cùng với các môn khác nên có thể còn nhiều thiếu sót. Vì vậy, mong thầy và các bạn góp ý cho chúng tôi để chúng tôi có thể hoàn thành tốt hơn báo cáo này. Chân thành cảm ơn! Page | 3 Tổng quan về Ruby – CVĐHĐ CNPM NỘI DUNG I. Phân công công việc Bảng1: bảng phân công công việc Công việc Phan Duy Toàn Nguyễn Văn Nội • Tìm hiểu chung về Ruby • So sánh, và ưu-nhược điểm • Ruby advances • Demo x x x x x x II. Tổng quan về Ruby 1. Giới thiệu chung về Ruby 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, OS/2, Amiga… Ruby cũng hỗ trợ rất nhiều thư viện chuẩn cho lập trình viên. 2. Ruby cơ bản Cũng như các ngôn ngữ lập trình khác, Ruby cũng có các quy định về cú pháp, kiểu dữ liệu, các cấu trúc điều khiển luồng, các toán tử… a. Cấu trúc một chương trình Ruby Là một dạng của ngôn ngữ lập trình thế hệ thứ 3 (3GL: 3 rd Generation Language), một trương trình Ruby bao gồm các thư viện liên kết và các đoạn mã được phân chia theo khối (code block). Bên cạnh đó với đặc điểm là ngôn ngữ thông dịch được viết theo dạng script, chương trình không cần hàm main mà được thực thi theo thứ tự các dòng mã. Page | 4 Tổng quan về Ruby – CVĐHĐ CNPM Một chương trình có thể lưu trong nhiều tập tin mã nguồn khác nhau và được sử dụng lại thông qua cấu trúc lệnh : require hoặc path Khai báo trong Ruby không quá phức tạp như các ngôn ngữ khác vì không yêu cầu xác định kiểu dữ liệu trong cấu trúc khai báo. Ví dụ: myString = 'This is my String' myInt = 5 b. Các dạng dữ liệu và đối tượng Ruby là một ngôn ngữ hướng đối tượng 100%. Ở đây các thành phần dữ liệu từ số, ký tự, mảng…. đều được xây dựng trên cơ sở các lớp. • Số Cấu trúc phân cấp dữ liệu dạng số trong Ruby: Các dạng dữ liệu kiểu số được xây dựng từ lớp Numeric. Kiểu số nguyên : Integer có hai dạng là Fixnum với độ dài 31 bits và Bignum có độ dài tùy ý. Kiểu số thực được thể hiện qua lớp Float. Bên cạnh đó một số kiểu dữ liệu khác không có sẵn nhưng được định nghĩa trong các thư viện chuẩn của Ruby. • Ký tự String là lớp dùng để thể hiện chuỗi ký tự. Khác với Java String trong Ruby là “mutable” . String trong Ruby có thể được khai báo trong dấu ngoặc đơn hoặc ngoặc kép. Với dạng chuỗi được đặt trong dấu nháy đơn ‘’ thì ký tự \ chỉ có ý nghĩa khi sau nó là ký tự \ hoặc ‘. Bên cạnh đó chuỗi trong nháy đơn được viết xuống dòng thì nó sẽ được hiển thị thành nhiều dòng tương ứng. Với dạng chuối trong dấu nháy kép “” thì nhiều ký tự đặc biệt được hỗ trợ, ví dụ như \n, \t như trong java. Bên cạnh đó chuỗi trong dấu nháy kép còn có thể hiện thị kết quả của biểu thức trong nó thông qua ký tự #. Ví dụ : string = "So PI co gia tri la #{Math::PI}" puts string Page | 5 Tổng quan về Ruby – CVĐHĐ CNPM Sẽ hiển thị kết quả là: So PI co gia tri la 3.14159265358979 • Mảng Mảng có thể khai báo trực tiếp hoặc thông qua đối tượng Array: arr = [1,2,3,4,5,6] arr = Array.new Cách đánh chỉ số mảng trong Ruby cũng tương tự như trong java tức là từ 0 đến số phần tử -1. Tuy nhiên có một điều khác biệt ở chố các chỉ số 0. Một điểm đặc biệt nữa là trong Ruby, việc sắp xếp các thành phần mảng khá linh hoạt và mềm dẻo. Ta có thể khai báo mảng một chiều gồm các phần tử đơn: arr = [1,2,3,4,5,6]. Hoặc mảng lồng: arr = [[1,2],[3,4,5,6],[7,8,9]]. Hoặc mảng được trích xuất subArr = arr[0,2] #subArr = [[1,2],[3,4,5,6]]. Các mảng có thể tương tác với nhau thông qua các toán tử như +,-,*… Với phép + ta có thể cộng hai mảng với nhau: ar= [1,2,3] +[4] # ar=[1,2,3,4] Với phép trừ các phần tử mảng ở mảng trừ sẽ loại bỏ các phần tử có trong mảng bị trừ. ar= [1,2,3] -[2] # ar=[1,3] Với phép nhân, ta có thể nhân một mảng với một số và kết quả cho ta số phần tử mảng được lặp lại theo giá trị được nhân: ar= [1,2,3]*2 # ar= [1,2,3,1,2,3] Các mảng có thể đính thêm phần tử với phép toán <<: ar= [1,2,3]<<4 # ar= [1,2,3,4] Và các phép so sánh: |, &. Với | các giá trị trùng lặp của hai mảng sẽ được bỏ đi ( kể cả các phần tử trùng lặp trong 1 mảng. ar = [1,2,2,4,3,4] | [] # ar[1,2,4,3]. Trong khi đó với phép toán & các phần tử trùng nhau được giữ lại ( và không lặp). ar = [1,2,2,4,3,4] & [4,4] # ar[4] c. Toán tử trong Ruby Bảng dưới đây mô tả các toán tử trong Ruby với thứ tự ưu tiên từ cao xuống thấp Page | 6 Tổng quan về Ruby – CVĐHĐ CNPM N: Số toán hạng A: Thứ tự thực hiện (L: trái sang phải, R: phải sang trái) Bảng 2. Các toán tử trong Ruby Toán tử N A Ghi chú ! ~ + 1 R Toán tử phủ định, bù bit, phép cộng một toán hạng ** 2 R Phép lũy thừa - 1 R Phép trừ một toán hạng * / % 2 L Phép nhân, chia, lấy số dư + - 2 L Phép cộng, trừ ( hai toán hạng) << >> 2 L Phép dịch bit (trái, phải) & 2 L Phép AND các bit | ^ 2 L Phép OR và XOR các bit < <= >= > 2 L So sánh hơn kém (hoặc bằng) == === != =~ !~ <=> 2 N So sánh bằng, so sánh kiểu case, so sánh khác, hợp mẫu, so sánh && 2 L Phép AND logic || 2 L Phép OR logic 2 N Dải giá trị và flip-flop ?: 3 R Điều kiện Rescue 2 L Bổ nghĩa ngoại lệ Page | 7 Tổng quan về Ruby – CVĐHĐ CNPM Toán tử N A Ghi chú =**= *= /= %= += -= <<= >>= &&= &= ||= |= ^= 2 R Phép gán Not 1 R Phép phủ định logic ( ưu tiên thấp) and or 2 L Phép AND, OR logic (ưu tiên thấp) d. Các cấu trúc điều khiển • Các cấu trúc điều kiện  If Cấu trúc rẽ nhánh cơ bản nhất trong Ruby. If được khai báo và sử dụng theo cấu trúc sau: if <<điều kiện>> <> end <> if <<điều kiện>>  if-else Dạng đầy đủ của cấu trúc rẽ nhánh if, nó giúp kiểm soát rẽ nhánh chặt chẽ hơn cả trường hợp đúng và sai của biểu thức điều kiện. Cấu trúc khai báo: if <<điều kiện>> <> else <> end  elsif Page | 8 Tổng quan về Ruby – CVĐHĐ CNPM Dạng lệnh rẽ nhánh với cấu trúc đa điều kiện, giúp cho việc rẽ nhiều nhánh một cách dễ dàng trong Ruby. Cấu trúc lệnh: if <<điều kiện>> <> elsif<<điều kiện>> <> elsif<<điều kiện>> <> end  unless Cấu trúc rẽ nhánh với điều kiện xét ngược lại so với if, nó sử dụng tương tụ như if. Cấu trúc lệnh: unless <<điều kiện>> <> end unless cũng có thể được sử dụng với else như trường hợp của if.  case Case trong Ruby không giống trong Java, nó không cần lệnh break để nháy khỏi mỗi trường hợp điều kiện riêng. Ở đây có thể sử dụng cấu trúc elseif để đưa ra khối điều khiển giống như trong khối điều khiển case, tuy nhiên cú pháp case vấn thường được sử dụng nhiều hơn. Cấu trúc lệnh: case when <> then <> end Chú ý là ở đây nếu có nhiều hơn một điều kiện đúng thì hành động của điều kiện đầu tiên sẽ được thực hiện Ví dụ: x=1 a=case when x>0 then Page | 9 [...]... Ruby là một lựa chọn tốt cho phát triển các ứng dụng web trong thời đại hiện nay Trong tương lai Ruby sẽ có khả năng là một trong những ngôn ngữ hàng đầu trong lĩnh vực này Tài liệu tham khảo 1 Railstutorial: http:/ /ruby. railstutorial.org/ - tutorial Web development with Rails 2 Tryruby http://tryruby.org/ - Các bài tập và tương với Ruby 3 Raincast http://railscasts.com/ - Các screencasts về Ruby on. .. số lần lặp trong Ruby Cấu trúc khai báo cũng giống như trong Java hay C while do End  begin while Util Cấu trúc lặp nâng cao của Ruby, cách thức thực hiện tương tự như while Cấu trúc lệnh: util do begin end Page | 10 Tổng quan về Ruby – CVĐHĐ CNPM End util f Cấu trúc liệt kê • Với đối tượng số  upto/downto Sinh ra mảng các số theo thứ... screencasts về Ruby on Rails, các kinh nghiệm, thủ thuật 4 Codeschool http://www.codeschool.com/ - Gồm các khóa học miến phí với video hướng dẫn học Ruby, kèm ví dụ 5 Nettust+ http://net.tutsplus.com/ - cung cấp khá nhiều bài viết về screencast về Rails khá chất lượng 6 Rubyonrails: http://weblog.rubyonrails.org/ - Blog chính thức của Ruby on Rail 7 Therailsway: http://www.therailsway.com/ - Blog với... Ruby • Kế thừa trong Ruby (sử dụng Mixin) • Ứng dụng sending email Page | 24 Tổng quan về Ruby – CVĐHĐ CNPM • Ruby Tk • Webservice Tổng Kết Qua quá trình tìm hiểu về ngôn ngữ lập trình Ruby, chúng tối biết được lịch sử hình thành và phát triển của ngôn ngữ Ruby Các cấu trúc khai bảo cơ bản cũng cấu trúc lặp, rẽ nhánh … trong Ruby Hiểu được các thành phần cơ bản và quan trọng của Ruby Ruby là một ngôn... tả trong RFC1823 và được hỗ trợ bởi Ruby / LDAP i Đa luồng Ruby có threading độc lập với cả hệ điều hành Thế nên, tất cả nền tảng khác mà Ruby chạy trên sẽ có multithreading bất kể hệ đấy có hỗ trợ hay không Ngay cả MSDOS còn hỗ trợ Ruby có thể tiến hành chạy đồng thời nhiều luồng khác nhau trong cùng một thời điểm một cách dễ dàng Giúp tối ưu CPU trong quá trình xử lý các dữ liệu song song một cách... được coi như mặc định trong khai báo còn ở đây public được coi là mặc định trong khai báo Public cho phép các hàm được truy nhập từ bất kỳ đâu trong khi private chỉ cho các hàm được truy nhập từ các thành phần khác trong lớp đó và các lớp con của nó, protected giống private chỉ khác ở chỗ các hàm protected có thể được gọi bởi các thực thể của chính lớp đó hoặc với sefl class Test private def myTest()... đến hàm lồng Ở đó hàm bên trong sử dụng biến được khai báo bởi hàm chứa nó Ở Ruby, khái niệm này thường được thể hiện bởi các khối lambdas hoặc procs Ví dụ: def mainFunction(n,m) lambda{|x| x*n/m} end myLambda = mainFunction(2,4) puts myLambda.call(2) Kết quả 1 j Lớp và Modules • Lớp Là một ngôn ngữ hướng đối tượng, khái niệm lớp là thành phần cơ bản trong Ruby Lớp được khai báo như sau: class ... cơ sở dữ liệu thông qua DBI (database-independent interface 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... tượng phục vụ như là một "động tử" có thể hoàn tất các công việc một cách nội bộ, báo cáo, thay đổi trạng thái của nó và liên lạc với các đối tượng khác mà không cần cho biết làm cách nào đối tượng tiến hành được các thao tác Tính chất này thường được gọi là sự trừu tượng của dữ liệu Page | 18 Tổng quan về Ruby – CVĐHĐ CNPM Tính trừu tượng còn thể hiện qua việc một đối tượng ban đầu có thể có một số... a.testPrivate()#=> error in red as below Kết quả: pro Bên cạnh đó ở Ruby các biến trong lớp đều được đặt là private, trong khi các hằng số đều là public • Modules Modules là nhóm các thành phần hàm, biến, hằng số và chạy độc lập module MyModule def MyModule.intro puts "This is the intro of modul" end def MyModule.sayHello Page | 16 Tổng quan về Ruby – CVĐHĐ CNPM puts "Hello" end end class MyClass include(MyModule) . 1 | P a g e TR ỜNG ĐẠI HỌC CÔNG NGHỆ KHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO CÁC VẤN ĐỀ HIỆN ĐẠI BỘ MÔN CÔNG NGHỆ PHẦN MỀM ĐỀ TÀI: TÌM HIỂU NGÔN NGỮ RUBY Giảng viên: TS. Võ Đình Hiếu Các sinh viên:. bày gồm 4 phần chính: Phần I. Phân công công việc của nhớm. Phần II. Tr nh bày tổng quan về ngôn ngữ lập tr nh Ruby. Phần III. Tr nh bày các cú pháp lệnh, ngữ nghĩa, cấu tr c chương tr nh cùng. hiện chuỗi ký tự. Khác với Java String trong Ruby là “mutable” . String trong Ruby có thể được khai báo trong dấu ngoặc đơn hoặc ngoặc kép. Với dạng chuỗi được đặt trong dấu nháy đơn ‘’ thì ký tự

Ngày đăng: 15/05/2015, 10:46

Từ khóa liên quan

Mục lục

  • MỤC LỤC

  • LỜI MỞ ĐẦU

  • NỘI DUNG

  • I. Phân công công việc

  • II. Tổng quan về Ruby

    • 1. Giới thiệu chung về Ruby

    • 2. Ruby cơ bản

      • a. Cấu trúc một chương trình Ruby

      • b. Các dạng dữ liệu và đối tượng

      • c. Toán tử trong Ruby

      • d. Các cấu trúc điều khiển

      • e. Các cấu trúc lặp và liệt kê

      • f. Cấu trúc liệt kê

      • g. Ngoại lệ

      • h. Các từ khóa điều khiển

      • i. Methods, procs, lamdas và Closures

      • k. Thừa kế trong Ruby

      • 3. Ruby nâng cao

        • a. Hướng đối tượng

        • b. Cơ sở dữ liệu

        • c. Ứng dụng Web

        • d. Gửi Email

        • e. Lập trình Socket

Tài liệu cùng người dùng

Tài liệu liên quan