cs 112 introduction to programming
Download
Skip this Video
Download Presentation
CS 112 Introduction to Programming

Loading in 2 Seconds...

play fullscreen
1 / 26

CS 112 Introduction to Programming - PowerPoint PPT Presentation


  • 89 Views
  • Uploaded on

CS 112 Introduction to Programming. Design Good Classes: Encapsulation and OOP Analysis Yang (Richard) Yang Computer Science Department Yale University 308A Watson, Phone: 432-6400 Email: [email protected] Admin. Updated class schedule. Recap: Encapsulating Data.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' CS 112 Introduction to Programming' - darryl


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
cs 112 introduction to programming

CS 112 Introduction to Programming

Design Good Classes: Encapsulation and OOP Analysis

Yang (Richard) Yang

Computer Science Department

Yale University

308A Watson, Phone: 432-6400

Email: [email protected]

admin
Admin
  • Updated class schedule
recap encapsulating data
Recap: Encapsulating Data

Client can see only the external API

Methods

Client

Data/state

Client should not see the internal state or behaviors

recap encapsulating data1
Recap: Encapsulating Data
  • Benefit
    • Consistency: so that it is impossible for others to "reach in" and directly alter another object\'s state
    • Flexibility: so that you can change the state representation later without worrying about breaking others’ code
ask don t touch
Ask, Don\'t Touch
  • Encapsulated data types.
    • Don\'t touch data and do whatever you want.
    • Instead, ask object to manipulate its data.
  • Lesson. Limiting scope makes programs easier to maintain and understand.

"Ask, don\'t touch."

Adele GoldbergFormer president of ACMCo-developed Smalltalk

"principle of least privilege"

recap encapsulation how
Recap: Encapsulation/How
  • access modifiers enforce encapsulation
    • public members (data and methods: can be accessed from anywhere
    • private members: can be accessed from a method defined in the same class
    • Members without an access modifier: default private accessibility, i.e., accessible in the same package; otherwise, not accessible.
examples set the access modifiers
Examples: Set the Access Modifiers
  • Coin
  • Ball
  • BankAccount
  • Point
class diagram

Coin

- face : int

+ flip() : void

+ isHeads() : boolean

+ toString() : String

Class Diagram

class name

attributes

methods

Above is a class diagram representing the Coin class.

“-” indicates private data or method

“+” indicates public data or method

slide9

Outline

  • Admin and recap
  • Defining classes
    • Motivation and basic syntax
    • Examples
    • The encapsulation principle
    • An OOP example: geomap visualization
data visualization
Data Visualization

“ If I can\'t picture it, I can\'t understand it. ”

— Albert Einstein

Edward Tufte. Create charts with high data density that tell the truth.

slide12

Major Classes and Relationship

m

1

m

2

1

1

1

m

GeoMap

Region

Color

A composition relationship

An associationrelationship

Polygon

Point

slide13

Major Classes and Relationship

GeoMap

Region

Region

String

Polygon

Color

Color

Point

Point

slide14

Major Classes and Relationship

m

1

m

2

1

1

m

1

GeoMap

Region

Color

A composition relationship

An associationrelationship

Polygon

Design question:

- Immutable objects?

Point

slide15

Major Classes and Relationship

m

1

m

2

1

1

m

1

GeoMap

Region

Color

A composition relationship

An associationrelationship

Polygon

Design question:

- What is the basic controller (of GeoMap) structure?

Point

slide16

Coloring Controller Structure

  • Retrieve region
    • Batch: retrieve list of all regions
    • Specific: retrieve one specific region
  • Coloring
    • Map properties of a region to a color
slide17

Major Classes and Relationship

m

1

m

2

1

1

m

1

GeoMap

Region

Color

A composition relationship

An associationrelationship

Polygon

  • Discussion:
  • Public methods (API) of Point

Point

slide18

Major Classes and Relationship

m

1

m

2

1

1

m

1

GeoMap

Region

Color

A composition relationship

An associationrelationship

Polygon

  • Discussion:
  • Public methods (API) of Polygon

Point

polygon
Polygon

public class Polygon {

private final int N; // number of boundary points

private final Point[] points; // the points

// read from input stream

public Polygon(Scannerinput) {

N = input.nextInt();

points = new Point[N+1];

for (int i = 0; i < N; i++) {

points[i] = new Point ( input );

}

points[N] = points[0];

}

public void draw() { … }

public void fill() { … }

public boolean contains(Point p) { … }

public Point centroid() { … }

}

slide20

Major Classes and Relationship

m

1

m

2

1

1

m

1

GeoMap

Region

Color

A composition relationship

An associationrelationship

Polygon

  • Discussion:
  • Public methods (API) of Region

Point

region

Q: Should Region have a method that returns its internal Polygon?

Region

public class Region {

private final String regionName; // name of region

private final String mapName;

private final Polygon poly; // polygonal boundary

private Color fillColor, drawColor;

public Region(String mName, String rName, Polygon poly) {

regionName = rName;

mapName = mName;

this.poly = poly;

setDefaultColor();

}

public void setDrawColor (Color c) {drawColor = c; }

public void draw() { setDrawColor(); poly.draw (); }

public void fill() { … }

public boolean contains(Point p) {

return poly.contains(p);

}

public Point centroid() { return poly.centroid() }

}

Even though most complexity is in Polygon, Polygon is not exposed. Region delegates tasks internally to Polygon.

example controllers
Example Controllers
  • GeoMap.java
  • RandomColorMap.java
  • ClickColorMap.java
  • RedBlueMap.java
purple america purplemap java
Purple America (PurpleMap.java)
  • Idea. [Robert J. Vanderbei] Assign color based on number of votes.
    • a1 = Rep. votes.
    • a2 = Other votes.
    • a3 = Dem. votes.

100% Rep

55% Dem, 45% Rep

100% Dem

100% Other

public Color getColor() {

int dem = tally.dem(), rep = tally.rep(), ind = tally.ind();

int tot = tally.dem + tally.rep + tally.ind;

return new Color((float) rep/tot, (float) ind/tot, (float) dem/tot);

}

cartograms
Cartograms
  • Cartogram. Area of state proportional to number of electoral votes.

Michael Gastner, Cosma Shalizi, and Mark Newman

www-personal.umich.edu/~mejn/election

cartograms1
Cartograms
  • Cartogram. Area of country proportional to population.
summary
Summary
  • Encapsulation is a key problem solving technique for large, complex problems
  • A good way to learn more is to read about designs of large-scale systems
ad