Warmup ["hip","hip"] = Hip Hip Array! ???.

Slides:



Advertisements
Similar presentations
Classes and Objects CMSC 202. Version 9/122 Programming & Abstraction All programming languages provide some form of abstraction. – Also called information.
Advertisements

Geometry Honors Section 9.5 Segments of Tangents, Secants and Chords.
MIDTERM REVIEW. Abstraction Functions Internal (like the representation invariant) Client doesn’t need this! Can be used to show code correctness when.
try { Assert(Life. Real); Assert(Life
Slides adapted from Alex Mariakakis, with material from Krysta Yousoufian, Mike Ernst, Kellen Donohue Section 5: HW6 and Interfaces.
Abstraction Functions. Announcements Exam 1 on Tuesday March 3 rd Closed book/phone/laptop 2 cheat pages allowed (handwritten or typed) 1 double-sided.
Definition: A circle is the set of all points on a plane that is a fixed distance from the center.
Abstraction: Polymorphism, pt. 1 Abstracting Objects.
Perimeter Rectangles, Squares, and Triangles Perimeter Measures the distance around the edge of any flat object. To find the perimeter of any figure,
CSE 331 Software Design & Implementation Dan Grossman Fall 2014 Data Abstraction: Abstract Data Types (ADTs) (Based on slides by Mike Ernst, David Notkin,
Computer Science 340 Software Design & Testing Design By Contract.
Math 3121 Abstract Algebra I Lecture 3 Sections 2-4: Binary Operations, Definition of Group.
Solving Exponential Equations
Introduction CS 3358 Data Structures. What is Computer Science? Computer Science is the study of algorithms, including their  Formal and mathematical.
Computer Science and Engineering College of Engineering The Ohio State University Interfaces The credit for these slides goes to Professor Paul Sivilotti.
ICOM 4035 – Data Structures Lecture 1 - Introduction Manuel Rodriguez Martinez Electrical and Computer Engineering University of Puerto Rico, Mayagüez.
Introduction CS 3358 Data Structures. What is Computer Science? Computer Science is the study of algorithms, including their  Formal and mathematical.
P Chapter 2 introduces Object Oriented Programming. p OOP is a relatively new approach to programming which supports the creation of new data types and.
Geometry Chapter 9 Section 1 Circles. Circle The set of all points in a plane that are a given distance from a center point Radius a line segment from.
A programmer’s wife tells him, “Would you mind going to the store and picking up a loaf of bread. Also, if they have eggs, get a dozen.” The programmer.
90-723: Data Structures and Algorithms for Information Processing Copyright © 1999, Carnegie Mellon. All Rights Reserved. 1 Lecture 1: Introduction Data.
SWE 4743 Abstract Data Types Richard Gesick. SWE Abstract Data Types Object-oriented design is based on the theory of abstract data types Domain.
1 Assertions. 2 A boolean expression or predicate that evaluates to true or false in every state In a program they express constraints on the state that.
CSE 331 Software Design & Implementation Dan Grossman Fall 2014 Abstraction Functions (Based on slides by Mike Ernst, David Notkin, Hal Perkins)
SLIDES ADAPTED FROM ALEX MARIAKAKIS, WITH MATERIAL FROM KRYSTA YOUSOUFIAN, MIKE ERNST, KELLEN DONOHUE Section 5: HW6 and Interfaces Justin Bare and Deric.
Justin Bare and Deric Pang with material from Erin Peach, Nick Carney, Vinod Rathnam, Alex Mariakakis, Krysta Yousoufian, Mike Ernst, Kellen Donohue Section.
Slides with material from Alex Mariakakis, Krysta Yousoufian, Mike Ernst, Kellen Donohue Section 3: HW4, ADTs, and more.
A programmer’s roommate tells him, “Would you mind going to the store and picking up a loaf of bread. Also, if they have eggs, get a dozen.” The programmer.
CSE 373, Copyright S. Tanimoto, 2002 Abstract Data Types - 1 Abstract Data Types Motivation Abstract Data Types Example Using math. functions to describe.
2.4 Exceptions n Detects try { //code that may raise an exception and/or set some condition if (condition) throw exceptionName; //Freq. A string } n Handles.
Object Oriented Programming Some Interesting Genes.
CSE 374 Programming Concepts & Tools Hal Perkins Fall 2015 Lecture 17 – Specifications, error checking & assert.
Section 4: Graphs and Testing
CIRCLES Topic 7.3.
Data Abstraction: The Walls
Abstract Data Type.
1Z0-808 Exam : Java SE 8 Programmer I
CSE 374 Programming Concepts & Tools
Chapter 2 Sets and Functions.
Introduction to Graphing
Section 5: HW6 and Interfaces
Design by Contract Fall 2016 Version.
Section 5: HW6 and Interfaces
Introduction to Data Structures
CIRCLES Topic 10.2.
Object initialization: constructors
Section 6: Midterm Review
Circles 4.1 (Chapter 10). Circles 4.1 (Chapter 10)
Slides by Steve Armstrong LeTourneau University Longview, TX
Equality, conclusion Based on material by Michael Ernst, University of Washington.
Defining Classes and Methods
Data Structures and Algorithms for Information Processing
Mathematical Background 1
The programmer returns with 12 loaves of bread.
Mathematical Background 1
Section 3 Graphs & Testing
Section 4: Interfaces Parsing Data and
Section 5: HW6 and Interfaces
Section 4: Graphs and Testing
IMPORTANT NOTE Some parts of these section slides deal with null ints. This was a mistake, as primitives cannot be null. These issues have been corrected.
Section 5: HW6 and Interfaces
CSE 331 Software Design & Implementation
Computer Science 340 Software Design & Testing
Warmup Find the distance between the point (x, y) and the point (h, k).
Warmup Find the distance between the point (x, y) and the point (h, k).
CIRCLES Topic 7.3.
slides created by Ethan Apter and Marty Stepp
Software Specifications
CIRCLES Topic 7.3.
CIRCLES Topic 7.3.
Presentation transcript:

Warmup ["hip","hip"] = Hip Hip Array! ???

Section 3: HW4, ADTs, and more Slides by Alex Mariakakis with material from Krysta Yousoufian, Mike Ernst, Kellen Donohue

Agenda HW4 setup Abstract data types (ADTs) Method specifications

HW#4 DEMO

Polynomial Addition (5x4 + 4x3 - x2 + 5) (3x5 - 2x3 + x – 5)

Polynomial Multiplication (4x3 - x2 + 5) (x – 5) * 4x3 - x2 + 5 x – 5 * -20x3 + 5x2 – 25 + 4x4 -x3 + 5x 4x4 -21x3 + 5x2 + 5x - 25

Polynomial Division (5x6 + 4x4 – x3 + 5) (x3 - 2x – 5) x3 - 2x – 5 / x3 - 2x – 5 5x6 + 4x4 – x3 + 5

Polynomial Division 5 14 24 1 0 -2 -5 5 0 4 -1 0 0 5 5 0 -10 -25 14 24 1 0 -2 -5 5 0 4 -1 0 0 5 5 0 -10 -25 - 0 14 24 0 0 0 0 0 - 14 24 0 0 5x3 + 14x + 24 14 0 -28 -70 - 28x2 + 118x + 125 + x3 - 2x – 5 24 28 70 5 24 0 -48 -120 - 0 28 118 125

ADT Example: Line Suppose we want to make a Line class that represents lines on the Cartesian plane . . See http://courses.cs.washington.edu/courses/cse331/13au /conceptual-info/specifications.html for more

Definitions Abstract Value: what an instance of a class is supposed to represent Line represents a given line Abstract State: the information that defines the abstract value Each line has a start point and an end point Abstract Invariant: the conditions that must remain true over the abstract state for all instances Start point and end point must be distinct

Definitions (cont.) Specification Fields: describes components of the abstract state of a class Line has specification fields startPoint, endPoint Derived Specification Fields: information that can be derived from specification fields but useful to have length = sqrt((x1-x2)^2 + (y1-y2)^2)

ADT Example: Line /** * This class represents the mathematical concept of a line segment. * * Specification fields: * @specfield start-point : point // The starting point of the line. * @specfield end-point : point // The ending point of the line. * Derived specification fields: * @derivedfield length : real // The length of the line. * Abstract Invariant: * A line's start-point must be different from its end-point. */ public class Line { … }

ADT Example: Line Abstract Value /** * This class represents the mathematical concept of a line segment. * * Specification fields: * @specfield start-point : point // The starting point of the line. * @specfield end-point : point // The ending point of the line. * Derived specification fields: * @derivedfield length : real // The length of the line. * Abstract Invariant: * A line's start-point must be different from its end-point. */ public class Line { … } Abstract Value

ADT Example: Line Abstract State /** * This class represents the mathematical concept of a line segment. * * Specification fields: * @specfield start-point : point // The starting point of the line. * @specfield end-point : point // The ending point of the line. * Derived specification fields: * @derivedfield length : real // The length of the line. * Abstract Invariant: * A line's start-point must be different from its end-point. */ public class Line { … } Abstract State

ADT Example: Line Abstract Invariant /** * This class represents the mathematical concept of a line segment. * * Specification fields: * @specfield start-point : point // The starting point of the line. * @specfield end-point : point // The ending point of the line. * Derived specification fields: * @derivedfield length : real // The length of the line. * Abstract Invariant: * A line's start-point must be different from its end-point. */ public class Line { … } Abstract Invariant

ADT Example: Line Specification Fields /** * This class represents the mathematical concept of a line segment. * * Specification fields: * @specfield start-point : point // The starting point of the line. * @specfield end-point : point // The ending point of the line. * Derived specification fields: * @derivedfield length : real // The length of the line. * Abstract Invariant: * A line's start-point must be different from its end-point. */ public class Line { … } Specification Fields

ADT Example: Line Derived Fields /** * This class represents the mathematical concept of a line segment. * * Specification fields: * @specfield start-point : point // The starting point of the line. * @specfield end-point : point // The ending point of the line. * Derived specification fields: * @derivedfield length : real // The length of the line. * Abstract Invariant: * A line's start-point must be different from its end-point. */ public class Line { … } Derived Fields

ADT Example: Circle Suppose we want to make a Circle class that represents circles on the Cartesian plane .

ADT Example: Circle Abstract Value: Abstract State: Abstract Invariant Circle represents a given circle Abstract State: Abstract Invariant Option #1: r > 0, center must exist Option #2: center and edge must be distinct Option #3: corner1 and corner2 must be distinct

ADT Example: Circle Specification Fields: Option #1: r and center Option #2: center and edgePoint Option #3: corner1 and corner2 Derived Specification Fields: Circumference Diameter Area …

Abstraction Abstract values, state, and invariants specify the behavior of classes and methods What should my class do? We have not implemented any of these ADTs yet Implementation should not affect abstract state As long as Circle represents the circle we are interested in, nobody cares how it is implemented

Abstract vs. Concrete We’ll talk later about representation invariants, which specify how the abstract invariant is implemented We’ll also discuss how abstraction functions map the concrete representation of an ADT to the abstract value

Javadoc Documentation Tool made by Oracle for API documentation We’ve already seen Javadoc for external class specification Method specifications will describe method behavior in terms of preconditions and postconditions

Javadoc Method Tags @requires: the statements that must be met by the method’s caller @return: the value returned by the method, if any @throws: the exceptions that may be raised, and under which conditions @modifies: the variables that may change because of the method @effects: the side effects of the method

Javadoc Method Tags If @requires is not met, anything can happen False implies everything The conditions for @throws must be a subset of the precondition Ex: If a method @requires x > 0, @throws should not say anything about x < 0 @modifies lists what may change, while @effects indicates how they change If a specification field is listed in the @modifies clause but not in the @effects clause, it may take on any value (provided that it follows the abstract invariant) If you mention a field in @modifies, you should try to specify what happens in @effects