Component programming

Chris wendlec at tcd.ie
Mon Aug 19 04:26:42 PDT 2013


On Monday, 12 August 2013 at 12:28:36 UTC, Jason den Dulk wrote:
> On Wednesday, 31 July 2013 at 10:20:57 UTC, Chris wrote:
>> This is only losely related to D, but I don't fully understand 
>> the separation of component programming and OOP
>
> What the wikipedia entry is saying, in a roundabout way is:
>
> All objects are components, but not all components are objects.
>
> whereas in pure OOP:
>
> All components are objects.
>
>> In an OO framwork, the objects are basically components.
>
> It's the other way around. In OOP frameworks, components are 
> objects, a small but important distinction. If you relax the 
> insistance on all components being objects, then OOP becomes a 
> subset of CP (component programming).
>
>> Walter's example 
>> (http://www.drdobbs.com/architecture-and-design/component-programming-in-d/240008321)
>>
>> void main() {
>>        stdin.byLine(KeepTerminator.yes)    // 1
>>        map!(a => a.idup).                  // 2
>>        array.                              // 3
>>        sort.                               // 4
>>        copy(                               // 5
>>            stdout.lockingTextWriter());    // 6
>>    }
>
> This is a design pattern called "pipes and filters", or simply, 
> the pipeline. There appears to be a bit of confusion about 
> this. Pipelines are a part of CP, but is not the whole of CP.
>
> Pipelines make use of a type of component called a "service". 
> At its simplest, a service is a function, but it could be a 
> larger construct or even a whole program. Basically a service 
> takes input, processes it (with a possible side effect) and 
> gives a response (output).
>
> Often CP is defined as being exclusively about services, while 
> other definitions include objects and OOP. Functional 
> programming is exclusively service oriented.
>
> Purists would insist on using either objects or services 
> exclusively (OOP vs FP), but there is nothing wrong with 
> working with both.
>
> Back to pipelines. In a pipeline, you have a chain of services 
> in which the output of one service is given as the input for 
> the next. In mathematics it is called "functional composition". 
> The pipeline itself is a service in its own right. You can put 
> together a pipeline of any length as long as the output -> 
> input interfaces are compatible. In Walter's article, he goes 
> further to make all interfaces the same to make the components 
> interchangeable, but this is not necessary in general.
>
> Hope this helps to explain a few things.
> Regards
> Jason


Thanks for the explanation, Jason.

Btw, I got an error message compiling dcal.d with ldmd2

dcal.d(34): Error: no property 'recurrence' for type 'Date'

It compiles with dmd and works.


More information about the Digitalmars-d mailing list