FINAL REVIEW. Stronger vs Weaker (one more time!) Requires less? Promises more? (stricter specifications on what the effects entail) Throws more exceptions?

Slides:



Advertisements
Similar presentations
18-1 Verifying Object Behavior and Collaboration Role playing – the act of simulating object behavior and collaboration by acting out an object’s behaviors.
Advertisements

Patterns Reusable solutions to common object-oriented programming problems When given a programming problem, re-use an existing solution. Gang of Four.
Overview of Java (continue). Announcements You should have access to your repositories and HW0 If you have problems getting HW0, let me know If you’ve.
Generic Programming David Rabinowitz. March 3rd, 2004 Object Oriented Design Course 2 The problem Assume we have a nice Stack implementation. Our stack.
IEG3080 Tutorial 7 Prepared by Ryan.
Design Patterns CS is not simply about programming
Design Patterns. What are design patterns? A general reusable solution to a commonly occurring problem. A description or template for how to solve a problem.
Generic Programming Amit Shabtay. March 3rd, 2004 Object Oriented Design Course 2 The Problem Assume we have a nice Stack implementation. Our stack receives.
Generic Programming David Rabinowitz. June 14, 2006 Object Oriented Design Course 2 The problem Assume we have a nice Stack implementation. Our stack.
The Composite Pattern.. Composite Pattern Intent –Compose objects into tree structures to represent part-whole hierarchies. –Composite lets clients treat.
ECE450 - Software Engineering II1 ECE450 – Software Engineering II Today: Design Patterns VI Composite, Iterator, and Visitor Patterns.
CERN – European Organization for Nuclear Research GS Department – Administrative Information Services Design Patterns in Groovy Nicolas Décrevel Advanced.
More OOP Design Patterns
Software Waterfall Life Cycle Requirements Construction Design Testing Delivery and Installation Operations and Maintenance Concept Exploration Prototype.
1 Java Inheritance. 2 Inheritance On the surface, inheritance is a code re-use issue. –we can extend code that is already written in a manageable manner.
Design Pattern. The Observer Pattern The Observer Pattern defines a one-to-many dependency between objects so that when one object changes state, all.
Slides by Alex Mariakakis Section 10: Final Review.
Design Patterns CSCI 5801: Software Engineering. Design Patterns.
More on Hierarchies 1. When an object of a subclass is instantiated, is memory allocated for only the data members of the subclass or also for the members.
15440 Distributed Systems Recitation 1 Objected-Oriented Java Programming.
18 April 2005CSci 210 Spring Design Patterns 1 CSci 210.
Software Design Patterns (1) Introduction. patterns do … & do not … Patterns do... provide common vocabulary provide “shorthand” for effectively communicating.
Object Oriented Software Engineering Chapter 16 and 17 review 2014/06/03.
Design Patterns Gang Qian Department of Computer Science University of Central Oklahoma.
Patterns COM379 University of Sunderland James Malone.
Design Patterns CSIS 3701: Advanced Object Oriented Programming.
G ENERICS I N J AVA BY: Ankit Goyal Sankalp Singh.
Title Carolina First Steering Committee October 9, 2010 Online Voting System Design Yinpeng Li and Tian Cao May 3, 2011.
Creational Patterns
What to know for the exam. Smalltalk will be used for questions, but there will not be questions about the grammar. Questions might ask – how particular.
Proxy.
Behavioral Patterns CSE301 University of Sunderland Harry R Erwin, PhD.
Software Design Patterns Curtsy: Fahad Hassan (TxLabs)
UMass Lowell Computer Science Java and Distributed Computing Prof. Karen Daniels Fall, 2000 Lecture 9 Java Fundamentals Objects/ClassesMethods Mon.
Design Patterns Software Engineering CS 561. Last Time Introduced design patterns Abstraction-Occurrence General Hierarchy Player-Role.
Design Patterns Introduction
Design Patterns SE464 Derek Rayside images from NetObjectives.com & Wikipedia.
Java Design Patterns Java Design Patterns. What are design patterns? the best solution for a recurring problem a technique for making code more flexible.
The Factory Method Pattern (Creational) ©SoftMoore ConsultingSlide 1.
Session 30 Final Review. Final Details Wednesday, December 14 at 8 AM Wright 5 (same classroom) Final will be comprehensive Open book Open notes Test.
Zach Tatlock / Winter 2016 CSE 331 Software Design and Implementation Lecture 13 Generics 1.
Five Minute Design Patterns Doug Marttila Forest and the Trees May 30, 2009 Template Factory Singleton Iterator Adapter Façade Observer Command Strategy.
7 April 2004CSci 210 Spring Design Patterns 2 CSci 210.
COMPOSITE PATTERN NOTES. The Composite pattern l Intent Compose objects into tree structures to represent whole-part hierarchies. Composite lets clients.
FINAL REVIEW. Stronger vs Weaker (one more time!) Requires more? Promises more? (stricter specifications on what the effects entail) weaker stronger.
CLASSIFICATION OF DESIGN PATTERNS Hladchuk Maksym.
1 Design Patterns prepared for COMP314, Bernhard Pfahringer see links on the web page as well!
Sections Inheritance and Abstract Classes
Section 9: Design Patterns
Chapter 10 Design Patterns.
Chapter 5:Design Patterns
MPCS – Advanced java Programming
Design Patterns Lecture part 2.
Introduction to Design Patterns
Inheritance and Polymorphism
Final review CSE331 Winter 2017.
7 April 2011 CMPT166 Sean Ho Trinity Western University
object oriented Principles of software design
Section 9: Design Patterns
Section 9: Design Patterns
Software Engineering Lecture 7 - Design Patterns
Chapter 19 Generics Dr. Clincy - Lecture.
Design Patterns in Game Design
Material pulled from last section and last year’s slides
Material pulled from last section and last year’s slides
Section 8: Design Patterns
Section 9: Design Patterns
Final review.
Chapter 8, Design Patterns Singleton
Section 9: Design Patterns
Presentation transcript:

FINAL REVIEW

Stronger vs Weaker (one more time!) Requires less? Promises more? (stricter specifications on what the effects entail) Throws more exceptions? stronger weaker

Stronger vs Weaker blech woiefio fi gonzo snurf blech woiefio fi gonzo snurf blech snurf blech woiefio fi gonzo STRONGER WEAKER

Subtypes & Subclasses Subtypes are substitutable for supertypes If Foo is a subtype of Bar, G is a NOT a subtype of G Aliasing resulting from this would let you add objects of type Bar to G, which would be bad! Example: List ls = new ArrayList (); List lo = ls; lo.add(new Object()); String s = ls.get(0); Subclassing is done to reuse code (extends) A subclass can override methods in its superclass

Typing and Generics is a wildcard for unknown Upper bounded wildcard: type is wildcard or subclass Eg: List Illegal to write into (no calls to add!) because we can’t guarantee type safety. Lower bounded wildcard: type is wildcard or superclass Eg: List May be safe to write into.

Subtypes & Subclasses class Student extends Object {... } class CSEStudent extends Student {... } List ls; List les; List lss; List lcse; List lecse; List lscse; Student scholar; CSEStudent hacker; ls = lcse; les = lscse; lcse = lscse; les.add(scholar); lscse.add(scholar); lss.add(hacker); scholar = lscse.get(0); hacker = lecse.get(0); x x x x x x

Subclasses & Overriding class Foo extends Object { Shoe m(Shoe x, Shoe y){... } } class Bar extends Foo {...}

Method Declarations in Bar FootWear m(Shoe x, Shoe y) {... } Shoe m(Shoe q, Shoe z) {... } HighHeeledShoe m(Shoe x, Shoe y) {... } Shoe m(FootWear x, HighHeeledShoe y) {... } Shoe m(FootWear x, FootWear y) {... } Shoe m(Shoe x, Shoe y) {... } Shoe m(HighHeeledShoe x, HighHeeledShoe y) {... } Shoe m(Shoe y) {... } Shoe z(Shoe x, Shoe y) {... } The result is method overriding The result is method overloading The result is a type-error None of the above Object ↓ Foo ↓ Bar Footwear ↓ Shoe ↓ HighHeeledShoe type-error overriding overloading overriding overloading none (new method declaration)

Design Patterns Creational patterns: get around Java constructor inflexibility Sharing: singleton, interning, flyweight Telescoping constructor fix: builder Returning a subtype: factories Structural patterns: translate between interfaces Adapter: same functionality, different interface Decorator: different functionality, same interface Proxy: same functionality, same interface, restrict access All of these are types of wrappers

Design Patterns Interpreter pattern: Collects code for similar objects, spreads apart code for operations (classes for objects with operations as methods in each class) Easy to add objects, hard to add methods Instance of Composite pattern Procedural patterns: Collects code for similar operations, spreads apart code for objects (classes for operations, method for each operand type) Easy to add methods, hard to add objects Ex: Visitor pattern

Design Patterns What pattern would you use to… add a scroll bar to an existing window object in Swing Decorator We have an existing object that controls a communications channel. We would like to provide the same interface to clients but transmit and receive encrypted data over the existing channel. Proxy When the user clicks the “find path” button in the Campus Maps application (hw9), the path appears on the screen. MVC Observer Adapter, Builder, Composite, Decorator, Factory, Flyweight, Iterator, Intern, Interpreter, Model-View-Controller (MVC), Observer, Procedural, Prototype, Proxy, Singleton, Visitor, Wrapper