Introducing Design Patterns
|
|
- Everett Morgan
- 5 years ago
- Views:
Transcription
1 Introducing Design Patterns Prof. Dr. Eric Dubuis Berner Biel Course "UML and Design Patterns" of module "Software Engineering and Design", version April 2009 (X) BFH/TI/Software Engineering and Design/UML and Design Patterns/Introducing Design Patterns/April 2009 (X)/Prof. Dr. E. Dubuis Page 1 of 20
2 Learning Goals You'll learn: How a design pattern can be found The iterator pattern Purpose and goal of a design pattern GoF ( Gang of Four Gamma et al.) classical categorization of patterns Format of a pattern catalog BFH/TI/Software Engineering and Design/UML and Design Patterns/Introducing Design Patterns/April 2009 (X)/Prof. Dr. E. Dubuis Page 2 of 20
3 An Example Given a UML class diagram where a linked list is used by a client: 1 * 1 Client X LinkedList X Node +first 1 X Class Node looks like: 1 1 public class Node { 2 private Object value; 3 private Node succ; 4 public Node(Object o) { this.value = o; } 5 public Object getvalue() { return this.value; } 6 public void setsucc(node n) { this.succ = n; } 7 public Node getsucc() { return this.succ; } 8 } Object 1 +succ 1 BFH/TI/Software Engineering and Design/UML and Design Patterns/Introducing Design Patterns/April 2009 (X)/Prof. Dr. E. Dubuis Page 3 of 20
4 The class LinkedList looks like: 1 public class LinkedList { 2 private Node first; 3 private int count; 4 5 public boolean isempty() {... } 6 public Object get(int index) {... } 7 public void set(int index, Object v) {... } 8 9 public Node getfirstnode() {... } 10 //.. 11 } BFH/TI/Software Engineering and Design/UML and Design Patterns/Introducing Design Patterns/April 2009 (X)/Prof. Dr. E. Dubuis Page 4 of 20
5 Some client might use an instance of LinkedList as follows: 1 { 2 LinkedList list =...; // created and some objects added // access every element of the list: 5 6 for (Node tmp = list.getfirstnode(); 7 tmp!= null; tmp = tmp.getsucc()) { 8 Object v = tmp.getvalue(); 9 // do something with the object } } BFH/TI/Software Engineering and Design/UML and Design Patterns/Introducing Design Patterns/April 2009 (X)/Prof. Dr. E. Dubuis Page 5 of 20
6 Another Example Client 1 X 1 1 * Department X Employee Interface List: -emps: ArrayList +getemployees: List +print() int size() Object get(int index); public List getemployees() { return this.emps; } BFH/TI/Software Engineering and Design/UML and Design Patterns/Introducing Design Patterns/April 2009 (X)/Prof. Dr. E. Dubuis Page 6 of 20
7 A client: 1 Department dep =...; // created and Employee instances added 2 List employees = dep.getemployees(); 3 // access every element of the list: 4 5 for (int i = 0; i < employees.size(); i++) { 6 Employee e = (Employee) employees.get(i); 7 // do something with e... 8 } 9 10 BFH/TI/Software Engineering and Design/UML and Design Patterns/Introducing Design Patterns/April 2009 (X)/Prof. Dr. E. Dubuis Page 7 of 20
8 A New Version of Class Department 1 public class Department { // version 2 2 private Map emps = new HashMap(); // no generics used here 3 4 public void addemployee(employee e) { 5 String id = generateid(); // helper, not shown 6 this.emps.put(id, e); 7 } 8 9 // A first idea of the return type for getemployees() might be: 10 // public Map getemployees() { 11 // return this.emps; 12 // } Changing the return type of the method ==> clients have no fun! BFH/TI/Software Engineering and Design/UML and Design Patterns/Introducing Design Patterns/April 2009 (X)/Prof. Dr. E. Dubuis Page 8 of 20
9 // A second idea of the return type for getemployees() might be: 22 public Set getemployees() { // return type Set => clients need to be 23 return this.emps.values(); // modified 24 } Clients still have no fun! } BFH/TI/Software Engineering and Design/UML and Design Patterns/Introducing Design Patterns/April 2009 (X)/Prof. Dr. E. Dubuis Page 9 of 20
10 What's the Problem? Problem for the clients: If the data structure changes ==> the client needs to be modified!! And: For every collection: Access to elements in clients differ... Unless: there is a standard way to iterate over an arbitrary collection! BFH/TI/Software Engineering and Design/UML and Design Patterns/Introducing Design Patterns/April 2009 (X)/Prof. Dr. E. Dubuis Page 10 of 20
11 Idea an auxiliary object with common, fixed interface needed: Communication Diagram 1: iterator :Collection o1:object What we need is: :Client 2: new o2:object a way to get the auxiliary object from any kind of object 3: oper i x:x on:object a common way to access the object a standardized interface of the auxiliary object (next slide) BFH/TI/Software Engineering and Design/UML and Design Patterns/Introducing Design Patterns/April 2009 (X)/Prof. Dr. E. Dubuis Page 11 of 20
12 How Should This Object Look Like? a method to get the next value of the collection: without generics: Object next(); with generics: E next(); a method to know if there are more other values: boolean hasnext(); BFH/TI/Software Engineering and Design/UML and Design Patterns/Introducing Design Patterns/April 2009 (X)/Prof. Dr. E. Dubuis Page 12 of 20
13 Solution A solution to the problem to iterate over an arbitrary collection in a standardized way is the ITERATOR. Interface (using genercis only) 1 public interface Iterator<E> { 2 public E next(); 3 public boolean hasnext(); 4 [public void remove();] // not discussed here 5 } BFH/TI/Software Engineering and Design/UML and Design Patterns/Introducing Design Patterns/April 2009 (X)/Prof. Dr. E. Dubuis Page 13 of 20
14 A Collection: 1 public class SomeCollection<E> { 2 //... 3 public Iterator<E> iterator() {... } 4 } A Client: Sort of factory method 1 SomeCollection<Person> c =...; // collection initialized and filled, not shown... 2 //... 3 for (Iterator<Person> it = c.iterator(); it.hasnext(); ) { 4 Person p = it.next(); 5 //... 6 } BFH/TI/Software Engineering and Design/UML and Design Patterns/Introducing Design Patterns/April 2009 (X)/Prof. Dr. E. Dubuis Page 14 of 20
15 Usage of an Iterator for the LinkedList Example (w/o Generics) Assume that class LinkedList offers now an iterator: 1 public class LinkedList { 2 //... 3 public Iterator iterator() { return new LinkedListIterator(this); } 4 } The a client can iterate over the elements of the LinkedList instance: 1 // in a client 2 LinkedList list =...; // created and filled with objects for (Iterator it = list.iterator(); it.hasnext(); ) { 5 Object v = (Object) it.next(); // use object v } BFH/TI/Software Engineering and Design/UML and Design Patterns/Introducing Design Patterns/April 2009 (X)/Prof. Dr. E. Dubuis Page 15 of 20
16 Exercise Given class LinkedList of page 3, the Iterator class looks like: public class LinkedList { //... private class LinkedListIterator implements Iterator { private Node node; public LinkedListIterator(LinkedList l) { this.node = l.getfirstnode(); } public Object next() { if (this.node == null) { throw new NoSuchElementException(... ); public boolean hasnext() { return this.node!= null; } } Object v = this.node.getvalue(); this.node = this.node.getsucc(); return v; } // end of LinkedListIterator } // end of Linked List BFH/TI/Software Engineering and Design/UML and Design Patterns/Introducing Design Patterns/April 2009 (X)/Prof. Dr. E. Dubuis Page 16 of 20
17 Usage of an Iterator for the Department Class Given a sketch of the Department class: 1 public class Department { // version 3 2 private Map<Employee> emps = new HashMap<Employee>(); 3 //... 4 public Iterator<Employee> getemployees() { 5 return this.emps.values().iterator(); 6 } A client can iterate over the Employee objects: name of factory 1 // in a client method not always 2 Departmet dep =...; // created and filled with employees iterator for (Iterator<Employee> it = dep.getemployees(); it.hasnext(); ) { 5 Employee e = it.next(); // and use e... 6 } BFH/TI/Software Engineering and Design/UML and Design Patterns/Introducing Design Patterns/April 2009 (X)/Prof. Dr. E. Dubuis Page 17 of 20
18 Reflection underlying set of objects should NOT change while an iterator is in use or: iterator gets invalidated ==> fail-fast iterator iterator makes a copy ==> expensive Since Java 5: weakly consistent iterators (see Java documentation) one-time use iterator vs. reusable iterators (GoF iterator: reusable!) public interface ListIterator<E> extends Iterator<E> { } //... public E previous(); public boolean hasprevious(); who creates iterator? ==> the collection itself! BFH/TI/Software Engineering and Design/UML and Design Patterns/Introducing Design Patterns/April 2009 (X)/Prof. Dr. E. Dubuis Page 18 of 20
19 General Structure «interface» Iterator hasnext: boolean next: E E «call» Client «call» «interface» Collection add(o: E) iterator(): Iterator<E> E Concrete Iterator E Concrete Collection E hasnext(): boolean next(): E «new» add(o: E) iterator(): Iterator<E> BFH/TI/Software Engineering and Design/UML and Design Patterns/Introducing Design Patterns/April 2009 (X)/Prof. Dr. E. Dubuis Page 19 of 20
20 What Have We Achieved? we've got a general structure for iterating over arbitrary collections ==> behavioral pattern ==> a category of design patterns creational, structural, and behavioral patterns Catalog of Design Patterns, general (simplified) format of an entry: Problem (what's the problem to solve?) Forces (what makes the problem addressed so interesting?) Solution (what is a solution that can be applied again and again?) Name (how can we refer to the problem/solution pair?) Gamma E., Helm R., Johnson R., Vlissides J.: "Design Patterns -- Elements of Reusable Object-Oriented Software", Addison-Wesley Professional, 1995, ISBN BFH/TI/Software Engineering and Design/UML and Design Patterns/Introducing Design Patterns/April 2009 (X)/Prof. Dr. E. Dubuis Page 20 of 20
Introducing Design Patterns
Introducing Design Patterns Prof. Dr. Eric Dubuis, @ Biel Course "UML and Design Patterns" of module "Software Engineering and Design", version October 2007 BFH/TI/UML and Design Patterns/Software Engineering
More informationCourse "UML and Design Patterns" of module "Software Engineering and Design", version November 2011
The Observer Pattern Prof. Dr. Eric Dubuis Berner Fachhochschule, @ Biel Course "UML and Design Patterns" of module "Software Engineering and Design", version November 20 BFH/TI/Software Engineering and
More informationOn Polymorphism and the Open-Closed Principle
On Polymorphism and the Open-Closed Principle Prof. Dr. Eric Dubuis Berner Fachhochschule, @ Biel Course "UML and Design Patterns" of module "Software Engineering and Design", version March 2008 BFH/TI/Software
More informationCourse "UML and Design Patterns" of module "Software Engineering and Design", version February 2011 (X)
UML Class Diagrams Prof. Dr. Eric Dubuis, @ Biel Course "UML and Design Patterns" of module "Software Engineering and Design", version February 2011 (X) BFH/TI/Software Engineering and Design/UML and Design
More informationUML Sequence Diagrams
UML Sequence Diagrams Prof. Dr. Eric Dubuis Berner Fachhochschule, @ Biel Course "UML and Design Patterns" of module "Software Engineering and Design", version October 2008 BFH/TI/Software Engineering
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 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 26, 2013 Abstract These lecture notes are meant to be looked
More information11-1. Collections. CSE 143 Java. Java 2 Collection Interfaces. Goals for Next Several Lectures
Collections CSE 143 Java Collections Most programs need to store and access collections of data Collections are worth studying because... They are widely useful in programming They provide examples of
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 26, 2013 Abstract These lecture notes are meant to be looked
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 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 informationCSE 143. Computer Programming II
Adam Blank Lecture 15 Spring 2015 CSE 143 Computer Programming II CSE 143: Computer Programming II More Interfaces & Iterators Today s Goals 1 We begin with ArrayIntList & LinkedIntList. Our goals are:
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 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 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 informationLists and Iterators. CSSE 221 Fundamentals of Software Development Honors Rose-Hulman Institute of Technology
Lists and Iterators CSSE 221 Fundamentals of Software Development Honors Rose-Hulman Institute of Technology Announcements Should be making progress on VectorGraphics. Should have turned in CRC cards,
More informationImplementing a List in Java. CSE 143 Java. Just an Illusion? List Interface (review) Using an Array to Implement a List.
Implementing a List in Java CSE 143 Java List Implementation Using Arrays Reading: Ch. 13 Two implementation approaches are most commonly used for simple lists: Arrays Linked list Java Interface List concrete
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 informationClass 26: Linked Lists
Introduction to Computation and Problem Solving Class 26: Linked Lists Prof. Steven R. Lerman and Dr. V. Judson Harward 2 The Java Collection Classes The java.util package contains implementations of many
More informationImplementing a List in Java. CSE 143 Java. List Interface (review) Just an Illusion? Using an Array to Implement a List.
Implementing a List in Java CSE 143 Java List Implementation Using Arrays Reading: Ch. 22 Two implementation approaches are most commonly used for simple lists: Arrays Linked list Java Interface List concrete
More informationOn Polymorphism and the Open-Closed Principle
Berner Fachhochschule Engineering and Information Technology On Polymorphism and the Open-Closed Principle Prof. Dr. Eric Dubuis Berner Fachhochschule, Engineering and Information Technology @ Biel Course
More informationClass 32: The Java Collections Framework
Introduction to Computation and Problem Solving Class 32: The Java Collections Framework Prof. Steven R. Lerman and Dr. V. Judson Harward Goals To introduce you to the data structure classes that come
More informationSUMMARY INTRODUCTION COLLECTIONS FRAMEWORK. Introduction Collections and iterators Linked list Array list Hash set Tree set Maps Collections framework
SUMMARY COLLECTIONS FRAMEWORK PROGRAMMAZIONE CONCORRENTE E DISTR. Università degli Studi di Padova Dipartimento di Matematica Corso di Laurea in Informatica, A.A. 2015 2016 Introduction Collections and
More informationCourse UML and Design Patterns of module Software Engineering and Design, version November 18, 2013.
The Observer Pattern Prof. Dr. Eric Dubuis Berner Fachhochschule, Engineering and Information Technology @ Biel Course UML and Design Patterns of module Software Engineering and Design, version November
More informationImplementing a List in Java. CSC 143 Java. List Interface (review) Just an Illusion? Using an Array to Implement a List CSC
Implementing a List in Java CSC 143 Java List Implementation Using Arrays Updated with Java 5.0 Generics Reading: Ch. 13 Two implementation approaches are most commonly used for simple lists: Arrays Linked
More informationOutline. iterator review iterator implementation the Java foreach statement testing
Outline iterator review iterator implementation the Java foreach statement testing review: Iterator methods a Java iterator only provides two or three operations: E next(), which returns the next element,
More informationCONTAİNERS COLLECTİONS
CONTAİNERS Some programs create too many objects and deal with them. In such a program, it is not feasible to declare a separate variable to hold reference to each of these objects. The proper way of keeping
More informationTopic #9: Collections. Readings and References. Collections. Collection Interface. Java Collections CSE142 A-1
Topic #9: Collections CSE 413, Autumn 2004 Programming Languages http://www.cs.washington.edu/education/courses/413/04au/ If S is a subtype of T, what is S permitted to do with the methods of T? Typing
More informationCHAPTER 6: CREATIONAL DESIGN PATTERNS
CHAPTER 6: CREATIONAL DESIGN PATTERNS SESSION III: BUILDER, PROTOTYPE, SINGLETON Software Engineering Design: Theory and Practice by Carlos E. Otero Slides copyright 2012 by Carlos E. Otero For non-profit
More informationJava Collections. Readings and References. Collections Framework. Java 2 Collections. CSE 403, Spring 2004 Software Engineering
Readings and References Java Collections "Collections", Java tutorial http://java.sun.com/docs/books/tutorial/collections/index.html CSE 403, Spring 2004 Software Engineering http://www.cs.washington.edu/education/courses/403/04sp/
More informationJava Collections. Readings and References. Collections Framework. Java 2 Collections. References. CSE 403, Winter 2003 Software Engineering
Readings and References Java Collections References» "Collections", Java tutorial» http://java.sun.com/docs/books/tutorial/collections/index.html CSE 403, Winter 2003 Software Engineering http://www.cs.washington.edu/education/courses/403/03wi/
More informationLists. The List ADT. Reading: Textbook Sections
Lists The List ADT Reading: Textbook Sections 3.1 3.5 List ADT A list is a dynamic ordered tuple of homogeneous elements A o, A 1, A 2,, A N-1 where A i is the i-th element of the list The position of
More information9/16/2010 CS Ananda Gunawardena
CS 15-121 Ananda Gunawardena A collection (sometimes called a container) is simply an object that groups multiple elements into a single unit. Collections are used to store, retrieve and manipulate data,
More informationCS Ananda Gunawardena
CS 15-121 Ananda Gunawardena A collection (sometimes called a container) is simply an object that groups multiple elements into a single unit. Collections are used to store, retrieve and manipulate data,
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 informationAn Introduction to Data Structures
An Introduction to Data Structures Advanced Programming ICOM 4015 Lecture 17 Reading: Java Concepts Chapter 20 Fall 2006 Adapded from Java Concepts Companion Slides 1 Chapter Goals To learn how to use
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 informationCOMP-202. Generics. COMP Generics, 2013 Jörg Kienzle and others
COMP-202 Generics Objects and Casting Generics Instantiation Usage ArrayList Iterators Iterator Lecture Outline 2 Objects and Casting All instances of all classes in Java are also of the class Object
More informationAlgorithms. Produced by. Eamonn de Leastar
Algorithms Produced by Eamonn de Leastar (edeleastar@wit.ie) Collections ± Collections Architecture ± Definition ± Architecture ± Interfaces ± Collection ± List ± Set ± Map ± Iterator ± Implementations
More informationCollections class Comparable and Comparator. Slides by Mark Hancock (adapted from notes by Craig Schock)
Lecture 15 Summary Collections Framework Iterable, Collections List, Set Map Collections class Comparable and Comparator 1 By the end of this lecture, you will be able to use different types of Collections
More informationLecture 15 Summary. Collections Framework. Collections class Comparable and Comparator. Iterable, Collections List, Set Map
Lecture 15 Summary Collections Framework Iterable, Collections List, Set Map Collections class Comparable and Comparator 1 By the end of this lecture, you will be able to use different types of Collections
More information(f) Given what we know about linked lists and arrays, when would we choose to use one data structure over the other?
CSM B Hashing & Heaps Spring 0 Week 0: March 0, 0 Motivation. (a) In the worst case, how long does it take to index into a linked list? Θ(N) (b) In the worst case, how long does it take to index into an
More informationThe Java Collections Framework and Lists in Java Parts 1 & 2
The Java Collections Framework and Lists in Java Parts 1 & 2 Chapter 9 Chapter 6 (6.1-6.2.2) CS 2334 University of Oklahoma Brian F. Veale Groups of Data Data are very important to Software Engineering
More informationList... NOTE We use List as illustrative example of collections Study the others from textbook!
List... NOTE We use List as illustrative example of collections Study the others from textbook! 25 What is a List? A List is an ordered Collection (sometimes called a sequence) Lists may contain duplicate
More informationJava Collections Framework: Interfaces
Java Collections Framework: Interfaces Introduction to the Java Collections Framework (JCF) The Comparator Interface Revisited The Collection Interface The List Interface The Iterator Interface The ListIterator
More informationGenerics Collection Framework
Generics Collection Framework Sisoft Technologies Pvt Ltd SRC E7, Shipra Riviera Bazar, Gyan Khand-3, Indirapuram, Ghaziabad Website: www.sisoft.in Email:info@sisoft.in Phone: +91-9999-283-283 Generics
More informationTaking Stock. IE170: Algorithms in Systems Engineering: Lecture 7. (A subset of) the Collections Interface. The Java Collections Interfaces
Taking Stock IE170: Algorithms in Systems Engineering: Lecture 7 Jeff Linderoth Department of Industrial and Systems Engineering Lehigh University January 29, 2007 Last Time Practice Some Sorting Algs
More informationSome examples and/or figures were borrowed (with permission) from slides prepared by Prof. H. Roumani. The Collection Framework
Some examples and/or figures were borrowed (with permission) from slides prepared by Prof. H. Roumani The Collection Framework Collection: an aggregate that can hold a varying number of elements Interface:
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 informationAbstract Data Types. Data Str. Client Prog. Add. Rem. Find. Show. 01/22/04 Lecture 4 1
Abstract Data Types Add Client Prog Rem Find Data Str. Show 01/22/04 Lecture 4 1 Containers Powerful tool for programming data structures Provides a library of container classes to hold your objects 2
More informationThe Collections API. Lecture Objectives. The Collections API. Mark Allen Weiss
The Collections API Mark Allen Weiss Lecture Objectives To learn how to use the Collections package in Java 1.2. To illustrate features of Java that help (and hurt) the design of the Collections API. Tuesday,
More informationAbstract Data Types. Data Str. Client Prog. Add. Rem. Find. Show. 01/30/03 Lecture 7 1
Abstract Data Types Add Client Prog Rem Find Data Str. Show 01/30/03 Lecture 7 1 Linear Lists It is an ordered collection of elements. Lists have items, size or length. Elements may have an index. Main
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 informationCMSC 206: Data Structures Final Exam Reference May 2018
CMSC 206: Data Structures Final Exam Reference May 2018 public interface BMCSet /** Adds a new item to the set * @param item The new item to add to the set * @return true if the item is a new item added
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 informationCollections and Iterators. Collections
Collections and Iterators Based on the notes from David Fernandez-Baca and Steve Kautz Based on The Java Tutorial (http://docs.oracle.com/javase/tutorial/java/) Bryn Mawr College CS206 Intro to Data Structures
More informationLecture 4. The Java Collections Framework
Lecture 4. The Java s Framework - 1 - Outline Introduction to the Java s Framework Iterators Interfaces, Classes and Classes of the Java s Framework - 2 - Learning Outcomes From this lecture you should
More informationIntroduction to Computer Science II CS S-18 Linked Lists
Introduction to Computer Science II CS112-2012S-18 Linked Lists David Galles Department of Computer Science University of San Francisco 18-0: Linked Lists Linked List node Data Pointer to the next element
More informationDM550 / DM857 Introduction to Programming. Peter Schneider-Kamp
DM550 / DM857 Introduction to Programming Peter Schneider-Kamp petersk@imada.sdu.dk http://imada.sdu.dk/~petersk/dm550/ http://imada.sdu.dk/~petersk/dm857/ ABSTRACT DATATYPES 2 Abstract Datatype (ADT)
More informationThe Java Collections Framework. Chapters 7.5
The Java s Framework Chapters 7.5 Outline Introduction to the Java s Framework Iterators Interfaces, Classes and Classes of the Java s Framework Outline Introduction to the Java s Framework Iterators Interfaces,
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 informationCH7. LIST AND ITERATOR ADTS
CH7. LIST AND ITERATOR ADTS ACKNOWLEDGEMENT: THESE SLIDES ARE ADAPTED FROM SLIDES PROVIDED WITH DATA STRUCTURES AND ALGORITHMS IN JAVA, GOODRICH, TAMASSIA AND GOLDWASSER (WILEY 2016) LISTS LIST ADT A List
More informationImportant Dates. Game State and Tree. Today s topics. Game Tree and Mini-Max. Games and Mini-Max 3/20/14
MINI-MAX USING TREES AND THE JAVA COLLECTIONS FRAMEWORK Lecture 16 CS2110 Spring 2014 2 Important Dates. April 10 --- A4 due (Connect 4, minimax, trees) April 15 --- A5 due (Exercises on different topics,
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 informationEECS 2011 M: Fundamentals of Data Structures
EECS 2011 M: Fundamentals of Data Structures Suprakash Datta Office: LAS 3043 Course page: http://www.eecs.yorku.ca/course/2011m Also on Moodle S. Datta (York Univ.) EECS 2011 W18 1 / 19 Iterators and
More informationIntroduction to Object-Oriented Programming
Introduction to Object-Oriented Programming Iterators and Streams Christopher Simpkins chris.simpkins@gatech.edu CS 1331 (Georgia Tech) Iterators and Streams 1 / 20 The Collections Framework A collection
More informationGeneric classes & the Java Collections Framework. *Really* Reusable Code
Generic classes & the Java Collections Framework *Really* Reusable Code First, a bit of history Since Java version 5.0, Java has borrowed a page from C++ and offers a template mechanism, allowing programmers
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 informationPattern Resources. Lecture 25: Design Patterns. What are Patterns? Design Patterns. Pattern Languages of Programming. The Portland Pattern Repository
Pattern Resources Lecture 25: Design Patterns Kenneth M. Anderson Object-Oriented Analysis and Design CSCI 6448 - Spring Semester, 2003 Pattern Languages of Programming Technical conference on Patterns
More informationIntroduction to Collections
Module 3 COLLECTIONS Introduction to Collections > A collection sometimes called a container is simply an object that groups multiple elements into a single unit. > Collections are used to store, retrieve,
More informationActive Learning: Streams
Lecture 29 Active Learning: Streams The Logger Application 2 1 Goals Using the framework of the Logger application, we are going to explore three ways to read and write data using Java streams: 1. as text
More informationCS 307 Midterm 2 Fall 2008
Points off 1 2 3 4 5 Total off Net Score Exam Number: CS 307 Midterm 2 Fall 2008 Name UTEID login name TA's Name: Mikie Ron Sarah (Circle One) Instructions: 1. Please turn off your cell phones and other
More informationCPSC 310 Software Engineering. Lecture 11. Design Patterns
CPSC 310 Software Engineering Lecture 11 Design Patterns Learning Goals Understand what are design patterns, their benefits and their drawbacks For at least the following design patterns: Singleton, Observer,
More informationPrinciples of Software Construction: Objects, Design and Concurrency. More design patterns and Java Collections. toad
Principles of Software Construction: Objects, Design and Concurrency 15-214 toad More design patterns and Java Collections Spring 2013 Christian Kästner Charlie Garrod School of Computer Science 2012-13
More informationCMSC 132, Object-Oriented Programming II Summer Lecture 6:
CMSC 132, Object-Oriented Programming II Summer 2017 Lecturer: Anwar Mamat Lecture 6: Disclaimer: These notes may be distributed outside this class only with the permission of the Instructor. 6.1 Singly
More informationJAVA COLLECTION FRAMEWORK & SETS
JAVA COLLECTION FRAMEWORK & SETS Ch07.4-5 & Ch10.5 Presentation for use with the textbook 1. Data Structures and Algorithms in Java, 6 th edition, by M. T. Goodrich, R. Tamassia, and M. H. Goldwasser,
More informationpackage weiss.util; // Fig , pg // Fig 6.16,6.17, pg package weiss.util;
package weiss.util; // Fig 6.9-10, pg 192-4. public interface Collection extends java.io.serializable int size( ); boolean isempty( ); boolean contains( Object x ); boolean add( Object x ); boolean remove(
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 informationCSC 1052 Algorithms & Data Structures II: Lists
CSC 1052 Algorithms & Data Structures II: Lists Professor Henry Carter Spring 2018 Recap Collections hold and access elements based on content Order and index no longer considered Comparable elements implement
More informationCSC 321: Data Structures. Fall 2017
CSC 321: Data Structures Fall 2017 Linked structures nodes & recursive fields singly-linked list doubly-linked list LinkedList implementation iterators 1 ArrayLists vs. LinkedLists to insert or remove
More informationWhat is the Java Collections Framework?
1 of 13 What is the Java Collections Framework? To begin with, what is a collection?. I have a collection of comic books. In that collection, I have Tarzan comics, Phantom comics, Superman comics and several
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 informationLecture 6 Collections
Lecture 6 Collections Concept A collection is a data structure actually, an object to hold other objects, which let you store and organize objects in useful ways for efficient access Check out the java.util
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 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 informationCSE 143 Lecture 14. Interfaces; Abstract Data Types (ADTs) reading: 9.5, 11.1; 16.4
CSE 143 Lecture 14 Interfaces; Abstract Data Types (ADTs) reading: 9.5, 11.1; 16.4 slides adapted from Marty Stepp and Hélène Martin http://www.cs.washington.edu/143/ Related classes Consider classes for
More informationNotes on access restrictions
Notes on access restrictions A source code file MyClass.java is a compilation unit and can contain at most one public class. Furthermore, if there is a public class in that file, it must be called MyClass.
More informationNeed to access each element of a list. Use index to access an element of the list. It s quadratic, while:
! " # $ $ % & ' () * + (, -. /* 0 * / (1 2 3-4 1 5 6 5 ' 7 8 * / 9 : ; < 8 * /' 8 - /4 J K L M N O PQ M R S After studying this chapter you should understand the following: the role of iterators in container
More informationCS 151. Linked Lists, Recursively Implemented. Wednesday, October 3, 12
CS 151 Linked Lists, Recursively Implemented 1 2 Linked Lists, Revisited Recall that a linked list is a structure that represents a sequence of elements that are stored non-contiguously in memory. We can
More informationObject Oriented Methods with UML. Introduction to Design Patterns- Lecture 8
Object Oriented Methods with UML Introduction to Design Patterns- Lecture 8 Topics(03/05/16) Design Patterns Design Pattern In software engineering, a design pattern is a general repeatable solution to
More informationOutline. runtime of programs algorithm efficiency Big-O notation List interface Array lists
Outline runtime of programs algorithm efficiency Big-O notation List interface Array lists Runtime of Programs compare the following two program fragments: int result = 1; int result = 1; for (int i=2;
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 informationObject-Oriented Design
Object-Oriented Design Lecture 20 GoF Design Patterns Behavioral Department of Computer Engineering Sharif University of Technology 1 GoF Behavioral Patterns Class Class Interpreter: Given a language,
More informationModel Solutions. COMP 103: Mid-term Test. 19th of August, 2016
Family Name:............................. Other Names:............................. ID Number:............................... Signature.................................. Instructions Time allowed: 45 minutes
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 informationLecture 15 Summary 3/11/2009. By the end of this lecture, you will be able to use different types of Collections and Maps in your Java code.
Lecture 15 Summary Collections Framework Iterable, Collections, Set Map Collections class Comparable and Comparator By the end of this lecture, you will be able to use different types of Collections and
More informationBasic Data Structures
Basic Data Structures Some Java Preliminaries Generics (aka parametrized types) is a Java mechanism that enables the implementation of collection ADTs that can store any type of data Stack s1
More informationLecture 13: Design Patterns
1 Lecture 13: Design Patterns Kenneth M. Anderson Object-Oriented Analysis and Design CSCI 6448 - Spring Semester, 2005 2 Pattern Resources Pattern Languages of Programming Technical conference on Patterns
More informationCS 310: Array-y vs Linky Lists
CS 310: Array-y vs Linky Lists Chris Kauffman Week 4-2 Feedback 1. Something you learned about yourself or your process during coding of HW1. Could be improvements you need to make Could be a success you
More informationEJB 3 Entity Relationships
Berner Fachhochschule Technik und Informatik EJB 3 Entity Relationships Course Multi Tier Business Applications with Java EE Prof. Dr. Eric Dubuis Berner Fachhochschule Biel Content What are relationships?
More information