Decorator Pattern. Steven R. Bagley
|
|
- Ada Morris
- 5 years ago
- Views:
Transcription
1 Decorator Pattern Steven R. Bagley
2 Introduction Decorator Pattern Inheritance vs. Composition
3
4 Tricolour Coffee Bar Fast-growing coffee chain Started by a computer scientist Wants a fully OO based ordering system
5 Drinks Coffees House Blend Dark Roast Decaf Espresso Toppings Mocha Steamed Milk Soy Whip
6 Where to Begin? Assume it serves only drinks Abstract base class of Drink Coffee Types inherit from Drink Methods for Description Cost
7 Drink description GetDescription Cost HouseBlend cost() DarkRoast cost() Decaf cost() Espresso cost()
8 class CBeverage { public: string GetDescription(); virtual double cost() = 0; protected: string m_description; }; Abstract class -- can t instantiate directly but we can instantiate subclasses
9 class CBeverage { public: string GetDescription(); virtual double cost() = 0; protected: string m_description; }; same as abstract in Java Abstract class -- can t instantiate directly but we can instantiate subclasses
10 string CBeverage::GetDescription() { return m_description; }
11 class CHouseBlend : public CBeverage { public: CHouseBlend(); virtual double cost(); }; Abstract class -- can t instantiate directly but we can instantiate subclasses
12 class CHouseBlend : public CBeverage { public: CHouseBlend(); virtual double cost(); }; provide an implemenation of the abstract method Abstract class -- can t instantiate directly but we can instantiate subclasses
13 CHouseBlend::CHouseBlend() { m_description = House Blend ; } double CHouseBlend::cost() { return 0.89; }
14 Toppings What about the Toppings? Inherit the various types? EspressoWithMocha DarkRoastWithSteamedMilk Implementation as before
15 CHouseBlendWithMocha:: CHouseBlendWithMocha() { m_description = House Blend with Mocha ; } double CHouseBlendWithMocha::cost() { return ; }
16
17 Class Explosion Where did all these classes come from? 16 combination of toppings 4 drinks 64 different classes to implement Maintenance nightmare! What if the cost of Mocha topping goes up?
18 Design Principles Does it break our Design Principles? Encapsulate what varies Favour composition over inheritance Program to interfaces, not implementation Always a good idea to measure your design up against these design principles. Try and justify why you are breaking one... It is almost certainly a bad idea
19 Encapsulate what varies Fail here Big Time! Nothing is encapsulated DarkRoastWithMocha HouseBlendWithMocha HouseBlendWithSteamedMilk No Code Reuse
20 Favour Composition Inheritance 64 Composition 0 No composed classes Definite fail here
21 Interface We meet this Beverage interface No need to use concrete classes
22 Square One Unworkable design A new topping means 64 new classes A new coffee means 16 new classes Back to the drawing board Need to do this without using so many classes
23 Attempt Two Apply first design principle Put the toppings into Beverage as instance variables Encapsulates what varies Sub-classes call Beverage s cost() to get cost of toppings
24 Drink description milk soy mocha whip GetDescription Cost HasMilk SetMilk HasSoy SetSoy HasMocha SetMocha HasWhip SetWhip HouseBlend cost() DarkRoast cost() Decaf cost() Espresso cost()
25 int CDrink::Cost() { int cost = 0; if(m_hasmocha) cost += 0.20; if(m_hasmilk) cost += 0.10; return cost; }
26 int CDarkRoast::Cost() { return CDrink::Cost() ; }
27 WooHoo Only five classes Code reuse No Ducks! This must be the way to do it!
28 Or maybe not Price changes to toppings mean we have to edit existing code (we could break it) New toppings mean new methods and editing the cost method (recompile everything) What about drinks without toppings? Or double toppings?
29 Inheritance Inheritance is powerful Doesn t always lead to flexible designs Can inherit behaviour at runtime via composition
30 Inherit or Compose Behaviour is fixed statically at compile time Composition can extend at runtime Composition allows us to add new responsibilities to objects without touching the superclass New functionality by writing new code, not editing old (and working) code
31 Design Principle Classes should be open for extension, but closed for modification
32 Open-Closed Principle Classes should be open for extension Feel free to extend our classes with any new behaviour you like, but closed for modification Sorry, but our code is fixed and bug free you can t change it Inheritance means code-change
33 Open-closed Design How do you design something to be open for extension but closed to modification? Lots of OO techniques Keep things loosely coupled
34 Tightly coupled example Suppose we have a class that prints stuff Outputs the data to the standard output in the usual way System.out.println( ); printf( ); Coupled tightly to the output classes Can t work with out them, can t output to anything else
35 public class TightCouple { public DebugOutput() { System.out.println( Debug output ); System.out.println( End Debug ); } }
36 Make it loosely coupled Class is tied to outputting to standard output Via the System.out class If we want to output to a file (or elsewhere) then we d need to rewrite code However, we can rewrite it to be loosely coupled
37 public class LooseCouple { public DebugOutput(PrintStream output) { output.println( Debug output ); output.println( End Debug ); } }
38 obj.debugoutput(system.out); Call it by passing it a reference or pointer to the object it uses to print things out obj no longer tied to any specific output
39 Decorator Pattern We need to sell some coffee here Can use the Decorator Pattern to solve this design Uses composition rather than inheritance
40
41 Dark
42 MochaDark
43 Whip MochaDark
44 Whip MochaDark All Objects are of the same type, Drink
45 All Objects are of the same type, Drink Whip MochaDark Mocha and Whip are Decorators, they take an object of type Drink and wrap it up
46 Decorator Start with a DarkRoast object Customer wants Mocha, wrap a Mocha object around DarkRoast Also want Whip, wrap a Whip object around Mocha Both decorators and concrete classes share same type, Drink
47 Coffee Decorators How it works Call cost() on the decorated object Decorator calls cost() on the object it decorates and adjusts the price Decorators can decorate Decorators
48 Drink description GetDescription Cost HouseBlend cost() DarkRoast cost() Decaf cost() Espresso cost() CondimentDecorator Drink Milk cost GetDescription Mocha cost GetDescription Soy cost GetDescription Whip cost GetDescription
49 class CBeverage { public: virtual string GetDescription(); virtual double Cost() = 0; protected: string m_description; }; Abstract class -- can t instantiate directly but we can instantiate subclasses
50 string CBeverage::GetDescription() { return m_description; }
51 string CBeverage::GetDescription() { return m_description; } return a copy of the description
52 class CHouseBlend : CBeverage { public: CHouseBlend(); virtual double Cost(); }; Abstract class -- can t instantiate directly but we can instantiate subclasses
53 class CHouseBlend : CBeverage { public: CHouseBlend(); virtual double Cost(); }; provide an implemenation of the abstract method Abstract class -- can t instantiate directly but we can instantiate subclasses
54 string CHouseBlend::CHouseBlend() { m_description = House Blend ; } double CHouseBlend::Cost() { return 0.89; }
55 class CCondimentDecorator : public CBeverage { public: virtual string GetDescription() = 0; virtual double Cost() = 0; }; Abstract class -- can t instantiate directly but we can instantiate subclasses
56 class CMocha : public CCondimentDecorator { public:! CMocha(CBeverage *beverage);! ~CMocha();!! virtual string GetDescription();! virtual double Cost(); private:! CBeverage *m_beverage; }; Abstract class -- can t instantiate directly but we can instantiate subclasses
57 CMocha::CMocha(CBeverage *beverage) {! m_beverage = beverage; } CMocha::~CMocha() {! delete m_beverage; } string CMocha::GetDescription() {! return m_beverage->getdescription() + ", Mocha"; } double CMocha::Cost() {! return m_beverage->cost() ; } Abstract class -- can t instantiate directly but we can instantiate subclasses
58 ! CBeverage *beverage2 = new CDarkRoast();! beverage2 = new CMocha(beverage2);! beverage2 = new CMocha(beverage2); Abstract class -- can t instantiate directly but we can instantiate subclasses
59 Decorator Pattern The Decorator Pattern attaches additional responsibilities to an object dynamically. Decorators provide a flexible alternative to subclassing for extending functionality Black-box reuse Classes implementation unchanged
60 Decorator Components Abstract Component interface Some Concrete Components that implement interface Some Decorators that also implement the interface
61 Decorator Each Decorator has-a component that it wraps up (instance variable containing a reference) Decorators add functionality New Methods (unusual) Additional code before or after existing methods
62 Decorated Inheritance Inheritance is used to get type compatibility, not behaviour Object being decorated is never changed If it is bug-free it stays bug free If we inherit, we are effectively altering the code for that object which can introduce bugs
63 Inheritance means rewrite Suppose a class has two methods foo() bar() foo() uses bar() to do some of its work Inherit a new class which replaces bar() s behaviour foo() does not work correctly anymore
64 Do not modify On the other hand if we decorate the class to replace bar() foo() still works (it calls the original bar ()) New bar() still called via decorator Inherit for type, not behaviour
65 Deja vu Anyone getting the impression they ve seen this before?
66 Java File I/O Java s File I/O is based around the Decorator Pattern Abstract root InputStream Concrete base types FileInputStream, StringBufferStream Stream Decorators (FilterInputStream) BufferedInputStream, LineNumberInputStream
67 InputStream in = new BufferedInputStream(new FileInputStream( test.txt )); in.read(); Only have to implement bufferedinputstream once, not for every input stream type
68 public class LowerCaseInputStream extends FilterInputStream {! public LowerCaseInputStream(InputStream in) {!! super(in);! }! public int read() throws IOException {!! int c = super.read();!! return (c == -1? c : Character.toLowerCase((char)c));! }!!! public int read(byte[] b, int offset, int len) throws {!! int result = super.read(b, offset, len);!! for (int i = offset; i < offset+result; i++) {!!! b[i] = (byte)character.tolowercase((char)b[i]);!! }!! return result;! } } Easy to implement new input stream filters
Interface. Design Patterns 2. Why use Interface? Design Principles. Adapter 11/7/2011. Michael Li
G5APR Applications Programming Design Patterns Michael Li email: jwl@cs.nott.ac.uk http://www.cs.nott.ac.uk/~jwl/g5apr Interface An Interface is a collection of abstract methods that an object implements
More information03. DECORATOR PATTERN. Design Eye for the Inheritance Guy
BIM492 DESIGN PATTERNS 03. DECORATOR PATTERN Design Eye for the Inheritance Guy Welcome to Starbuzz Coffee Starbuzz Coffee is the fastest growing coffee shop around --> if you see one, look across the
More informationDecorating Objects. 3 the DecoratorPattern. Just call this chapter Design Eye for the Inheritance Guy.
3 the DecoratorPattern g h Decorating Objects g I used to think real men subclassed everything. That was until I learned the power of extension at runtime, rather than at compile time. Now look at me!
More informationApplying the Decorator Design Pattern
Applying the Decorator Design Pattern Trenton Computer Festival Professional Seminars Michael P. Redlich (908) 730-3416 michael.p.redlich@exxonmobil.com About Myself Degree B.S. in Computer Science Rutgers
More informationMore Patterns. Acknowledgement: Head-first design patterns
More Patterns Acknowledgement: Head-first design patterns Chain of Responsibility Acknowledgement: Head-first design patterns Problem Scenario: Paramount Pictures has been getting more email than they
More informationCS427a: Object-Oriented Programming Design Patterns for Flexible and Reusable design
CS427a: Object-Oriented Programming Design Patterns for Flexible and Reusable design Michael J. Fischer (from slides by Y. Richard Yang) Lecture 23b November 29, 2011 Example: Duck Game A startup produces
More informationTDDB84 Design Patterns Lecture 02. Factory Method, Decorator
Lecture 02 Factory Method, Decorator Peter Bunus Dept of Computer and Information Science Linköping University, Sweden petbu@ida.liu.se Factory Method Pattern Peter Bunus 2 1 Time for Lunch Joe, with the
More informationDesign Patterns (Part 2) CSCE Lecture 18-10/25/2016 (Partially adapted from Head First Design Patterns by Freeman, Bates, Sierra, and Robson)
Design Patterns (Part 2) CSCE 740 - Lecture 18-10/25/2016 (Partially adapted from Head First Design Patterns by Freeman, Bates, Sierra, and Robson) Objectives for Today The point of OO: Separate what changes
More informationDecorator. The Decorator pattern gives a mechanism without using inheritance.
Sometimes we need a way to add responsibilities to an object dynamically and transparently. The Decorator pattern gives a mechanism without using inheritance. The Decorator pattern allows one to add and
More informationSoftware Frameworks. Patterns and frameworks. Patterns and frameworks. Patterns and frameworks. Patterns and frameworks
Software Frameworks Object-Oriented Analysis and Design - CDT309 Period 4, Spring 2008 More design patterns They are code libraries designed to facilitate software development. Examples: Ruby on Rails:
More informationHOW DO WE DESIGN A DESIGN PATTERN?
HOW DO WE DESIGN A DESIGN PATTERN? Designingan Example Client Duck quack() fly() Inheritance allows us to reuse code, but also forces attributes and behavior to the subclasses. WildDuck RedHeadDuck
More informationDesign Patterns Reid Holmes
Material and some slide content from: - Head First Design Patterns Book - GoF Design Patterns Book Design Patterns Reid Holmes GoF design patterns $ %!!!! $ "! # & Pattern vocabulary Shared vocabulary
More informationIndependent Study. Object-oriented programming, Functional programming and Design Patterns using Scala, Ruby and Java.
Independent Study Object-oriented programming, Functional programming and Design Patterns using Scala, Ruby and Java. Angel Cambero Advisor: Prof. Matthew Fluet Rochester Institute of Technology August
More informationDesign Patterns: Composite, Memento, Template Method, Decorator, Chain of Responsibility, Interpreter
Design Patterns: Composite, Memento, Template Method, Decorator, Chain of Responsibility, Interpreter Composite Outline for Week 14 [Skrien 8.7] We need to allow users to group figures together to make
More informationCS 520/620 Advanced Software Engineering Spring February 02, 2016
CS 520/620 Advanced Software Engineering Spring 2016 February 02, 2016 Logistics Project proposals Elevator pitches on Thursday Deadline for creating groups: 02/03/2016, 11:55pm Deadline for submitting
More informationCSE 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 informationTecniche di Progettazione: Design Patterns
Tecniche di Progettazione: Design Patterns GoF: Decorator 1 2 3 4 Decorator Intent Attach additional responsibilities to an object dynamically. Decorators provide a flexible alternative to subclassing
More informationBasic Java IO Decorator pattern Advanced Java IO. Java IO - part 2 BIU OOP. BIU OOP Java IO - part 2
Java IO - part 2 BIU OOP Table of contents 1 Basic Java IO What do we know so far? What s next? 2 Example Overview General structure 3 Stream Decorators Serialization What do we know so far? What s next?
More informationOutline. 15. Inheritance. Programming in Java. Computer Science Dept Va Tech August D Barnette, B Keller & P Schoenhoff
Outline 1 Inheritance: extends ; Superclasses and Subclasses Valid and invalid object states, & Instance variables: protected Inheritance and constructors, super The is-a vs. has-a relationship (Inheritance
More informationTecniche di Progettazione: Design Patterns
Tecniche di Progettazione: Design Patterns GoF: Decorator 1 An example 2 Your first idea of implementation 3 In reality 4 Now a beverage can be mixed from different condiment to form a new beverage 5 6
More informationI/O streams. Byte Streams Character Streams InputStream ByteArrayInputStream FileInputStream FilterInputStream
Course Name: Advanced Java Lecture 9 Topics to be covered I/O streams Byte Streams Character Streams InputStream ByteArrayInputStream FileInputStream FilterInputStream Introduction A Stream is a sequence
More informationDesign Pattern and Software Architecture: IV. Design Pattern
Design Pattern and Software Architecture: IV. Design Pattern AG Softwaretechnik Raum E 3.165 Tele.. 60-3321 hg@upb.de IV. Design Pattern IV.1 Introduction IV.2 Example: WYSIWYG Editor Lexi IV.3 Creational
More informationThe University of Nottingham
The University of Nottingham SCHOOL OF COMPUTER SCIENCE A LEVEL 2 MODULE, SPRING SEMESTER OBJECT-ORIENTED METHODS Time allowed TWO hours Candidates may complete the front cover of their answer book and
More informationThe Adapter Pattern. Interface with anything!
The Adapter Pattern Interface with anything! Adapter in a Nutshell - An adapter takes an object with one interface, and changes the interface to make it look like something it s not. - Allows two objects
More informationClient 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 informationWriting your own Java I/O Decorator p. 102 Tools for your Design Toolbox p. 105 Exercise Solutions p. 106 The Factory Pattern Baking with OO
Intro to Design Patterns Welcome to Design Patterns: Someone has already solved your problems The SimUDuck app p. 2 Joe thinks about inheritance... p. 5 How about an interface? p. 6 The one constant in
More informationInput, Output and Exceptions. COMS W1007 Introduction to Computer Science. Christopher Conway 24 June 2003
Input, Output and Exceptions COMS W1007 Introduction to Computer Science Christopher Conway 24 June 2003 Input vs. Output We define input and output from the perspective of the programmer. Input is data
More informationObject-Oriented Concepts and Design Principles
Object-Oriented Concepts and Design Principles Signature Specifying an object operation or method involves declaring its name, the objects it takes as parameters and its return value. Known as an operation
More informationWeek 7. Statically-typed OO languages: C++ Closer look at subtyping
C++ & Subtyping Week 7 Statically-typed OO languages: C++ Closer look at subtyping Why talk about C++? C++ is an OO extension of C Efficiency and flexibility from C OO program organization from Simula
More informationThe Decorator Pattern. Design Patterns In Java Bob Tarr
The Decorator Pattern Intent Attach additional responsibilities to an object dynamically. Decorators provide a flexible alternative to subclassing for extending functionality. Also Known As Wrapper Motivation
More informationPRINCIPLES OF SOFTWARE BIM209DESIGN AND DEVELOPMENT 03. REQUIREMENTS CHANGE. I Love You, You re Perfect... Now Change!
PRINCIPLES OF SOFTWARE BIM209DESIGN AND DEVELOPMENT 03. REQUIREMENTS CHANGE I Love You, You re Perfect... Now Change! You re a hero! The door you built for Todd and Gina was a huge success, and now Doug
More informationSoftware Engineering
Software Engineering CSC 331/631 - Spring 2018 Object-Oriented Design Principles Paul Pauca April 10 Design Principles DP1. Identify aspects of the application that vary and separate them from what stays
More informationGenerics/Templates. Steven R. Bagley
Generics/Templates Steven R. Bagley Code reuse Often we implement a class Only to find that next week, we need to reuse it with just a slight tweak Collections, Containers are good examples class CIntStack
More informationPRINCIPLES OF SOFTWARE BIM209DESIGN AND DEVELOPMENT 00. WELCOME TO OBJECTVILLE. Speaking the Language of OO
PRINCIPLES OF SOFTWARE BIM209DESIGN AND DEVELOPMENT 00. WELCOME TO OBJECTVILLE Speaking the Language of OO COURSE INFO Instructor : Alper Bilge TA : Gökhan Çıplak-Ahmet Alkılınç Time : Tuesdays 2-5pm Location
More informationExpanding Our Horizons. CSCI 4448/5448: Object-Oriented Analysis & Design Lecture 9 09/25/2011
Expanding Our Horizons CSCI 4448/5448: Object-Oriented Analysis & Design Lecture 9 09/25/2011 1 Goals of the Lecture Cover the material in Chapter 8 of our textbook New perspective on objects and encapsulation
More informationDay 4. COMP1006/1406 Summer M. Jason Hinek Carleton University
Day 4 COMP1006/1406 Summer 2016 M. Jason Hinek Carleton University today s agenda assignments questions about assignment 2 a quick look back constructors signatures and overloading encapsulation / information
More informationHeap Arrays and Linked Lists. Steven R. Bagley
Heap Arrays and Linked Lists Steven R. Bagley Recap Data is stored in variables Can be accessed by the variable name Or in an array, accessed by name and index Variables and arrays have a type Create our
More informationSoftware Engineering /48
Software Engineering 1 /48 Topics 1. The Compilation Process and You 2. Polymorphism and Composition 3. Small Functions 4. Comments 2 /48 The Compilation Process and You 3 / 48 1. Intro - How do you turn
More informationBuilding custom components IAT351
Building custom components IAT351 Week 1 Lecture 1 9.05.2012 Lyn Bartram lyn@sfu.ca Today Review assignment issues New submission method Object oriented design How to extend Java and how to scope Final
More informationCS 61B Data Structures and Programming Methodology. July 7, 2008 David Sun
CS 61B Data Structures and Programming Methodology July 7, 2008 David Sun Announcements You ve started (or finished) project 1, right? Package Visibility public declarations represent specifications what
More information1B1b Inheritance. Inheritance. Agenda. Subclass and Superclass. Superclass. Generalisation & Specialisation. Shapes and Squares. 1B1b Lecture Slides
1B1b Inheritance Agenda Introduction to inheritance. How Java supports inheritance. Inheritance is a key feature of object-oriented oriented programming. 1 2 Inheritance Models the kind-of or specialisation-of
More informationTecniche di Progettazione: Design Patterns
Tecniche di Progettazione: Design Patterns GoF: Decorator 1 Decorator Intent Attach additional responsibilities to an object dynamically. Decorators provide a flexible alternative to subclassing for extending
More informationChapter 5 Object-Oriented Programming
Chapter 5 Object-Oriented Programming Develop code that implements tight encapsulation, loose coupling, and high cohesion Develop code that demonstrates the use of polymorphism Develop code that declares
More informationFactories, Builders and Singletons. Steven R. Bagley
Factories, Builders and Singletons Steven R. Bagley The Patterns So Far Behavioural Patterns Strategy Observer Structural Patterns Decorator Introduction Object Creational Patterns Sometimes new isn t
More informationQuarter 1 Practice Exam
University of Chicago Laboratory Schools Advanced Placement Computer Science Quarter 1 Practice Exam Baker Franke 2005 APCS - 12/10/08 :: 1 of 8 1.) (10 percent) Write a segment of code that will produce
More informationCS 11 java track: lecture 3
CS 11 java track: lecture 3 This week: documentation (javadoc) exception handling more on object-oriented programming (OOP) inheritance and polymorphism abstract classes and interfaces graphical user interfaces
More informationRules and syntax for inheritance. The boring stuff
Rules and syntax for inheritance The boring stuff The compiler adds a call to super() Unless you explicitly call the constructor of the superclass, using super(), the compiler will add such a call for
More information10 Design: Which classes must be included?
Decorator Pattern 1 10 Design: Which classes must be included? Story As a user I want a weekend planner so that I can have more fun Scenario Given that I have made a plan When Saturday arrives Then Send
More informationSri Vidya College of Engineering & Technology Question Bank
1. What is exception? UNIT III EXCEPTION HANDLING AND I/O Part A Question Bank An exception is an event, which occurs during the execution of a program, that disrupts the normal flow of the program s instructions.
More informationThe name of our class will be Yo. Type that in where it says Class Name. Don t hit the OK button yet.
Mr G s Java Jive #2: Yo! Our First Program With this handout you ll write your first program, which we ll call Yo. Programs, Classes, and Objects, Oh My! People regularly refer to Java as a language that
More informationReference Counting. Steven R. Bagley
Reference Counting Steven R. Bagley Previously Objects are blocks of memory Store pointer to base of object s memory so we can reference it Memory needs to be released when the object is no longer needed
More informationJAVA BASICS II. Example: FIFO
JAVA BASICS II Example: FIFO To show how simple data structures are built without pointers, we ll build a doubly-linked list ListItem class has some user data first refers to that ListItem object at the
More informationJava for Non Majors. Final Study Guide. April 26, You will have an opportunity to earn 20 extra credit points.
Java for Non Majors Final Study Guide April 26, 2017 The test consists of 1. Multiple choice questions 2. Given code, find the output 3. Code writing questions 4. Code debugging question 5. Short answer
More informationLogistics. Final Exam on Friday at 3pm in CHEM 102
Java Review Logistics Final Exam on Friday at 3pm in CHEM 102 What is a class? A class is primarily a description of objects, or instances, of that class A class contains one or more constructors to create
More informationMore on Objects in JAVA TM
More on Objects in JAVA TM Inheritance : Definition: A subclass is a class that extends another class. A subclass inherits state and behavior from all of its ancestors. The term superclass refers to a
More informationPIC 20A Exceptions. Ernest Ryu UCLA Mathematics. Last edited: November 27, 2017
PIC 20A Exceptions Ernest Ryu UCLA Mathematics Last edited: November 27, 2017 Introductory example Imagine trying to read from a file. import java.io.*; public class Test { public static void main ( String
More informationRelationships Between Real Things. CSE 143 Java. Common Relationship Patterns. Composition: "has a" CSE143 Sp Student.
CSE 143 Java Object & Class Relationships Inheritance Reading: Ch. 9, 14 Relationships Between Real Things Man walks dog Dog strains at leash Dog wears collar Man wears hat Girl feeds dog Girl watches
More informationInheritance and Polymorphism in Java
Inheritance and Polymorphism in Java Introduction In this article from my free Java 8 course, I will be discussing inheritance in Java. Similar to interfaces, inheritance allows a programmer to handle
More informationRelationships Between Real Things CSC 143. Common Relationship Patterns. Composition: "has a" CSC Employee. Supervisor
CSC 143 Object & Class Relationships Inheritance Reading: Ch. 10, 11 Relationships Between Real Things Man walks dog Dog strains at leash Dog wears collar Man wears hat Girl feeds dog Girl watches dog
More informationContents. I. Classes, Superclasses, and Subclasses. Topic 04 - Inheritance
Contents Topic 04 - Inheritance I. Classes, Superclasses, and Subclasses - Inheritance Hierarchies Controlling Access to Members (public, no modifier, private, protected) Calling constructors of superclass
More informationChapter 10. IO Streams
Chapter 10 IO Streams Java I/O The Basics Java I/O is based around the concept of a stream Ordered sequence of information (bytes) coming from a source, or going to a sink Simplest stream reads/writes
More informationDESIGNING, CODING, AND DOCUMENTING
DESIGNING, CODING, AND DOCUMENTING Lecture 16 CS2110 Fall 2013 Designing and Writing a Program 2 Don't sit down at the terminal immediately and start hacking Design stage THINK first about the data you
More informationAbstract Classes, Exceptions
CISC 370: Inheritance, Abstract Classes, Exceptions June 15, 1 2006 1 Review Quizzes Grades on CPM Conventions Class names are capitalized Object names/variables are lower case String.doStuff dostuff();
More informationObject-Oriented Design Lecture 14 CSU 370 Fall 2007 (Pucella) Friday, Nov 2, 2007
Object-Oriented Design Lecture 14 CSU 370 Fall 2007 (Pucella) Friday, Nov 2, 2007 (These notes are very rough, and differ somewhat from what I presented in class; I am posting them here to supplemental
More informationGame Architecture Revisited
Lecture 8 Game Architecture Revisited Recall: The Game Loop 60 times/s = 16.7 ms Update Draw Receive player input Process player actions Process NPC actions Interactions (e.g. physics) Cull non-visible
More informationThe Strategy Pattern Design Principle: Design Principle: Design Principle:
Strategy Pattern The Strategy Pattern defines a family of algorithms, encapsulates each one, and makes them interchangeable. Strategy lets the algorithm vary independently from clients that use it. Design
More informationWhat about Object-Oriented Languages?
What about Object-Oriented Languages? What is an OOL? A language that supports object-oriented programming How does an OOL differ from an ALL? (ALGOL-Like Language) Data-centric name scopes for values
More informationObject-oriented programming. and data-structures CS/ENGRD 2110 SUMMER 2018
Object-oriented programming 1 and data-structures CS/ENGRD 2110 SUMMER 2018 Lecture 4: OO Principles - Polymorphism http://courses.cs.cornell.edu/cs2110/2018su Lecture 3 Recap 2 Good design principles.
More informationDesign Patterns: State, Bridge, Visitor
Design Patterns: State, Bridge, Visitor State We ve been talking about bad uses of case statements in programs. What is one example? Another way in which case statements are sometimes used is to implement
More informationM301: Software Systems & their Development. Unit 4: Inheritance, Composition and Polymorphism
Block 1: Introduction to Java Unit 4: Inheritance, Composition and Polymorphism Aims of the unit: Study and use the Java mechanisms that support reuse, in particular, inheritance and composition; Analyze
More informationOutline. Subtype Polymorphism, Subtyping vs. Subclassing, Liskov Substitution Principle. Benefits of Subtype Polymorphism. Subtype Polymorphism
Subtype, Subtyping vs. Subclassing, Liskov Substitution Principle Outline Subtype polymorphism Subtyping vs. subclassing Liskov Substitution Principle (LSP) Function subtyping Java subtyping Composition:
More informationCSE351 Winter 2016, Final Examination March 16, 2016
CSE351 Winter 2016, Final Examination March 16, 2016 Please do not turn the page until 2:30. Rules: The exam is closed-book, closed-note, etc. Please stop promptly at 4:20. There are 125 (not 100) points,
More informationThe Java I/O System. Binary I/O streams (ASCII, 8 bits) The decorator design pattern Character I/O streams (Unicode, 16 bits)
The Java I/O System Binary I/O streams (ASCII, 8 bits) InputStream OutputStream The decorator design pattern Character I/O streams (Unicode, 16 bits) Reader Writer Comparing binary I/O to character I/O
More informationCS 520 Theory and Practice of Software Engineering Fall 2018
Today CS 520 Theory and Practice of Software Engineering Fall 2018 Object Oriented (OO) Design Principles September 13, 2018 Code review and (re)design of an MVC application (and encapsulation) Polymorphism
More informationInf1-OP. Classes with Stuff in Common. Inheritance. Volker Seeker, adapting earlier version by Perdita Stevens and Ewan Klein.
Inf1-OP Inheritance UML Class Diagrams UML: language for specifying and visualizing OOP software systems UML class diagram: specifies class name, instance variables, methods,... Volker Seeker, adapting
More informationCSE 374 Programming Concepts & Tools. Hal Perkins Spring 2010
CSE 374 Programming Concepts & Tools Hal Perkins Spring 2010 Lecture 19 Introduction ti to C++ C++ C++ is an enormous language: g All of C Classes and objects (kind of like Java, some crucial differences)
More informationWhat is a Pattern? Lecture 40: Design Patterns. Elements of Design Patterns. What are design patterns?
What is a Pattern? Lecture 40: Design Patterns CS 62 Fall 2017 Kim Bruce & Alexandra Papoutsaki "Each pattern describes a problem which occurs over and over again in our environment, and then describes
More informationJava for Non Majors Spring 2018
Java for Non Majors Spring 2018 Final Study Guide The test consists of 1. Multiple choice questions - 15 x 2 = 30 points 2. Given code, find the output - 3 x 5 = 15 points 3. Short answer questions - 3
More informationMore on Inheritance. Interfaces & Abstract Classes
More on Inheritance Interfaces & Abstract Classes Java interfaces A Java interface is used to specify minimal functionality that a client requires of a server. A Java interface contains: method specifications
More informationEvolving Software. CMSC 433 Programming Language Technologies and Paradigms Spring Example. Some Motivations for This Refactoring
CMSC 433 Programming Language Technologies and Paradigms Spring 2007 Refactoring April 24, 2007 Lots of material taken from Fowler, Refactoring: Improving the Design of Existing Code 1 Evolving Software
More informationDesign Patterns in C++
Design Patterns in C++ Structural Patterns Giuseppe Lipari http://retis.sssup.it/~lipari Scuola Superiore Sant Anna Pisa March 23, 2011 G. Lipari (Scuola Superiore Sant Anna) Structural patterns March
More informationInf1-OP. Inheritance. Volker Seeker, adapting earlier version by Perdita Stevens and Ewan Klein. March 12, School of Informatics
Inf1-OP Inheritance Volker Seeker, adapting earlier version by Perdita Stevens and Ewan Klein School of Informatics March 12, 2018 UML Class Diagrams UML: language for specifying and visualizing OOP software
More informationException Namespaces C Interoperability Templates. More C++ David Chisnall. March 17, 2011
More C++ David Chisnall March 17, 2011 Exceptions A more fashionable goto Provides a second way of sending an error condition up the stack until it can be handled Lets intervening stack frames ignore errors
More informationComp-304 : Object-Oriented Design What does it mean to be Object Oriented?
Comp-304 : Object-Oriented Design What does it mean to be Object Oriented? What does it mean to be OO? What are the characteristics of Object Oriented programs (later: OO design)? What does Object Oriented
More informationCSC207H: Software Design SOLID. CSC207 Winter 2018
SOLID CSC207 Winter 2018 1 SOLID Principles of Object-Oriented Design How do we make decisions about what is better and what is worse design? Principles to aim for instead of rules. e.g. there is no maximum
More informationRelationships Between Real Things CSE 143. Common Relationship Patterns. Employee. Supervisor
CSE 143 Object & Class Relationships Inheritance Reading: Ch. 9, 14 Relationships Between Real Things Man walks dog Dog strains at leash Dog wears collar Man wears hat Girl feeds dog Girl watches dog Dog
More information1.0 Libraries Technical Overview
1.0 Libraries Technical Overview Jonni Kanerva Frank Yellin JavaSoft Outline Introduction Functionality in the 1.0 Libraries Distributed design of the Java platform Instructive oddities Design patterns
More informationSpecial error return Constructors do not have a return value What if method uses the full range of the return type?
23 Error Handling Exit program (System.exit()) usually a bad idea Output an error message does not help to recover from the error Special error return Constructors do not have a return value What if method
More informationAgile Architecture. The Why, the What and the How
Agile Architecture The Why, the What and the How Copyright Net Objectives, Inc. All Rights Reserved 2 Product Portfolio Management Product Management Lean for Executives SAFe for Executives Scaled Agile
More informationDesign Patterns (DP) In the beginning. It s not a course about DP (just a little) A lot of good design and efficient implementation is based on DP
User Interface Design 2 Design Patterns IT Uppsala University Design Patterns (DP) It s not a course about DP (just a little) A lot of good design and efficient implementation is based on DP In order to
More informationPointers and scanf() Steven R. Bagley
Pointers and scanf() Steven R. Bagley Recap Programs are a series of statements Defined in functions Can call functions to alter program flow if statement can determine whether code gets run Loops can
More informationJava Object Oriented Design. CSC207 Fall 2014
Java Object Oriented Design CSC207 Fall 2014 Design Problem Design an application where the user can draw different shapes Lines Circles Rectangles Just high level design, don t write any detailed code
More informationAdministrivia. Programming Language Fall Example. Evolving Software. Project 3 coming out Midterm October 28. Refactoring October 14, 2004
CMSC 433 Programming Language Fall 2004 Project 3 coming out Midterm October 28 Administrivia Refactoring October 14, 2004 Lots of material taken from Fowler, Refactoring: Improving the Design of Existing
More informationCS Internet programming Unit- I Part - A 1 Define Java. 2. What is a Class? 3. What is an Object? 4. What is an Instance?
CS6501 - Internet programming Unit- I Part - A 1 Define Java. Java is a programming language expressly designed for use in the distributed environment of the Internet. It was designed to have the "look
More informationAdvanced Java Concepts Unit 2: Linked Lists.
Advanced Java Concepts Unit 2: Linked Lists. The List interface defines the structure of a linear collection. Here are some of its methods. boolean add( E element ) Appends the element to the end of the
More informationExceptions. References. Exceptions. Exceptional Conditions. CSE 413, Autumn 2005 Programming Languages
References Exceptions "Handling Errors with Exceptions", Java tutorial http://java.sun.com/docs/books/tutorial/essential/exceptions/index.html CSE 413, Autumn 2005 Programming Languages http://www.cs.washington.edu/education/courses/413/05au/
More informationCSE 331 Final Exam 3/16/15 Sample Solution
Question 1. (12 points, 3 each) A short design exercise. Suppose Java did not include a Set class in the standard library and we need to store a set of Strings for an application. We know that the maximum
More informationObject oriented programming. Instructor: Masoud Asghari Web page: Ch: 7
Object oriented programming Instructor: Masoud Asghari Web page: http://www.masses.ir/lectures/oops2017sut Ch: 7 1 In this slide We follow: https://docs.oracle.com/javase/tutorial/index.html Trail: Essential
More informationCreating an HTML file (Mac)
writing html on a macintosh Creating an HTML file (Mac) All HTML files are text files. To create a text file you need an application that allows you to create plain text without throwing in a lot of fancy
More informationStatic Methods. Why use methods?
Static Methods A method is just a collection of code. They are also called functions or procedures. It provides a way to break a larger program up into smaller, reusable chunks. This also has the benefit
More information