Content deleted Content added
Replaced confusing example with something hopefully clearer |
simplify |
||
(18 intermediate revisions by 15 users not shown) | |||
Line 1:
{{Short description|Concepts in statistics and computer science}}
{{one source |date=March 2024}}
An '''Aggregate pattern''' can refer to concepts in either statistics or computer programming. Both uses
== Statistics ==
An aggregate pattern is an important statistical concept in many fields that rely on [[statistics]] to predict the behavior of large groups, based on the tendencies of subgroups to consistently behave in a certain way. It is particularly useful in [[sociology]], [[economics]], [[psychology]], and [[criminology]].
== Computer programming ==
In ''[[Design Patterns]]'', an aggregate is not a [[Software design pattern|design pattern]] but rather refers to an object such as a list, vector, or generator which provides an interface for creating [[iterator]]s. The following example code is in [[Python (programming language)|Python]].▼
<syntaxhighlight lang="python">
def fibonacci(n: int):▼
▲In [[Design Patterns]], an aggregate is not a design pattern but rather refers to an object such as a list, vector, or generator which provides an interface for creating [[iterator]]s. The following example code is in [[Python (programming language)|Python]].
a, b = 0, 1▼
while count < n:▼
yield a▼
▲def fibonacci(n):
▲ a,b = 0,1
▲ count = 0
▲ while count < n:
▲ count += 1
▲ yield a
for x in fibonacci(10):
def fibsum(n: int) -> int:
total = 0
for x in fibonacci(n):
total += x
return total
def fibsum_alt(n: int) -> int:
"""
return sum(fibonacci(n))▼
works with arbitrary iterators.
"""
▲ return sum(fibonacci(n))
myNumbers = [1, 7, 4, 3, 22]
def average(g) -> float:
return float(sum(g)) / len(g) #
</syntaxhighlight>
Python hides essentially all of the details using the [
▲Python hides essentially all of the details using the [http://www.python.org/doc/lib/typeiter.html iterator protocol]. Confusingly, [[Design Patterns]] uses "aggregate" to refer to the blank in the code <code>for x in ___:</code> which is unrelated to the term "aggregation" <ref>[[Design Patterns]], p. 22: "Aggregation implies that one object owns or is responsible for another object. ... Aggregation implies that an aggregate object and its owner have identical lifetimes.</ref>. Neither of these terms refer to the statistical aggregation of data such as the act of adding up the Fibonacci sequence or taking the average of a list of numbers.
== See also ==
* [[Visitor pattern]]
* [[Template class]]
Line 55 ⟶ 47:
* [[Type safety]]
* [[Functional programming]]
== References ==
{{Reflist}}
[[Category:Software design patterns]]
[[Category:Articles with example
{{statistics-stub}}
|