Presentation is loading. Please wait.

Presentation is loading. Please wait.

Final review CSE331 Winter 2017.

Similar presentations


Presentation on theme: "Final review CSE331 Winter 2017."— Presentation transcript:

1 Final review CSE331 Winter 2017

2 Administrivia Final exam practice session: CSE 403 from 5:30 – 7:30pm. HW9 designs presentation: Friday in class. If you are interested in presenting, please sign up here: CSE331 Winter 2017

3 Stronger vs Weaker (one more time!)
•Requires more? •Promises more? (stricter specifications on what the effects entail) CSE331 Winter 2017

4 Stronger vs Weaker (one more time!)
•Requires more? weaker •Promises more? (stricter specifications on what the effects entail) stronger CSE331 Winter 2017

5 Stronger vs Weaker @return the value associated with key
@requires key is a key in this @return the value associated with key @throws NullPointerException if key is null key is a key in this and key != null @return the value associated with key the value associated with key if key is a key in this, or null if key is not associated with any value the value associated with key @throws NullPointerException if key is null @throws NoSuchElementException if key is not a key this CSE331 Winter 2017

6 Stronger vs Weaker @return the value associated WEAKER
@requires key is a key in this @return the value associated with key @throws NullPointerException if key is null key is a key in this and key != null @return the value associated WEAKER the value associated with key with key if key is a key in this, or null if key is not associated with any value NEITHER the value associated @throws NullPointerException with key if key is null @throws NoSuchElementException key this STRONGER if key is not a CSE331 Winter 2017

7 Subtypes & Subclasses of G<Bar>
•Subtypes are substitutable for supertypes •If Foo is a subtype of Bar, G<Foo> is a NOT a subtype of G<Bar> •Aliasing resulting from this would let you add objects of type Bar to G<Foo>, which would be bad! •Example: List<String> List<Object> ls = new ArrayList<String>(); 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 CSE331 Winter 2017

8 Typing and Generics •<?> is a wildcard for unknown
•Upper bounded wildcard: type is wildcard or subclass •Eg: List<? extends Shape> •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<? super Integer> •May be safe to write into. CSE331 Winter 2017

9 PECS Producer Extends Consumer Super CSE331 Winter 2017

10 Subtypes & Subclasses lecse; les.add(scholar); class
Student extends Object { ... } CSEStudent extends Student { ... } List<Student> ls; Student> ls = lcse; les = lscse; lcse = lscse; List<? List<? super extends les; Student> lss; List<CSEStudent> lcse; List<? List<? super extends CSEStudent> lecse; les.add(scholar); CSEStudent> lscse; lscse.add(scholar); lss.add(hacker); scholar = lscse.get(0); hacker = lecse.get(0); Student scholar; CSEStudent hacker; CSE331 Winter 2017

11 Subtypes & Subclasses x x x x class Student extends Object { ... }
CSEStudent extends Student { ... List<Student> ls; Student> x List<? List<? super extends les; ls = lcse; Student> lss; les = lscse; lcse = lscse; x List<CSEStudent> lcse; List<? extends CSEStudent> lecse; x super CSEStudent> lscse; les.add(scholar); x lscse.add(scholar); lss.add(hacker); Student scholar; CSEStudent hacker; scholar = lscse.get(0);x hacker = lecse.get(0); CSE331 Winter 2017

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

13 Method Declarations in Bar
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 •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) { ... } CSE331 Winter 2017

14 Method Declarations in Bar
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 •FootWear m(Shoe x, Shoe y) { ... } type-error overriding •Shoe m(Shoe q, Shoe z) { ... } overriding •HighHeeledShoe m(Shoe x, Shoe y) { ... } overloading •Shoe m(FootWear x, HighHeeledShoe y) { ... } •Shoe m(FootWear x, FootWear y) { ... } overloading overriding •Shoe m(Shoe x, Shoe y) { ... } •Shoe m(HighHeeledShoe x, HighHeeledShoe y) { ... } overloading overloading •Shoe m(Shoe y) { ... } •Shoe z(Shoe x, Shoe y) { ... } none (new method declaration) CSE331 Winter 2017

15 Design Patterns •Creational patterns: get around Java constructor inflexibility •Sharing: singleton, interning •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 CSE331 Winter 2017

16 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 CSE331 Winter 2017

17 Design Patterns •What pattern would you use to…
Adapter, Builder, Composite, Decorator, Factory, Flyweight, Iterator, Intern, Interpreter, Model-View-Controller (MVC), Observer, Procedural, Prototype, Proxy, Singleton, Visitor, Wrapper •What pattern would you use to… •add a scroll bar to an existing window object in Swing •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. •When the user clicks the “find path” button in the Campus Maps application (hw9), the path appears on the screen. CSE331 Winter 2017

18 Design Patterns •What pattern would you use to…
Adapter, Builder, Composite, Decorator, Factory, Flyweight, Iterator, Intern, Interpreter, Model-View-Controller (MVC), Observer, Procedural, Prototype, Proxy, Singleton, Visitor, Wrapper •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 CSE331 Winter 2017


Download ppt "Final review CSE331 Winter 2017."

Similar presentations


Ads by Google