Download presentation

Presentation is loading. Please wait.

Published byRachelle Hammond Modified over 3 years ago

1
MIDTERM REVIEW

2
Abstraction Functions Internal (like the representation invariant) Client doesn’t need this! Can be used to show code correctness when combined with spec and rep invariant Maps concrete representation to abstract value

3
Abstraction Functions AF: R ⇒ A R: Set of objects Consists of fields in the class; concrete, code A: Set of abstract objects What the object means; abstract, conceptual AF: References internal code representation Can contain calculations, etc that the client doesn’t care about

4
Abstraction Functions public class Line { private Point start; private Point end; …} // AF(r) = line l such that // l.start = r.start // l.end = r.end

5
Abstraction Functions /** * Card represents an immutable playing card. * @specfield suit: {Clubs,Diamonds,Hearts,Spades} * @specfield value: {Ace,2,...,Jack,Queen,King} */ public class Card { private int index; … } // suit = S(index div 13) // where S(0)=Clubs, S(1)=Diamonds, … // value = V(index mod 13) // where V(1)=Ace, V(2)=2,..., // V(12)=Queen, V(0)=King

6
Specification strength Stronger specification is: Easier or harder for the client to use? Easier or harder for the implementer to specify? To weaken a specification, you can: Strengthen or weaken the preconditions? Strengthen or weaken the postconditions?

7
Documentation class IntegerSet { private List set = new LinkedList (); public boolean contains(int x) { int index = set.indexOf(x); if (index != -1) { set.remove(index); set.add(0, x); } return index != -1; } @return? @modifies? @effects? @requires? @throws?

8
Backwards Reasoning { (x * y) * y n-1 = b } => { x * y n = b } x = x * y; { x * y n-1 = b } n = n - 1; { x * y n = b }

9
Forwards Reasoning { |x| > 2 } x = x * 2; { |x| > 4 } x = x – 1; { x > 3 | x < -5 }

10
CoinPile Class class CoinPile { private List coins; public CoinPile() { coins = new ArrayList (); }... // many more methods for adding and removing coins, computing change, etc. }

11
CoinPile Class class CoinPile { private List coins; public CoinPile() { coins = new ArrayList (); }... // many more methods for adding and removing coins, computing change, etc. } @specfield pennies: int @specfield nickels: int @specfield dimes: int @specfield quarters: int Representation invariant? Abstraction function?

12
CoinPile Class, cont’d @returns a list of coins with one coin of value n for each coin in this with value n (i.e., the list of coins in this) public List getCoins() { return new ArrayList (coins); } Representation exposure?

Similar presentations

OK

Wednesday, March 11 Make a scatter plot of data and describe its correlation. Find the theoretical probability of an event.

Wednesday, March 11 Make a scatter plot of data and describe its correlation. Find the theoretical probability of an event.

© 2018 SlidePlayer.com Inc.

All rights reserved.

To ensure the functioning of the site, we use **cookies**. We share information about your activities on the site with our partners and Google partners: social networks and companies engaged in advertising and web analytics. For more information, see the Privacy Policy and Google Privacy & Terms.
Your consent to our cookies if you continue to use this website.

Ads by Google

Ppt on game theory applications Ppt on different types of computer softwares list Ppt on high sea sales india Ppt on water softening techniques of neutralization Ppt on environmental degradation vs industrial revolution Ppt on conservation of electricity Ppt on punjabi culture in punjabi language Ppt on total internal reflection microscopy Spleen anatomy and physiology ppt on cells Ppt on job rotation meaning