CS%20112%20Introduction%20to%20Programming - PowerPoint PPT Presentation

About This Presentation
Title:

CS%20112%20Introduction%20to%20Programming

Description:

CS 112 Introduction to Programming Design Good Classes: Encapsulation and OOP Analysis Yang (Richard) Yang Computer Science Department Yale University – PowerPoint PPT presentation

Number of Views:97
Avg rating:3.0/5.0
Slides: 27
Provided by: Richard2155
Learn more at: https://zoo.cs.yale.edu
Category:

less

Transcript and Presenter's Notes

Title: CS%20112%20Introduction%20to%20Programming


1
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 yry_at_cs.yale.edu

2
Admin
  • Updated class schedule

3
Recap Encapsulating Data
Client can see only the external API
Methods
Client
Data/state
Client should not see the internal state or
behaviors
4
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

5
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"
6
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.

7
Examples Set the Access Modifiers
  • Coin
  • Ball
  • BankAccount
  • Point

8
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
9
Outline
  • Admin and recap
  • Defining classes
  • Motivation and basic syntax
  • Examples
  • The encapsulation principle
  • An OOP example geomap visualization

10
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.
11
Visualization based on Geography
Classes?
12
Major Classes and Relationship
GeoMap
Region
Color
A composition relationship
An association relationship
Polygon
Point
13
Major Classes and Relationship
GeoMap
Region
Region

String
Polygon
Color
Color
Point

Point
14
Major Classes and Relationship
GeoMap
Region
Color
A composition relationship
An association relationship
Polygon
Design question - Immutable objects?
Point
15
Major Classes and Relationship
GeoMap
Region
Color
A composition relationship
An association relationship
Polygon
Design question - What is the basic controller
(of GeoMap) structure?
Point
16
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

17
Major Classes and Relationship
GeoMap
Region
Color
A composition relationship
An association relationship
Polygon
  • Discussion
  • Public methods (API) of Point

Point
18
Major Classes and Relationship
GeoMap
Region
Color
A composition relationship
An association relationship
Polygon
  • Discussion
  • Public methods (API) of Polygon

Point
19
Polygon
public class Polygon private final int N
// number of boundary points private
final Point points // the points // read
from input stream public Polygon(Scanner
input) N input.nextInt()
points new PointN1 for (int i 0 i
lt N i) pointsi new Point (
input ) pointsN
points0 public void draw()
public void fill() public boolean
contains(Point p) public Point
centroid()
20
Major Classes and Relationship
GeoMap
Region
Color
A composition relationship
An association relationship
Polygon
  • Discussion
  • Public methods (API) of Region

Point
21
Region
Q Should Region have a method that returns its
internal Polygon?
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()
22
Example Controllers
  • GeoMap.java
  • RandomColorMap.java
  • ClickColorMap.java
  • RedBlueMap.java

23
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)
24
Cartograms
  • Cartogram. Area of state proportional to number
    of electoral votes.

Michael Gastner, Cosma Shalizi, and Mark
Newman www-personal.umich.edu/mejn/election
25
Cartograms
  • Cartogram. Area of country proportional to
    population.

26
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
Write a Comment
User Comments (0)
About PowerShow.com