On Tue, 26 Jun 2001, Eric Jacoboni wrote:

> In fact, "my head" has some problem to justify that there is two
> objects of different classes that can be assigned to each other (i'm
> rather experienced with strong typing languages).

But you don't assign a class to another class. You assign it to a name.
Think of the name as a sticky label to put on the class at assignment, if
that helps.

a = Something.new()
b = Something.new()
c = a

c and a are labels stuck on the same object. b is stuck on another object.

Does this help?
> 
> I was considering using Ruby to teach OOP concepts to students but i
> don't know how i could justify this behaviour : the "class membership"
> concept seems difficult to grasp because of dynamic typing of Ruby and

That is different.  Class membership is about what methods an object will
respond to. a and b above will respond to all the methods of Something.
If 
class AnotherThing < Something
	#...
end
then 
d = AnotherThing.new()

d will respond to those methods as well.

> one of the main advantage of OOP is this concept (from my point of
> vue). I admit my poor knowledge of the language but it's difficult to me
> to admit that we can create a class tree and, then, forget it by just
> assigning things to others.

If you are talking about setting values of instance variables in a class you
can ensure they are done through method calls, and only those with access can
do it.  This has all the advantages you want from OO.
> 
> Dynamic typing has a lot of advantages, but for educationnal issues,

Except you may want to educate people about dynamic languages....

> it may hurt. Don't know the Eiffel language (it's the one the students
> are currently using to learn OOP concepts), i thought i could use Ruby
> instead, that's all... Seems it's not a good idea.
> -- 
> ±Óic Jacoboni, nil y a 1296993161 secondes
> 
	Hugh