Byte magazine

=== Smalltalk ===
https://archive.org/details/byte-magazine-1981-08 See p.74 Object-Oriented Software Systems
by David Robson
=== Larry Tesler ===
https://archive.org/details/byte-magazine-1986-08 articles on object oriented languages p.227 Larry Tesler "... certain kind of enhancements can be made simply by creating new object types as variations of existing ones." 
see pages 162
=== 162 ===
rocedure invoked is fixed at compile
time.
This model of object-oriented programming
can be improved. As presented
thus far. the addition of a new
type of object requires writing entirely
new procedures for common operations
such as Print. What's worse is
that there will be a great deal of
similarity between different Print
methods. requiring continual rewrites
of methods that differ slightly or not
at all. This burden is likely to be so
great that programmers would avoid
the creation of new object types.
significantly
reducing the practical
usefulness of object-oriented programming
systems. Inheritance is a
mechanism that largely relieves programmers
of this burden.
INHERITANCE
Inheritance enables programmers to
create classes and. therefore. objects
that are specializations of other objects.
For example. you might create
an object. Trumpet. that is a specialization
of a Brass! nstrument.
which is a specialization of a WindInstrument.
which is a specialization
of Musicallnstrument. etc. A Trumpet ·
inherits behavior that is appropriate
for Brassl nstruments. Windl nstruments.
and M usical l nstruments.
Creating a specialization of an existing
class is called subclassing. The new
class is a subclass of the existing class.
and the existing class is the superclass
of the new class. The subclass inherits
instance variables. class variables. and
142 BYTE • AUGUST 1 986
PROGRAMMING ELEMENTS
methods from its superclass. The subclass
may add instance variables. class
variables. and methods that are appropriate
to more specialized objects.
In addition. a subclass may override
or provide additional behavior to
methods of a superclass. Methods are
overridden when you provide a new
method for an old method's selector.
The mechanism to add new behavior
to an existing method tends to
be language-dependent. In those languages
most closely modeled after
Smalltalk. this is accomplished by
embedding a message-send to the
pseudovariable super in the new definition
of a method (see the text box
"Pseudovariables" on page 1 44). For
example. suppose you have an initialization
method. initial ize. defined in a
superclass. If a subclass adds some instance
variables. x and y, that must
also be initialized to zero. then both
initialization behaviors will be exhibited
by the following method:
initial ize
super initial ize.
X +- y +- 0.
The initialization in the superclass
is performed. followed by the added
initialization behavior. Depending on
the placement of the message-send
to super. the new behavior may
precede. follow. or surround the existing
behavior.
Inheritance enables programmers
to create new classes of objects by
specifying the differences between a
new class and an existing class instead
of starting from scratch each
time. A large amount of code can be
reused this way.
ADVANTAGES
Object-oriented languages have many
advantages over more traditional
procedure-oriented languages. Information
hiding and data abstraction increase
reliability and help decouple
procedural and representational specification
from i mplementation.
Dynamic binding increases flexibility
by permitting the addition of new
classes of objects (data types) without
having to modify existing code. Inheritance
coupled with dynamic binding
permits code to be reused. This
(conti
=== 172 ===
:"...An object is a package of data and procedures that belong together. Specifically, all constants and the contents of all variables are objects ...." 
Translation into English: An object is a metaphor for stuffing the procedures into the struct(now called a class). Both the hash table and functions mapping them are still separate entities, with the term 'object' used to refer to either the data or the functions or the action of the functions mapping inputs to outputs. "Belong together" means that each function takes as its first parameter a pointer to the Datatypes.
You now know enough that we can explain more Smalltalk
lingo. The terms "method" and "message selector"
were invented while asking the question, "How do we
select the method an object will use to respond to this
message?" The answer is. "Use the selector to find the
right method to execute:·
If you talk to yourself while you read code (don't be
bashfuL everyone does), then you need to know how to
"talk" Smalltalk. The phrase height > 0 does exactly what
you think it does. and you can pronounce it j ust the way
you would in other languages ("height is greater than
zero"), but it is really shorthand for "the object height
receives the message greater-than with the argument
zero:·
When an object receives a message, it looks up the message
name to see if it understands the message. If the message
is found, it starts executing the method that tells how
to respond to the message.
Just as a Pascal procedure may call other procedures,
a method may need to caJI other methods. The way to
start another method is to send a message to an object.
Sometimes you want to send a message to the same object
that received the current message. How is that object
named locaJiy? In other words, when a Smalltalk object
talks to itself. what does it call itself? Why, self, naturally.
Not surprisingly, messages to self are common. You can
see them sprinkled throughout the program in listing 2a.
When a piece of code happens to send a message to the
same selector as the current method. the program is using
recursion.
The method moveDisk:to: in listing 2b includes a couple
'
of new things. The System Transcript is a window on
the screen. It behaves like a traditional character-oriented
terminal. The object that represents the transcriptis held
in the global variable, Transcript. The message cr tells the
transcript to append a carriage return. The message show:
takes a string as an argument and appends it to the transcript.
It also redisplays the text in the transcript windo
=== links ===
Lost in space syndrome
dave thomas
oop
Noun
Nouns and verbs oop
Category:Oop