An Introduction to Ruby

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Favorites, Groups & Events

    An Introduction to Ruby - Presentation Transcript

    1. Ruby A Programmer’s Best Friend Jonathan Weiss <jw@innerewut.de> 1
    2. Überblick Einführung Getting started Grundlagen Blocks und Iteratoren Goodies Resources Ruby on Rails - Übung 2
    3. Einführung 3
    4. Ruby? Ruby ist eine vollständig objektorientierte Skriptsprache Das Beste von Perl und Python Public release 1995 durch Yukihiro Matsumoto, a.k.a “Matz” 4
    5. Wichtigste Eigenschaften Interpretierte Skriptsprache Aktuell ist Ruby 1.8.2 Komplett Objekt-Orientiert Dynamische Typbindung Verfügbar über GPL oder eigene Lizenz The 5 E’s (by DHH) 5
    6. The 5 E’s Everything is an object Elegant blocks give inline power Exploring with reflection Extending at runtime Extensive standard libray 6
    7. Beispiel 0 5.times do puts “ruby ist cool”.upcase end Output: RUBY IST COOL RUBY IST COOL RUBY IST COOL RUBY IST COOL RUBY IST COOL 7
    8. Getting Started 8
    9. Ruby installieren GPL , somit Sourcen verfügbar: CVS, tar, make && make install Binary installer für Windows http://rubyforge.org/projects/ rubyinstaller/ 9
    10. Ruby ausführen Interpreter aufrufen und Skript übergeben: prompt> ruby meinprogramm.rb Shebang: #!/usr/local/bin/ruby print “a” 10
    11. Interactive Ruby Interactive Ruby (irb) ist eine Ruby “Shell” Erlaubt ausführen von eingegeben Code oder lesen von Code aus Dateien Shell-Eigenschaften wie History, Job- Controll und Commandline-Editing Perfekt, um zu probieren und spielen 11
    12. Demo 12
    13. Dokumentation Ruby wird meist in RDoc dokumentiert (vergleichbar JavaDoc) Konvertierung in HTML und ri ri erlaubt Zugang über Kommandozeile: prompt> ri WAS_ICH_WISSEN_WILL 13
    14. Demo 14
    15. Grundlagen 15
    16. Grundregeln Kein Semikolon am Ende der Zeile (bei einer Anweisung pro Zeile) Keine geschweiften Klammern zur Deklaration vom Blöcken, sondern “xxxx......end” Keine Deklaration von Variablen! () können bei Methoden weggelassen werden 16
    17. Alles ist ein Objekt Nummern und Strings sind auch Objekte “nil” als Null-Objekt statt null-pointer Zugang zu Instanz-Methoden über: Instanz.methode(arg1, arg2) Zugang zu Instanz-Attributen über: Instanz.attribut = 5 17
    18. Beispiel 1 a=9 b=1 c=a+b print c ; c = “Hi”; print c d = c.length + c.index(”i”) c = -99.abs ein_string = String.new(”HALLO”) auch_ein_string = ‘a’ + “bcdefg #{c}” 18
    19. Funktionen/Methoden Einleitung mit def funktions_name(argument) .... end implizites return des letzten Ausdruckes (wie überall in Ruby) 19
    20. Beispiel 2 def my_func puts “abc” 99 end def my_func2(a, b) return a+b end def a; “a”; end ergebnis = my_func(1,2) a() 20
    21. Namen Klassen, Konstanten und Module fangen mit Grossbuchstaben an Methodennamen sind kleingeschrieben Variablen (somit Objekte) fangen mit Kleinbuchstaben an 21
    22. Namen 2 Instanzvariablen fangen mit @ an Klassenvariablen fangen mit @@ an Globale Variablen beginnen mit $ Lokale Variablen beginnen mit Kleinbuchstaben 22
    23. Klassen Zugriff auf Klasseneigenschaften über Klasse.methode(arg1, arg2, arg3) Klasse.klassenvariable Klasse::KONSTANTE Definition von Klassen-Methoden über Klassenname.methode 23
    24. Beispiel 3 class Person @name #Instanz-var @alter #Instanz-var @@anzahl_auf_der_welt #Klassen-var MAX_ALTER = 100 #Konstante def check_alter(alter) #Instanz-meth alter < Person::MAX_ALTER end end a = Person.new if a.check_alter(90) puts “jung genug” end 24
    25. Beispiel 3 cont class Person def Person.how_many @@anzahl_auf_der_welt end end anzahl = Person.how_many 25
    26. Vererbung Konstruktor-Methode ist “initialize” class a < b bedeutet, dass a von b erbt “super” ist der Konstruktor der SuperKlasse 26
    27. Demo 27
    28. Access Control Private, public und protected Methoden sind default public Instanzvariablen gar nicht zugänglich, man muss erst passende Methoden erschaffen (Attribute) 28
    29. Beispiel 4 class Person @name #Instanz-var @alter #Instanz-var def name @name end public def alter @alter end protected :alter end print “#{Hansi.name} ist #{Hansi.alter} Jahre alt” 29
    30. Attribute Zuweisung auf Instanzvariablen durch Methoden: def funk_name=(arg) .... end 30
    31. Beispiel 5 class Person def name=(wie_soll_ich_heissen) @name = wie_soll_ich_heissen end attr_writer :alter end Hansi = Person.new Hansi.name = “Hansi” Hansi.alter = 12 print “#{Hansi.name} ist #{Hansi.alter} Jahre alt” 31
    32. Automatische Attribute Benutzung der Macros “attr_reader”, “attr_writer” oder “attr_access” 32
    33. Standard Datentypen Numbers (Fixum, Bignum) Strings Array Hash Regular expression Range 33
    34. Beispiel 6 string_a = “HUIBU” fixnummer = 9 big_nummer = 1.23e10 m_array = [”a”, “b”, [1,2], “c”, 3] mein_hash = {’anfang’ => “abc”, ‘ende’ => “xyz”} puts string_a + mein_hash[’anfang’] + m_array[0] meine_range = 1..10 meine_range.include?(5) 34
    35. Blocks und Iteratoren 35
    36. Blocks Blocks sind eine Art anonyme Funktion Sie werden (fast) immer mit “normalen” Funktionen eingesetzt Dabei wird der Kontrollfluß zwischen den Funktionen hin und her gereicht 36
    37. Blocks Blocks werden auf der selben Zeile wie der Methoden-Aufruf geschrieben Notation in {...} oder do...end Die “normale” Funktion kann den Block über “yield” aufrufen 37
    38. Beispiel 7 def foo yield puts “2 von foo” yield end foo { print “2 von Block”} Output: 2 von Block 2 von foo 2 von Block 38
    39. Beispiel 8 def foo yield puts “2 von foo” yield end foo do puts “2 von Block” end Output: 2 von Block 2 von foo 2 von Block 39
    40. Yield Yield kann auch Variablen übergeben, die an den Block weitergereicht werden Das Ergebnis des Blocks wird die Rückgabe von yield {|var1, var2| print var1 .....} do |var3, var4| ...end 40
    41. Beispiel 9 def foo(a, b) c=a+b print yield(c) end foo(1,2) do |var1| var1 * 2 end Output: 6 41
    42. Iteratoren Iteratoren sind Funktionen, die Blocks repetitiv aufrufen Finden dort Einsatz, wo andere Sprachen normalerweise Schleifen nutzen würden Intuitiv zu benutzten 42
    43. Beispiel 9 5.times { puts “Hi”} a = [1, 2] a.each do |the_one| print the_one end [”H”, “A”, “L”].collect {|x| x.succ} --> [”I”, “B”, “M”] [1, 2, 3, 5, 7, 9].find {|v| v*v > 30} --> 7 43
    44. Beispiel 10 class Array def find for i in 0..size value = self[i] return value if yield(value) end return nil end end 44
    45. Proc Objekt Man kann Blocks mit Hilfer der lamba Funktion oder des Konstruktor der Proc- Klasse in Objekte verwandeln Diese kann man nun “rumreichen” Abfangen des Blocks und Umwandeln in Proc auch in der “normalen” Methode möglich 45
    46. Demo 46
    47. Goodies 47
    48. Exceptions Ruby unterstützt und benutzt (!!!) Exceptions Schlüsselwörter raise, rescue und ensure Kontrollflußsteuerung über throw/catch 48
    49. Beispiel 11 begin funktion_die_schief_laufen_kann(1,2,”aaa”) rescue StandardError puts “Fehler aufgetreten” ensure puts “wird immer ausgeführt” end 49
    50. Integrierter Debugger Aufrufbar über: prompt> ruby -r debug skript.rb Breakpoint, Watches, Steps,.... 50
    51. Integriertes UnitTest Framework Ruby 1.8 hat das Test::Unit Framework integriert Unterstützung von Cases +Suits Neuer Test: requiere test/unit class TestUser < Test::Unit::Case 51
    52. Mixes Module und deren Eigenschaften können in beliebige Klassen “gemixt” werden Diese erhalten somit alle Methoden und Variablen Eine Art Java Interfaces nur mit Implementierung 52
    53. RubyGems Paketverwaltung für Ruby Programme und Bibliotheken Vergleichbar mit Pear und CPAN Installation von Programmen in verschiedenen Versionen möglich gem install rails --remote gem upgrade --remote 53
    54. erb, eruby und mod_ruby erb und eruby sind filter, die es erlauben, Ruby Code in HTML unterzubringen (PHP) <h1> Willkommen, <% print #{Hansi.name} %> </h1> mod_ruby vergleichbar mit mod_php 54
    55. Ruby on Rails Framework für Web-Anwendungen Model-View-Controller Ansatz Nur eine Konfigurationsdatei: Datenbank Zugangsdaten THE REASON to check out Ruby 55
    56. Integrierter Webserver WEBrick ist ein in Ruby geschriebener Webserver, der in der Standard Distribution enthalten ist Kann als Servlet-Container arbeiten 56
    57. Grafische Oberflächen RubyTK/GTK, FXRuby, ruby-gnome2, QT/Ruby, Ruby/Cocoa, WxRuby, FLTK, RubyWise, ParaGUI, Widestudio, Apollo,.... Somit “normale” GUI-Programme möglich 57
    58. Taint Obejcts Taint-modus, ähnlich wie bei Perl Setzen des Levels(1-4) über $SAFE Alle externen Daten sind “tainted” Tainted Objects können nicht an gefährliche Funktionen übergeben werden (z.B. System) 58
    59. Reflection Ruby hat massive Reflection API Möglich unbekannte Objekte, Klassen, Module und Funktionen zu inspizieren Wichtig für Debugger, IDEs und dynamische Erweiterbarkeit 59
    60. Distributed Ruby drb erlaubt ausführen von RubyCode auf entfernen Rechnern Vergleichbar CORBA, Java-RMI Einfach und schnell 1GHz PowerBook: 500 Calls pro Sek 60
    61. Crossplatform IDE FreeRIDE ist eine Ruby IDE für Windows, UNIX und Mac OS X Unterstützung von Debugging, Code completion, Refactoring, remote pair-programming http:// freeride.rubyforge.org 61
    62. Resources 62
    63. Prgramming Ruby The PickAxe Book Standardwerk von den Pragmatic Programmers Tutorial und Referenz Absolut zu empfehlen 63
    64. www.ruby-lang.org Rubys Homepage Sourcecode und FAQ Links zu anderen Ruby Seiten Ruby Application Archive (RAA) 64
    65. www.ruby-doc.org Zentrale Dokumentation RDoc Dokumentation als HTML Erste Version PickAxe als HTML 65
    66. www.rubygarden.org WebBlog/Wiki von Ruby Entwicklern Viele gute Artikel zum Thema Ruby Viele gute Links 66
    67. Bibliotheken und Pakete RubyForge http://www.rubyforge.org Ruby Production Archive http://rpa-base.rubyforge.org/wiki/ wiki.cgi Ruby Application Archive http://raa.ruby-lang.org 67
    68. Ruby on Rails Übung 68
    69. Ruby on Rails Framework für Web-Anwendungen Model-View-Controller Ansatz Nur eine Konfigurationsdatei: Datenbank Zugangsdaten THE REASON to check out Ruby 69
    70. Überblick Einführung MVC Überblick Rails-Architektur Übung 70
    71. Model-View-Controller Design-Pattern für Programme mit Interaktion mit dem Benutzer KLassen werden in drei Gruppen eingeteilt, die sich auf ihre jeweillige Aufgabe spezialisieren Vorteil: Entkopplung und somit Wiederverwendbarkeit 71
    72. Model Klasse, die das Business-Objekt abbildet mit allen seinen Funktionalitäten BSP: Klasse Benutzer Klasse Buch 72
    73. View Eigentliche Darstellung für den User Keine Funktionalität, nur Design +Anzeige BSP: Template, dass alle Bücher im System anzeigt Template, dass alle Bücher eines Benutzers anzeigt 73
    74. Controller Verbindung zwischen Model und View Lädt benötigte Daten aus dem Model und füttert sie in den View Prozess-Logik BSP: Lade alle Bücher im System und gebe sie dem richtigem Template 74
    75. Rails-Architektur 75
    76. Active Record Model Verbindet Ruby-Klasse mit Daten aus der Datenbank Bereitstellung von Funktionen zur Manipulation der Daten in der DB 76
    77. Action Controller Controller Bietet die eigentlichen Funktionalitäten an, mit denen der Benutzer interagiert Lädt den passenden Action View 77
    78. Action View View Ruby Template HTML mit ERb-tags Das was der Benutzer zu sehen bekommt 78
    79. Übung Implementierung einer Webapplikation in weniger als 30 Minuten 79
    80. Fin Fragen? 80

    + Jonathan WeissJonathan Weiss, 3 years ago

    custom

    4894 views, 0 favs, 4 embeds more stats

    An Introduction to Ruby, the programming language b more

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 4894
      • 4613 on SlideShare
      • 281 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 78
    Most viewed embeds
    • 272 views on http://www.informatik-student.de
    • 7 views on http://www.fiae.eu
    • 1 views on http://static.slideshare.net
    • 1 views on http://127.0.0.1:8795

    more

    All embeds
    • 272 views on http://www.informatik-student.de
    • 7 views on http://www.fiae.eu
    • 1 views on http://static.slideshare.net
    • 1 views on http://127.0.0.1:8795

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories