1 / 26

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: yry@cs.yale.edu. Admin. Updated class schedule. Recap: Encapsulating Data.

darryl
Download Presentation

CS 112 Introduction to Programming

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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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. 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. 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

  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 m 1 m 2 1 1 1 m GeoMap Region Color A composition relationship An associationrelationship Polygon Point

  13. Major Classes and Relationship GeoMap Region … Region String Polygon Color Color Point … Point

  14. 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

  15. 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

  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 m 1 m 2 1 1 m 1 GeoMap Region Color A composition relationship An associationrelationship Polygon • Discussion: • Public methods (API) of Point Point

  18. 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

  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(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() { … } … }

  20. 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

  21. 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.

  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

More Related