Difference between revisions of "DoubleDeltaRange"

From CSE231 Wiki
Jump to navigation Jump to search
 
(6 intermediate revisions by one other user not shown)
Line 1: Line 1:
 
=Motivation=
 
=Motivation=
Experience implementing the Iterable<T> interface.
+
Experience implementing the [https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html Iterable<T>] and [https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html Iterator<T>] interfaces.
  
 
=Mistakes To Avoid=
 
=Mistakes To Avoid=
Line 6: Line 6:
  
 
=Investigate=
 
=Investigate=
interface [https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html Iterable<T>]
+
* interface [https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html Iterable<T>]
 +
* interface [https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html Iterator<T>]
  
interface [https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html Iterator<T>]
+
<youtube>4ycpqdJ4yb4</youtube>
 
 
<youtube>Dww-_5EiwA8</youtube>
 
  
 
=Code to Implement=
 
=Code to Implement=
Line 16: Line 15:
 
To implement this class you will need to declare and initialize fields.  You should '''NOT''' create a List<Double> and fill it with the necessary values.  The iterator should produce each next value live.
 
To implement this class you will need to declare and initialize fields.  You should '''NOT''' create a List<Double> and fill it with the necessary values.  The iterator should produce each next value live.
  
<pre>class DoubleRange implements Iterable<Double></pre>
+
<pre>class DoubleDeltaRange implements Iterable<Double></pre>
  
{{CodeToImplement|DoubleRange|constructor<br/>iterator()|doublerange.warmup}}
+
{{CodeToImplement|DoubleDeltaRange|constructor<br/>iterator()|iteration.doubledelta.group}}
  
 
===constructor===
 
===constructor===
{{Sequential|public DoubleRange(double minInclusive, double maxExclusive, double delta)}}
+
{{Sequential|public DoubleDeltaRange(double minInclusive, double maxExclusive, double delta)}}
  
 
===iterator()===
 
===iterator()===
Line 27: Line 26:
  
 
Although, you can create a named class, we encourage you to use this opportunity to create an instance of an [https://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html anonymous class] here.
 
Although, you can create a named class, we encourage you to use this opportunity to create an instance of an [https://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html anonymous class] here.
 +
 +
Note: if you type the following, and hover over the red line, IntelliJ will offer you to "Implement methods" necessary to create an anonymous inner class. You only need to override the '''hasNext()''' and '''next()''' methods.
 +
<nowiki>return new Iterator<>() {
 +
      // Implement/Override necessary methods
 +
};</nowiki>
  
 
=Testing Your Solution=
 
=Testing Your Solution=
 +
==Client==
 +
{{Client|DoubleDeltaRangeClient|iteration.doubledelta.client|main}}
 +
 +
<nowiki>DoubleDeltaRange range = new DoubleDeltaRange(3.0, 5.0, 0.25);
 +
for (double d : range) {
 +
System.out.println(d);
 +
}</nowiki>
 +
 +
should produce the output:
 +
 +
<nowiki>3.0
 +
3.25
 +
3.5
 +
3.75
 +
4.0
 +
4.25
 +
4.5
 +
4.75</nowiki>
 +
 
==Correctness==
 
==Correctness==
{{TestSuite|DoubleRangeTestSuite|doublerange.warmup}}
+
{{TestSuite|_DoubleDeltaRangeTestSuite|iteration.doubledelta.group}}

Latest revision as of 21:35, 31 January 2023

Motivation

Experience implementing the Iterable<T> and Iterator<T> interfaces.

Mistakes To Avoid

Attention niels epting.svg Warning: Do NOT Parallelize

Investigate

Code to Implement

DoubleRange

To implement this class you will need to declare and initialize fields. You should NOT create a List<Double> and fill it with the necessary values. The iterator should produce each next value live.

class DoubleDeltaRange implements Iterable<Double>
class: DoubleDeltaRange.java Java.png
methods: constructor
iterator()
package: iteration.doubledelta.group
source folder: student/src/main/java

constructor

method: public DoubleDeltaRange(double minInclusive, double maxExclusive, double delta) Sequential.svg (sequential implementation only)

iterator()

method: public Iterator<Double> iterator() Sequential.svg (sequential implementation only)

Although, you can create a named class, we encourage you to use this opportunity to create an instance of an anonymous class here.

Note: if you type the following, and hover over the red line, IntelliJ will offer you to "Implement methods" necessary to create an anonymous inner class. You only need to override the hasNext() and next() methods.

return new Iterator<>() {
      // Implement/Override necessary methods
};

Testing Your Solution

Client

class: DoubleDeltaRangeClient.java CLIENT
package: iteration.doubledelta.client
source folder: student/src/main/java
DoubleDeltaRange range = new DoubleDeltaRange(3.0, 5.0, 0.25);
for (double d : range) {
	System.out.println(d);
}

should produce the output:

3.0
3.25
3.5
3.75
4.0
4.25
4.5
4.75

Correctness

class: _DoubleDeltaRangeTestSuite.java Junit.png
package: iteration.doubledelta.group
source folder: testing/src/test/java