Introduction to Programming. Bertrand Meyer. Lecture 23: An example: undo-redo. The problem
|
|
- Adela Thornton
- 5 years ago
- Views:
Transcription
1 1 Introduction to Programming Bertrand Meyer Last revised 20 January Lecture 23: An example: un-re The problem 3 Enabling users of an interactive system to cancel the effect of the last command. Often implemented as Control-Z. Should support multi-level un-re, with no limitation other than a possible maximum set by the user 1
2 A text editor 4 Notion of current line. Assume commands such as: Insert line after current position Insert line before current position Delete current line Replace current line current line with next if any This is a line-oriented view for simplicity, but the discussion applies to more sophisticated views Underlying class (from business model ) 5 class EDIT_CONTROLLER feature text: LINKED_LIST [STRING] remove is -- Remove line at current position. not off text.remove put_right (line: STRING) is -- Insert line after current position. not after text.put_right (line) Key step in devising a software architecture 6 Finding the right abstractions (The types of objects involved.) Here: The notion of command 2
3 Keeping the history of the session 7 The history list: Oldest Most recent history: LINKED_LIST [COMMAND] What s a command object? 8 A command object (instance of the class COMMAND) includes information about one execution of a command by the user, sufficient to: Execute the command Cancel the command if requested later For example, in a delete command (as implemented by remove), we need: The position of the line being deleted The content of that line! A general notion of command 9 deferred class COMMAND feature execute is -- Carry out one execution of this command. deferred ensure ne: ne un is -- Cancel an earlier execution of this command. already: ne deferred 3
4 A general notion of command 10 deferred class COMMAND feature ne: BOOLEAN is -- Has this command been executed? execute is -- Carry out one execution of this command. un is -- Cancel an earlier execution of this command. deferred ensure ne: ne already: ne deferred Command class hierarchy 11 execute un* COMMAND deferred + effective + DELETION execute + un + line index + INSERTION execute + un + index A command class (sketch, no contracts) 12 class DELETION inherit COMMAND feature controller: EDIT_CONTROLLER -- Access to business model line: STRING -- The line being deleted index: INTEGER -- Position of line being deleted execute is -- Remove current line and remember it. line := controller.item ; index := controller.index controller.remove ; ne := True un is -- Re-insert previously removed line. controller.go_ith (index) controller.put_left (line) 4
5 Underlying class (from business model ) 13 class EDIT_CONTROLLER feature text: LINKED_LIST [STRING] remove is -- Remove line at current position. not off text.remove put_right (line: STRING) is -- Insert line after current position. not after text.put_right (line) Also item, index, go_ith, put_left Executing a user command 14 The history list: Oldest Most recent history: LINKED_LIST [COMMAND] Executing a user command 15 decode_user_request if Request is normal command then -- Create command object c corresponding to user request history.ext (c) c.execute elseif Request is UNDO then if not history.before then history.item.un history.back -- We ignore excessive requests elseif Request is REDO then if not history.is_last then history.forth history. item.un -- We ignore excessive requests 5
6 Conditional creation (1) 16 B A C a1: A if condition_1 then -- Create a1 as an instance of B elseif condition_2 then -- Create a1 as an instance of C etc D a1: A; b1: B; c1: C; d1: D; if condition_1 then create b1.make () a1 := b1 elseif condition_2 then create c1.make () a1 := c1 etc Conditional creation (2) 17 B A C a1: A if condition_1 then -- Create a1 as an instance of B elseif condition_2 then -- Create a1 as an instance of C etc D a1: A if condition_1 then create {B} a1.make () elseif condition_2 then create {C} a1.make () etc Executing a user command 18 decode_user_request if Request is normal command then -- Create command object c corresponding to user request history.ext (c) c.execute elseif Request is UNDO then if not history.before then history.item.un history.back -- Ignore excessive requests elseif Request is REDO then if not history.is_last then history.forth history. item.un -- Ignore excessive requests 6
7 Creating command objects (1) 19 c: COMMAND decode_user_request if Request is delete then create {DELETION} c elseif Request is insert then create {INSERTION} c etc Command class hierarchy 20 execute un* COMMAND deferred + effective + DELETION execute + un + line index + INSERTION execute + un + index Creating command objects (2) 21 Give each command type a number (or other key) Initially, fill in a table (e.g. an array), with one instance of each command type. To get a new command object: Insertion Deletion Determine command_type c := clone (COMMAND_TABLE.item (command_type)) 7
8 The un-re pattern 22 Has been extensively used (e.g. in Eiffel tools) Fairly easy to implement Elegant use of O-O techniques Disadvantage: explosion of small classes In Java, can use inner classes. Using agents 23 For each user command, have two routines: The routine to it The routine to un it! The history list in the un-re pattern 24 history: LINKED_LIST [COMMAND] Oldest Most recent 8
9 The history list using agents The history list simply becomes a list of agents pairs: history: LINKED_LIST [TUPLE [PROCEDURE [ANY, TUPLE], PROCEDURE [ANY, TUPLE]] 25 De-Insert De-Insert Re-insert De-Insert Basic scheme remains the same, but no need for command objects any more; we simply store agents. This is the technique used in all current Eiffel tools Executing a user command (before) 26 decode_user_request if Request is normal command then -- Create command object c corresponding to user request history.ext (c) c.execute elseif Request is UNDO then if not history.before then history.item.un history.back -- Ignore excessive requests elseif Request is REDO then if not history.is_last then history.forth history. item.un -- Ignore excessive requests Executing a user command (now) 27 Decode user_request giving two agents _it and un_it if Request is normal command then history.ext ([_it, un_it]) _it.call ([]) elseif Request is UNDO then if not history.before then history.item.item (2).call ([]) history.back De- De- Reinsert Insert Insert elseif Request is REDO then if not history.is_last then history.forth history.item.item (1).call ([]) Insert Insert Remove 9
10 28 End of lecture 23 10
Lecture 21: Undo/Redo
Chair of Software Engineering Einführung in die Programmierung Introduction to Programming Prof. Dr. Bertrand Meyer October 2006 February 2007 Lecture 21: Undo/Redo 2 Further reference Chapter 21 of my
More informationEinführung in die Programmierung Introduction to Programming
Chair of Software Engineering Einführung in die Programmierung Introduction to Programming Prof. Dr. Bertrand Meyer Lecture 18: Undo/Redo Further reference Chapter 21 of Bertrand Meyer, Object-Oriented
More informationLecture 7: Visitor, Strategy, State, Chain of Responsibility, Command
Software Architecture Bertrand Meyer & Till Bay ETH Zurich, February-May 2008 Lecture 7: Visitor, Strategy, State, Chain of Responsibility, Command Program overview Date Topic Who? last week Introduction;
More informationEinführung in die Programmierung Introduction to Programming
Chair of Software Engineering Einführung in die Programmierung Introduction to Programming Prof. Dr. Bertrand Meyer Lecture 12: Introduction to inheritance and genericity On the menu for today (& next
More informationGenericity & Inheritance
Chair of Software Engineering Genericity & Inheritance Bertrand Meyer ETH Zurich, Switzerland Eiffel Software, Santa Barbara Epita, Paris, 31 March 2010 On the menu Two fundamental mechanisms for expressiveness
More informationTrusted Components. Reuse, Contracts and Patterns. Prof. Dr. Bertrand Meyer Dr. Karine Arnout
1 Last update: 2 November 2004 Trusted Components Reuse, Contracts and Patterns Prof. Dr. Bertrand Meyer Dr. Karine Arnout 2 Lecture 5: Design patterns Agenda for today 3 Overview Benefits of patterns
More informationRobotics Programming Laboratory
Chair of Software Engineering Robotics Programming Laboratory Bertrand Meyer Jiwon Shin Lecture 5: Design Patterns What is a pattern? First developed by Christopher Alexander for constructing and designing
More informationSoftware Architecture Bertrand Meyer. Lecture 3: Language constructs for modularity and information hiding
Software Architecture Bertrand Meyer Last update: 3 April 2007 ETH Zurich, March-July 2007 Lecture 3: Language constructs for modularity and information hiding Ilinca Ciupa Overview Review of modularity
More informationObject-Oriented Software Construction
1 Object-Oriented Software Construction Bertrand Meyer 2 Lecture 21: Typing issues, covariance The America Conjecture 3 (Pierre America at TOOLS Europe 1990) One can have at most two of the three properties
More informationLecture 13: Introduction to inheritance and genericity
Chair of Software Engineering Einführung in die Programmierung Introduction to Programming Prof. Dr. Bertrand Meyer Lecture 13: Introduction to inheritance and genericity On the menu for today (& next
More informationContainers and genericity. A standardized naming scheme. Cursor properties. Lists. Adding a cell. A specific implementation: (singly) linked lists
Topics for this lecture Chair of Software Engineering Einführung in die Programmierung Introduction to Programming Containers and genericity Container operations Prof. Dr. Bertrand Meyer Lists October
More informationAutomatic Verification of Computer Programs
Chair of Software Engineering Automatic Verification of Computer Programs these slides contain advanced material and are optional What is verification Check correctness of the implementation given the
More informationIntroduction to Eiffel
Introduction to Eiffel Martin Nordio, Christian Estler ETH Zurich Distributed Software Engineering Lab 1 Overview Part 1: Language Constructs Ø Basics: definition, if then else, expressions, loops and
More informationEinführung in die Programmierung Introduction to Programming
Chair of Software Engineering Einführung in die Programmierung Introduction to Programming Prof. Dr. Bertrand Meyer Lecture 14: Container Data Structures Topics for this lecture Containers and genericity
More informationUniverse Type System for Eiffel. Annetta Schaad
Universe Type System for Eiffel Annetta Schaad Semester Project Report Software Component Technology Group Department of Computer Science ETH Zurich http://sct.inf.ethz.ch/ SS 2006 Supervised by: Dipl.-Ing.
More informationEinführung in die Programmierung Introduction to Programming
Chair of Software Engineering Einführung in die Programmierung Introduction to Programming Prof. Dr. Bertrand Meyer Exercise Session 10 News Mock exam in 2 weeks (December 6 th, 7 th ) You have to be present
More informationDesign to interfaces. Favor composition over inheritance Find what varies and encapsulate it
Design Patterns The Gang of Four suggests a few strategies for creating good o-o designs, including Façade Design to interfaces. Favor composition over inheritance Find what varies and encapsulate it One
More informationSoftware Architecture
Chair of Software Engineering Software Architecture Prof. Dr. Bertrand Meyer Lecture 7: Patterns, Observer, MVC Patterns in software development Design pattern: A document that describes a general solution
More informationExample Test Questions for Inheritance
2009 November 23 Example Test Questions for Inheritance 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Give and explain the type rule with genericity using an example method call. escribe constraint genericity.
More informationObject-Oriented Software Construction
1 Object-Oriented Software Construction Bertrand Meyer Reading assignment 2 OOSC2 Chapter 10: Genericity 3 Lecture 4: Abstract Data Types Abstract Data Types (ADT 4 Why use the objects? The need for data
More informationEiffel: Analysis, Design and Programming. ETH Zurich, September-December Exception handling
Eiffel: Analysis, Design and Programming ETH Zurich, September-December 2008-6- Exception handling What is an exception? An abnormal event Not a very precise definition Informally: something that you don
More informationChapter 11. Categories of languages that support OOP: 1. OOP support is added to an existing language
Categories of languages that support OOP: 1. OOP support is added to an existing language - C++ (also supports procedural and dataoriented programming) - Ada 95 (also supports procedural and dataoriented
More information1. Quality issues (5 points)
ETH Zurich Computer Science Course: Advanced Topics in Object Technology, by Bertrand Meyer Summer semester 2003 Exam (prepared by Karine Arnout) 2 July 2003 10:00 to 12:00 Name:.. Id-Nr:.. No notes, computers,
More informationObject-Oriented Software Construction
1 Object-Oriented Software Construction Bertrand Meyer 2 Lecture 5: Objects The basic structure: The class 3 A class is an implementation of an ADT. It is both: A module. A type. Much of the conceptual
More informationTrusted Components. Reuse, Contracts and Patterns. Prof. Dr. Bertrand Meyer Dr. Karine Arnout
1 Last update: 2 November 2004 Trusted Components Reuse, Contracts and Patterns Prof. Dr. Bertrand Meyer Dr. Karine Arnout 2 Lecture 7: Pattern Wizard, project presentation Agenda for today 3 Pattern Wizard
More informationExercise 3: Objects, Design by Contract. Master Solution
Exercise 3: Objects, Design by Contract Hand-out: 23 April 2004 Due: 30 April 2004 Master Solution 1. Summary: Objects, Design by Contract 1.1 Feature categories No result Command Procedure No result Routine
More informationAdding Contracts to C#
Adding Contracts to C# Peter Lagace ABSTRACT Design by contract is a software engineering technique used to promote software reliability. In order to use design by contract the selected programming language
More informationJava 5. Lecture 33: Java 5. Generics Finally Added. Constrained Genericity
Java 5 Lecture 33: Java 5 CSC 131 Fall, 2014 Kim Bruce Generics Enhanced for loop (w/iterators) Auto-boxing and unboxing of primitive types Type-safe enumerated types Static Import Simpler I/O Now on Java
More informationAgents are not for the beginning Eiffel user. If this is your first reading, you should most likely skip this chapter.
26 Draft 4.87.00-2, 9 January 2005 15:23 (Zürich) Extracted from ongoing work on future third edition of Eiffel: The Language. Copyright Bertrand Meyer 1986-2002. Access restricted to purchasers of the
More informationAssertions. Assertions - Example
References: internet notes; Bertrand Meyer, Object-Oriented Software Construction; 11/13/2003 1 Assertions Statements about input to a routine or state of a class Have two primary roles As documentation,
More informationObject-Oriented Software Construction
1 Object-Oriented Software Construction Bertrand Meyer 2 Lecture 2: EiffelStudio and project presentation Agenda for today 3 EiffelStudio: The ISE Eiffel environment Project presentation Agenda for today
More informationLecture 14: More Inheritance & Genericity
Chair of Software Engineering Einführung in die Programmierung Introduction to Programming Prof. Dr. Bertrand Meyer October 2006 February 2007 MP1 Lecture 14: More Inheritance & Genericity 2 Genericity:
More informationThe architecture of Eiffel software 3.1 OVERVIEW classes clusters systems
3 Draft 5.02.00-0, 15 August 2005 (Santa Barbara). Extracted from ongoing work on future third edition of Eiffel: The Language. Copyright Bertrand Meyer 1986-2005. Access restricted to purchasers of the
More informationObject-Oriented Design
Object-Oriented Design Lecturer: Raman Ramsin Lecture 20: GoF Design Patterns Creational 1 Software Patterns Software Patterns support reuse of software architecture and design. Patterns capture the static
More informationWrapping a complex C++ library for Eiffel. FINAL REPORT July 1 st, 2005
Wrapping a complex C++ library for Eiffel FINAL REPORT July 1 st, 2005 Semester project Student: Supervising Assistant: Supervising Professor: Simon Reinhard simonrei@student.ethz.ch Bernd Schoeller Bertrand
More informationEinführung in die Programmierung Introduction to Programming
Chair of Software Engineering Einführung in die Programmierung Introduction to Programming Prof. Dr. Bertrand Meyer Exercise Session 5 Today Attributes, formal arguments, and local variables Control structures
More informationEinführung in die Programmierung Introduction to Programming
Chair of Software Engineering Einführung in die Programmierung Introduction to Programming Prof. Dr. Bertrand Meyer Exercise Session 5 Today Ø Attributes, formal arguments, and local variables Ø Control
More informationSolution 9: Data structures
Solution 9: Data structures ETH Zurich 1 Choosing data structures 1. You can use a ubly-linked list. An arrayed list is also suitable if it is implemented as a circular buffer (that is, the list can start
More information11/2/ Dynamic Data Structures & Generics. Objectives. Array-Based Data Structures: Outline. Harald Gall, Prof. Dr.
12. Dynamic Data Structures & Generics Harald Gall, Prof. Dr. Institut für Informatik Universität Zürich http://seal.ifi.uzh.ch Objectives! Define and use an instance of ArrayList! Describe general idea
More informationThe undo stack and reusing the memento pattern
The undo stack and reusing the memento pattern Michaël Van Canneyt March 31, 2009 Abstract In a previous contribution, the memento pattern was introduced. In this article, the memento pattern is used in
More informationList ADT. Announcements. The List interface. Implementing the List ADT
Announcements Tutoring schedule revised Today s topic: ArrayList implementation Reading: Section 7.2 Break around 11:45am List ADT A list is defined as a finite ordered sequence of data items known as
More informationEinführung in die Programmierung Introduction to Programming
Chair of Software Engineering Einführung in die Programmierung Introduction to Programming Prof. Dr. Bertrand Meyer Lecture 3: Dealing with Objects II Programming languages The programming language is
More informationEiffel Loops & Iteration
EIFFEL SOFTWARE Eiffel Loops & Iteration 16 MAY 2018 SUMMARY GENERALLY ITERABLE THINGS ACROSS LOOP - BASICS ACROSS LOOP - INDEXING ACROSS LOOP - REVERSING ACROSS LOOP - SKIPPING ACROSS LOOP - ARRAY ACROSS
More informationAutomated Fixing of Programs with Contracts
Automated Fixing of Programs with Contracts Yi Wei, Yu Pei, Carlo A. Furia, Lucas S. Silva, Stefan Buchholz, Bertrand Meyer and Andreas Zeller Chair of Software Engineering, ETH Zürich Software Engineering
More informationIn lecture, Prof. Jackson discussed two ways to implement this class, either using
6.170 Recitation 3 6.170 - Recitation 3 Topics Covered Abstraction Functions Representation Invariants First Implementation Recall the Command Line History example from Lecture 7 (last Wednesday). In this
More informationJVA-103. Java Programming
JVA-103. Java Programming Version 8.0 This course teaches programming in the Java language -- i.e. the Java Standard Edition platform. It is intended for programmers with experience in languages other
More informationCOMP 250. Lecture 32. polymorphism. Nov. 25, 2016
COMP 250 Lecture 32 polymorphism Nov. 25, 2016 1 Recall example from lecture 30 class String serialnumber Person owner void bark() {print woof } : my = new (); my.bark();?????? extends extends class void
More informationA Eiffel: The Essentials
A Eiffel: The Essentials This appix addresses people who are familiar with the object-oriented approach but not know Eiffel very well. It introduces all the concepts needed to understand the core of this
More informationThe Eiffel language. Slides partly based on :
The Eiffel language Slides partly based on : http://se.inf.ethz.ch/courses/2015b_fall/eprog/english_index.html Eiffel, in brief Procedural, object-oriented programming language created by Bertrand Meyer
More informationC.1 OVERVIEW C.2 LETTER CASE
C This revision: Eiffel 4.74-0, 15 September 2000 17:01 (SB time) Extracted from ongoing work on future third edition of Eiffel: The Language. Copyright Bertrand Meyer 1986-2000. Access restricted to purchasers
More informationResearch Collection. Reusable mathematical models. Master Thesis. ETH Library. Author(s): Widmer, Tobias K. Publication Date: 2004
Research Collection Master Thesis Reusable mathematical models Author(s): Widmer, Tobias K. Publication Date: 2004 Permanent Link: https://doi.org/10.3929/ethz-a-005115737 Rights / License: In Copyright
More informationThe Dependent Delegate Dilemma
The Depent Delegate Dilemma Bertrand Meyer, ETH Zurich ABSTRACT A criticism of the object-oriented style of programming is that the notion of class invariant seems to collapse in non-trivial client-supplier
More informationProgramming Languages. Benjamin J. Keller Department of Computer Science, Virginia Tech
Programming Languages Eiffel Benjamin J. Keller Department of Computer Science, Virginia Tech Programming Languages Eiffel 2 Overview Classes and Objects Builtin types, constants and operations Expressions,
More informationCase Study! Multi-Panel Interactive System!
Case Study! Multi-Panel Interactive System! 24-1! The Problem Domain! Build a general type of interactive system!» Users interact with a set of panels! > Web applications are an example! 24-2! The Problem
More informationEinführung in die Programmierung Introduction to Programming
Chair of Software Engineering Einführung in die Programmierung Introduction to Programming Prof. Dr. Bertrand Meyer Exercise Session 7 News (Reminder) Mock exam next week! Ø Attance is highly recommed
More informationCS307: Operating Systems
CS307: Operating Systems Chentao Wu 吴晨涛 Associate Professor Dept. of Computer Science and Engineering Shanghai Jiao Tong University SEIEE Building 3-513 wuct@cs.sjtu.edu.cn Download Lectures ftp://public.sjtu.edu.cn
More informationEiffel, a pure OO language with support for Design by Contract
Eiffel, a pure OO language with support for From the perspective of a PHP programmer by Berend de Boer 1 class HELLO_WORLD 2 creation 3 make 4 feature -- Initialization 5 make is 6 do 7 print ("hello world")
More informationInstalling and Using the Cisco Unity Express Script Editor
Installing and Using the Cisco Unity Express Script Editor The Cisco Unity Express Script Editor allows you to create and validate scripts for handling calls that reach the auto attendant application.
More informationClasses and Methods לאוניד ברנבוים המחלקה למדעי המחשב אוניברסיטת בן-גוריון
Classes and Methods לאוניד ברנבוים המחלקה למדעי המחשב אוניברסיטת בן-גוריון 22 Roadmap Lectures 4 and 5 present two sides of OOP: Lecture 4 discusses the static, compile time representation of object-oriented
More informationSingleton Pattern: Motivation. Design Patterns: Singleton and Iterator. What are design patterns? Shared Data through Inheritance
Singleton Pattern: Motivation Design Patterns: Singleton and Iterator EECS3311: Software Design Fall 2017 CHEN-WEI WANG Consider two problems: 1. Bank accounts share a set of data. e.g., interest and exchange
More informationIndex. Index. More information. block statements 66 y 107 Boolean 107 break 55, 68 built-in types 107
A abbreviations 17 abstract class 105 abstract data types 105 abstract method 105 abstract types 105 abstraction 92, 105 access level 37 package 114 private 115 protected 115 public 115 accessors 24, 105
More informationTrusted Components. Reuse, Contracts and Patterns. Prof. Dr. Bertrand Meyer Dr. Karine Arnout
1 Last update: 2 November 2004 Trusted Components Reuse, Contracts and Patterns Prof. Dr. Bertrand Meyer Dr. Karine Arnout 2 Lecture 14: Observer, Mediator Aga for today 3 Observer pattern Event Library
More informationIn-Class Exercises. ETH Zurich. ETH students recently designed a special kind of oven for cooking potatoes. Here are some facts about such an oven:
In-Class Exercises ETH Zurich 1 Contracts ETH students recently designed a special kind of oven for cooking potatoes. Here are some facts about such an oven: each oven is equipped with a door which is
More informationEinführung in die Programmierung Introduction to Programming
Chair of Software Engineering Einführung in die Programmierung Introduction to Programming Prof. Dr. Bertrand Meyer Exercise Session 9 Today Ø Feedback on the mock exam Ø Recursion Ø Recursion Recursion
More informationCase Study Multi-Panel Interactive System
Case Study Multi-Panel Interactive System 24-1 The Problem Domain Build a general type of interactive system» Users interact with a set of panels > Web applications are an example Each session goes through
More informationConcurrency Patterns in SCOOP
Concurrency Patterns in SCOOP Master Thesis Project Plan Project period: 10. March to 8. September 2014 Student name: Roman Schmocker, 09-911-215 Status: 4. semester, Msc in Computer Science Email address:
More information25Live Data Administration Guide
25Live Data Administration Guide The 25Live Administration Utility The data administration tasks you can perform The 25Live Administration Utility is used to create and maintain the data used in your 25Live
More informationClasses and Methods גרא וייס המחלקה למדעי המחשב אוניברסיטת בן-גוריון
Classes and Methods גרא וייס המחלקה למדעי המחשב אוניברסיטת בן-גוריון 2 Roadmap Lectures 4 and 5 present two sides of OOP: Lecture 4 discusses the static, compile time representation of object-oriented
More informationClasses and Methods עזאם מרעי המחלקה למדעי המחשב אוניברסיטת בן-גוריון מבוסס על השקפים של אותו קורס שניתן בשנים הקודמות
Classes and Methods עזאם מרעי המחלקה למדעי המחשב אוניברסיטת בן-גוריון מבוסס על השקפים של אותו קורס שניתן בשנים הקודמות 2 Roadmap Lectures 4 and 5 present two sides of OOP: Lecture 4 discusses the static,
More informationWinter 2016 COMP-250: Introduction to Computer Science. Lecture 6, January 28, 2016
Winter 2016 COMP-250: Introduction to Computer Science Lecture 6, January 28, 2016 Java Generics element next _, Java Generics Java Generics (Doubly) Linked List (Doubly) Linked List Node element next
More informationChapter 4: Threads. Chapter 4: Threads
Chapter 4: Threads Silberschatz, Galvin and Gagne 2009 Chapter 4: Threads Overview Multithreading Models Thread Libraries Threading Issues Operating System Examples Windows XP Threads Linux Threads 4.2
More informationObject-Oriented Design
Object-Oriented Design Lecturer: Raman Ramsin Lecture 15: Object-Oriented Principles 1 Open Closed Principle (OCP) Classes should be open for extension but closed for modification. OCP states that we should
More informationThe State Design Pattern
The State Design Pattern Readings: OOSC2 Chapter 20 EECS3311 A: Software Design Fall 2018 CHEN-WEI WANG Motivating Problem Consider the reservation panel of an online booking system: 2 of 28 State Transition
More informationObject-Oriented Software Construction
1 Object-Oriented Software Construction Bertrand Meyer 2 Lecture 18: From design patterns to components Aga for today 3 Design patterns A successful story: the Observer pattern From patterns to components
More informationLecture 4: Observer Pattern, Event Library and Componentization
Software Architecture Bertrand Meyer & Till Bay ETH Zurich, February-May 2008 Lecture 4: Observer Pattern, Event Library and Componentization Program overview Date Topic Who? last week Introduction; A
More information10 Feature adaptation
10 Feature adaptation Draft 5.02.00-0, 15 August 2005 (Santa Barbara). Extracted from ongoing work on future third edition of Eiffel: The Language. Copyright Bertrand Meyer 1986-2005. Access restricted
More informationAssignment 7: Inheritance
Assignment 7: Inheritance ETH Zurich Hand-out: 11 December 2006 Due: 19 December 2006 Calvin and Hobbes c Bill Watterson 1 Dynamic exercise Goal Understand the effects of dynamic binding. Summary Have
More informationObject Oriented Program Correctness with OOSimL
Kennesaw State University DigitalCommons@Kennesaw State University Faculty Publications 12-2009 Object Oriented Program Correctness with OOSimL José M. Garrido Kennesaw State University, jgarrido@kennesaw.edu
More informationObject-Oriented Analysis and Design
0. Object Orientation: An Subject/Topic/Focus: over this lecture Summary: Lecturer, lecture, rooms, assistants, lab classes, credit points... Need for systems analysis and software engineers Literature
More informationChapter 4: Threads. Overview Multithreading Models Thread Libraries Threading Issues Operating System Examples Windows XP Threads Linux Threads
Chapter 4: Threads Overview Multithreading Models Thread Libraries Threading Issues Operating System Examples Windows XP Threads Linux Threads Chapter 4: Threads Objectives To introduce the notion of a
More informationWhat is an algorithm?
Reminders CS 142 Lecture 4 ADTs & Objects Program 1 was assigned - Due on 1/27 by 11:55pm Spring 2015 2 Object-Oriented Programming (OOP) OOP Definitions Imagine: You and your programming team have written
More informationCS 450 Operating System Week 4 Lecture Notes
CS 450 Operating System Week 4 Lecture Notes Reading: Operating System Concepts (7 th Edition) - Silberschatz, Galvin, Gagne Chapter 5 - Pages 129 147 Objectives: 1. Explain the main Objective of Threads
More informationIn-Class Exercises. ETH Zurich. November
In-Class Exercises ETH Zurich November 28 2012 1 Contracts ETH students recently designed a special kind of oven for cooking potatoes. Here are some facts about such an oven: each oven is equipped with
More informationData abstractions: ADTs Invariants, Abstraction function. Lecture 4: OOP, autumn 2003
Data abstractions: ADTs Invariants, Abstraction function Lecture 4: OOP, autumn 2003 Limits of procedural abstractions Isolate implementation from specification Dependency on the types of parameters representation
More informationA QUICK OVERVIEW OF THE OMNeT++ IDE
Introduction A QUICK OVERVIEW OF THE OMNeT++ IDE The OMNeT++ Integrated Development Environment is based on the Eclipse platform, and extends it with new editors, views, wizards, and additional functionality.
More informationDatabase Applications (15-415)
Database Applications (15-415) DBMS Internals- Part VII Lecture 15, March 17, 2014 Mohammad Hammoud Today Last Session: DBMS Internals- Part VI Algorithms for Relational Operations Today s Session: DBMS
More informationIntroduction to Programming in C Department of Computer Science and Engineering. Lecture No. #17. Loops: Break Statement
Introduction to Programming in C Department of Computer Science and Engineering Lecture No. #17 Loops: Break Statement (Refer Slide Time: 00:07) In this session we will see one more feature that is present
More informationChe-Wei Chang Department of Computer Science and Information Engineering, Chang Gung University
Che-Wei Chang chewei@mail.cgu.edu.tw Department of Computer Science and Information Engineering, Chang Gung University 1. Introduction 2. System Structures 3. Process Concept 4. Multithreaded Programming
More informationETHZ D-INFK Final Exam Booklet
ETHZ D-INFK Booklet Date: 15 December 2009 Surname, first name:... Student number:... I confirm with my signature, that I was able to take this exam under regular circumstances and that I have read and
More informationSingleton Pattern Creational
Singleton Pattern Creational Intent» Ensure a class has only one instance» Provide a global point of access Motivation Some classes must only have one instance file system, window manager Applicability»
More informationDBMS Lesson Plan. Name of the faculty: Ms. Kavita. Discipline: CSE. Semester: IV (January-April 2018) Subject: DBMS (CSE 202-F)
DBMS Lesson Plan Name of the faculty: Ms. Kavita Discipline: CSE Semester: IV (January-April 2018) Subject: DBMS (CSE 202-F) Week No Lecture Day Topic (including assignment/test) 1 1 Introduction to Database
More informationChapter 4: Threads. Operating System Concepts with Java 8 th Edition
Chapter 4: Threads 14.1 Silberschatz, Galvin and Gagne 2009 Chapter 4: Threads Overview Multithreading Models Thread Libraries Threading Issues Operating System Examples 14.2 Silberschatz, Galvin and Gagne
More informationEinführung in die Programmierung Introduction to Programming
Einführung in die Programmierung Introduction to Programming Prof. Dr. Bertrand Meyer Exercise Session 10 1 Today Ø Multiple inheritance 2 Inheritance is never the only way Given the classes Ø TRAIN_CAR,
More informationClasses, interfaces, & documentation. Review of basic building blocks
Classes, interfaces, & documentation Review of basic building blocks Objects Data structures literally, storage containers for data constitute object knowledge or state Operations an object can perform
More informationTrusted Components. Reuse, Contracts and Patterns. Prof. Dr. Bertrand Meyer Dr. Karine Arnout
1 Last update: 2 November 2004 Trusted Components Reuse, Contracts and Patterns Prof. Dr. Bertrand Meyer Dr. Karine Arnout 2 Lecture 12: Componentization Agenda for today 3 Componentization Componentizability
More informationMessage Passing. Advanced Operating Systems Tutorial 7
Message Passing Advanced Operating Systems Tutorial 7 Tutorial Outline Review of Lectured Material Discussion: Erlang and message passing 2 Review of Lectured Material Message passing systems Limitations
More informationBonita Workflow. Development Guide BONITA WORKFLOW
Bonita Workflow Development Guide BONITA WORKFLOW Bonita Workflow Development Guide BSOA Workflow v3.0 Software January 2007 Copyright Bull SAS Table of Contents Chapter 1. Overview... 11 1.1 Role of
More informationReferences: internet notes; Bertrand Meyer, Object-Oriented Software Construction; 10/14/2004 1
References: internet notes; Bertrand Meyer, Object-Oriented Software Construction; 10/14/2004 1 Assertions Statements about input to a routine or state of a class Have two primary roles As documentation,
More informationTrusted Components. Reuse, Contracts and Patterns. Prof. Dr. Bertrand Meyer Dr. Karine Arnout
1 Last update: 2 November 2004 Trusted Components Reuse, Contracts and Patterns Prof. Dr. Bertrand Meyer Dr. Karine Arnout 2 Lecture 8: Design by Contract (1/2) Agenda for today 3 Design by Contract: definition
More informationSNiFF+ for Eiffel: A new programming environment for Eiffel
SNiFF+ for Eiffel: A new programming environment for Eiffel by Jan Willamowius Abstract: Until recently Eiffel developers were stuck with whatever programming environment was (or wasn t) provided by their
More information