Ruby - Objektorientiertes Scripting, aber richtig!



Ähnliche Dokumente
Objektorientierte Programmierung für Anfänger am Beispiel PHP

Algorithmen mit Python

Professionelle Seminare im Bereich MS-Office

Was meinen die Leute eigentlich mit: Grexit?

Anleitung über den Umgang mit Schildern

Informationen zum Ambulant Betreuten Wohnen in leichter Sprache

Grundlagen von Python

Die Post hat eine Umfrage gemacht

! " # $ " % & Nicki Wruck worldwidewruck

Access und die andern (Office) Programme. Armin Hess

Zwischenablage (Bilder, Texte,...)

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Eine Anwendung mit InstantRails 1.7

4D Server v12 64-bit Version BETA VERSION

Vermeiden Sie es sich bei einer deutlich erfahreneren Person "dranzuhängen", Sie sind persönlich verantwortlich für Ihren Lernerfolg.

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Erwin Grüner

Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter

Übungen Programmieren 1 Felix Rohrer. Übungen

Der Gabelstapler: Wie? Was? Wer? Wo?

Grundbegriffe der Informatik

Leichte-Sprache-Bilder

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Algorithmen und Programmieren II Einführung in Python

Geld Verdienen im Internet leicht gemacht

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup Conrad Kobsch

Die Invaliden-Versicherung ändert sich

Dokumentation für das Spiel Pong

Welche Gedanken wir uns für die Erstellung einer Präsentation machen, sollen Ihnen die folgende Folien zeigen.

Was ist PZB? Personen-zentrierte Begleitung in einfacher Sprache erklärt

FAQ Freunde-werben auf osnatel.de

Woche 1: Was ist NLP? Die Geschichte des NLP.

Adobe Photoshop. Lightroom 5 für Einsteiger Bilder verwalten und entwickeln. Sam Jost

Änderung der Sicherheitseinstellungen von konten

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Was ich als Bürgermeister für Lübbecke tun möchte

Java Script für die Nutzung unseres Online-Bestellsystems

(C)opyright 2009 by Jochen Vajda

Zeichen bei Zahlen entschlüsseln

Catherina Lange, Heimbeiräte und Werkstatträte-Tagung, November

ONLINE-AKADEMIE. "Diplomierter NLP Anwender für Schule und Unterricht" Ziele

Internet Explorer Version 6

Nuke Menü Version 0.2 / VKP Neu! Jetzt mit Gruppenzuordnung der Links (Nur für Admins, nur für Mitglieder, nur für Anonyme oder für Alle)

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 22

Bauteilattribute als Sachdaten anzeigen

Lua Grundlagen Einführung in die Lua Programmiersprache

allensbacher berichte

Alle gehören dazu. Vorwort

Statuten in leichter Sprache

Website freiburg-bahai.de

Das Thema von diesem Text ist: Geld-Verwaltung für Menschen mit Lernschwierigkeiten

Qt-Projekte mit Visual Studio 2005

FORUM HANDREICHUNG (STAND: AUGUST 2013)

Nicht über uns ohne uns

DAVID: und David vom Deutschlandlabor. Wir beantworten Fragen zu Deutschland und den Deutschen.

Mit einem Mausklick sind s aus ACT! heraus in Outlook geschrieben, die dann wiederum auf Wunsch in ACT! dokumentiert werden.

Mehrere PDF-Dokumente zu einem zusammenfügen

DAVID: und David vom Deutschlandlabor. Wir beantworten Fragen zu Deutschland und den Deutschen.

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Zugriff auf Daten der Wago über eine Webseite

Nicht kopieren. Der neue Report von: Stefan Ploberger. 1. Ausgabe 2003

Tevalo Handbuch v 1.1 vom

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank

SEMINAR Modifikation für die Nutzung des Community Builders

Innere Klassen in Java

Objektorientierte Programmierung

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

Sin-Funktion vgl. Cos-Funktion

Das Persönliche Budget in verständlicher Sprache

1. Weniger Steuern zahlen

Anleitung zur Daten zur Datensicherung und Datenrücksicherung. Datensicherung

50 Fragen, um Dir das Rauchen abzugewöhnen 1/6

Python SVN-Revision 12

Das Leitbild vom Verein WIR

So erstellen Sie nützliche Beschreibungen zu Ihren Tradingdaten

Arbeit zur Lebens-Geschichte mit Menschen mit Behinderung Ein Papier des Bundesverbands evangelische Behindertenhilfe e.v.

SJ OFFICE - Update 3.0

Online Newsletter III

Wir machen neue Politik für Baden-Württemberg

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg.

Elexis-BlueEvidence-Connector

PK-Website: Besuche & Seitenaufrufe 2010 und 2011

1 Was ist das Mediencenter?

FAQ Verwendung. 1. Wie kann ich eine Verbindung zu meinem virtuellen SeeZam-Tresor herstellen?

SMART Newsletter Education Solutions April 2015

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

FDAX mit Zertifikaten gehandelt

L10N-Manager 3. Netzwerktreffen der Hochschulübersetzer/i nnen Mannheim 10. Mai 2016

5. Tutorium zu Programmieren

Besucherbefragung im Jugend-Cafe am Markt in Rhauderfehn

Elternzeit Was ist das?

Die neue Aufgabe von der Monitoring-Stelle. Das ist die Monitoring-Stelle:

Umfrage bei Menschen mit Behinderung über Sport in Leipzig Was kam bei der Umfrage heraus?

Updatehinweise für die Version forma 5.5.5

Welche Bereiche gibt es auf der Internetseite vom Bundes-Aufsichtsamt für Flugsicherung?

Fachhochschule Wiesbaden - Fachbereich DCSM. Skriptsprachen. Moderne, objekt-orientierte Skriptsprachen mit Betonung auf Ruby

Persönliche Zukunftsplanung mit Menschen, denen nicht zugetraut wird, dass sie für sich selbst sprechen können Von Susanne Göbel und Josef Ströbl

Eva Douma: Die Vorteile und Nachteile der Ökonomisierung in der Sozialen Arbeit

Transkript:

Ruby - Objektorientiertes Scripting, aber richtig! Andreas Krennmair krennmair@acm.org 2. November 2003 0-0

Ruby - Objektorientiertes Scripting, aber richtig! 0-1 Aga Ruby s Syntax Ruby s coole Konzepte Sprachverwandtschaften Wofür Ruby geeignet ist und wofür nicht

Ruby - Objektorientiertes Scripting, aber richtig! 0-2 Einleitung Ab 1993 von Yukihiro Matz Matsumoto entwickelt Fand die Objektorientierung von Perl 5 zu eklig und Python zu wenig konsequent Entschloss sich, es selber besser zu machen, und begann mit Ruby Derzeit in der Version 1.6 (1.8 beta) aktuell Läuft auf den meisten Unix-Derivaten, Win32, BeOS, Mac OS 9 und DOS

Ruby - Objektorientiertes Scripting, aber richtig! 0-3 Ruby s Features Einfache Syntax. Ruby-Code ist so einfach zu lesen, wie er zu schreiben ist (sehr einfach) Objektorientierte Features: Klassen, Objekte, Methoden, Datenkapselung,... Mehr Objektorientierung: Mixin-Konzepte, sehr einfache Realisierbarkeit von Design Patterns Noch mehr Objektorientierung: alles ist ein Objekt, sogar Klassen! Alle Objekte lassen sich zur Laufzeit modifizieren Operator Overloading Exception Handling Closures und Iteratoren: konsequent in allen Containern und den meisten Klassen der Standardbibliothek durchgezogen, für eigene Container sehr einfach selbst implementierbar

Ruby - Objektorientiertes Scripting, aber richtig! 0-4 Garbage Collector. Was wäre eine Skriptsprache ohne Garbage Collector? ;-) Einfach in C erweiterbar

Ruby - Objektorientiertes Scripting, aber richtig! 0-5 Ruby s Syntax Elemente strukturierter Programmierung Anonyme Codeblöcke Scopes Klassen und Objekte

Ruby - Objektorientiertes Scripting, aber richtig! 0-6 Sequenz Eine Anweisung pro Zeile Mehrere Anweisungen können mit Strichpunkt getrennt in eine Zeile geschrieben werden $stderr.puts "Hello, World" i = 3 ; j = 4 ; k = 5

Ruby - Objektorientiertes Scripting, aber richtig! 0-7 if-anweisungen if i == 3 then puts "bla" elsif i == 4 then puts "fa" else puts "sel" Das then ist übrigens optional (TIMTOWTDI).

Ruby - Objektorientiertes Scripting, aber richtig! 0-8 Anweisungs-Modifier Funktionieren genauso wie in Perl $stdout.puts "blafasel" if i == 3 $stderr.puts "foobar" unless not (i == 3)

Ruby - Objektorientiertes Scripting, aber richtig! 0-9 Mehrfachverzweigung mit case case in Ruby hat in etwa dieselben Eigenschaften wie das case von Pascal. mehrere Werte und Wertebereiche als Verzweigungsbedingung erlaubt kein fall through (was viele C/C++-Programmierer verwirrt) Vorteil: auch Regular Expressions sind als Verzweigungsbedingungen erlaubt case inputline when "debug" dumpdebuginfo when /ˆprint (\w+)/ dumpvariable($1) when "quit", "exit", "bye" exit else puts "Ungültiger Befehl #{inputline} "

Ruby - Objektorientiertes Scripting, aber richtig! 0-10 while-schleife i = 0 while i<3 do puts "#{i}" i += 1 Das do ist übrigens ebenfalls optional. Das while-konstrukt gibt es auch in der Anweisungs-Modifier-Variante: puts "Please stop, Dave" while true

Ruby - Objektorientiertes Scripting, aber richtig! 0-11 Anonyme Codeblöcke (Closures) Methoden kann man anonyme Codeblöcke anhängen Angehängter Codeblock kann von Methode mit yield aufgerufen werden Dem Codeblock können Parameter übergeben werden Beispiele: einobjekt.einemethode do # Code einobjekt.methode2 { x # Parameterdeklaration # Code }

Ruby - Objektorientiertes Scripting, aber richtig! 0-12 Scopes Scope der Variable wird durch Prefix angegeben Kein spezieller Prefix: lokale Variable, Geltungsbereich bis zum Blocke $ Prefix: globale Variable (z.b. $ ) @ Prefix: Membervariablen von Objekten @@ Prefix: Klassenvariablen

Ruby - Objektorientiertes Scripting, aber richtig! 0-13 Klassen und Objekte Methodefinitionen zwischen class Foobar und zu finden Methoden werden mit def quux definiert, Ende wird mit markiert Die Methode initialize ist der Konstruktor Membervariablen sind grundsätzlich ohne Ausnahme private Ausweg: Zugriffsfunktionen, genannt Accessors. Können händisch definiert automatisch generiert werden Variablen sind übrigens typlose Referenzen auf Objekte

Ruby - Objektorientiertes Scripting, aber richtig! 0-14 Beispiel für eine Klasse class FooBar def initialize(param1 = 0) @foo = param1 def foo @foo def foo=(f) @foo = f def +(x) @foo + x.foo

Ruby - Objektorientiertes Scripting, aber richtig! 0-15 Iteratoren Problem: man will möglichst generisch auf alle in einem Container gehaltenen Elemente zugreifen Lösung: Iteratoren Es wird an eine Iteratormethode ein Codeblock übergeben, welche dann von der Iteratormethode für jedes Element im Container aufgerufen wird Ein Iterator, der in praktisch allen Containern der Ruby-Standardbibliothek zu finden ist, ist each Beispiel für Iteratoren: namen = [ "Hans", "Franz", "Patrick", "Rudi", "Alex" ] namen.each { n puts "#{n} ist ziemlich cool." }

Ruby - Objektorientiertes Scripting, aber richtig! 0-16 Mehr Iteratoren Iteratoren werden für die Konstruktion verschiedenster Schleifen verwet Beispiele: summe = 0 durchlaeufe = 100.times do x summe += x puts "Durchschnitt aller Zahlen von 0 bis 99:" puts "#{summe/durchlaeufe}" 1.upto(10) do i i.downto(1) { print "*" } puts ""

Ruby - Objektorientiertes Scripting, aber richtig! 0-17 Iteratoren selbermachen (1) Wie bereits erwähnt, können an Methoden anonyme Codeblöcke angehängt werden Diese Codeblöcke können mit yield aufgerufen werden Beispiel: def funktion yield 4 ; yield 5 # oder: [4,5].each { x yield x } funktion { zahl puts "#{zahl}*{zahl} = #{zahl*zahl}" } Ausgabe:

Ruby - Objektorientiertes Scripting, aber richtig! 0-18 4*4 = 16 5*5 = 25

Ruby - Objektorientiertes Scripting, aber richtig! 0-19 Iteratoren selbermachen (2) Beispiel: class MyContainer #... def each i = 0 while i < @arr.length do yield @arr[i]

Ruby - Objektorientiertes Scripting, aber richtig! 0-20 Klassen und Objekte zur Laufzeit erweitern (1) Alle Objekte können zur Laufzeit modifiziert werden Nachdem Klassen auch Objekte sind, können sie auch zur Laufzeit modifiziert werden Modifikationen können direkt im Code gemacht werden, oder aus Dateien geladen werden Programme können sich also zur Laufzeit selbst modifizieren

Ruby - Objektorientiertes Scripting, aber richtig! 0-21 Klassen und Objekte zur Laufzeit erweitern (2) class TestClass def func puts "foo" x = TestClass.new x.func i = $stdin.gets.to_i if i == 3 then class TestClass def func puts "bar" x.func

Ruby - Objektorientiertes Scripting, aber richtig! 0-22 Sprachverwandtschaften Ruby und Perl Ruby und Smalltalk

Ruby - Objektorientiertes Scripting, aber richtig! 0-23 Ruby und Perl Perl war Vorlage bei der Entwicklung von Ruby Einige Dinge in Ruby wurden aus Perl übernommen, z.b. Perl-kompatible Regular Expressions Die implizite $ Variable Anweisungsmodifier sehr schnell erlernbar

Ruby - Objektorientiertes Scripting, aber richtig! 0-24 Ruby und Smalltalk Smalltalk ist eine der ersten objektorientierten Programmiersprachen Folge Features wurden aus Smalltalk übernommen: Alles ist ein Objekt Anonyme Codeblöcke Iteratoren Late Binding

Ruby - Objektorientiertes Scripting, aber richtig! 0-25 Wofür Ruby verwet wird Prototyping Textverarbeitung Cross-Plattform-Programmierung...

Ruby - Objektorientiertes Scripting, aber richtig! 0-26 Wofür ich schon Ruby verwet habe Evolutionärer Prototyp für MMS Content-Channel Abo-System Prototyp für Network Intrusion Detection System (gerade in Entwicklung; siehe mein zweiter Vortrag heute) Firmeninterne Plugins für die exzellente Monitoringsoftware nagios

Ruby - Objektorientiertes Scripting, aber richtig! 0-27 Wofür Ruby nicht geeignet ist Echtzeitanwungen wenn hohe Ausführungsgeschwindigkeit gefragt ist Steuerungen für wichtige Systeme (Flugzeuge, Raumfahrt,...) wegen fehler Typsicherheit Ruby ist (noch) nichts für Leute, die sich an CPAN o.ä. gewöhnt haben!...

Ruby - Objektorientiertes Scripting, aber richtig! 0-28 Wo kann ich mehr zu Ruby erfahren? http://www.ruby-lang.org/en/ http://www.pragmaticprogrammer.com/ruby/ http://www.rubynet.org/ http://www.rubydoc.org/ http://www.rubygarden.org/...

Ruby - Objektorientiertes Scripting, aber richtig! 0-29 Endlich! die letzte Folie! Noch Fragen? Wer sich jetzt nicht traut, mir eine Frage zu stellen, kann dies auch per Email tun: krennmair@acm.org