Lord of the Base Image - Things every Library Supervisor should know

Size: px
Start display at page:

Download "Lord of the Base Image - Things every Library Supervisor should know"

Transcription

1 Lord of the Base Image - Things every Library Supervisor should know Smalltalk Solutions Europe 1998 Joseph Pelrine Daedalos Consulting Group jpelrine@daedalos.de

2 About this Tutorial 16:30-18:00 PM Coffee break Beer afterwards Intermediate/Advanced Assumes you know Smalltalk and ENVY Not all answers are supplied You should want to (and be able to) figure out the implementation yourself 2

3 What We re Gonna Talk About Basic Principles Everyday Tasks Packaging and Delivery Tasks 3

4 You ll love it, it s a way of life - Frank Zappa 4

5 Basic Principles Library Architecture Image Management Tools Library Specs 5

6 Library Architecture App Views & Controllers Tools Domain Model Framework Base Support Kernel 6

7 Kernel What does it contain? The kernel contains all of the classes supplied by the vendor, together with all bug fixes and small enhancements. Who maintains it? The kernel is the responsibility of the Library Manager. This could be the mentor, local guru, or a senior smalltalker. 7

8 Base Support What does it contain? Base Support consists of all third-party base systems (run-time support, e.g. WindowBuilder runtime, add-ons for database access, etc), as well as internal system extensions and tools. Who maintains it? Either your toolsmith or your library supervisor. 8

9 Tools What does it contain? Tools consists of all internal and third-party tools which will not included in the run-time application (WindowBuilder, RDB mapping tools, etc). Who maintains it? Same as Base Support. If you have your own tools, you have someone writing them, and it's his responsibility. Otherwise the job ends up being done by the library manager. 9

10 Framework What does it contain? Internal application frameworks. Vendor-supplied or third-party frameworks (ApplicationModel or HotDraw, for example), belong in the Kernel or BaseSupport groupings. Who maintains it? If you have a large team, you probably already have a framework group. It's their responsibility. Otherwise, your best application developers, who have enough experience to keep abstracting, generalizing and refactoring these classes to make them really reuseable. 10

11 Domain Model What does it contain? Domain Objects contains all the business objects used in developing applications for a particular business.. Who maintains it? Same as Framework. Your best application developers, who have enough experience to keep abstracting, generalizing and refactoring these classes to make them really reuseable. 11

12 Application Views & Controllers What does it contain? This grouping contains all the logic necessary for a specific application, divided into smaller modules. These modules typically contain a controller and one or more views working with it. Other optional modules contains model objects needed only in the specific application, and model objects which have not yet been abstracted enough to end up in the Domain Model layer. Who maintains it? Your application developers. 12

13 Image Management Tools Make baselining easy Consistent development environment Useful in a multiple project/multiple developer environment Harmonize third-party tools Aid packaging and delivery 13

14 Image Management Tools Load All Maps Show Defined Configuration Check Defined Configuration Export Project Maps Open Editions Bad Prerequisites... 14

15 Loading ConfigMaps JPImageBuilder class>>#load: "Load an OrderedCollection of ConfigMaps" Transcript bringtofront. acollection isnil iftrue: [^false]. acollection do: [:each each notnil iftrue: [ Transcript cr; show: -> Loading ConfigurationMap: ; show: each signature; show:.... each beenloaded: false. each load. (self beenloaded: each) iffalse: [^false]. Transcript show: LOADED ]]. Transcript cr; show: DONE. ^true 15

16 Loading ConfigMaps The ConfigMaps for each layer are defined in a method Definitions could be stuffed into User Fields, but you have no version history Usable for multiple projects "Coffee Break" tool What do you save in the methods? 16

17 LibrarySpecs Thanks to Jan Steinmann ConfigMaps Applications/SubApplications Classes Methods 17

18 Library Spec #(rootname appname) #(rootname appname {timestamp classname}) #(rootname appname classname {timestamp selector}) #(rootname appname classname selector timestamp) 18

19 EmConfigurationMap class>>fromlibraryspec: alibraryspecarray "Return the ConfigMap edition described by this library spec, or nil. Note - this is not the complete implementation!" ^(self editionsdictionaryfor: (alibraryspecarray at: 2)) detect: [:shdw shdw timestamp = (alibraryspecarray at: 3)] ifnone: [^nil] EmConfigurationMap>>librarySpec ^Array with: self class name with: self name with: self timestamp libraryspec EmTimeStamp>>librarySpec "Answer my second count." ^seconds 19

20 I hated it until I loved it????? 20

21 Everyday Tasks Writing Scripts Changing defaults Customizing browsers Tools 21

22 Writing Scripts Useful for everyday tasks Can be easily packed into methods Require prompters knowledge of ENVY protocol 22

23 Prompter Utility #chooseauser #chooseanappandedition #chooseanconfigmapandedition #choosesomeapps #choosesomeappsandeditions #choosesomeconfigmapsandeditions 23

24 A Sample Script Adding a User Defining a new user is easy But then, you have to include him/her as a group member in all Applications the he/she will be working on A script takes away the grunt work 24

25 #chooseauser chooseauser "self chooseauser" ^EtTools promptforuser: Choose a User 25

26 #choosesomeapps choosesomeapps "self choosesomeapps" ^EtBrowser new prompt: Select some Apps choosemultiplefrom: (Application currentlyloaded assortedcollection: Class sortblock) initialselection: nil printblock: nil statusindicatorblock: nil 26

27 Script Example "Add a user to an bunch of apps" user apps user := JPPrompterUtility chooseauser. apps := JPPrompterUtility choosesomeapps. apps do: [ :app JPPrompterUtility changeuserto: app manager while: [app addgroupmember: user]] 27

28 #choosesomeconfigmapsandeditions choosesomeconfigmapsandeditions "self choosesomeconfigmapsandeditions" ^EtConfigurationMapsBrowser new prompt: Select the configuration map versions choosemultiplefrom: EmConfigurationMap configurationmapnames assortedcollection label: Names printblock: [:mapname mapname] dependentlistblock: [:mapname (EmConfigurationMap editionsfor: mapname) asarray select: [:edition edition isversion]] dependentlabel: Versions dependentprintblock: [:map map timestamp signature] selectedlabel: Selected Versions selectedprintblock: [:map map signature] statusindicatorblock: nil 28

29 Changing Defaults Error Reporter Manager Interface Browsers 29

30 Error Reporter Central interface for all error reporting EmImageSupport errorreporter: EmErrorReporter new initialize Interesting messages to override: #logerror:withparms:severity: #reporterror:withparms:severity: You could also substitute the log device and the report device in the current error reporter 30

31 Manager Interface Supplies version names EmInterface current 31

32 Manager Interface - 2 Application subclass: #JPManagerInterfaceApp instancevariablenames: classvariablenames: OldLibraryInterface pooldictionaries: EmInterface subclass: #JPManagerInterface instancevariablenames: classvariablenames: pooldictionaries: install "install the customized Manager Interface when loaded" self istoolinstalled iffalse: [ OldLibraryInterface := JPManagerInterface current. JPManagerInterface current: JPManagerInterface new] deinstall "reinstal the default (or previous) Manager Interface when removing" self istoolinstalled iftrue: [JPManagerInterface current: (OldLibraryInterface == nil iftrue: [JPManagerInterface superclass new] iffalse: [OldLibraryInterface])] istoolinstalled "answer true, if the new interface is installed" ^JPManagerInterface current class == JPManagerInterface 32

33 Version Name Protocol Use a different incrementing algorithm Enforce company standards Add User initials V [JP ] Do you really want initials? Version name templates (StS) 33

34 User Initials EmUser>>initials initials (initials := self record inheriteduserfieldat: #Initials) isempty iftrue: [self initials: self createinitials]. ^initials EmUser>>initials: astring self updaterecordwith: [:record record inheriteduserfieldat: #Initials put: astring]. ^astring EmUser>>createInitials ^self fullname select: [:c c isuppercase] 34

35 Browsers Image Application Manager Repository Application Configurations Configuration Maps 35

36 Browsers Default browser mappings are stored in EtTools browsermappings You can subclass existing browsers and install them as default mappings Each user can store custom changes either in extension Applications or in User Fields EtWindow class>>#defaultwindowsize: 36

37 EtToolsVendorExtensionApp Allows extensions to menus without changing existing code Simple Protocol #addtoapplicationsmenu:browser: #addtoclassesmenu:browser: #addtomethodsmenu:browser: #addtotextmenu:browser: Public domain Existing tools easily adaptable 37

38 Browsers -Extension or Subclass? Changes made through extensions are available to all normal browser subclasses, but are trickier to implement Changes made in subclasses can be more extreme, but must be reimplemented in all browsers wanting them Extend when possible 38

39 Stupid Mistakes I Have Made Not allowing compilation when Warning 49 occurs Forcing Application comments upon versioning Forcing Class versioning ("Junk") when reloading current Application and many others 39

40 Library Supervisor Is God Mode Saves a lot of time!! Shouldn't be available to all A lot of work to implement It's better to subclass EtApplicationManager for this than to extend it 40

41 Changing Users changeuserto: newuser while: ablock olduser (olduser := EmUser current) = newuser iftrue: [^ablock value]. (EmUser classpool declarevariable: CurrentUser ) value: newuser. ^ablock ensure: [ (EmUser classpool declarevariable: CurrentUser ) value: olduser] 41

42 Package early, package often 42

43 Packaging & Delivery Tasks Renaming Versions Sorting Out Prerequisites Refactoring Prerequisites Moving SubApps 43

44 Renaming Versions Thanks to Eric Clayberg Murphy's law of software versioning Especially useful for toolsmiths Kids, don't try this at home!! 44

45 Renaming Application Versions hods: EtApplicationManager>>renameApplicationVersions Rename the selected application versions newname newname := self prompt: 'Enter new version name' answer: self selectedapplication newname. (newname isnil or: [newname isempty]) iftrue: [^self]. self execshortoperation: [ self selectedapplications do: [:application application timestamp newname = newname iffalse: [ application updateedition: [:editionrecord editionrecord setnewname: newname; insert]]]. self redrawapplications] 45

46 Renaming Class Versions EtApplicationManager>>renameClassVersions application timestamp newname application := self selectedapplication. timestamp := self selectedclass timestampin: application. newname := self prompt: Enter new version name answer: timestamp newname. (newname isnil or: [newname isempty]) iftrue: [^self]. self execshortoperation: [ self selectedclasses do: [:class class ismetaclass iffalse: [ timestamp := class timestampin: application. timestamp newname = newname iffalse: [ timestamp newname: newname. class updatein: application with: [:editionsrecord entry oldlength entry := editionsrecord currententry. oldlength := entry newname size. entry replaceelement: 2 with: newname; length: entry length - oldlength + newname size; yourself]]]]. self redrawclasses] 46

47 Renaming Configuration Map Versions EtConfigurationMapBrowser>>renameConfigMapVersions edition versionname self changerequest iffalse: [^self]. edition := self selectededition. versionname := self prompt: Enter new version name for, edition signature answer: edition versionname. (versionname isnil or: [versionname isempty]) iftrue: [^nil]. self execshortoperation: [ self selectededition relocaterecordwith: [:editionrecord editionrecord replaceelement: 2 with: versionname; insert]. self updateeditions: self selectededitions restoretotop: true] 47

48 Run-time dependencies - just say no! 48

49 Sorting Out Prerequisites Don t ignore Warning 49 The method which has just been compiled references a class which it shouldn't. This is because the class referenced is not "visible" in the prerequisite chain of the application containing the method. This can be corrected in two ways: You can move the method to another application which has the class in its prerequisite chain. You can move the class to make it visible, by including the class's defining application into the prerequisite chain for the method's application First you have to find out where something's wrong 49

50 Prerequisites Browser Thanks to Glenn Jones 50

51 SubApplication class>>#badprerequisiteclasses Transcript bringtofront; cr; show: Looking for missing prerequisite classes in, self symbol. self badprerequisiteclassesdictionary associationsdo: [:each Transcript cr; show: each key printstring, ( ; show: each key methodclass controller name, ) references:. (each value assortedcollection: Class sortblock) do: [ :class Transcript cr; show:, class name, ( ; show: class controller name, ) ]]. Transcript cr; show: done ; cr. 51

52 SubApplication class>>#badprerequisiteclassesdictionary "Returns a dictionary of methods that reference classes not defined in prerequisite applications" nonprereq visibleclasses collection allapplications nonprereq := IdentityDictionary new. allapplications := self withallsubapplications. visibleclasses := app allvisibleclasses. allapplications do: [ :app app visiblepublicclasses do: [ :class (class methodsin: app) do: [ :method method do: [ :literal ((literal isassociation) and: [literal value isclass]) iftrue: [ (literal value = app) iffalse: [ (visibleclasses includes: literal value controller) iffalse: [ (nonprereq at: method ifabsentput: [OrderedCollection new]) add: literal value]]]]]]]. ^nonprereq 52

53 Refactoring Prerequisites Although it is not needed by a specific application, a prerequisite can not be removed if it is required by a dependent of the application 53

54 How to do it Version and release any open class editions You re going to reload the current (released) lineup Browse Application Editions Remove the prereq Add the prereq From the AppMan, choose both, then reload current 54

55 Moving SubApps on the fly Most times it's not possible to unload and reload Applications independently because of 'prerequisite gridlock' This is another manipulation which must be done in the repository and not in the image 55

56 How to do it Version and release any open class editions You re going to reload the current (released) lineup Browse Application Editions Remove the SubApp Add the SubApp From the AppMan, choose both, then reload current 56

57 Resources st- Smalltalk Report VisualAge Magazine comp.lang.smalltalk 57

58 Thanks OTI, for the tool Kent Beck, Stefan Bosshard, Eric Clayberg, Glenn Jones, Alan Knight, Jan Steinman, all the guys at Daedalos, Peter Misch and Renate Schirmer 58

Safely Extending the Environment Part 2 - being a good citizen Joseph Pelrine Daedalos Consulting

Safely Extending the Environment Part 2 - being a good citizen Joseph Pelrine Daedalos Consulting Safely Extending the Environment Part 2 - being a good citizen Joseph Pelrine Daedalos Consulting I just got back from Smalltalk Solutions (although that s the topic for another article - or a couple).

More information

Guru 101 Grokking the Smalltalk system. Smalltalk Solutions Europe 1998 Joseph Pelrine Daedalos Consulting Group

Guru 101 Grokking the Smalltalk system. Smalltalk Solutions Europe 1998 Joseph Pelrine Daedalos Consulting Group Guru 101 Grokking the Smalltalk system Smalltalk Solutions Europe 1998 Joseph Pelrine Daedalos Consulting Group jpelrine@daedalos.de About this talk 10:00-12:00 AM Coffee break Beer afterwards Intermediate

More information

Basic Objects, Conditionals and Loops

Basic Objects, Conditionals and Loops Basic Objects, Conditionals and Loops Booleans Basic Loops Overview of the Collection hierarchy more than 80 classes: (Bag, Array, OrderedCollection, SortedCollection, Set, Dictionary...) Loops and Iteration

More information

ST Introduction. Birds-eye view

ST Introduction. Birds-eye view 3. Standard Classes ST Introduction Birds-eye view Reify everything by reifying its entire implementation model, Smalltalk succeeds in being open, and extensible. New features can be added without changing

More information

There are a few important ways that Smalltalk is different then other languages:

There are a few important ways that Smalltalk is different then other languages: The Presenters Ginny Ghezzo: Project Manager for IBM VisualAge Smalltalk and Level 3 support for the Application Builder Craig Chaney: Technical Lead on the Virtual Machine, Communications and Linux development

More information

From Design to Implementation

From Design to Implementation From Design to Implementation The Presenters Rick Trotter, IBM Smalltalk Group Dave Maeda, IBM Smalltalk Group Coding the video-store application Today we will see how the video-store application Booch

More information

About Instance Initialization

About Instance Initialization Learning Object-Oriented Programming and Design with TDD About Instance Initialization Stéphane Ducasse http://stephane.ducasse.free.fr http://www.pharo.org W5S06 W5S06 2 / 26 How to ensure that an instance

More information

Smalltalk. Topics. History of Smalltalk. OOP and GUI. Steve Jobs, PARC, Dec Smalltalk 1. The best way to predict the future is to invent it.

Smalltalk. Topics. History of Smalltalk. OOP and GUI. Steve Jobs, PARC, Dec Smalltalk 1. The best way to predict the future is to invent it. Smalltalk The best way to predict the future is to invent it. Alan Kay, 1971 Topics History and significance of Smalltalk Object-oriented programming The Smalltalk language Smalltalk today Additional Examples

More information

In this chapter we enhance the Los Boquitas application with a new component showing upcoming events in a table.

In this chapter we enhance the Los Boquitas application with a new component showing upcoming events in a table. In this chapter we enhance the Los Boquitas application with a new component showing upcoming events in a table. 1. First, we need to have some events to display. a. We will start by defining an event

More information

University of Berne Institute of Computer Science

University of Berne Institute of Computer Science University of Berne Institute of Computer Science http://www.iam.unibe.ch/~ducasse/ SUnit Explained Stéphane Ducasse (revised by Rick Zaccone) Directory Table of Contents Begin Article Copyright c 2003

More information

3. A Simple Counter. Creating your own class

3. A Simple Counter. Creating your own class In this exercise, you will write your first complete program. The program is very simple, the goal of the exercise is to get used to the Pharo environment and the basics of the language. From the Pharo

More information

Refactorings. Refactoring. Refactoring Strategy. Demonstration: Refactoring and Reverse Engineering. Conclusion

Refactorings. Refactoring. Refactoring Strategy. Demonstration: Refactoring and Reverse Engineering. Conclusion Refactorings Refactoring What is it? Why is it necessary? Examples Tool support Refactoring Strategy Code Smells Examples of Cure Demonstration: Refactoring and Reverse Engineering Refactor to Understand

More information

Pharo Syntax in a Nutshell

Pharo Syntax in a Nutshell Pharo Syntax in a Nutshell Damien Cassou, Stéphane Ducasse and Luc Fabresse W1S06, 2015 W1S06 2 / 28 Getting a Feel About Syntax In this lecture we want to give you the general feel to get started: Overview

More information

Object. Accessing. Changing. Chapter

Object. Accessing. Changing. Chapter Chapter 10 Object Smalltalk is a rooted system, which means that there is a root superclass from which all other classes are descended. That root superclass is Object. (Actually, there other root classes,

More information

Smalltalk FOOP. Smalltalk

Smalltalk FOOP. Smalltalk 2015-03-20 Smalltalk Smalltalk 2015-03-20 Smalltalk 1 First Examples hello Transcript show: Hi World hello5 1 to: 5 do: [:i (Transcript show: Hi World ) cr] hello: times 1 to: times do: [:i (Transcript

More information

An Overview of Essential Collections

An Overview of Essential Collections An Overview of Essential Collections Damien Cassou, Stéphane Ducasse and Luc Fabresse W3S07 http://www.pharo.org W3S07 2 / 31 What You Will Learn Some basic collections Essential API to program collections

More information

2. Smalltalk a reflective language. Oscar Nierstrasz

2. Smalltalk a reflective language. Oscar Nierstrasz 2. Smalltalk a reflective language Oscar Nierstrasz Birds-eye view Smalltalk is still today one of the few fully reflective, fully dynamic, objectoriented development environments. We will see how a simple,

More information

Advanced VisualAge Development

Advanced VisualAge Development Advanced VisualAge Development Eric Clayberg Sr. Vice President of Product Development Instantiations, Inc. April 24, 2002 clayberg@instantiations.com http://www.instantiations.com 978-750 750-3621 Eric

More information

An Overview of Essential Collections

An Overview of Essential Collections Learning Object-Oriented Programming and Design with TDD An Overview of Essential Collections Stéphane Ducasse http://stephane.ducasse.free.fr http://www.pharo.org W2S08 W2S08 2 / 32 What You Will Learn

More information

Metaprogramming and Reflection Refactoring

Metaprogramming and Reflection Refactoring Metaprogramming and Reflection Refactoring Universität Bern Marcus Denker Hasso-Plattner-Institut Potsdam Software Architecture Group Prof. Dr. Robert Hirschfeld http://www.swa.hpi.uni-potsdam.de WS 2006/2007

More information

Abstract Interpretation for Dummies

Abstract Interpretation for Dummies Abstract Interpretation for Dummies Program Analysis without Tears Andrew P. Black OGI School of Science & Engineering at OHSU Portland, Oregon, USA What is Abstract Interpretation? An interpretation:

More information

XXXXXXXXXXXXXXXXXXXXXXX. Evolution of Software Languages

XXXXXXXXXXXXXXXXXXXXXXX. Evolution of Software Languages Section 8: Simula Smalltalk Evolution of Software Languages Theo D'Hondt Bachelor of Computer Science Faculty of Sciences and Bio-Engineering Sciences Vrije Universiteit Brussel Academic Year 2015-2016

More information

Eliminating Procedural Code

Eliminating Procedural Code Chapter 28 Eliminating Procedural Code In procedural programming, we write a lot of code that gets information then makes a decision based on the information. In C, we see a lot of if/else if/else blocks,

More information

GUI-Based Software Development. The Model/View/Controller Pattern

GUI-Based Software Development. The Model/View/Controller Pattern GUI-Based Software Development The Model/View/Controller Pattern Origins of Personal Computing The most important part of a computer system is the individual human user. - Alan Kay Origins of Personal

More information

CS 403/503 Exam 4 Spring 2015 Solution

CS 403/503 Exam 4 Spring 2015 Solution CS 403/503 Exam 4 Spring 2015 Solution Each problem initially scored out of 10 points possible. CS 403 Best 5 answers doubled. (5*20 + 2*10 = 120 possible) CS 503 Best 4 answers doubled. (4*20 + 3*10 =

More information

Squeak Object Model. Technion - Israel Institute of Technology. Updated: Spring Object-Oriented Programming 1

Squeak Object Model. Technion - Israel Institute of Technology. Updated: Spring Object-Oriented Programming 1 Squeak Object Model Technion - Israel Institute of Technology Updated: Spring 2015 236703 - Object-Oriented Programming 1 Agenda Class exploring Class object, default / common behaviors Objects equality

More information

Tutorial 02: Writing Source Code

Tutorial 02: Writing Source Code Tutorial 02: Writing Source Code Contents: 1. Generating a constructor. 2. Generating getters and setters. 3. Renaming a method. 4. Extracting a superclass. 5. Using other refactor menu items. 6. Using

More information

:3002 Wilf 2017

:3002 Wilf 2017 95.3002 Name one thing that finds bugs early Making sure that the run or execute method for all tables that search have an error message at the end if the search fails to find anything. Readahead and ScannerReadahead

More information

To install Glamour on your Pharo image execute the following code:

To install Glamour on your Pharo image execute the following code: Glamour Chapter 1 Glamour with the participation of: Tudor Girba (tudor@tudorgirba.com) Browsers are a crucial instrument in understanding complex systems or models. A browser is a tool to navigate and

More information

This chapter describes some of the more common errors that Smalltalk programmers make and gives suggestions on how to prevent the errors.

This chapter describes some of the more common errors that Smalltalk programmers make and gives suggestions on how to prevent the errors. Chapter 22 Common Errors This chapter describes some of the more common errors that Smalltalk programmers make and gives suggestions on how to prevent the errors. Notifier window messages As you test your

More information

ST Introduction. Birds-eye view

ST Introduction. Birds-eye view 6. Debugging ST Introduction Birds-eye view It can be easier to talk to objects than to read classes The system is alive. Talk to it. The debugger can be your best friend. Donʼt be afraid of it. 1.2 Roadmap

More information

esug.org (European Smalltalker Users Group) Javascript

esug.org (European Smalltalker Users Group) Javascript Serge Amber Pharo ( ) esug.org (European Smalltalker Users Group) Amber Web Smalltalk Web Smtalltalk Javascript Javascript Web Transcript Workspace SUnit (JUnit Smalltalk ) System Browser halt JQuery UI

More information

Smalltalk Best Practice Patterns. Part I

Smalltalk Best Practice Patterns. Part I Smalltalk Best Practice Patterns Part I 1 Based on the Book by Kent Beck 2 Based on the Book by Kent Beck Very little here is Smalltalk-specific 2 Why Patterns? 3 Why Patterns? There are only so many ways

More information

Why using Smalltalk for Teaching Object- Oriented Design

Why using Smalltalk for Teaching Object- Oriented Design Why using Smalltalk for Teaching Object- Oriented Design N. Bouraqadi - Ecole des Mines de Douai S. Ducasse - University of Berne S. Stinckwich - University of Caen R. Wuyts - Université Libres de Bruxelles

More information

Table of Contents Preface...1. VA Smalltalk Migration Guide Notices Trademarks...3. About this book...5. Who this book is for...

Table of Contents Preface...1. VA Smalltalk Migration Guide Notices Trademarks...3. About this book...5. Who this book is for... Table of Contents Table of Contents Preface...1 VA Smalltalk Migration Guide... 2 Notices... 3 Trademarks...3 About this book...5 Who this book is for... 5 What's new?...5 Conventions used in this book...5

More information

An Introduction to Squeak

An Introduction to Squeak An Introduction to Squeak Hello! Squeak is a language largely derived from Smalltalk. Now imagine what a coincidence it is to be do an assignment that uses the Smalltalk language after having just finished

More information

6. Exemplary Solutions: Seaside: Components

6. Exemplary Solutions: Seaside: Components 6. Exemplary Solutions: Seaside: Components Exercise 6.1 STBuyTicketTask class >> canberoot ˆtrue self inform: Hello World Exercise 6.2 WAComponent subclass: #STPlayChooser instancevariablenames: plays

More information

Syntax and Messages. Stéphane Ducasse S.Ducasse

Syntax and Messages. Stéphane Ducasse   S.Ducasse Syntax and Messages Stéphane Ducasse Stephane.Ducasse@univ-savoie.fr http://www.listic.univ-savoie.fr/~ducasse/ 1 License: CC-Attribution-ShareAlike 2.0 http://creativecommons.org/licenses/by-sa/2.0/ 2

More information

Introduction to Seaside

Introduction to Seaside Introduction to Seaside Randal L. Schwartz, merlyn@stonehenge.com Version 2.01 on 20 July 2009 This document is copyright 2008, 2009 by Randal L. Schwartz, Stonehenge Consulting Services, Inc. This work

More information

An Introduction to Smalltalk for Objective-C Programmers

An Introduction to Smalltalk for Objective-C Programmers An Introduction to Smalltalk for Objective-C Programmers O Reilly Mac OS X Conference October 25 28, 2004 Philippe Mougin - pmougin@acm.org http://www.fscript.org IT Management & Consulting What you will

More information

The System Transcript, Class Point and Inspectors

The System Transcript, Class Point and Inspectors Module 4 1 Module 4: The System Transcript, Class Point and Inspectors This module starts by introducing the System Transcript, illustrating how it can be used with a number of examples. The Transcript

More information

LATENT METHODS. Richard CS

LATENT METHODS. Richard CS LATENT METHODS Richard O'Keefe @ CS Outline Background The problem Some non-solutions My solution Does it apply elsewhere Background Alan Kay invented tablet computers (the Dynabook) His research group

More information

feel free to poke around and change things. It's hard to break anything in a Moodle course, and even if you do it's usually easy to fix it.

feel free to poke around and change things. It's hard to break anything in a Moodle course, and even if you do it's usually easy to fix it. Teacher s Manual Teacher Manual This page is a very quick guide to creating online courses with Moodle. It outlines the main functions that are available, as well as some of the main decisions you'll need

More information

Outline Smalltalk Overview Pragmatic Smalltalk Closing. Pragmatic Smalltalk. David Chisnall. February 7,

Outline Smalltalk Overview Pragmatic Smalltalk Closing. Pragmatic Smalltalk. David Chisnall. February 7, February 7, 2009 http://etoileos.com Outline Using The Smalltalk Family Smalltalk - first dynamic, object-oriented, language. Self - Smalltalk without classes. JavaScript - Self with Java syntax. A Quick

More information

The Smalltalk Environment, SUnit, and Inheritance

The Smalltalk Environment, SUnit, and Inheritance Creating Objects in Smalltalk The Smalltalk Environment, SUnit, and Inheritance Object are created by sending a message to some other (exisiting!) object called a factory! Usually, the factory object is

More information

Selected Design Patterns

Selected Design Patterns Selected Design Patterns Design Patterns are recurrent solutions to design problems They are pros and cons We already saw: Factory, Hook, Templates Singleton Composite «ChapterNr».1 Alert!!! Design Patterns

More information

Syntax and Messages. Stéphane Ducasse 8.1

Syntax and Messages. Stéphane Ducasse 8.1 Syntax and Messages The syntax of Smalltalk is simple and uniform, but it can look strange at first sight! Literals: numbers, strings, arrays... Variable names Pseudo-variables Assignments, returns Message

More information

fohgp siejt karbl mcqdn

fohgp siejt karbl mcqdn CS 403/503 Exam 4 Spring 2017 Solution CS 403 Score is based on your best 8 out of 10 problems. CS 503 Score is based on your best 9 out of 10 problems. Extra credit will be awarded if you can solve additional

More information

Object-Oriented Thinking

Object-Oriented Thinking Chapter 9 Object-Oriented Thinking Smalltalk is one of the pure Object-Oriented (OO) languages. Unlike C++, which makes it very easy to write procedural code (ie, use C++ as a better C), Smalltalk makes

More information

Syntax-Elements for Smalltalk

Syntax-Elements for Smalltalk Syntax-Elements for Smalltalk Feb. 24. 2009 A Scratch-like GUI for Smalltalk-80 by Jens Mönig (jens@moenig.org) Elements is a new graphical user interface for the Smalltalk-80 programming language inspired

More information

CSE 70 Final Exam Fall 2009

CSE 70 Final Exam Fall 2009 Signature cs70f Name Student ID CSE 70 Final Exam Fall 2009 Page 1 (10 points) Page 2 (16 points) Page 3 (22 points) Page 4 (13 points) Page 5 (15 points) Page 6 (20 points) Page 7 (9 points) Page 8 (15

More information

CS 370 The Pseudocode Programming Process D R. M I C H A E L J. R E A L E F A L L

CS 370 The Pseudocode Programming Process D R. M I C H A E L J. R E A L E F A L L CS 370 The Pseudocode Programming Process D R. M I C H A E L J. R E A L E F A L L 2 0 1 5 Introduction At this point, you are ready to beginning programming at a lower level How do you actually write your

More information

Managing Projects with Metacello

Managing Projects with Metacello Managing Projects with Metacello Chapter 1 Managing Projects with Metacello with the participation of: Dale Henrichs (dale.henrichs@gemstone.com) Mariano Martinez Peck (marianopeck@gmail.com) Have you

More information

Building a Gopher from Sockets and Widgets

Building a Gopher from Sockets and Widgets an article for The Smalltalk Report by Patrick Mueller Patrick Mueller is a member of the IBM Smalltalk Distributed team in IBM Cary. He coauthored the HP/IBM submission to OMG for Smalltalk mappings to

More information

The DCI Paradigm Implemented in Squeak

The DCI Paradigm Implemented in Squeak The DCI Paradigm Implemented in Squeak Trygve Reenskaug, Dept. of Informatics, University of Oslo, Norway Home: http://folk.uio.no/trygver E-mail: The DCI paradigm separates a program into different perspectives

More information

CS 403/503 Exam 4 Spring 2017 Name

CS 403/503 Exam 4 Spring 2017 Name CS 403/503 Exam 4 Spring 2017 Name CS 403 Score is based on your best 8 out of 10 problems. CS 503 Score is based on your best 9 out of 10 problems. Extra credit will be awarded if you can solve additional

More information

9. Understanding Classes and Metaclasses

9. Understanding Classes and Metaclasses 9. Understanding Classes and Metaclasses ST Introduction Birds-eye view Reify your metamodel A fully reflective system models its own metamodel. 1.2 Roadmap > Metaclasses in 7 points > Indexed Classes

More information

Adriaan van Os ESUG Code Optimization

Adriaan van Os ESUG Code Optimization Introduction Working at Soops since 1995 Customers include Research (Economical) Exchanges (Power, Gas) Insurance Projects in VisualWorks GemStone VisualAge 2 Demanding projects Data-intensive Rule based

More information

Credit where Credit is Due. Lecture 25: Refactoring. Goals for this lecture. Last Lecture

Credit where Credit is Due. Lecture 25: Refactoring. Goals for this lecture. Last Lecture Credit where Credit is Due Lecture 25: Refactoring Kenneth M. Anderson Object-Oriented Analysis and Design CSCI 6448 - Spring Semester, 2002 Some of the material for this lecture and lecture 26 is taken

More information

Draft User Manual OOram/SRE Static Reverse Engineering

Draft User Manual OOram/SRE Static Reverse Engineering Draft User Manual OOram/SRE Static Reverse Engineering Trygve 1 April 1996 Chapter 2 contains a short user manual, sufficient if you know the OOram/SRE method. The remaining chapters should be read before

More information

A Lazy List Implementation in Squeak

A Lazy List Implementation in Squeak A Lazy List Implementation in Squeak Takashi Yamamiya This material is based upon work supported in part by the National Science Foundation under Grant No. 0639876. Any opinions, findings, and conclusions

More information

COURSE 11 DESIGN PATTERNS

COURSE 11 DESIGN PATTERNS COURSE 11 DESIGN PATTERNS PREVIOUS COURSE J2EE Design Patterns CURRENT COURSE Refactoring Way refactoring Some refactoring examples SOFTWARE EVOLUTION Problem: You need to modify existing code extend/adapt/correct/

More information

step is to see how C++ implements type polymorphism, and this Exploration starts you on that journey.

step is to see how C++ implements type polymorphism, and this Exploration starts you on that journey. EXPLORATION 36 Virtual Functions Deriving classes is fun, but there s not a lot you can do with them at least, not yet. The next step is to see how C++ implements type polymorphism, and this Exploration

More information

The Smalltalk class hierarchy

The Smalltalk class hierarchy The Smalltalk class hierarchy As we have seen, classes in Smalltalk are arranged in the form of a tree. The class above a given class in the hierarchy is its superclass; classes below are its subclasses.

More information

Software Design COSC 4353/6353 D R. R A J S I N G H

Software Design COSC 4353/6353 D R. R A J S I N G H Software Design COSC 4353/6353 D R. R A J S I N G H Week 5 Refactoring What is Refactoring? Code Smells Why Refactoring? Techniques IDEs What is Refactoring? Art of improving the design of existing code

More information

Enhancement Improved Database import and storage for DXF sources. Bug Update incorrect CR1000 gage types. Bug Update to MDT SmartLink Gage File

Enhancement Improved Database import and storage for DXF sources. Bug Update incorrect CR1000 gage types. Bug Update to MDT SmartLink Gage File * italicized entries were included in an updated release (hot-fix) of the Service Pack. Number of asterisks corresponds to hot-fix number MultiLogger Suite Release Report: Version 2018.1 Issue Key Component(s)

More information

Template Method Structure. Template Method Example. Template Method Example. Template Method Example. Benefits of Template Method

Template Method Structure. Template Method Example. Template Method Example. Template Method Example. Benefits of Template Method Design Patterns in Smalltalk CSC591O April 9, 1997 Raleigh, NC Bobby Woolf Senior Member of Technical Staff Knowledge Systems Corp. 4001 Weston Parkway Cary, North Carolina 27513-2303 919-677-1116 bwoolf@ksccary.com

More information

Patterns in Software Engineering

Patterns in Software Engineering Patterns in Software Engineering Lecturer: Raman Ramsin Lecture 10 Refactoring Patterns Part 1 1 Refactoring: Definition Refactoring: A change made to the internal structure of software to make it easier

More information

OO Design with Smalltalk a Pure Object Oriented Language and Environment

OO Design with Smalltalk a Pure Object Oriented Language and Environment OO Design with Smalltalk a Pure Object Oriented Language and Environment About the exercises The exercises developped in the following lessons have been originally written by Roel Wuyts and Koen De Hondt

More information

Introduction to Eclipse

Introduction to Eclipse Introduction to Eclipse Ed Gehringer Using (with permission) slides developed by Dwight Deugo (dwight@espirity.com) Nesa Matic (nesa@espirity.com( nesa@espirity.com) Sreekanth Konireddygari (IBM Corp.)

More information

Team-Based Collaboration in Simulink

Team-Based Collaboration in Simulink Team-Based Collaboration in Simulink Sonia Bridge 2015 The MathWorks, Inc. 1 Create tools that make it easy for teams to manage the full lifecycle of their Model-Based Design projects Collaborate Integrate

More information

Introduction to Smalltalk

Introduction to Smalltalk Introduction to Smalltalk Randal L. Schwartz, merlyn@stonehenge.com Version 1.01 on 20 July 2009 This document is copyright 2009 by Randal L. Schwartz, Stonehenge Consulting Services, Inc. This work is

More information

ADMINISTRATIVE USER GUIDE FOR THE APTI-LEARN LEARNING MANAGEMENT SYSTEM (LMS)

ADMINISTRATIVE USER GUIDE FOR THE APTI-LEARN LEARNING MANAGEMENT SYSTEM (LMS) ADMINISTRATIVE USER GUIDE FOR THE APTI-LEARN LEARNING MANAGEMENT SYSTEM (LMS) Software Version 2.6 September 2012 Prepared by EM-Assist This page left intentionally blank. Software Version 2.6; Document

More information

Type Checking in COOL (II) Lecture 10

Type Checking in COOL (II) Lecture 10 Type Checking in COOL (II) Lecture 10 1 Lecture Outline Type systems and their expressiveness Type checking with SELF_TYPE in COOL Error recovery in semantic analysis 2 Expressiveness of Static Type Systems

More information

Xcode Tricks. ios App Development Fall 2010 Lecture 13

Xcode Tricks. ios App Development Fall 2010 Lecture 13 Xcode Tricks ios App Development Fall 2010 Lecture 13 Questions? Announcements Reminder: Assignment #3 due Monday, October 18 th by 11:59pm Today s Topics Building & Running Code Troubleshooting Debugging

More information

Configuring the Android Manifest File

Configuring the Android Manifest File Configuring the Android Manifest File Author : userone What You ll Learn in This Hour:. Exploring the Android manifest file. Configuring basic application settings. Defining activities. Managing application

More information

Building Windows in VisualAge Smalltalk

Building Windows in VisualAge Smalltalk Building Windows in VisualAge Smalltalk The Presenters Ginny Ghezzo: Project Manager for IBM VisualAge Smalltalk and Level 3 support for the Application Builder John O Keefe: Technical Lead for IBM VisualAge

More information

Without further ado, let s go over and have a look at what I ve come up with.

Without further ado, let s go over and have a look at what I ve come up with. JIRA Integration Transcript VLL Hi, my name is Jonathan Wilson and I m the service management practitioner with NHS Digital based in the United Kingdom. NHS Digital is the provider of services to the National

More information

A few more things about Agile and SE. Could help in interviews, but don t try to bluff your way through

A few more things about Agile and SE. Could help in interviews, but don t try to bluff your way through A few more things about Agile and SE Could help in interviews, but don t try to bluff your way through 1 Refactoring How to do it, where it fits in http://www.cse.ohio-state.edu/~crawfis/cse3902/index.htm

More information

McCa!"s Triangle of Quality

McCa!s Triangle of Quality McCa!"s Triangle of Quality Maintainability Portability Flexibility Reusability Testability Interoperability PRODUCT REVISION PRODUCT TRANSITION PRODUCT OPERATION Correctness Usability Reliability Efficiency

More information

Basic Object-Oriented Concepts. 5-Oct-17

Basic Object-Oriented Concepts. 5-Oct-17 Basic Object-Oriented Concepts 5-Oct-17 Concept: An object has behaviors In old style programming, you had: data, which was completely passive functions, which could manipulate any data An object contains

More information

Practical Objects: Test Driven Software Development using JUnit

Practical Objects: Test Driven Software Development using JUnit 1999 McBreen.Consulting Practical Objects Test Driven Software Development using JUnit Pete McBreen, McBreen.Consulting petemcbreen@acm.org Test Driven Software Development??? The Unified Process is Use

More information

Project Report Number Plate Recognition

Project Report Number Plate Recognition Project Report Number Plate Recognition Ribemont Francois Supervisor: Nigel Whyte April 17, 2012 Contents 1 Introduction............................... 2 2 Description of Submitted Project...................

More information

SurveyToGo Scripting Best Practices

SurveyToGo Scripting Best Practices www.dooblo.com SurveyToGo Scripting Best Practices Authored by: Ofer Heijmans - Dooblo Revision 1.0, March 2016 Table of Content 1 OVERVIEW... 3 2 VARIABLE NAMES... 3 3 SHORT IDS DISPLAY... 4 4 ANSWER

More information

B. What strategy (order of refactorings) would you use to improve the code?

B. What strategy (order of refactorings) would you use to improve the code? { return title.gettext(); public boolean needssplit() { return costlabel.gettext().equals(" >3 "); public boolean needsestimate() { return costlabel.gettext().equals("? "); Challenges PG-1. Smells. A.

More information

Introduction to Programming

Introduction to Programming CHAPTER 1 Introduction to Programming Begin at the beginning, and go on till you come to the end: then stop. This method of telling a story is as good today as it was when the King of Hearts prescribed

More information

Wikipedia 101: Bryn Mawr Edit-a-thon. Mary Mark Ockerbloom, Wikipedian in Residence, Chemical Heritage Foundation

Wikipedia 101: Bryn Mawr Edit-a-thon. Mary Mark Ockerbloom, Wikipedian in Residence, Chemical Heritage Foundation Wikipedia 101: Bryn Mawr Edit-a-thon Mary Mark Ockerbloom, Wikipedian in Residence, Chemical Heritage Foundation What is Wikipedia? Wikipedia s Goal: To present all of human knowledge from a neutral point

More information

Software Evolution from the Field: An Experience Report from the Squeak Maintainers

Software Evolution from the Field: An Experience Report from the Squeak Maintainers Software Evolution from the Field: An Experience Report from the Squeak Maintainers Marcus Denker SCG University of Berne Switzerland Stéphane Ducasse LISTIC Université de Savoie France Roadmap > A little

More information

CSE 413 Spring Introduction to Ruby. Credit: Dan Grossman, CSE341

CSE 413 Spring Introduction to Ruby. Credit: Dan Grossman, CSE341 CSE 413 Spring 2011 Introduction to Ruby Credit: Dan Grossman, CSE341 Why? Because: Pure object-oriented language Interesting, not entirely obvious implications Interesting design decisions Type system,

More information

Zero Configuration Scripts and Command-Line Handlers

Zero Configuration Scripts and Command-Line Handlers Zero Configuration Scripts and Command-Line Handlers Chapter 1 Zero Configuration Scripts and Command-Line Handlers with the participation of: Camillo Bruni (camillobruni@gmail.com) Weren t you fed up

More information

CS354 gdb Tutorial Written by Chris Feilbach

CS354 gdb Tutorial Written by Chris Feilbach CS354 gdb Tutorial Written by Chris Feilbach Purpose This tutorial aims to show you the basics of using gdb to debug C programs. gdb is the GNU debugger, and is provided on systems that

More information

Workbench and JFace Foundations. Part One, of a two part tutorial series

Workbench and JFace Foundations. Part One, of a two part tutorial series Workbench and JFace Foundations Part One, of a two part tutorial series 2005 by IBM; made available under the EPL v1.0 Date: February 28, 2005 About the Speakers Tod Creasey Senior Software Developer,

More information

Class 1: Homework. Intro to Computer Science CSCI-UA.0101 New York University Courant Institute of Mathematical Sciences Fall 2017

Class 1: Homework. Intro to Computer Science CSCI-UA.0101 New York University Courant Institute of Mathematical Sciences Fall 2017 Intro to Computer Science CSCI-UA.0101 New York University Courant Institute of Mathematical Sciences Fall 2017 1 1. Please obtain a copy of Introduction to Java Programming, 11th (or 10th) Edition, Brief

More information

Developers and DBAs. Farmers and City Slickers have different mindsets

Developers and DBAs. Farmers and City Slickers have different mindsets Developers and DBAs Farmers and City Slickers have different mindsets About ~ Øyvind Isene DBA Consultant working for Bicon in Oslo Optimization and helping developers with db OUGN and the Oracle community

More information

a. The following method would allow an object of the static type List<String> to be passed to it as an argument.

a. The following method would allow an object of the static type List<String> to be passed to it as an argument. On the final exam you will be provided UML diagrams for design patterns (as in the midterm) and also JavaDoc description of methods in the Reflection API. 1. True/False (if false, explain why) a. The following

More information

1 Assets Manager Pro exoa.fr

1 Assets Manager Pro exoa.fr 1 Assets Manager Pro exoa.fr Table of contents... 2 Tabs... 3 1. Packages Manager... 3 The search feature... 4 Show Content Popup... 4 Asset Store Details Popup... 5 Package renaming and sorting... 5 The

More information

Client Code - the code that uses the classes under discussion. Coupling - code in one module depends on code in another module

Client Code - the code that uses the classes under discussion. Coupling - code in one module depends on code in another module Basic Class Design Goal of OOP: Reduce complexity of software development by keeping details, and especially changes to details, from spreading throughout the entire program. Actually, the same goal as

More information

Back to ObjectLand. Contents at: Chapter 5. Questions of Interest. encapsulation. polymorphism. inheritance overriding inheritance super

Back to ObjectLand. Contents at: Chapter 5. Questions of Interest. encapsulation. polymorphism. inheritance overriding inheritance super korienekch05.qxd 11/12/01 4:06 PM Page 105 5 Back to ObjectLand Contents at: Chapter 5 #( encapsulation polymorphism inheritance overriding inheritance super learning the class hierarchy finding classes

More information

xtreme Programming (summary of Kent Beck s XP book) Stefan Resmerita, WS2015

xtreme Programming (summary of Kent Beck s XP book) Stefan Resmerita, WS2015 xtreme Programming (summary of Kent Beck s XP book) 1 Contents The software development problem The XP solution The JUnit testing framework 2 The Software Development Problem 3 Risk Examples delivery schedule

More information

GNU ccscript Scripting Guide IV

GNU ccscript Scripting Guide IV GNU ccscript Scripting Guide IV David Sugar GNU Telephony 2008-08-20 (The text was slightly edited in 2017.) Contents 1 Introduction 1 2 Script file layout 2 3 Statements and syntax 4 4 Loops and conditionals

More information