[#400858] Support for multiple Inheritance by classes — Ross Konsolebox <lists@...>

Will Ruby ever support multiple inheritance through classes instead of

23 messages 2012/11/03
[#400859] Re: Support for multiple Inheritance by classes — Arlen Cuss <ar@...> 2012/11/03

I think I can say "no" with a fair amount of confidence.

[#400902] Re: Support for multiple Inheritance by classes — Ross Konsolebox <lists@...> 2012/11/04

Arlen Cuss wrote in post #1082618:

[#400904] Re: Support for multiple Inheritance by classes — Peter Hickman <peterhickman386@...> 2012/11/04

Even though other languages handle multiple inheritance without any

[#400865] why does UnboundMethod need to remember the class it was retrieved from (not merely owner)? — "Mean L." <lists@...>

class Base; def foo; end end

17 messages 2012/11/03

[#400914] login web page using mechanize — john smith <lists@...>

new to ruby, love the language. read programmatic programmers guide to

25 messages 2012/11/04

[#400985] How to merge two or more hashes in to one? — "Jermaine O." <lists@...>

Hi everyone.

14 messages 2012/11/06

[#401026] Site down watir-webdriver — ajay paswan <lists@...>

Whenever a site is down it keeps on looking for it for sometime and

14 messages 2012/11/07

[#401027] Closing popups watir-webdriver — ajay paswan <lists@...>

Sometimes popup comes when a link is clicked, sometimes popup comes when

14 messages 2012/11/07

[#401125] Complete newbie — "Carlos A." <lists@...>

Hey guys!

14 messages 2012/11/10

[#401161] Convert date to string — Ferdous ara <lists@...>

Hi

12 messages 2012/11/11

[#401173] question on watir — Raj pal <lists@...>

I am automating Idit application using Ruby, at one screen I can't feed

233 messages 2012/11/12

[#401191] Extending Array instances — Charles Hixson <charleshixsn@...>

I'm trying to figure out a good way to extend an Array, when the items

17 messages 2012/11/12
[#401195] Re: Extending Array instances — Brian Candler <lists@...> 2012/11/12

Charles Hixson wrote in post #1084111:

[#401200] Efficient way for comparing records between 2 large files (16 million records) — Ruby Student <ruby.student@...>

Team,

9 messages 2012/11/12

[#401274] following along with "Beginning Ruby." — Al Baker <lists@...>

I'm having trouble following along with some of the examples in this

15 messages 2012/11/15

[#401279] Question on exceptions — Justin Gamble <lists@...>

Hello! I have a simple bank program where I have to have an exception

16 messages 2012/11/15
[#401281] Re: Question on exceptions — Justin Gamble <lists@...> 2012/11/15

What is the reason of doing the .new(...)in

[#401295] Re: Question on exceptions — Brian Candler <lists@...> 2012/11/16

Justin Gamble wrote in post #1084635:

[#401296] Re: Question on exceptions — tamouse mailing lists <tamouse.lists@...> 2012/11/16

On Fri, Nov 16, 2012 at 1:43 AM, Brian Candler <lists@ruby-forum.com> wrote:

[#401301] Alternatives to methods for large number of nested "ifs" — Philip Rhoades <phil@...>

People,

11 messages 2012/11/16

[#401336] Advice for simple client/server application — Panagiotis Atmatzidis <atma@...>

Hello,

12 messages 2012/11/17

[#401364] Metaprogramming — "Aurimas N." <lists@...>

Hello,

12 messages 2012/11/19

[#401404] "undefined method `synchronize' for #<Mutex:0xa0f5adc>" from embedded Ruby program — Graham Menhennitt <graham@...>

I'm writing a C++ program (on Centos 5 Linux) that embeds a Ruby 1.9.3

9 messages 2012/11/21

[#401422] how to increase variable inside the while loop — Ferdous ara <lists@...>

Hi, my question might be confusing as its hard for me to make it clear,

12 messages 2012/11/21

[#401451] Arrays with records as objects — Steve Tucknott <lists@...>

I am completely new to Ruby.

11 messages 2012/11/22

[#401458] working with mysql in ruby — john smith <lists@...>

i have been trying to successfully connect ruby with mysql. there are a

17 messages 2012/11/22

[#401567] click on link not working with ie #watir-webdriver — ajay paswan <lists@...>

Greetings,

12 messages 2012/11/26

[#401578] atomic statements in multithreading — ajay paswan <lists@...>

suppose I am working in multiple thread each thread runs following

10 messages 2012/11/26

[#401607] Novice: Understanding instance 'variables' and methods — Steve Tucknott <lists@...>

A question - or comment - on instance variables.

10 messages 2012/11/26

[#401644] Getting the smallest Items of an Array — "Ismail M." <lists@...>

Hello guys,

14 messages 2012/11/27

[#401655] gem problems(sigh) — Al Baker <lists@...>

i tried to make a gem and tried to build the spec file and this is what

10 messages 2012/11/28

[#401688] sorting data from a file — "Ismail M." <lists@...>

Hey guys,

16 messages 2012/11/28

[#401706] Newbie question: (free) on-line courses? — Ken D'Ambrosio <ken@...>

Hello, all. There's a bunch of free on-line training for Javascript,

11 messages 2012/11/28

Re: Support for multiple Inheritance by classes

From: Mohammed Yasin Rahman <Mohammed-Yasin.Rahman@...6.fr>
Date: 2012-11-07 09:33:53 UTC
List: ruby-talk #401017
I found this answer quite reasonable from this book: =
http://ruby.learncodethehardway.org/book/ex44.html .

The question of "inheritance vs. composition" comes down to an attempt =
to solve the problem of reusable code. You don't want to have duplicated =
code all over your code, since that's not clean and efficient. =
Inheritance solves this problem by creating a mechanism for you to have =
implied features in base classes. Composition solves this by giving you =
modules and the ability to simply call functions in other classes.

If both solutions solve the problem of reuse, then which one is =
appropriate in which situations? The answer is incredibly subjective, =
but I'll give you my three guidelines for when to do which:

Avoid meta-programming (multiple inheritance) at all costs, as it's too =
complex to be useful reliably. If you're stuck with it, then be prepared =
to spend time finding where everything is coming from.
Use composition to package up code into modules that is used in many =
different unrelated places and situations.
Use inheritance only when there are clearly related reusable pieces of =
code that fit under a single common concept, or if you have to because =
of something you're using.
However, do not be a slave to these rules. The thing to remember about =
object oriented programming is that it is entirely a social convention =
programmers have created to package and share code. Because it's a =
social convention, but one that's codified in Ruby, you may be forced to =
avoid these rules because of the people you work with. In that case, =
find out how they use things and then just adapt to the situation.


On Nov 6, 2012, at 10:04 PM, Robert Klemme <shortcutter@googlemail.com> =
wrote:

>=20
> On Mon, Nov 5, 2012 at 6:44 PM, Marc Heiler <lists@ruby-forum.com> =
wrote:
> There is one thing that is however not looked at much at
> all in this discussion - less the distinction between
> multiple inheritance vs. module mixins, and much more so
> what the distinction class vs. module actually serves.
>=20
> Because I often feel that the distinction between classes
> and modules is much more arbitrary than seems to be reasonable.
>=20
> The difference between class and module in Ruby is
> - classes can be instantiated, modules can't
> - classes can be inherited (SI), modules can be included (MI)
>=20
> Did I miss any?  Other than that both are identical (e.g. both can be =
used as namespace).  For me the more dramatic difference is actually the =
first one because despite the differences between SI and MI in Ruby it's =
just gradual (i.e. the number of items to inherit from - 1 for classes, =
n for modules).
>=20
> So if we assume for a moment that we agree on the most significant =
difference then it follows quite naturally (for me at least) that =
classes should be used for entities, tangible things while modules =
should rather be used for capabilities (behavior).  And I believe you =
can see that distinction at work in the standard library: there's Array =
which is a list of objects (entity) and Enumerable which is a set of =
capabilities.
> =20
> But why is that behaviour contained within a module? Why
> could we not assume that ALL behaviour of every object
> resides in an (perhaps invisible) module?
>=20
> Then we could use classes the same way as modules.
>=20
> I do not understand how this follows from the premise.  If all =
behavior would reside in modules than classes would not contain behavior =
at all.  But then classes and modules could not be used the same way.  =
What am I missing here?
> =20
> Why must there be this distinction between classes and
> modules in this way?
>=20
> I do not think there is a reason why the distinction "must" be there.  =
It's just what Matz designed the language to be.  I think the =
distinction I was trying to make above is actually not too unreasonable. =
 It seems so far it has served the language quite well so far.
>=20
> Kind regards
>=20
> robert
>=20
> --=20
> remember.guy do |as, often| as.you_can - without end
> http://blog.rubybestpractices.com/

In This Thread

Prev Next