Skip to content

Commit 776103e

Browse files
committed
add replace data value with object
1 parent ee2f287 commit 776103e

File tree

7 files changed

+87
-2
lines changed

7 files changed

+87
-2
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package com.danparkin.organizingdata.replacedatavaluewithobject;
2+
3+
import java.util.ArrayList;
4+
5+
public class Client {
6+
public static int numberOfOrdersFor(ArrayList<Order> orders, String customer) {
7+
int result = 0;
8+
for(Order order : orders) {
9+
if(order.getCustomer().equals(customer)) result++;
10+
}
11+
return result;
12+
}
13+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.danparkin.organizingdata.replacedatavaluewithobject;
2+
3+
public class Order {
4+
private String _customer;
5+
6+
public Order(String customer) {
7+
_customer = customer;
8+
}
9+
10+
public String getCustomer() {
11+
return _customer;
12+
}
13+
14+
public void setCustomer(String arg) {
15+
_customer = arg;
16+
}
17+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# Replace Data Value with Object
2+
3+
## Organizing Data
4+
5+
### Problem
6+
You have a data item that needs additional data or behavior.
7+
8+
### Solution
9+
Turn the data item into an object.
10+
11+
---------------
12+
Order
13+
---------------
14+
customer:String
15+
16+
|
17+
|
18+
19+
---------- -----------
20+
Order <>------------> Customer
21+
---------- -----------
22+
name:String
23+
24+
Page 175 - Martin Fowler's "Refactoring - Improving The Design of Existing Code".

src/com/danparkin/selfencapsulatefield/IntRange.java src/com/danparkin/organizingdata/selfencapsulatefield/IntRange.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.danparkin.selfencapsulatefield;
1+
package com.danparkin.organizingdata.selfencapsulatefield;
22

33
public class IntRange {
44
private int _low;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package organizingdata;
2+
3+
import com.danparkin.organizingdata.replacedatavaluewithobject.Client;
4+
import com.danparkin.organizingdata.replacedatavaluewithobject.Order;
5+
import org.junit.Test;
6+
7+
import java.util.ArrayList;
8+
9+
import static junit.framework.TestCase.assertEquals;
10+
11+
public class ReplaceDataValueWithObjectTests {
12+
@Test
13+
public void calculates_the_correct_number_of_orders_for_a_given_customer() {
14+
String johnDoe = "John Doe";
15+
String janeDoe = "Jane Doe";
16+
Order first = new Order(johnDoe);
17+
Order second = new Order(johnDoe);
18+
Order third = new Order(johnDoe);
19+
Order fourth = new Order(janeDoe);
20+
ArrayList<Order> orders = new ArrayList<Order>() {{
21+
add(first);
22+
add(second);
23+
add(third);
24+
add(fourth);
25+
}};
26+
assertEquals(3, Client.numberOfOrdersFor(orders, johnDoe));
27+
assertEquals(1, Client.numberOfOrdersFor(orders, janeDoe));
28+
}
29+
}

src/test/SelfEncapsulateFieldTests.java src/test/organizingdata/SelfEncapsulateFieldTests.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
import com.danparkin.selfencapsulatefield.IntRange;
1+
package organizingdata;
2+
3+
import com.danparkin.organizingdata.selfencapsulatefield.IntRange;
24
import org.junit.Test;
35

46
import static junit.framework.TestCase.assertTrue;

0 commit comments

Comments
 (0)