f is for compsci 201 work nbody arraylists
play

F is for Compsci 201 Work, Nbody, ArrayLists Folder aka - PowerPoint PPT Presentation

F is for Compsci 201 Work, Nbody, ArrayLists Folder aka Directory where things are stored in Git Function Abstraction a method in Java Susan Rodger January 29, 2020 1/29/2020 Compsci 201, Spring 2020 1 1/29/2020


  1. F is for … Compsci 201 Work, Nbody, ArrayLists • Folder • aka Directory – where things are stored in Git • Function • Abstraction – a method in Java Susan Rodger January 29, 2020 1/29/2020 Compsci 201, Spring 2020 1 1/29/2020 Compsci 201, Spring 2020 2 PFTW Getting Things Done in 201 • Getting things done in 201 • What do these data mean for you, for me, for the • How to succeed and enjoy the effort community of 286 students in Compsci 201? • Mundane Java-isms • From char to autoboxing: primitives • What is this ? • Generic classes: How ArrayList works • Design, create, test, measure 1/29/2020 Compsci 201, Spring 2020 3 1/29/2020 Compsci 201, Spring 2020 7

  2. Object class, equals method From Last Time … • In JavaDoc Go over WOTO: Correctness Counts http://bit.ly/201spring20-0124-2 • Signature of equals method 1/24/2020 Compsci 201, Spring 2020 8 1/29/2020 Compsci 201, Spring 2020 9 @Override .equals Point inherits Object.equals • Create a new Point method • This doesn’t work for Point objects! • Use annotation @Override, help with errors • Default simply uses ==, no idea about points • a.equals(b) if a and b reference the same object boolean equals(Object o) { … • Two different (0,0) points not the same Must use this signature, to implement: • • Cast parameter appropriately • Compare instance fields 1/29/2020 Compsci 201, Spring 2020 10 1/29/2020 Compsci 201, Spring 2020 11

  3. Point equals fixed! Contract for Equality • Must use same signature • Reflexive x.equals(y) then y.equals(x) • Must cast Object to Point • Transitivity: x.eq(y), y.eq(z) then x.eq(z) • Check x.equals(x) as a special case with == • Check this.getClass() == o.getClass() • Don’t want to have an apple == orange • Cast Object parameter and use instance variables • See Point as example 1/29/2020 Compsci 201, Spring 2020 12 1/29/2020 Compsci 201, Spring 2020 16 Amanda Randles, Duke 2005 Reading Points • ACM Grace Murray Hopper Award (<= 35 yo) • We'll typically use a Scanner to read values • Use .hasNext(),.hasNextDouble(), … For developing HARVEY, a massively parallel circulatory simulation code capable of modeling the • If/while there's more to read? Call .next() full human arterial system at subcellular resolution and fostering discoveries that will serve as a basis for improving the diagnosis, prevention, and treatment of human diseases. • Method .next() returns a String //XXX and Amanda Peters • Method .nextDouble() returns a double … //Compsci 100: Huffman Coding //November 19, 2002 I felt like working in a pair was a really successful way to complete the program. It • See PointReader.java class, useful in NBody helped the most when it came to working out basic logic and finding errors. I found it really helpful because he often would see the basic logic to the code and I could help more with the implementation. I feel like it was a successful group and we both contributed a lot. 1/29/2020 Compsci 201, Spring 2020 17 1/29/2020 Compsci 201, Spring 2020 18

  4. Scanner Sources for Reading Scanner hasNext and next • Construct a Scanner from System.in • Think about scanner as a long reel/source of data • If .hasNext() returns true, there is • Reads from keyboard/console something to read by Scanner cursor/reader • .hasNextX() true until end-of-file OR no X • Calling .next() returns and advances cursor • Control-D on OS X, Control-Z on Windows • Construct a Scanner from a File • Scanner object maintains cursor internally • Source: file, String, terminal, … … • Reads from file, exception could happen • .hasNextX() true until all of file read OR no X • Each call of .nextX() returns the next X, internally the Scanner "remembers" where it last read 1/29/2020 Compsci 201, Spring 2020 19 1/29/2020 Compsci 201, Spring 2020 20 N-Body Simulation Class CelestialBody • Class CelestialBody represents Celestial Body • Illustrates standard Java idioms • Planet, Sun, Asteroid • Constructors, Methods, Instance Variables • Models an object in 2D space, not 3D • State is private: six instance variables • myXPos , … using my convention - this object • Position, Velocity, Mass, Image for display • Initialized by constructors • Class NBody drives the simulation • Methods are public • Compute gravitational forces: physics • Include accessors aka getters for state • No setters , cannot change myXPos other than • Time-step simulation via the update method, a mutator • compute all forces, update ,display 1/29/2020 Compsci 201, Spring 2020 21 1/29/2020 Compsci 201, Spring 2020 22

  5. The Object Concept NBody numbers • Every instance variable and every non-static method accessed/called after Object.Dot • Floating point issues, problems, quandaries • b.getX(), b.calcForcExertedBy(other) • When is (a + b) + c != a + (b + c) • When is a/b * c != a*c / b • From within a class, e.g., CelestialBody • Watch for this in Gradescope tests!! • myXPos , getX(),this.myXPos , • All are equivalent as is this.getX() • Some prefer always using this. – clearer? 1/29/2020 Compsci 201, Spring 2020 23 1/29/2020 Compsci 201, Spring 2020 25 Debugging Arithmetic Debugging double Arithmetic • Order of operations with floating point values can • Integer values are not the same as Double values result in overflow, underflow, more • 1/0 is … whereas 1.0/0 is … • Small number + Big number … 1/29/2020 Compsci 201, Spring 2020 26 1/29/2020 Compsci 201, Spring 2020 27

  6. Now look at DNAMaxNucleotide Completing NBody • Return the strand from strands array with most • Please read the TL;DR document occurrences of nucleotide nuc. Return longest • Test at each step, push constantly using Git such strand • After using supplied Test… classes, proceed to simulation • Must be able to read data file to simulate • Understand the basics, read carefully • Example • Analysis: complete before submitting to Gradescope for final submission 1/29/2020 Compsci 201, Spring 2020 28 1/29/2020 Compsci 201, Spring 2020 29 Algorithm - DNAMaxNucleotide Two Versions of Helper Method • Does this code make the algorithm clear? • Iterating over each character of a string • Why must count be a helper method? • Note that nuc is a one-character string • Why can't max = 0 before loop? • How does s.substring(a,b) work? 1/29/2020 Compsci 201, Spring 2020 30 1/29/2020 Compsci 201, Spring 2020 31

  7. WOTO Critique of another implementation • Where does this solution come from? http://bit.ly/201spring20-0129-1 • Strings are immutable, s.replace(…) • Replace every "a" with "" (nothing) • Is this better? Different? More clever? More of a hack? … 1/29/2020 Compsci 201, Spring 2020 32 1/29/2020 Compsci 201, Spring 2020 33 Donald Knuth From Array to ArrayList • aka “The Donald” • Have int[], String[], CelestialBody[] • Turing award (and others) • Array of any type, but doesn't grow • Author of “The Art of • Can't use .contains with array, can't print Computer Programming” • The java.utils.Arrays class has some help • Arguably most important book written in Computer Science • First publication: Mad Magazine If you optimize everything you will always be unhappy. Everyday life is like programming, I guess. If you love something you can put beauty into it. https://www.youtube.com/watch?v=cK7yyjXfbc4 1/29/2020 Compsci 201, Spring 2020 34 1/29/2020 Compsci 201, Spring 2020 35

  8. java.util.ArrayList From Array to ArrayList • Growable array with many useful methods • Can make conversion with Object, e.g., String https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/List.html • • Use Arrays.asList as a bridge, be careful • Can only contain Object types (no primitives) • Convert from array? • Arrays.asList • It's a List! • String yes, int no 1/29/2020 Compsci 201, Spring 2020 36 1/29/2020 Compsci 201, Spring 2020 37 Primitive Array? do it yourself Objects, Primitives, Arrays/Lists • array can hold any type: int[], String[] • No bridge from Arrays.asList since primitive • ArrayList only Object types, not primitives • Loop and use autoboxing/unboxing • Conversion of int to Integer and vice versa • Autoboxing allows for add/get int ::: Integer • ArrayList<Object > a, a.toArray(…) array • Syntax is not intuitive, see examples in code • Arrays.asList(Object[]) to ArrayList • Actually returns List , not ArrayList , … 1/29/2020 Compsci 201, Spring 2020 38 1/29/2020 Compsci 201, Spring 2020 39

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend