Smalltalk Eine Objektorientierte Programmiersprache

Total Page:16

File Type:pdf, Size:1020Kb

Smalltalk Eine Objektorientierte Programmiersprache Arbeitsgruppe Programmiersprachen und Übersetzerkonstruktion Institut für Informatik Christian-Albrechts-Universität zu Kiel Seminararbeit Smalltalk Eine objektorientierte Programmiersprache Phil Stelzer WS 2012/2013 Betreuer: Prof. Dr. Michael Hanus Inhaltsverzeichnis 1 Einordnung 1 1.1 Geschichte der Sprache . .1 1.2 Entwicklung/Vorgängersprachen . .2 1.3 Paradigma . .3 2 Anwendungsgebiete 4 2.1 Wofür ist die Sprache beabsichtigt? . .4 2.2 Wo wird die Sprache eingesetzt? . .4 3 Konzepte und Struktur 5 3.1 Sprachbeschreibung . .5 3.2 Was ist bei der Benutzung von Smalltalk zu beachten? . .6 3.3 Konzepte an Beispielen . .6 3.3.1 Beispiel 1 . .6 3.3.2 Beispiel 2 . .8 3.4 Vergleich mit verwandten Sprachen . .9 4 Technische Unterstützung 10 4.1 Compiler, Interpreter, Entwicklungsumgebung . 10 4.2 Werkzeuge und Bibliotheken . 11 4.3 Portabilität . 11 5 Diskussion und Zusammenfassung 12 5.1 Vor- und Nachteile . 12 5.2 Zukunft der Sprache . 12 ii Abbildungsverzeichnis 1.1 Alan Kay mit einem Prototyp des Dynabooks . .2 3.1 Nachrichten an Objekte senden . .7 3.2 Objektdumper als Beispiel für Reection . .8 4.1 Pharo als Beispiel einer typischen Smalltalk Umgebung . 10 5.1 Open Cobalt Projekt zeigt 3D Verlinkungen zu anderen Desktops . 13 5.2 Open Cobalt Nutzer schauen sich zusammen eine VNC Übertragung an . 14 iii 1 Einordnung 1.1 Geschichte der Sprache Smalltalk wurde in den 1970er Jahren von Alan Kay, Dan Ingalls, Adele Goldberg und anderen am Forschungszentrum Xerox PARC in Kalifornien entwickelt. Die erste Version von Smalltalk wurde 1972 veröentlicht. Das Konzept der Sprache entstand in den spä- ten 1960er Jahren in der Ph.D. Dissertation von Alan Kay, der schon damals den Nutzen von Computern für nicht-Programmierer voraussah. Seine Doktorarbeit befasste sich mit einem Gerät, dem sogenannten 'Dynabook' (Abbildung 1.1), das mehrere Papier- seiten durch Fenster darstellen kann und durch Tastendrücke bzw. Fingergesten direkt auf dem Bildschirm gesteuert werden kann. Diese erstmal nur theoretisch formulierte Idee verschate ihm daraufhin eine Anstellung am Xerox PARC, wo er in der 'Learning Research Group' (1981 umbenannt in 'Software Concepts Group') seine Vision umzu- setzen versuchte. Die Arbeitsgruppe konzentrierte sich auf zwei Hauptbereiche bei ihren Forschungen: Eine Programmiersprache, die als Schnittstelle zwischen den Modellen im menschlichen Geist und der in Computer-Hardware dient, und eine Benutzeroberäche die auf die Kommunikation von Menschen mit Computern angepasst ist [GR83]. Einher- gehend mit diesen Forschungen wurden verschiedene Experimente durchgeführt, die sich damit beschäftigten Kindern das Programmieren beizubringen. Die Entwicklungen ende- ten in der 1980 vorgestellten Version Smalltalk-80, die Alan Kay's Vision fast vollständig erfüllte. In den nachfolgenden Jahren bis in die 90er verbreitete sich Smalltalk eher mäÿig. Die Anforderungen an die Hardware durch die graphische Oberäche war anspruchsvoll und für die meisten C-Programmierer war C++ der aussichtsreichere Umstieg. Anfang und Mitte der 90er Jahre gab es jedoch einen kurzen Aufschwung, da unter anderem IBM damit begann, Smalltalk in Groÿkundenprojekten einzusetzen und die Anzahl der verfügbaren Implementierungen stark zunahm. Gebremst wurde dies schon Ende der 90er von Java, welches durch das Internet zu gröÿerer Popularität gelangt war. 1996 wurde Squeak von den ursprünglichen Smalltalk Entwicklern veröentlicht. Squeak ist eine plattformunabhängige Implementierung inklusive Entwicklungsumgebung für Small- 1 1 Einordnung talk und wird in dem Projekt 'One Laptop Per Child' als Lernumgebung eingesetzt. Abbildung 1.1: Alan Kay mit einem Prototyp des Dynabooks Aufbauend auf der Frage nach einer optimalen Mensch-Computer-Schnittstelle - und damit Alan Kays Vision - fand in den letzten Jahren eine Weiterentwicklung und An- passung der Antwort auf diese Frage statt. Mit dem Croquet-Projekt wurde 2007 eine Plattform veröentlicht, die nicht nur 2D Oberächen in Smalltalk, sondern 3D Objekte in einer Art 'virtual reality' darstellt. Interessant dabei ist, dass der Nutzer während der Benutzung Objekte der Welt in Echtzeit verändern und anpassen kann. Die Weiterent- wicklung wurde 2009 an das Open Cobalt Projekt übergeben und wird aktiv gepegt. 1.2 Entwicklung/Vorgängersprachen Die Entwicklung von Smalltalk wurde in einigen Punkten von den Sprachen Lisp und Simula beeinusst. Von Lisp, das 1958 speziziert wurde, wurden Konzepte wie das so genannte 'garbage collecting' übernommen. Simula, als Vorgänger der objektorientierten Programmiersprachen, führte die Schlüs- selwörter 'class', 'new', 'this' ein, die auch heute noch in modernen Programmiersprachen verwendet werden. Auch das Klassenkonzept, Vererbung, Typen, Methoden und Eigen- schaften wurden ähnlich in Smalltalk eingesetzt. Das Konzept, eine Art Schreibtisch als 2D Oberäche darzustellen, hatte groÿen Ein- 2 1 Einordnung uss auf die heute verbreiteten Desktopkonzepte von Microsoft Windows und OS X von Apple. Die von Smalltalk verwendete virtuelle Maschine sowie der Garbage Collector sind Grundlage für die Plattformunabhängigkeit in Java. Der letzte ozielle Standard von Smalltalk wurde 1980 mit Smalltalk-80 veröent- licht. Dieser wird am konsequentesten durch die Implementierung Squeak umgesetzt und durch andere Projekte wie 'Pharo' oder 'VisualAge Smalltalk' erweitert und an aktuelle Computerarchitekturen angepasst. 1.3 Paradigma Smalltalk ist eine objektorientierte, reektive, dynamisch typisierte, Abbild-basierende ('image based') Programmiersprache. Eine objektorientierte Programmiersprache ver- packt ihre Daten und Methoden, um die Daten zu verändern, in Objekten. Die einzige Möglichkeit die Daten zu modizieren besteht darin, Nachrichten an das entsprechende Objekt zu schicken. Attribute von Objekten können nicht durch direkten Zugri von auÿen geändert werden. Auf diese Weise wird das Konzept der Datenkapselung ('data encapsulation') sichergestellt. Ein weiterer Aspekt der objektorientierten Programmierung ist die Vererbung. Durch Vererbung steigert sich die sogenannte 'code reusability', indem schon geschriebene Me- thoden an Kindklassen weitergegeben bzw. vererbt werden können. Kritiker der objekt- orientierten Programmierung bezeichnen das Paradigma als 'Software bloat'. Joe Arm- strong, der Ernder von Erlang, bringt diese Kritik mit den Worten "The problem with object-oriented languages is they've got all this implicit environment that they carry around with them. You wanted a banana but what you got was a gorilla holding the banana and the entire jungle."[Wik13a] auf den Punkt. Smalltalk jedoch setzt die Eigenschaften der objektorientierten Programmierung kon- sequent um und hat mit diesem Paradigma viele andere heute noch populäre Sprachen beeinusst. 3 2 Anwendungsgebiete 2.1 Wofür ist die Sprache beabsichtigt? Smalltalk und die damit verbundene Desktopumgebung war ursprünglich vor allem für Schüler und Schulen gedacht. Alan Kay's Idee war es eine Umgebung für Schüler zu schaf- fen, die die Interaktion mit dem Computer selbst für Kinder möglich macht. Im Mittel- punkt dabei standen vor allem das Denken in Objekten, was der natürlichen Denkweise eines Menschen nahe kommt. Das Interface von Smalltalk versucht, eine visuelle Sprache zu Objekten zu schaen und den Computer damit zu einem veränderbaren, interaktiven Medium zu machen. Auch die Verwendung eines Zeigegeräts war schon früh geplant und zeigt, wie nah das Konzept von Smalltalk und der graphischen Darstellung dem heutigen 'personal computer' kommt. 2.2 Wo wird die Sprache eingesetzt? Heutzutage wird Smalltalk in der Wirtschaft nur selten eingesetzt, obwohl es kommerzielle Projekte wie 'VA Smalltalk' gibt. Der eigentliche Zweck jedoch, Smalltalk vor allem für Schüler als Lernmedium einzuset- zen, ist mit der auf Squeak basierenden EToys Implementierung weitestgehend geglückt. Die Initiative 'One Laptop Per Child (OLPC)' setzt auf den verwendeten Laptops (die dem Vorbild des Dynabooks sehr nahe kommen) unter anderem EToys ein und wird von Alan Kay aktiv unterstützt [Wik12, Children's Machine]. Das Open Cobalt Projekt, welches die Darstellung des Desktops als 3D Oberäche und das Teilen von Ressourcen durch sogenannte '3D Portale' mit anderen Benutzern ermöglicht, bendet sich in aktiver Entwicklung. Generell ist Smalltalk weiterhin eher eine Nischensprache, die kaum in kommerziellen Projekten eingesetzt wird, dafür jedoch immer noch viele Anhänger als Hobbyprogram- mierer hat. 4 3 Konzepte und Struktur 3.1 Sprachbeschreibung Das wohl markanteste Merkmal an Smalltalk ist seine konsequent eingesetzte Objektori- entierung. Die aus Java bekannten primitiven Typen wie Integer oder Character werden in Smalltalk ebenfalls durch Objekte repräsentiert. Sogar ausführbarer Code, Stackframes und Speicher sind Objekte. Im Allgemeineren basiert Smalltalks Objektmodel auf den folgenden fünf Regeln [BDNP09]: Rule 1. Everything is an object. Rule 2. Every object is an instance of a class. Rule 3. Every class has a superclass. Rule 4. Everything happens by sending messages. Rule 5. Method lookup follows the inheritance chain. Beim genaueren Betrachten der Regeln fällt vor allem auf, dass demnach auch Klassen Objekte sein müssen. Diese Eigenschaft ist fundamental, denn sie macht Smalltalk zu einem reektiven System. Reektivität bzw. 'reection' bedeutet, dass das Verhalten und die Struktur (Eigen- schaften und Methoden) eines Objekts zur Laufzeit geändert werden kann. Dies bietet verschiedene Vorteile wie die Überwachung von Klassen und Objekten und das Ändern von
Recommended publications
  • Traits: Experience with a Language Feature
    7UDLWV([SHULHQFHZLWKD/DQJXDJH)HDWXUH (PHUVRQ50XUSK\+LOO $QGUHZ3%ODFN 7KH(YHUJUHHQ6WDWH&ROOHJH 2*,6FKRRORI6FLHQFH1(QJLQHHULQJ$ (YHUJUHHQ3DUNZD\1: 2UHJRQ+HDOWKDQG6FLHQFH8QLYHUVLW\ 2O\PSLD$:$ 1::DONHU5G PXUHPH#HYHUJUHHQHGX %HDYHUWRQ$25 EODFN#FVHRJLHGX ABSTRACT the desired semantics of that method changes, or if a bug is This paper reports our experiences using traits, collections of found, the programmer must track down and fix every copy. By pure methods designed to promote reuse and understandability reusing a method, behavior can be defined and maintained in in object-oriented programs. Traits had previously been used to one place. refactor the Smalltalk collection hierarchy, but only by the crea- tors of traits themselves. This experience report represents the In object-oriented programming, inheritance is the normal way first independent test of these language features. Murphy-Hill of reusing methods—classes inherit methods from other classes. implemented a substantial multi-class data structure called ropes Single inheritance is the most basic and most widespread type of that makes significant use of traits. We found that traits im- inheritance. It allows methods to be shared among classes in an proved understandability and reduced the number of methods elegant and efficient way, but does not always allow for maxi- that needed to be written by 46%. mum reuse. Consider a small example. In Squeak [7], a dialect of Smalltalk, Categories and Subject Descriptors the class &ROOHFWLRQ is the superclass of all the classes that $UUD\ +HDS D.2.3 [Programming Languages]: Coding Tools and Tech- implement collection data structures, including , , 6HW niques - object-oriented programming and . The property of being empty is common to many ob- jects—it simply requires that the object have a size method, and D.3.3 [Programming Languages]: Language Constructs and that the method returns zero.
    [Show full text]
  • Liste Von Programmiersprachen
    www.sf-ag.com Liste von Programmiersprachen A (1) A (21) AMOS BASIC (2) A# (22) AMPL (3) A+ (23) Angel Script (4) ABAP (24) ANSYS Parametric Design Language (5) Action (25) APL (6) Action Script (26) App Inventor (7) Action Oberon (27) Applied Type System (8) ACUCOBOL (28) Apple Script (9) Ada (29) Arden-Syntax (10) ADbasic (30) ARLA (11) Adenine (31) ASIC (12) Agilent VEE (32) Atlas Transformatikon Language (13) AIMMS (33) Autocoder (14) Aldor (34) Auto Hotkey (15) Alef (35) Autolt (16) Aleph (36) AutoLISP (17) ALGOL (ALGOL 60, ALGOL W, ALGOL 68) (37) Automatically Programmed Tools (APT) (18) Alice (38) Avenue (19) AML (39) awk (awk, gawk, mawk, nawk) (20) Amiga BASIC B (1) B (9) Bean Shell (2) B-0 (10) Befunge (3) BANCStar (11) Beta (Programmiersprache) (4) BASIC, siehe auch Liste der BASIC-Dialekte (12) BLISS (Programmiersprache) (5) Basic Calculator (13) Blitz Basic (6) Batch (14) Boo (7) Bash (15) Brainfuck, Branfuck2D (8) Basic Combined Programming Language (BCPL) Stichworte: Hochsprachenliste Letzte Änderung: 27.07.2016 / TS C:\Users\Goose\Downloads\Softwareentwicklung\Hochsprachenliste.doc Seite 1 von 7 www.sf-ag.com C (1) C (20) Cluster (2) C++ (21) Co-array Fortran (3) C-- (22) COBOL (4) C# (23) Cobra (5) C/AL (24) Coffee Script (6) Caml, siehe Objective CAML (25) COMAL (7) Ceylon (26) Cω (8) C for graphics (27) COMIT (9) Chef (28) Common Lisp (10) CHILL (29) Component Pascal (11) Chuck (Programmiersprache) (30) Comskee (12) CL (31) CONZEPT 16 (13) Clarion (32) CPL (14) Clean (33) CURL (15) Clipper (34) Curry (16) CLIPS (35)
    [Show full text]
  • The Future: the Story of Squeak, a Practical Smalltalk Written in Itself
    Back to the future: the story of Squeak, a practical Smalltalk written in itself Dan Ingalls, Ted Kaehler, John Maloney, Scott Wallace, and Alan Kay [Also published in OOPSLA ’97: Proc. of the 12th ACM SIGPLAN Conference on Object-oriented Programming, 1997, pp. 318-326.] VPRI Technical Report TR-1997-001 Viewpoints Research Institute, 1209 Grand Central Avenue, Glendale, CA 91201 t: (818) 332-3001 f: (818) 244-9761 Back to the Future The Story of Squeak, A Practical Smalltalk Written in Itself by Dan Ingalls Ted Kaehler John Maloney Scott Wallace Alan Kay at Apple Computer while doing this work, now at Walt Disney Imagineering 1401 Flower Street P.O. Box 25020 Glendale, CA 91221 [email protected] Abstract Squeak is an open, highly-portable Smalltalk implementation whose virtual machine is written entirely in Smalltalk, making it easy to debug, analyze, and change. To achieve practical performance, a translator produces an equivalent C program whose performance is comparable to commercial Smalltalks. Other noteworthy aspects of Squeak include: a compact object format that typically requires only a single word of overhead per object; a simple yet efficient incremental garbage collector for 32-bit direct pointers; efficient bulk- mutation of objects; extensions of BitBlt to handle color of any depth and anti-aliased image rotation and scaling; and real-time sound and music synthesis written entirely in Smalltalk. Overview Squeak is a modern implementation of Smalltalk-80 that is available for free via the Internet, at http://www.research.apple.com/research/proj/learning_concepts/squeak/ and other sites. It includes platform-independent support for color, sound, and image processing.
    [Show full text]
  • Type Feedback for Bytecode Interpreters Position Paper ICOOOLPS 2007
    Type Feedback for Bytecode Interpreters Position Paper ICOOOLPS 2007 Michael Haupt1, Robert Hirschfeld1, and Marcus Denker2 1 Software Architecture Group Hasso-Plattner-Institut University of Potsdam, Germany 2 Software Composition Group Institute of Computer Science and Applied Mathematics University of Berne, Switzerland michael.haupt,hirschfeld @hpi.uni-potsdam.de, [email protected] { } Abstract. This position paper proposes the exploitation of type feed- back mechanisms, or more precisely, polymorphic inline caches, for purely interpreting implementations of object-oriented programming languages. Using Squeak’s virtual machine as an example, polymorphic inline caches are discussed as an alternative to global caching. An implementation proposal for polymorphic inline caches in the Squeak virtual machine is presented, and possible future applications for online optimization are outlined. 1 Introduction Bytecode interpreters are small in size and comparatively easy to implement, but generally execute programs much less efficiently than just-in-time (JIT) compilers. Techniques like threaded interpretation [9, 11, 2] focus on speeding up bytecode interpretation itself, and caching [4, 5, 1] improves the performance of message sends—the most common operation in object-oriented software [7]. It is interesting to observe that, while threading mechanisms are used natu- rally to a varying degree in bytecode interpreter implementations, such systems usually employ only global caching to speed up dynamic method dispatch. A global cache is clearly beneficial with respect to overall performance. Still, it does not provide optimal support for polymorphic message send sites, and it does not allow for exploiting type information (we provide details on these issues in the following section). In our opinion, the employment of polymorphic inline caches (PICs) [5] instead can provide means for achieving significant speedups in bytecode interpreters while exhibiting only a moderate increase in memory footprint and implementation complexity.
    [Show full text]
  • Graphical Interface
    Appendix: How to program in Croquet Author: S.M. Wolff Project: Cell-Forum Project Table of Contents Table of Contents .............................................................................................................. 2 Graphical Interface ........................................................................................................... 6 Control structures .............................................................................................................. 9 Testing variables ............................................................................................................... 9 If then else ........................................................................................................................ 10 Switch ............................................................................................................................ 10 While .............................................................................................................................. 10 For .................................................................................................................................. 11 Data structures ............................................................................................................ 12 Ordered Collection ...................................................................................................... 12 Classes, Methods and Shared Variables .................................................................... 13 Packages .....................................................................................................................
    [Show full text]
  • Sindarin: a Versatile Scripting API for the Pharo Debugger
    Sindarin: A Versatile Scripting API for the Pharo Debugger Thomas Dupriez Guillermo Polito Steven Costiou Univ. Lille, CNRS, Centrale Lille, CNRS - UMR 9189 - CRIStAL, Univ. Inria, Univ. Lille, CNRS, Centrale Inria, UMR 9189 - CRIStAL Lille, Centrale Lille, Inria Lille, UMR 9189 - CRIStAL France France France [email protected] [email protected] [email protected] Vincent Aranega Stéphane Ducasse Univ. Lille, CNRS, Centrale Lille, Inria, Univ. Lille, CNRS, Centrale Inria, UMR 9189 - CRIStAL Lille, UMR 9189 - CRIStAL France France [email protected] [email protected] Abstract Studies and work on debugging acknowledge that main- Debugging is one of the most important and time consuming stream debuggers are not well adapted to several debugging activities in software maintenance, yet mainstream debuggers scenarios [3, 27, 31]. This has led to the appearance of new de- are not well-adapted to several debugging scenarios. This bugging techniques proposing to augment traditional interac- has led to the research of new techniques covering specific tive debuggers with, e.g., stateful breakpoints [4], control-flow families of complex bugs. Notably, recent research proposes aware breakpoints [5], object-centric breakpoints [10, 34], the to empower developers with scripting DSLs, plugin-based and automatic insertion of breakpoints based on dynamic execu- moldable debuggers. However, these solutions are tailored to tions [45], or declarative statements from the developer [21]. specific use-cases, or too costly for one-time-use scenarios. A line of research has also started to study scripting APIs to In this paper we argue that exposing a debugging scripting empower developers to implement debugging scripts adapted interface in mainstream debuggers helps in solving many chal- to their needs.
    [Show full text]
  • 2008 Chevrolet Cobalt Owner Manual M
    2008 Chevrolet Cobalt Owner Manual M Seats and Restraint Systems ........................... 1-1 Driving Your Vehicle ....................................... 4-1 Front Seats ............................................... 1-2 Your Driving, the Road, and Your Vehicle ..... 4-2 Rear Seats ............................................... 1-9 Towing ................................................... 4-32 Safety Belts ............................................. 1-10 Service and Appearance Care .......................... 5-1 Child Restraints ....................................... 1-30 Service ..................................................... 5-3 Airbag System ......................................... 1-53 Fuel ......................................................... 5-5 Restraint System Check ............................ 1-68 Checking Things Under the Hood ............... 5-10 Features and Controls ..................................... 2-1 Headlamp Aiming ..................................... 5-39 Keys ........................................................ 2-3 Bulb Replacement .................................... 5-42 Doors and Locks ...................................... 2-10 Windshield Wiper Blade Replacement ......... 5-48 Windows ................................................. 2-15 Tires ...................................................... 5-49 Theft-Deterrent Systems ............................ 2-18 Appearance Care ..................................... 5-95 Starting and Operating Your Vehicle ........... 2-21 Vehicle Identification
    [Show full text]
  • Three Dimensional Computer Graphics Federates for the 2012 SISO Smackdown Federation
    Three Dimensional Computer Graphics Federates for the 2012 SISO Smackdown Federation Crystal Fordyce (843) 513-8980 [email protected] Bradley C. Schricker Dynetics, Inc. Swetha Govindaiah 1002 Explorer Blvd. (256) 714-3018 Huntsville, AL 35806 [email protected] (256) 964-4979 [email protected] Sean Muratet (256) 417-8237 Mikel D. Petty [email protected] University of Alabama in Huntsville 301 Sparkman Drive, Shelby Center 144 Daniel A. O’Neil Huntsville, AL 35899 Marshall Space Flight Center (256) 824-4368 Huntsville, AL 35811 [email protected] (256) 544-5405 [email protected] Abstract: The Simulation Interoperability Standards Organization (SISO) Smackdown is a two-year old annual event held at the 2012 Spring Simulation Interoperability Workshop (SIW). A primary objective of the Smackdown event is to provide college students with hands-on experience in developing distributed simulations using High Level Architecture (HLA). Participating for the second time, the University of Alabama in Huntsville (UAHuntsville) deployed four federates, two federates simulated a communications server and a lunar communications satellite with a radio. The other two federates generated 3D computer graphics displays for the communication satellite constellation and for the surface based lunar resupply mission. Using the Light-Weight Java Graphics Library, the satellite display federate presented a lunar-texture mapped sphere of the moon and four Telemetry Data Relay Satellites (TDRS), which received object attributes from the lunar communications satellite federate to drive their motion. The surface mission display federate was an enhanced version of the federate developed by ForwardSim, Inc. for the 2011 Smackdown simulation. Enhancements included a dead-reckoning algorithm and a visual indication of which communication satellite was in line of sight of Hadley Rille.
    [Show full text]
  • MVC Revival on the Web
    MVC Revival on the Web Janko Mivšek [email protected] @mivsek @aidaweb ESUG 2013 Motivation 30 years of Smalltalk, 30 years of MVC 34 years exa!tly, sin!e "#$# %ot in JavaScri&t MVC frameworks 'or Sin(le)*age and +ealtime web a&&s ,e Smalltalkers s-ould respe!t and revive our &earls better Contents MVC e &lained %istory /sa(e in !.rrent JavaScri&t frameworks /sa(e in Smalltalk C.rrent and f.t.re MVC in 0ida/Web MVC Explained events Ar!hite!tural desi(n &attern - Model for domain s&e!ifi! data and logi! View updates Controller ) View for &resentation to t-e .ser ) Controller for intera!tions wit- t-e .ser UI and .&datin( domain model Domain changes Main benefit: actions observing ) se&aration of !on!erns Model MVC based on Observer pattern subscribe ) 3bserver looks at observee Observer changed - 3bservee is not aware of t-at s u 4e&enden!y me!-anism2 B t n - 3bserver is de&endent on 3bservee state e observing v - 3bservee m.st re&ort state !-an(es to 3bserver E b - *.b/S.b Event 6.s de!ou&les 3bservee from u S / 3bserver to &reserve its .nawarnes of observation b u changed P Observee Main benefit: (Observable) ) se&aration of !on!erns Multiple observers subscribe - M.lti&le observers of t-e same 3bservee Observer changed - 7n MVC an 3bservee is View and 3bservee is domain Model, t-erefore2 s u B t - many views of t-e same model n e observing v - many a&&s E b - many .sers u S / - mix of all t-ree !ases b u Observee changed P (Observable) Example: Counter demo in Aida/Web M.lti.ser realtime web !ounter exam&le -ttp://demo.aidaweb.si – !li!k Realtime on t-e left – !li!k De!rease or In!rease to c-an(e counter – !ounter is c-an(ed on all ot-er8s browsers History of MVC (1) 7nvented by 9rygve +eenska.g w-en -e worked in "#$:1$# wit- Alan ;ay's group on <ero *arc on Smalltalk and Dynabook – 'inal term Model)View)Controller !oined 10.
    [Show full text]
  • Pharo by Example
    Pharo by Example Andrew P. Black Stéphane Ducasse Oscar Nierstrasz Damien Pollet with Damien Cassou and Marcus Denker Version of 2009-10-11 ii This book is available as a free download from http://PharoByExample.org. Copyright © 2007, 2008, 2009 by Andrew P. Black, Stéphane Ducasse, Oscar Nierstrasz and Damien Pollet. The contents of this book are protected under Creative Commons Attribution-ShareAlike 3.0 Unported license. You are free: to Share — to copy, distribute and transmit the work to Remix — to adapt the work Under the following conditions: Attribution. You must attribute the work in the manner specified by the author or licensor (but not in any way that suggests that they endorse you or your use of the work). Share Alike. If you alter, transform, or build upon this work, you may distribute the resulting work only under the same, similar or a compatible license. • For any reuse or distribution, you must make clear to others the license terms of this work. The best way to do this is with a link to this web page: creativecommons.org/licenses/by-sa/3.0/ • Any of the above conditions can be waived if you get permission from the copyright holder. • Nothing in this license impairs or restricts the author’s moral rights. Your fair dealing and other rights are in no way affected by the above. This is a human-readable summary of the Legal Code (the full license): creativecommons.org/licenses/by-sa/3.0/legalcode Published by Square Bracket Associates, Switzerland. http://SquareBracketAssociates.org ISBN 978-3-9523341-4-0 First Edition, October, 2009.
    [Show full text]
  • Dynamic Object-Oriented Programming with Smalltalk
    Dynamic Object-Oriented Programming with Smalltalk 1. Introduction Prof. O. Nierstrasz Autumn Semester 2009 LECTURE TITLE What is surprising about Smalltalk > Everything is an object > Everything happens by sending messages > All the source code is there all the time > You can't lose code > You can change everything > You can change things without restarting the system > The Debugger is your Friend © Oscar Nierstrasz 2 ST — Introduction Why Smalltalk? > Pure object-oriented language and environment — “Everything is an object” > Origin of many innovations in OO development — RDD, IDE, MVC, XUnit … > Improves on many of its successors — Fully interactive and dynamic © Oscar Nierstrasz 1.3 ST — Introduction What is Smalltalk? > Pure OO language — Single inheritance — Dynamically typed > Language and environment — Guiding principle: “Everything is an Object” — Class browser, debugger, inspector, … — Mature class library and tools > Virtual machine — Objects exist in a persistent image [+ changes] — Incremental compilation © Oscar Nierstrasz 1.4 ST — Introduction Smalltalk vs. C++ vs. Java Smalltalk C++ Java Object model Pure Hybrid Hybrid Garbage collection Automatic Manual Automatic Inheritance Single Multiple Single Types Dynamic Static Static Reflection Fully reflective Introspection Introspection Semaphores, Some libraries Monitors Concurrency Monitors Categories, Namespaces Packages Modules namespaces © Oscar Nierstrasz 1.5 ST — Introduction Smalltalk: a State of Mind > Small and uniform language — Syntax fits on one sheet of paper >
    [Show full text]
  • Three Dimensional Computer Graphics Federates for the 2012 Smackdown Simulation
    Three Dimensional Computer Graphics Federates for the 2012 Smackdown Simulation Crystal Fordyce (843) 513-8980 [email protected] Swetha Govindaiah (256) 714-3018 [email protected] Sean Muratet (256) 417-8237 [email protected] Daniel A. O’Neil Marshall Space Flight Center Huntsville, AL 35811 (256) 544-5405 [email protected] Bradley C. Schricker Dynetics, Inc. 1002 Explorer Blvd. Huntsville, AL 35806 (256) 964-4979 [email protected] Abstract: The Simulation Interoperability Standards Organization (SISO) Smackdown is a two-year old annual event held at the 2012 Spring Simulation Interoperability Workshop (SIW). A primary objective of the Smackdown event is to provide college students with hands-on experience in developing distributed simulations using High Level Architecture (HLA). Participating for the second time, the University of Alabama in Huntsville (UAHuntsville) deployed four federates, two federates simulated a communications server and a lunar communications satellite with a radio. The other two federates generated 3D computer graphics displays for the communication satellite constellation and for the surface based lunar resupply mission. Using the Light-Weight Java Graphics Library, the satellite display federate presented a lunar-texture mapped sphere of the moon and four Telemetry Data Relay Satellites (TDRS), which received object attributes from the lunar communications satellite federate to drive their motion. The surface mission display federate was an enhanced version of the federate developed by ForwardSim, Inc. for the 2011 Smackdown simulation. Enhancements included a dead-reckoning algorithm and a visual indication of which communication satellite was in line of sight of Hadley Rille. This paper concentrates on these two federates by describing the functions, algorithms, HLA object attributes received from other federates, development experiences and recommendations for future, participating Smackdown teams.
    [Show full text]