Presentation is loading. Please wait.

Presentation is loading. Please wait.

Computer Science 313 – Advanced Programming Topics.

Similar presentations


Presentation on theme: "Computer Science 313 – Advanced Programming Topics."— Presentation transcript:

1 Computer Science 313 – Advanced Programming Topics

2 “In a Nutshell”  Commonly used English expression  Means “in a few words” or “briefly”  Summarizing idea with many details left out

3 “In a Nutshell”  Commonly used English expression  Means “in a few words” or “briefly”  Summarizing idea with many details left out I could be bounded in a nutshell, and count my selfe a King of infinite space.

4 “In a Nutshell”  Usage can be traced back to 1608  Even before Hamlet used it  Meaning has not changed in 400 years  Also became a verb in that time  “To nutshell” popularized by Mark Twain  Any questions about what it means?

5 “In a Nutshell”  Usage can be traced back to 1608  Even before Hamlet used it  Meaning has not changed in 400 years  Also became a verb in that time  “To nutshell” popularized by Mark Twain  Any questions about what it means?  W ILL SOMEONE EXPLAIN THIS TO O’R EILLY !

6 Big Picture for Façade  Provide simple interface to low-level functions  Create single class defining simple methods  May combine functionality of multiple instances  Façade makes client easier to write & use  Packages tricky parts into simple method(s)  Allows client to avoid working with many instances  Nothing should change in lower level classes hidden  Using the façade complex subsystem hidden usable  But still usable without going through façade

7 Real-Life is Hard  Real life is full of complex ideas & concepts  Filling out your tax forms every April  Rules for holding in (American) football  Explaining why the sky is blue  Appeal of soccer to billions worldwide

8 Real-Life is Hard  Often rely on simplicities to understand these  Filling out your tax forms every April “Politician got bribe contribution to create deduction”  Rules for holding in (American) football “Stay within the shoulder pads & don’t get caught”  Explaining why the sky is blue “Wavelengths not scattered by the atmosphere”  Appeal of soccer to billions worldwide “Excuse to drink beer & occasionally riot”

9 Real-Life Façade  Compiler is (real-life) example of façade  Typically we think of compiler as single system  Many complex systems combine to make compiler  Code divided into tokens by the parser  Lexigraphical analyzer computes tokens’ meanings  Analysis improved & simplified by optimizer  Code generator lowers & outputs result  Even so, many of these systems also façades:  Loop analyzer, SSA transform, peepholer in optimizer

10 Façades On Computers

11 Façade We Regularly Use  Usually do all interactions via simple interface  javac foo.java compiles class named foo  But can also access components directly  final & volatile provide details to optimizer  Can get instance of javax.tools.JavaCompiler

12 Façade We Regularly Use  Compilation easy because of this façade  Façade simplifies & allows messing with internals  All skill levels helped using the compiler  Beginner javac foo.java  Expert javac –g:none foo.java  Stupid javac –nowarn –Xprint foo.java

13 Façade versus Adapter  Façade and Adapter patterns very similar  Enable simplifying code to be used by client  Both patterns effectively hide subsystem details  1 or more instances behind exposed interface may/may not  Idealized UML class diagram may/may not differ  “What is the difference?” should be asked

14 Intent Crucial to Usage  Adapter makes existing code use interface  Original implementation hidden by pattern  Lets client code think class written for interface  Adapts existing code so it can work in other places  Façade used to create interface to use system  Original implementation hidden by pattern  Lets client write code as if design has simple interface  Provides a false front for use in another system

15 Clients of Façade & Adapter

16 Using Façade & Adapter FaçadeAdapter Yams \ Sweet Potatoes

17 Using Façade & Adapter FaçadeAdapter Yams Sweet Potatoes \ Sweet Potatoes Yams

18 Kissing Cousins of Patterns  Adapter & Façade also close to Decorator  Structural patterns that help simplify client code  Within each pattern, hide implementation details  Workings invisible to those outside pattern  Decorator has some important differences  Decorations invisible; adapter & façade not  Decorator requires specific class relationships  Interface unchanged by decorator pattern

19 For Next Class  Lab #6 due in one week  Do not leave labs to last second  Read pages 265 – 275 for Friday  What is the Principle of Least Knowledge?  How much of class already follows this principle?  What is the Law of Demeter?  Can we quantify this principle?


Download ppt "Computer Science 313 – Advanced Programming Topics."

Similar presentations


Ads by Google