Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #31243

Re: About concurrency and functional programming

From Robbie Brown <rob@example.com>
Newsgroups comp.lang.java.programmer
Subject Re: About concurrency and functional programming
Date 2015-03-01 08:41 +0000
Organization A noiseless patient Spider
Message-ID <mcuja6$g6o$1@dont-email.me> (permalink)
References <mcqnmv$9it$5@dont-email.me> <mcqogt$cea$8@dont-email.me> <mct30s$qhh$1@dont-email.me> <mctboa$tg5$1@dont-email.me> <mcttfj$pra$1@dont-email.me>

Show all headers | View raw


On 01/03/15 02:28, Jerry Stuckle wrote:
> On 2/28/2015 4:26 PM, Robbie Brown wrote:
>> On 28/02/15 18:56, Joshua Cranmer 🐧 wrote:
>>> On 2/27/2015 6:45 PM, Ramine wrote:
>>>> You will notice that "Bartosz Milewski" is saying that object oriented

<snip>

>>>
>>> I don't know where you learned object-oriented programming, but however
>>> much it cost you was a waste of money if you passed without being able
>>> to distinguish between composition and inheritance.
>>
>> hmm
>>
>> Thinking abstractly, inheritance is a perfectly valid way of
>> implementing composition. In fact, we can look on inheritance as the
>> purest form of composition (in an Object Oriented paradigm). An instance
>> of a subclass cannot exist without the superclass extant, the subclass
>> is (in part) *composed* of the superclass.
>>
>> How do you 'distinguish between composition and inheritance'?
>> (as opposed to distinguishing between composition and aggregation)
>> they are two entirely different (but ultimately, often connected) concepts.
>>
>> I do agree that the OP has a somewhat 'unique' way of putting his/her
>> ideas across to say the least.
>>
>>
>
> I would strongly disagree with this.  Inheritance and composition are
> two entirely different things, with two entirely different approaches to
> programming.  About the only thing they have in common is there is some
> kind of relationship between the parts.  But what kind of relationship
> is all important.
>
> Composition exists in virtually every programming language, including
> assemblers.  The elements of the composition have a "has-a" relationship
> with the object.  For instance, a Person has a Name, a BirthDate, and
> many other attributes.
>
> Inheritance, OTOH, exists only in Object Oriented languages such as
> Java, SmallTalk and C++.  The relationship between the base and the
> derived classes is an "is-a" relationship.  For instance, and Employee
> is always a Person and has the same attributes of a Person.  However,
> the Employee has additional attributes such as StartDate, CurrentSalary
> and others.
>
> It's easy to get composition and inheritance mixed up - but even in the
> most abstract case they are not the same thing.

Actually, I find that people often get composition and aggregation mixed 
up, personally I can never remember which UML diamond to use for each, 
filled or outlined, I have to write it down :-(

Anyway, here's a thing
(compiles in Eclipse Kepler with compliance = 8)

class A{
    protected Integer state = 99;
}

abstract class B {
	
    protected A a;

    public B() {
       a = new A();
    }
}

class C extends B{

}

public class D{
	
    public static void main(String[] args){
	
       C c = new C();
       B b;
       b = c;
       Integer x = c.a.state;
       Integer y = b.a.state;
       System.out.printf("%d", x);
       System.out.printf("%d", y);
       //prints 9999
    }
}

So, I think we probably agree that B has a composite relationship
with A, C has an inheritance relationship with B, B is a composite.

C 'is a' B. Is C composite by inheritance?

C is certainly 'a B' but B can't 'exist' without C and dies when C dies. 
In at least one way, C 'owns' B. B has no meaning or purpose in the 
system without C, a classic description of composition.

Just a thought.


-- 
Not floundering ... just fishing

Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

Re: About concurrency and functional programming Joshua Cranmer 🐧 <Pidgeot18@verizon.invalid> - 2015-02-28 12:56 -0600
  Re: About concurrency and functional programming Robbie Brown <rob@example.com> - 2015-02-28 21:26 +0000
    Re: About concurrency and functional programming Jerry Stuckle <jstucklex@attglobal.net> - 2015-02-28 21:28 -0500
      Re: About concurrency and functional programming Robbie Brown <rob@example.com> - 2015-03-01 08:41 +0000
        Re: About concurrency and functional programming Robert Klemme <shortcutter@googlemail.com> - 2015-03-01 12:34 +0100
          Re: About concurrency and functional programming Robbie Brown <rob@example.com> - 2015-03-01 14:26 +0000
            Re: About concurrency and functional programming Joerg Meier <joergmmeier@arcor.de> - 2015-03-01 15:30 +0100
              Re: About concurrency and functional programming Robbie Brown <rob@example.com> - 2015-03-01 14:31 +0000
            Re: About concurrency and functional programming Robbie Brown <rob@example.com> - 2015-03-01 14:30 +0000
            Re: About concurrency and functional programming Jerry Stuckle <jstucklex@attglobal.net> - 2015-03-01 11:29 -0500
              Re: About concurrency and functional programming Robbie Brown <rob@example.com> - 2015-03-01 17:07 +0000
                Re: About concurrency and functional programming Joerg Meier <joergmmeier@arcor.de> - 2015-03-01 20:12 +0100
                Re: About concurrency and functional programming Robbie Brown <rob@example.com> - 2015-03-01 20:31 +0000
                Re: About concurrency and functional programming Jerry Stuckle <jstucklex@attglobal.net> - 2015-03-01 16:13 -0500
                Re: About concurrency and functional programming Jerry Stuckle <jstucklex@attglobal.net> - 2015-03-01 16:11 -0500
                Re: About concurrency and functional programming Jerry Stuckle <jstucklex@attglobal.net> - 2015-03-01 16:17 -0500
    Re: About concurrency and functional programming Joshua Cranmer 🐧 <Pidgeot18@verizon.invalid> - 2015-03-01 12:03 -0600

csiph-web