> For the complete documentation index, see [llms.txt](https://kdoore.gitbook.io/cs1335-java-and-processing/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://kdoore.gitbook.io/cs1335-java-and-processing/object-oriented-programming/oop-vs-data-flow.md).

# OOP vs Data-Flow

Two main programming paradigms are Object-Oriented and Data-Flow.\
Many visual programming languages actually use a combination of both. &#x20;

### Data Flow

The data flow paradigm is commonly used for design software in fields like architecture, sound design, graphic design, 3-D modeling.  Data flow is the primary paradigm associated with Parametric Design, where each Logic-Node has input, output ports where data streams can be connected

![NodeBox:  Data-flow Geometric Output on Left, with Node-Link Graph on Right](https://2308964916-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M0-KLgIQowgQ2sRmRGm%2F-M3pOWflcppiZ4Wf3Z0U%2F-M3pW3Azdi6-yvpW5FiM%2FScreen%20Shot%202020-04-01%20at%206.32.39%20AM.png?alt=media\&token=3c83a855-e13c-4a17-b81b-f87966830bab)

### Examples of Data-Flow Software:

2D Design: [NodeBox](https://www.nodebox.net/node/): Visual Programming Language for Geometric Forms:  Free and Open-source

3D Modeling:  Rhino3D: Grasshopper, Shader Forge

Sound Design:  MAX-MSP, Pure-Data

### [Rhino3D Grasshopper ](https://www.grasshopper3d.com/)

![](https://gblobscdn.gitbook.com/assets%2F-M0-KLg_ficxV7B_8SgA%2F-M0-KNNPhCRj2ku0AG0P%2F-M0-KQSbEI8Qr2UyFXqp%2FScreenshot%202017-10-04%2010.12.25.png?generation=1581627357885074\&alt=media)

![](https://gblobscdn.gitbook.com/assets%2F-M0-KLg_ficxV7B_8SgA%2F-M0-KNNPhCRj2ku0AG0P%2F-M0-KQS_R63_2Ycxf8s9%2FScreenshot%202017-10-04%2007.01.36.png?generation=1581627356719024\&alt=media)

![](https://gblobscdn.gitbook.com/assets%2F-M0-KLg_ficxV7B_8SgA%2F-M0-KNNPhCRj2ku0AG0P%2F-M0-KREbzAF8nnutL2HU%2Frhino_Small.png?generation=1581627360988499\&alt=media)
