I find the most valuable thing to do when designing julia code is to focus 
purely on "verbs", not "nouns".  This means focusing on the action... NOT 
the object that is acting.  In julia, you can do fun stuff like:

julia> type Car end

julia> speed(::Car) = 60
speed (generic function with 1 method)

julia> type Plane end

julia> speed(::Plane) = 500
speed (generic function with 2 methods)

julia> function move(pointA, pointB, tools...)
           speeds = map(speed, tools)
           idx = findmax(speeds)[2]
           println("""I don't always go fast, but when I do, I prefer a 
$(lowercase(string(typeof(tools[idx])))).
              I am... the most interesting coder in the world.""")
       end
move (generic function with 1 method)

julia> move(1, 2, Car(), Plane())
I don't always go fast, but when I do, I prefer a plane.
I am... the most interesting coder in the world.

julia> type Teleporter end

julia> speed(::Teleporter) = Inf
speed (generic function with 3 methods)

julia> move(1, 2, Car(), Plane(), Teleporter())
I don't always go fast, but when I do, I prefer a teleporter.
I am... the most interesting coder in the world.

The point with this silly example is that, in OO, you would first start 
thinking about all the things that your transportation tools can do, and 
about heirarchies of "well, a plane is kind of like a car, and, well, kind 
of like a bird.  I know, I'll inherit from both!"  But really you should 
think about the important actions and attributes, and the hierarchy and 
interactions between objects will follow naturally. 


On Thursday, May 12, 2016 at 3:34:23 PM UTC-4, Ford Ox wrote:
>
> I did read those and it didn't make it much clearer to me. (Hell I didn't 
> even know what is coupling until this Thursday morning)
> That's why am I asking for example and possibly some page on this topic in 
> docs, since I have been programming in OO languages all my short 
> programmers life and Julia comes with completely different approach. 
> Some things from OO can be achieved by different approach, some things 
> can't be achieved and shouldn't be even tried to. 
> I don't want to reinvent the wheel. I don't wanna try make Julia OO. But I 
> want coupling / nicely distributed code into multiple files (that's why OO 
> exist in the first place right?).
>
> And I am sure that many people joining julia (especially with v1.0) will 
> be asking the same question. Therefore I would expect some official guide 
> at one visible place (which this thread is no more).
>
> Dne čtvrtek 12. května 2016 19:40:06 UTC+2 David Anthoff napsal(a):
>>
>> Do a search for “encapsulation” in this google group and you’ll find 
>> quite a number of discussions on some of the design philosophies around 
>> this topic, many from the julia devs.
>>
>>  
>>
>> *From:* [email protected] [mailto:[email protected]] *On 
>> Behalf Of *Ford Ox
>> *Sent:* Thursday, May 12, 2016 10:20 AM
>> *To:* julia-users <[email protected]>
>> *Subject:* [julia-users] Re: Julia large project example.
>>
>>  
>>
>> I am sorry for those words. The idea of that sentence should have been:
>>
>> "Your approach looks like a big no no. 
>> Could julia devs share their idea of how should apple encapsulation 
>> achieved? Since they are the one, who invented this language, they had to 
>> consider *encapsulation* many times already, so they should be the very 
>> first person who gives advice on this particular topic (since nobody 
>> answered this topic well one comes to conclusion that they are also the 
>> only one who can answer it)."
>>
>> Thank you for your time and patience devoting to my questions.
>>
>> Dne čtvrtek 12. května 2016 18:52:22 UTC+2 Kristoffer Carlsson napsal(a):
>>
>> I am pretty sure the Julia developers can speak for themselves. A more 
>> humble approach would suit you well.
>>
>>

Reply via email to