Download presentation

Presentation is loading. Please wait.

Published byRachelle Hammond Modified over 2 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

Presentation is loading. Please wait....

OK

Let’s Learn About Money!

Let’s Learn About Money!

© 2017 SlidePlayer.com Inc.

All rights reserved.

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