G51PGP Programming Paradigms. Lecture OO-14 More Design Patterns And Java Examples
|
|
- Allen McCarthy
- 6 years ago
- Views:
Transcription
1 G51PGP Programming Paradigms Lecture OO-14 More Design Patterns And Java Examples 1
2 Last lecture Design patterns Creational patterns Singleton Factory more this lecture 2
3 Reminder: Sub-type polymorphism With polymorphic functions we implement a new version in the sub-class Then the new version is used instead of the old version This means that your sub-class gets all of the base class functions and can optionally replace some of them So if your base class function calls three functions And you replace one It calls the original two and your new one 3
4 A base class nothing complex public class BaseClass public void func1() System.out.println("BaseClass func1()" ); public void func2() System.out.println("BaseClass func1()" ); public void func3() System.out.println("BaseClass func1()" ); public void dostuff() func1(); func2(); func3(); 4
5 A sub-class and main class public class SubClass extends BaseClass public void func1() System.out.println("SubClass func1()" ); What is the output? public class Main public static void main(string[] args) BaseClass ob = new SubClass(); ob.dostuff(); 5
6 A sub-class and main class public class SubClass extends BaseClass public void func1() System.out.println("SubClass func1()" ); Output: SubClass func1() BaseClass func1() BaseClass func1() public class Main public static void main(string[] args) BaseClass ob = new SubClass(); ob.dostuff(); 6
7 This is how the factory method works One function is used to create the object Sub-class overrides this to create its own type of object Base class uses a base class object reference to refer to the new object This is perfectly valid to do subclass IS-A base class When the reference is used: Original versions of functions which were not overridden are used New versions of functions which were overridden are used 7
8 Same slide as before: Factory Method Build an interface for create an object but lets sub-classes decide which object to create e.g. Allow some extension to create classes without knowing about them Example use: Application framework which can handle multiple document types You want to create an application which supports your own document type The framework shouldn t have to know what type of document you will create Document open() close() save() MyDocument open() close() save() MyApplicationobject creates MyDocument objects Application createdoc() newdoc() opendoc() MyApplication createdoc() 8
9 FMApplication the big bit public abstract class FMApplication // This acts like the custom collection ArrayList<FMDocument> documents = new ArrayList<>(); // Create a new document by subclass public abstract FMDocument createdoc(); public FMDocument opendoc( String filename ) // Ask subclass to actually create the doc FMDocument newdoc = createdoc(); newdoc.open( filename ); documents.add(newdoc); // Store return newdoc; // Create a new document public FMDocument newdoc() // Ask subclass to do it FMDocument newdocument = createdoc(); documents.add(newdocument); return newdocument; // Ignore until covered the iterator pattern public void closeall() for ( FMDocumentdoc : documents ) doc.close(); 9
10 FMDocument, and subclasses public interface FMDocument void open( String filename ); void close(); void save( String filename ); public class FMMyApplication extends FMApplication public FMDocument createdoc() return new FMMyDocument(); public class FMMyDocument implements FMDocument public FMMyDocument() System.out.println( "FMMyDocument created"); public void open( String filename ) System.out.println( "Opening FMMyDocument " + filename + " now"); public void close() System.out.println( "Closing FMMyDocument now"); public void save( String filename ) System.out.println( "Saving FMMyDocument now"); 10
11 Abstract Factory An abstract factory works similarly in my opinion think of it as having many functions Base factory class creates many different types of objects Multiple classes exist for multiple types of things, e.g. types of UI components They are grouped, so that one group is used at a time One class is the factory Subclasses actually decide which classes will be used to create each type of object Factory works with one group and creates the objects 11
12 Example Abstract Factory ComponentFactory createwindow() createbutton() Client MSWindow Window MSWindowsUIFactory createwindow() createbutton() Sub-class does the creation of the item In this case, specifying the type of window to create 12
13 Multiple sub-classes different window styles ComponentFactory createwindow() createbutton() Client MSWindow Window JavaWindow MSWindowsUIFactory JavaUIFactory createwindow() createbutton() createwindow() createbutton() 13
14 Multiple functions family of components ComponentFactory createwindow() createbutton() Client MSWindow Window JavaWindow Button MSWindowsUIFactory JavaUIFactory createwindow() createbutton() createwindow() createbutton() MSButton JavaButton 14
15 Look and feel abstract factory used // Default cross-platform one is 'metal' changelookandfeel( UIManager.getCrossPlatformLookAndFeelClassName() ); changelookandfeel( "javax.swing.plaf.metal.metallookandfeel"); // System one is windows since I am running on windows changelookandfeel( UIManager.getSystemLookAndFeelClassName() ); changelookandfeel( "com.sun.java.swing.plaf.windows.windowslookandfeel"); // Motif is an old X (UNIX/Linux) widget set changelookandfeel( "com.sun.java.swing.plaf.motif.motiflookandfeel"); public static void changelookandfeel( String classname) try UIManager.setLookAndFeel( classname); catch( Exception e) // Todo- actually handle exceptions properly e.printstacktrace(); 15
16 Factory pattern(s) The important part is that the creation of the objects is delegated to another class That class may have one method Factory Method create objects of one class Or it may have a series of methods Abstract factory each method creates one type of object This kind of behaviour, where a subclass adapts behaviour (e.g. to create the object required) is really common in OO programs I have chosen some of the easier patterns to explain and understand there are many! But you only need to understand each once, then identify its usefulness and use it many times 16
17 Behavioural patterns Iterator Observer 17
18 My fake collection class Class which will maintain an array internally Allows array to grow Use functions to store items Use functions to retrieve items Store items as Objects MyObjectArrayClass -myarray: Object[] + MyObjectArray( intsize ) + MyObjectArray( Object[] array ) + get( intpos) : Object + set( intpos, Object val) : void + grow( intnewsize) : void + size() : int + setandgrow(int pos, Object val) : void Note: + for public, -for private You don t need to label these in any class diagrams that you create for assessment 18
19 Iterator Pattern A method to move through (iterate through) the elements of something E.g. to move through a list Design patterns book suggests that an iterator should have: first() get the first entry next() get the next entry isdone() work out whether you have finished currentitem() get the current item that iterator refers to 19
20 Java support for iterator Iterator interface exists simplified version public interface Iterator<E> boolean hasnext(); E next(); Note the generic type here! Also note that there are two other functions, which you can ignore ( remove() and foreachremaining() ) Iteration for loops for ( <VarType> <varname> : <ObjectWithIterator> ) 20
21 Code to add to my object array public class MyObjectArrayClass<T> implements Iterable<T> public class MyIterator implements Iterator<T> int index = -1; // Default it public boolean hasnext() return index < size() - 1; //return index < MyObjectArrayClass.this.size() - 1; public T next() return get(++index); // Increment then get public Iterator<T> iterator() return new MyIterator(); 21
22 Code to use it You can use the iterator directly: Iterator<T> it = this.iterator(); while( it.hasnext() ) System.out.println("Loop item: " + it.next() ); Java has a for loop which understand iterators Provide two arguments separated by a colon: The variable type and name which you will use An Iterable object (object supporting Iterable interface) for ( T item : this ) System.out.println( "Item: " + item ); They also work with arrays (e.g. String[] ) 22
23 Collection Classes Java has built in collection classes E.g. ArrayList, LinkedList, TreeSet, TreeMap These provide lists, arrays, etc They support iterators (so you can use for ) Example: ArrayList<String> list = new ArrayList<>(); list.add("item 1"); list.add("item 4"); list.add("item 3"); list.add("item 2"); list.addall( list ); list.sort( null/*default comparitor*/ ); for( String str: list ) System.out.println( str); 23
24 Observer pattern Register something to be notified of changes to something else Observe changes 24
25 Observer pattern Subject Attach(Observer) Detach(Observer) Notify() Observer Update() ConcreteSubject GetState() SetState() ConcreteObserver Update() 25
26 Example: action listeners JButton addactionlistener() removeactionlistener() notify() ActionListener actionperformed() MyButton OtherThings MyListener actionperformed() 26
27 The code to implement it (1/2) // I wanted to use this array thing itself for this // even though it has a problem with needing >= 1 element MyObjectArrayWithIteratorAndObserver<IObserver> observerlist = null; public void registerobserver( IObserver ob ) if ( ob == null ) return; // Do nothing - null is not an object if ( observerlist == null ) observerlist = new MyObjectArrayWithIteratorAndObserver<>(1); observerlist.set(0, ob); return; // Otherwise add it to the end of the list observerlist.setandgrow(observerlist.size(), ob); 27
28 The code to implement it (2/2) // MyObjectArrayWithIteratorAndObserver<IObserver> observerlist = null; public void notifyallobservers( int positionchanged ) if ( observerlist == null ) return; // No observers so skip this for ( IObserver ob : observerlist ) if ( ob!= null ) // Check for null just in case ob.somethinghappened( positionchanged ); // Add to set and setandgrow(): notifyallobservers( position ); 28
29 Structural pattern Adapter 29
30 Adapter pattern Assume that we have a (very simplified) immutable list, of the type you saw in Haskell Simple lists: Empty Infinite (same item) Infinite (create new item from old) All you can do with a list is: Extract head: gethead() Get the tail list: gettail() Create new list adding to the head: addtohead() Copy list: make a new list: copy() Imagine that we want to add an iteratorbut NOT change the class itself This is where an adapter comes in 30
31 My List Class public class ImmutableList<T> public ImmutableList().. // New empty list public ImmutableList( T head ) // Infinite list public ImmutableList( T head, INext<T> next ). // Infinite list with new item maker public T gethead(). // Get head of current list public ImmutableList<T> gettail(). // Return tail of list public booleanempty() // Test for empty list public ImmutableList<T> addtohead( T newhead) // Add new item to head of list public ImmutableList<T> copy() // Copy entire length public ImmutableList<T> copy( intlength ) // Copy with a max length Examples: ImmutableList<Integer> list = new ImmutableList<>(); ImmutableList<Integer> list2 = list.addtohead(5).addtohead(6).addtohead(4); ImmutableList<Integer> list3 = new ImmutableList<Integer>(4,x->x+1); ImmutableList<Integer> list4 = new ImmutableList<Integer>(12); ImmutableList<Integer> list5 = list3.copy(20); 31
32 Class Adapter pattern -inheritance Client ExpectedInterface dosomething() LegacyCodeOrObjects somethingtodo() AdapterClass dosomething() [calls somethingtodo() ] Inherit from the old class allows you to reimplementcode Some issues because old class does not know about the new subclass Implement the new interface and add the functionality I failed to make this work on the list class because all data was private, so I couldn t access it, and the class creates objects without a factory 32
33 Object Adapter pattern -composition Client ExpectedInterface dosomething() LegacyCodeOrObjects somethingtodo() AdapterClass dosomething() [calls somethingtodo() ] I prefer this version more flexible Think of it as wrapping up the legacy code class This was easy to implement for my list class 33
34 My implementation -wrapper package adapter; import java.util.iterator; public class AdapterComposition<T> implements Iterable<T> private ImmutableList<T> list; // Important - aggregation public AdapterComposition( ImmutableList<T> list ) this.list = list; public Iterator<T> iterator() return new MyIterator(); 34
35 My implementation iterator inner class public class MyIterator implements Iterator<T> private ImmutableList<T> currentitem = list; // Move to next item and return current one public T next() ImmutableList<T> thisitem = currentitem; currentitem = currentitem.gettail(); return thisitem.gethead(); // Check whether there is a next item public boolean hasnext() return!currentitem.empty(); 35
36 Code to use it ImmutableList<Integer> listempty = new ImmutableList<>(); // Empty list ImmutableList<Integer> list3item = listempty.addtohead(5).addtohead(6).addtohead(4); // List with infinite entries, 4,5,6,7,8,... ignore the use of a lambda! ImmutableList<Integer> listinfiniteplusone = new ImmutableList<Integer>(4,x->x+1); ImmutableList<Integer> listinfinite12 = new ImmutableList<Integer>(12); ImmutableList<Integer> listinfiniteplus1first20 = listinfiniteplusone.copy(20); ImmutableList<Integer> listinfinite12first5 = listinfinite12.copy(5); AdapterComposition<Integer> a1 = new AdapterComposition<Integer>(listInfinitePlus1First20); for( Integer x : a1 ) System.out.println("a1:" + x); AdapterComposition<Integer> a2 = new AdapterComposition<Integer>(listInfinite12First5); for( Integer x : a2 ) System.out.println("a2:" + x); 36
37 Next lecture The End of Java and OO on its own Remaining lectures: Final Haskell lecture Comparison lecture our views and discussion Two revision lectures, one per module Don t forget to get your Java coursework marked in the Tuesday lab!!!! 37
G51PGP Programming Paradigms. Lecture OO-4 Aggregation
G51PGP Programming Paradigms Lecture OO-4 Aggregation 1 The story so far We saw that C code can be converted into Java code Note real object oriented code though Hopefully shows you how much you already
More informationDesign Patterns. Command. Oliver Haase
Design Patterns Command Oliver Haase 1 Description Purpose: Encapsulate a command as an object. Allows to dynamically configure an invoker with a command object. Invoker can invoke command without knowing
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 informationG51PGP Programming Paradigms. Lecture OO-5 Inheritance and Class Diagrams
G51PGP Programming Paradigms Lecture OO-5 Inheritance and Class Diagrams 1 Early module feedback response I will leave Graham to comment on the Haskell side Mostly positive, including about speed for Java
More informationLast Lecture. Lecture 17: Design Patterns (part 2) Kenneth M. Anderson Object-Oriented Analysis and Design CSCI 4448/ Spring Semester, 2005
1 Lecture 17: Design Patterns (part 2) Kenneth M. Anderson Object-Oriented Analysis and Design CSCI 4448/6448 - Spring Semester, 2005 2 Last Lecture Design Patterns Background and Core Concepts Examples
More informationObject Oriented Design & Patterns. Part 1
Object Oriented Design & Patterns Part 1 1 Design Patterns Derived from architectural patterns: rules for design of buildings describe common problems, solutions to those problems OO design patterns convenient
More informationLecture 8: Iterators and More Mutation
Integrated Introduction to Computer Science Fisler, Nelson Contents 1 Traversing Lists 1 2 Motivating Iterators 2 3 Writing an Iterator 3 4 Writing Sum with an Iterator 4 Objectives By the end of this
More informationLists. CSC212 Lecture 8 D. Thiebaut, Fall 2014
Lists CSC212 Lecture 8 D. Thiebaut, Fall 2014 Review List = Organization of Data in a Linear Fashion, where Order is Important Set of actions that can be carried out efficiently on the data. Typical Actions
More informationCS 151. Exceptions & Javadoc. slides available on course website. Sunday, September 9, 12
CS 151 Exceptions & Javadoc slides available on course website 1 Announcements Prelab 1 is due now. Please place it in the appropriate (Mon vs. Tues) box. Please attend lab this week. There may be a lecture
More informationLast Lecture. Lecture 26: Design Patterns (part 2) State. Goals of Lecture. Design Patterns
Lecture 26: Design Patterns (part 2) Kenneth M. Anderson Object-Oriented Analysis and Design CSCI 6448 - Spring Semester, 2003 Last Lecture Design Patterns Background and Core Concepts Examples Singleton,
More informationDesign Patterns 2. Page 1. Software Requirements and Design CITS 4401 Lecture 10. Proxy Pattern: Motivation. Proxy Pattern.
Proxy : Motivation Design s 2 It is 3pm. I am sitting at my 10Mbps connection and go to browse a fancy web page from the US, This is prime web time all over the US. So I am getting 100kbps What can you
More informationCOMP 250. Lecture 32. interfaces. (Comparable, Iterable & Iterator) Nov. 22/23, 2017
COMP 250 Lecture 32 interfaces (Comparable, Iterable & Iterator) Nov. 22/23, 2017 1 Java Comparable interface Suppose you want to define an ordering on objects of some class. Sorted lists, binary search
More informationAgenda CS121/IS223. Reminder. Object Declaration, Creation, Assignment. What is Going On? Variables in Java
CS121/IS223 Object Reference Variables Dr Olly Gotel ogotel@pace.edu http://csis.pace.edu/~ogotel Having problems? -- Come see me or call me in my office hours -- Use the CSIS programming tutors Agenda
More informationHomework 2: Imperative Due: 5:00 PM, Feb 15, 2019
CS18 Integrated Introduction to Computer Science Fisler Homework 2: Imperative Due: 5:00 PM, Feb 15, 2019 Contents 1 Overview of Generic/Parameterized Types 2 2 Double the Fun with Doubly-Linked Lists
More informationCS 61B Discussion 5: Inheritance II Fall 2014
CS 61B Discussion 5: Inheritance II Fall 2014 1 WeirdList Below is a partial solution to the WeirdList problem from homework 3 showing only the most important lines. Part A. Complete the implementation
More informationCS121/IS223. Object Reference Variables. Dr Olly Gotel
CS121/IS223 Object Reference Variables Dr Olly Gotel ogotel@pace.edu http://csis.pace.edu/~ogotel Having problems? -- Come see me or call me in my office hours -- Use the CSIS programming tutors CS121/IS223
More informationDr. Xiaolin Hu. Review of last class
Review of last class Design patterns Creational Structural Behavioral Abstract Factory Builder Factory Singleton etc. Adapter Bridge Composite Decorator Façade Proxy etc. Command Iterator Observer Strategy
More informationWrapper Classes double pi = new Double(3.14); 3 double pi = new Double("3.14"); 4... Zheng-Liang Lu Java Programming 290 / 321
Wrapper Classes To treat values as objects, Java supplies standard wrapper classes for each primitive type. For example, you can construct a wrapper object from a primitive value or from a string representation
More informationpublic Candy() { ingredients = new ArrayList<String>(); ingredients.add("sugar");
Cloning Just like the name implies, cloning is making a copy of something. To be true to the nature of cloning, it should be an exact copy. While this can be very useful, it is not always necessary. For
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 informationLinked List Nodes (reminder)
Outline linked lists reminders: nodes, implementation, invariants circular linked list doubly-linked lists iterators the Java foreach statement iterator implementation the ListIterator interface Linked
More informationJava Magistère BFA
Java 101 - Magistère BFA Lesson 4: Generic Type and Collections Stéphane Airiau Université Paris-Dauphine Lesson 4: Generic Type and Collections (Stéphane Airiau) Java 1 Linked List 1 public class Node
More informationCOSC 123 Computer Creativity. Java Lists and Arrays. Dr. Ramon Lawrence University of British Columbia Okanagan
COSC 123 Computer Creativity Java Lists and Arrays Dr. Ramon Lawrence University of British Columbia Okanagan ramon.lawrence@ubc.ca Objectives 1) Create and use arrays of base types and objects. 2) Create
More informationG51PGP Programming Paradigms. Lecture 009 Concurrency, exceptions
G51PGP Programming Paradigms Lecture 009 Concurrency, exceptions 1 Reminder subtype polymorphism public class TestAnimals public static void main(string[] args) Animal[] animals = new Animal[6]; animals[0]
More informationOverview of Java s Support for Polymorphism
Overview of Java s Support for Polymorphism Douglas C. Schmidt d.schmidt@vanderbilt.edu www.dre.vanderbilt.edu/~schmidt Professor of Computer Science Institute for Software Integrated Systems Vanderbilt
More informationTiming for Interfaces and Abstract Classes
Timing for Interfaces and Abstract Classes Consider using abstract classes if you want to: share code among several closely related classes declare non-static or non-final fields Consider using interfaces
More informationJava Review: Objects
Outline Java review Abstract Data Types (ADTs) Interfaces Class Hierarchy, Abstract Classes, Inheritance Invariants Lists ArrayList LinkedList runtime analysis Iterators Java references 1 Exam Preparation
More informationG51PGP Programming Paradigms. Lecture 008 Inner classes, anonymous classes, Swing worker thread
G51PGP Programming Paradigms Lecture 008 Inner classes, anonymous classes, Swing worker thread 1 Reminder subtype polymorphism public class TestAnimals public static void main(string[] args) Animal[] animals
More informationMIT AITI Swing Event Model Lecture 17
MIT AITI 2004 Swing Event Model Lecture 17 The Java Event Model In the last lecture, we learned how to construct a GUI to present information to the user. But how do GUIs interact with users? How do applications
More informationBinghamton University. CS-140 Fall Functional Java
Functional Java 1 First Class Data We have learned how to manipulate data with programs We can pass data to methods via arguments We can return data from methods via return types We can encapsulate data
More informationCS : Data Structures Michael Schatz. Sept Lecture 5: Iterators
CS 600.226: Data Structures Michael Schatz Sept 10 2018 Lecture 5: Iterators Agenda 1. Review HW1 2. References and Linked Lists 3. Nested Classes and Iterators Assignment 1: Due Friday Sept 14 @ 10pm
More informationDesign Patterns Revisited
CSC 7322 : Object Oriented Development J Paul Gibson, A207 paul.gibson@int-edu.eu http://www-public.it-sudparis.eu/~gibson/teaching/csc7322/ Design Patterns Revisited /~gibson/teaching/csc7322/l13-designpatterns-2.pdf
More informationInterfaces (1/2) An interface forms a contract between the object and the outside world.
Interfaces (1/2) An interface forms a contract between the object and the outside world. For example, the buttons on remote controls for some machine. As you can see, an interface is a reference type,
More informationAbstract Classes and Interfaces
Abstract Classes and Interfaces Reading: Reges and Stepp: 9.5 9.6 CSC216: Programming Concepts Sarah Heckman 1 Abstract Classes A Java class that cannot be instantiated, but instead serves as a superclass
More informationObject-Oriented Concepts
JAC444 - Lecture 3 Object-Oriented Concepts Segment 2 Inheritance 1 Classes Segment 2 Inheritance In this segment you will be learning about: Inheritance Overriding Final Methods and Classes Implementing
More informationInterfaces. An interface forms a contract between the object and the outside world.
Interfaces An interface forms a contract between the object and the outside world. For example, the buttons on the television set are the interface between you and the electrical wiring on the other side
More informationLab 5 Random numbers!
Lab 5 Random numbers! ADT:s as Programming Tools! D0010E! Lecture 13! Iterators! MasterMind Reminder: Groups must have their designs approved before any actual programming is allowed to start. Some review
More informationCSE 143 Lecture 26. Advanced collection classes. (ADTs; abstract classes; inner classes; generics; iterators) read 11.1, 9.6, ,
CSE 143 Lecture 26 Advanced collection classes (ADTs; abstract classes; inner classes; generics; iterators) read 11.1, 9.6, 15.3-15.4, 16.4-16.5 slides created by Marty Stepp, adapted by Alyssa Harding
More informationJava Collection Framework
Java Collection Framework Readings Purpose To provide a working knowledge of the Java Collections framework and iterators. Learning Objectives Understand the structure of the Java Collections framework
More informationIntroduction to GUIs. Principles of Software Construction: Objects, Design, and Concurrency. Jonathan Aldrich and Charlie Garrod Fall 2014
Introduction to GUIs Principles of Software Construction: Objects, Design, and Concurrency Jonathan Aldrich and Charlie Garrod Fall 2014 Slides copyright 2014 by Jonathan Aldrich, Charlie Garrod, Christian
More informationWhat is an Iterator? An iterator is an abstract data type that allows us to iterate through the elements of a collection one by one
Iterators What is an Iterator? An iterator is an abstract data type that allows us to iterate through the elements of a collection one by one 9-2 2-2 What is an Iterator? An iterator is an abstract data
More informationEXAMINATIONS 2012 Trimester 1, MID-TERM TEST. COMP103 Introduction to Data Structures and Algorithms SOLUTIONS
T E W H A R E W Ā N A N G A O T E Ū P O K O O T E I K A A M Ā U I VUW V I C T O R I A UNIVERSITY OF WELLINGTON Student ID:....................... EXAMINATIONS 2012 Trimester 1, MID-TERM TEST COMP103 Introduction
More informationDOWNLOAD PDF CORE JAVA APTITUDE QUESTIONS AND ANSWERS
Chapter 1 : Chapter-wise Java Multiple Choice Questions and Answers Interview MCQs Java Programming questions and answers with explanation for interview, competitive examination and entrance test. Fully
More informationM257 Past Paper Oct 2008 Attempted Solution
M257 Past Paper Oct 2008 Attempted Solution Part 1 Question 1 A version of Java is a particular release of the language, which may be succeeded by subsequent updated versions at a later time. Some examples
More informationEECS 4314 Advanced Software Engineering. Topic 04: Design Pattern Review Zhen Ming (Jack) Jiang
EECS 4314 Advanced Software Engineering Topic 04: Design Pattern Review Zhen Ming (Jack) Jiang Acknowledgement Some slides are adapted from Ahmed E. Hassan, Jonathan Ostroff, Spiros Mancoridis and Emad
More informationAbstract Data Types (ADTs) Example ADTs. Using an Abstract Data Type. Class #08: Linear Data Structures
Abstract Data Types (ADTs) Class #08: Linear Data Structures Software Design III (CS 340): M. Allen, 08 Feb. 16 An ADT defines a kind of computational entity: A set of objects, with possible values A set
More informationDo not turn to the next page until the start of the exam.
Principles of Java Language with Applications, PIC20a E. Ryu Winter 2017 Final Exam Monday, March 20, 2017 3 hours, 8 questions, 100 points, 11 pages While we don t expect you will need more space than
More informationObjects and Iterators
Objects and Iterators Can We Have Data Structures With Generic Types? What s in a Bag? All our implementations of collections so far allowed for one data type for the entire collection To accommodate a
More informationGUI DYNAMICS Lecture July 26 CS2110 Summer 2011
GUI DYNAMICS Lecture July 26 CS2110 Summer 2011 GUI Statics and GUI Dynamics 2 Statics: what s drawn on the screen Components buttons, labels, lists, sliders, menus,... Containers: components that contain
More informationSoftware Paradigms (Lesson 3) Object-Oriented Paradigm (2)
Software Paradigms (Lesson 3) Object-Oriented Paradigm (2) Table of Contents 1 Reusing Classes... 2 1.1 Composition... 2 1.2 Inheritance... 4 1.2.1 Extending Classes... 5 1.2.2 Method Overriding... 7 1.2.3
More informationA final method is a method which cannot be overridden by subclasses. A class that is declared final cannot be inherited.
final A final variable is a variable which can be initialized once and cannot be changed later. The compiler makes sure that you can do it only once. A final variable is often declared with static keyword
More informationCOURSE 4 PROGRAMMING III OOP. JAVA LANGUAGE
COURSE 4 PROGRAMMING III OOP. JAVA LANGUAGE PREVIOUS COURSE CONTENT Inheritance Abstract classes Interfaces instanceof operator Nested classes Enumerations COUSE CONTENT Collections List Map Set Aggregate
More informationSubclass Gist Example: Chess Super Keyword Shadowing Overriding Why? L10 - Polymorphism and Abstract Classes The Four Principles of Object Oriented
Table of Contents L01 - Introduction L02 - Strings Some Examples Reserved Characters Operations Immutability Equality Wrappers and Primitives Boxing/Unboxing Boxing Unboxing Formatting L03 - Input and
More informationBinghamton University. CS-140 Fall Functional Java
Functional Java 1 First Class Data We have learned how to manipulate data with programs We can pass data to methods via arguments We can return data from methods via return types We can encapsulate data
More informationRecursive Objects. Singly Linked List (Part 2)
Recursive Objects Singly Linked List (Part 2) 1 Operations at the head of the list operations at the head of the list require special handling because there is no node before the head node 2 Adding to
More informationInheritance and Interfaces
Inheritance and Interfaces Object Orientated Programming in Java Benjamin Kenwright Outline Review What is Inheritance? Why we need Inheritance? Syntax, Formatting,.. What is an Interface? Today s Practical
More informationData Structures Brett Bernstein
Data Structures Brett Bernstein Lecture 8: Iterators, Maps, and Hashtables Exercises 1. Show how to print out the elements of a doubly linked list in reverse order. 2. What are the Java API classes that
More informationOutline. Object Oriented Programming. Course goals. Staff. Course resources. Assignments. Course organization Introduction Java overview Autumn 2003
Outline Object Oriented Programming Autumn 2003 2 Course goals Software design vs hacking Abstractions vs language (syntax) Java used to illustrate concepts NOT a course about Java Prerequisites knowledge
More informationObject-Oriented Design Lecture 13 CSU 370 Fall 2008 (Pucella) Friday, Oct 31, 2008
Object-Oriented Design Lecture 13 CSU 370 Fall 2008 (Pucella) Friday, Oct 31, 2008 Laziness For this lecture, I want to return to something that came up during the last homework, the third homework where
More informationIntroduction to the Java Basics: Control Flow Statements
Lesson 3: Introduction to the Java Basics: Control Flow Statements Repetition Structures THEORY Variable Assignment You can only assign a value to a variable that is consistent with the variable s declared
More informationA reusable design concept
References: Xiaoping Jia, Object-Oriented Software Development Using Java;Douglas C.Schmidt, Design Pattern Case Studies with C++;Bruce E.Wampler,The Essence of Object-Oriented Programming with Java and
More informationCONTENTS. PART 1 Structured Programming 1. 1 Getting started 3. 2 Basic programming elements 17
List of Programs xxv List of Figures xxix List of Tables xxxiii Preface to second version xxxv PART 1 Structured Programming 1 1 Getting started 3 1.1 Programming 3 1.2 Editing source code 5 Source code
More informationEXAMINATIONS 2016 TRIMESTER 2
T E W H A R E W Ā N A N G A O T E Ū P O K O O T E I K A A M Ā U I VUW VICTORIA U N I V E R S I T Y O F W E L L I N G T O N EXAMINATIONS 2016 TRIMESTER 2 COMP103 INTRODUCTION TO DATA STRUCTURES AND ALGORITHMS
More informationCOSC 3351 Software Design. Design Patterns Behavioral Patterns (I)
COSC 3351 Software Design Design Patterns Behavioral Patterns (I) Spring 2008 Purpose Creational Structural Behavioral Scope Class Factory Method Adapter(class) Interpreter Template Method Object Abstract
More informationITI Introduction to Computing II
ITI 1121. Introduction to Computing II Iterator 1 (part I) Marcel Turcotte School of Electrical Engineering and Computer Science Version of March 24, 2013 Abstract These lecture notes are meant to be looked
More informationCS 180 Final Exam Review 12/(11, 12)/08
CS 180 Final Exam Review 12/(11, 12)/08 Announcements Final Exam Thursday, 18 th December, 10:20 am 12:20 pm in PHYS 112 Format 30 multiple choice questions 5 programming questions More stress on topics
More informationDesign Patterns. James Brucker
Design Patterns James Brucker 1 Reusable Ideas Developers reuse knowledge, experience, & code Application Level reuse a project design & code of a similar project Design Level apply known design principles
More informationExceptions vs. Errors Exceptions vs. RuntimeExceptions try...catch...finally throw and throws
Lecture 14 Summary Exceptions vs. Errors Exceptions vs. RuntimeExceptions try...catch...finally throw and throws 1 By the end of this lecture, you will be able to differentiate between errors, exceptions,
More informationWeek 4, Wednesday (Spring 2015). Dr. Yoder. Sec 051. Page 1 of 5
CS2852 Exam 1 Name: No note-sheets, calculators, or other study aids on this exam. Write your initials at the top of each page except this one. Read through the whole exam before you get started. Have
More informationExample: Count of Points
Example: Count of Points 1 class Point { 2... 3 private static int numofpoints = 0; 4 5 Point() { 6 numofpoints++; 7 } 8 9 Point(int x, int y) { 10 this(); // calling the constructor with no input argument;
More informationG52CPP C++ Programming Lecture 10. Dr Jason Atkin
G52CPP C++ Programming Lecture 10 Dr Jason Atkin 1 Last lecture Constructors Default constructor needs no parameters Default parameters Inline functions Like safe macros in some ways Function definitions
More informationCSE143 Summer 2008 Final Exam Part B KEY August 22, 2008
CSE143 Summer 2008 Final Exam Part B KEY August 22, 2008 Name : Section (eg. AA) : TA : This is an open-book/open-note exam. Space is provided for your answers. Use the backs of pages if necessary. The
More informationLinked Lists. private int num; // payload for the node private Node next; // pointer to the next node in the list }
Linked Lists Since a variable referencing an object just holds the address of the object in memory, we can link multiple objects together to form dynamic lists or other structures. In our case we will
More informationAnother IS-A Relationship
Another IS-A Relationship Not all classes share a vertical relationship. Instead, some are supposed to perform the specific methods without a vertical relationship. Consider the class Bird inherited from
More informationCS 3 Introduction to Software Engineering. 5: Iterators
CS 3 Introduction to Software Engineering 5: Iterators Questions? 2 PS1 Discussion Question You are to choose between two procedures, both of which compute the minimum value in an array of integers. One
More informationThe University of Nottingham
The University of Nottingham SCHOOL OF COMPUTER SCIENCE A LEVEL 1 MODULE, SPRING SEMESTER 2016-2017 PROGRAMMING PARADIGMS Time allowed: TWO hours THIRTY minutes Candidates may complete the front cover
More informationChapter 5. Inheritance
Chapter 5 Inheritance Objectives Know the difference between Inheritance and aggregation Understand how inheritance is done in Java Learn polymorphism through Method Overriding Learn the keywords : super
More informationName Section Number. CS210 Exam #4 *** PLEASE TURN OFF ALL CELL PHONES*** Practice
Name Section Number CS210 Exam #4 *** PLEASE TURN OFF ALL CELL PHONES*** Practice All Sections Bob Wilson OPEN BOOK/OPEN NOTES You will have all 90 minutes until the start of the next class period. Spend
More informationConverting Collections to Arrays. A Bad Approach to Array Conversion. A Better Approach to Array Conversion. public Object[] toarray();
Converting Collections to Arrays Every Java collection can be converted to an array This is part of the basic Collection interface The most elementary form of this method produces an array of base-type
More informationCMSC 132, Object-Oriented Programming II Summer Lecture 9:
CMSC 132, Object-Oriented Programming II Summer 2018 Lecturer: Anwar Mamat Lecture 9: Disclaimer: These notes may be distributed outside this class only with the permission of the Instructor. 9.1 QUEUE
More informationCS231 - Spring 2017 Linked Lists. ArrayList is an implementation of List based on arrays. LinkedList is an implementation of List based on nodes.
CS231 - Spring 2017 Linked Lists List o Data structure which stores a fixed-size sequential collection of elements of the same type. o We've already seen two ways that you can store data in lists in Java.
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 informationPage 1. Human-computer interaction. Lecture 1b: Design & Implementation. Building user interfaces. Mental & implementation models
Human-computer interaction Lecture 1b: Design & Implementation Human-computer interaction is a discipline concerned with the design, implementation, and evaluation of interactive systems for human use
More informationIntroduction to Programming Using Java (98-388)
Introduction to Programming Using Java (98-388) Understand Java fundamentals Describe the use of main in a Java application Signature of main, why it is static; how to consume an instance of your own class;
More informationEMBEDDED SYSTEMS PROGRAMMING Design Patterns
EMBEDDED SYSTEMS PROGRAMMING 2014-15 Design Patterns DEFINITION Design pattern: solution to a recurring problem Describes the key elements of the problem and the solution in an abstract way Applicable
More information09/02/2013 TYPE CHECKING AND CASTING. Lecture 5 CS2110 Spring 2013
1 TYPE CHECKING AND CASTING Lecture 5 CS2110 Spring 2013 1 Type Checking 2 Java compiler checks to see if your code is legal Today: Explore how this works What is Java doing? Why What will Java do if it
More informationChapter 3.3 Programming Fundamentals. Languages Paradigms Basic Data Types Data Structures OO in Game Design Component Systems Design Patterns
Chapter 3.3 Programming Fundamentals Languages Paradigms Basic Data Types Data Structures OO in Game Design Component Systems Design Patterns Languages Language: A system composed of signs (symbols, indices,
More informationCollections, Maps and Generics
Collections API Collections, Maps and Generics You've already used ArrayList for exercises from the previous semester, but ArrayList is just one part of much larger Collections API that Java provides.
More informationObject-Oriented Design Lecture 11 CS 3500 Spring 2010 (Pucella) Tuesday, Feb 16, 2010
Object-Oriented Design Lecture 11 CS 3500 Spring 2010 (Pucella) Tuesday, Feb 16, 2010 11 Polymorphism The functional iterator interface we have defined last lecture is nice, but it is not very general.
More informationCS18000: Problem Solving and Object-Oriented Programming
CS18000: Problem Solving and Object-Oriented Programming Recursion 28 March 2011 Prof. Chris Clifton Recursion Idea: break a problem down into small, similar sub-problems Write a method to solve first
More informationReview sheet for Final Exam (List of objectives for this course)
Review sheet for Final Exam (List of objectives for this course) Please be sure to see other review sheets for this semester Please be sure to review tests from this semester Week 1 Introduction Chapter
More informationCSC 172 Data Structures and Algorithms. Lecture #9 Spring 2018
CSC 172 Data Structures and Algorithms Lecture #9 Spring 2018 SINGLY LINKED LIST 3.1.3 Linked lists We will consider these for Singly linked lists Doubly linked lists Basic Singly Linked List class Node
More informationFun facts about recursion
Outline examples of recursion principles of recursion review: recursive linked list methods binary search more examples of recursion problem solving using recursion 1 Fun facts about recursion every loop
More informationITI Introduction to Computing II
ITI 1121. Introduction to Computing II Marcel Turcotte School of Information Technology and Engineering Iterator (part II) Inner class Implementation: fail-fast Version of March 20, 2011 Abstract These
More informationCE221 Programming in C++ Part 1 Introduction
CE221 Programming in C++ Part 1 Introduction 06/10/2017 CE221 Part 1 1 Module Schedule There are two lectures (Monday 13.00-13.50 and Tuesday 11.00-11.50) each week in the autumn term, and a 2-hour lab
More informationDesign Patterns. Observer Pattern*
Design Patterns Observer Pattern* ebru@hacettepe.edu.tr ebruakcapinarsezer@gmail.com http://yunus.hacettepe.edu.tr/~ebru/ @ebru176 Kasım 2017 *revised from Observer Pattern, OOA&D, Rubal Gupta, CSPP, Winter
More informationCSE 331 Software Design and Implementation. Lecture 17 Events, Listeners, Callbacks
CSE 331 Software Design and Implementation Lecture 17 Events, Listeners, Callbacks Zach Tatlock / Winter 2016 The limits of scaling What prevents us from building huge, intricate structures that work perfectly
More informationProject #1 rev 2 Computer Science 2334 Fall 2013 This project is individual work. Each student must complete this assignment independently.
Project #1 rev 2 Computer Science 2334 Fall 2013 This project is individual work. Each student must complete this assignment independently. User Request: Create a simple magazine data system. Milestones:
More informationHAS-A Relationship. If A uses B, then it is an aggregation, stating that B exists independently from A.
HAS-A Relationship Association is a weak relationship where all objects have their own lifetime and there is no ownership. For example, teacher student; doctor patient. If A uses B, then it is an aggregation,
More informationPolymorphism: Interfaces and Iteration. Fundamentals of Computer Science
Polymorphism: Interfaces and Iteration Fundamentals of Computer Science Outline A shape object hierarchy Classes that extend Versus classes that implements Java interfaces How Java handles multiple-inheritance
More information