Download presentation
Presentation is loading. Please wait.
Published byLenard McDonald Modified over 9 years ago
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@cs.yale.edu
2
2 Admin Updated class schedule
3
3 Recap: Encapsulating Data Client Methods Data/state Client should not see the internal state or behaviors Client can see only the external API
4
Recap: Encapsulating Data Benefit m Consistency: so that it is impossible for others to "reach in" and directly alter another object's state m Flexibility: so that you can change the state representation later without worrying about breaking others’ code
5
Encapsulated data types. m Don't touch data and do whatever you want. m Instead, ask object to manipulate its data. Lesson. Limiting scope makes programs easier to maintain and understand. Adele Goldberg Former president of ACM Co-developed Smalltalk Ask, Don't Touch "principle of least privilege" "Ask, don't touch."
6
6 Recap: Encapsulation/How r 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 m Members without an access modifier: default private accessibility, i.e., accessible in the same package; otherwise, not accessible.
7
7 Examples: Set the Access Modifiers Coin Ball BankAccount Point
8
8 Class Diagram Coin - face : int + flip() : void + isHeads() : boolean + toString() : String Above is a class diagram representing the Coin class. “-” indicates private data or method “+” indicates public data or method class name attributes methods
9
9 Outline Admin and recap Defining classes o Motivation and basic syntax o Examples o The encapsulation principle An OOP example: geomap visualization
10
Data Visualization “ If I can't picture it, I can't understand it. ” — Albert Einstein 10 Edward Tufte. Create charts with high data density that tell the truth.
11
Visualization based on Geography Classes?
12
12 Major Classes and Relationship GeoMapRegion Polygon Color Point 1mm2 111m A composition relationship An association relationship
13
13 Major Classes and Relationship GeoMap Region String … Polygon Color Point …
14
14 Major Classes and Relationship GeoMapRegion Polygon Color Point 1mm2 111m A composition relationship An association relationship Design question: - Immutable objects?
15
15 Major Classes and Relationship GeoMapRegion Polygon Color Point 1mm2 111m A composition relationship An association relationship Design question: - What is the basic controller (of GeoMap) structure?
16
Retrieve region m Batch: retrieve list of all regions m Specific: retrieve one specific region Coloring m Map properties of a region to a color 16 Coloring Controller Structure
17
17 Major Classes and Relationship GeoMapRegion Polygon Color Point 1mm2 111m A composition relationship An association relationship Discussion: -Public methods (API) of Point
18
18 Major Classes and Relationship GeoMapRegion Polygon Color Point 1mm2 111m A composition relationship An association relationship Discussion: -Public methods (API) of Polygon
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 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() { … } … }
20
20 Major Classes and Relationship GeoMapRegion Polygon Color Point 1mm2 111m A composition relationship An association relationship Discussion: -Public methods (API) of Region
21
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() } … } Q: Should Region have a method that returns its internal Polygon? Even though most complexity is in Polygon, Polygon is not exposed. Region delegates tasks internally to Polygon.
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. m a 1 = Rep. votes. m a 2 = Other votes. m a 3 = Dem. votes. 100% Dem 100% Rep 100% Other 55% Dem, 45% Rep 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
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 Summary
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.