Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight
 
PerlMonks  

Re: Tutorial: Introduction to Object-Oriented Programming

by giulienk (Curate)
on Dec 10, 2002 at 15:20 UTC ( #218802=note: print w/ replies, xml ) Need Help??


in reply to Tutorial: Introduction to Object-Oriented Programming

I'm no expert in objects but i read in Re: Re: Perl falls victim to shifting trends(Opinions/Comments From The Other Side) (point 5) that Java doesn't bring objects to the limit as, for example, integers aren't really objects. Again i'm no authority in the field but maybe someone else could point out exactly what's the problem in your point 7 and Java as an OO example.


$|=$_="1g2i1u1l2i4e2n0k",map{print"\7",chop;select$,,$,,$,,$_/7}m{..}g


Comment on Re: Tutorial: Introduction to Object-Oriented Programming
Re: Re: Tutorial: Introduction to Object-Oriented Programming
by chromatic (Archbishop) on Dec 10, 2002 at 17:36 UTC

    You're right. Java has primitives that aren't objects. It does provide ways to promote primitives to real objects, though. For example, if you have an integer (primitive, doesn't really receive messages), you can promote it to an Integer (does receive messages).

    There's a little handwaving in here, because you can implement even primitive math in terms of messages.

Re: Re: Tutorial: Introduction to Object-Oriented Programming
by jreades (Friar) on Dec 10, 2002 at 21:59 UTC

    Java has both primitives and object-versions for each of the primitives. I think that the Java designers knew that they would have a mutiny if they forced everyone to write:

    Integer i = new Integer(3);

    So they gave you a short-hand way (that doesn't give you the object functionality) which is:

    int i = 3;

    However, you can always promote your primitives to objects, and the primitives very limited (you can't even do string concatenation without using a StringBuffer object). Actually, to be more specific (since gjb rightly called me on this):

    • When you call the overloaded '+' on two String objects in Java, what is actually returned is an entirely new String that is the result of concatenating the two previous Strings (this is also the case when using '+=' -- you actually get back a new String object, not the old one with some new characters appended to it. Strings are essentially immutable in Java.)
    • This is why you would want to switch to a StringBuffer object when doing a lot of appending in Java, because that doesn't create a lot of new String objects unecessarily.

    Anyway, my point was really that Java likes to see the entire world as objects, even the things that we Perl users normally see as primitives, and that to really start to actually do anything in Java you're going to have to get used to objects pretty quickly.

    However, your point is well-taken and I'm going to be making some edits to my post to take in your (and others') feedback.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://218802]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (16)
As of 2014-10-24 16:19 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    For retirement, I am banking on:










    Results (133 votes), past polls