| |   |
| 2 | 2 | % $Date$ |
| 3 | 3 | % $Revision$ |
| 4 | 4 | %================================================================= |
| 5 | % translated by tsilva@sourcecraft.info start: (Fri, 25 Apr 2008) |
| 6 | % merged with thiagoarraiss's conclusion section (unrevised) |
| 7 | %% Notas: |
| 8 | %% "method lookup" => busca de métodos |
| 9 | %% "metaclass" => metaclasse |
| 10 | %% "first-class" => primeira ordem (Fonte: wikipedia/Smalltalk) |
| 11 | %% "private" => privada |
| 12 | %% "slot" => slot |
| 13 | %% "selector " => seletor |
| 14 | %% "super-sends" => mantive como "super-sends" |
| 15 | %% "self-sends" => mantive como "self-sends" |
| 16 | %% "single inheritance" => herança singular |
| 17 | %% "trait" => mantive como "trait" |
| 18 | %% "pool variables" => variáveis de pool |
| 19 | %% "stream" => mantive como "stream" |
| 20 | %% "scrolling window" => "janela deslizante" |
| 21 | %% "flap" => aba |
| 22 | %% "to collapse" => virou "fechar" |
| 23 | %% Nomes de ferramentas como Transcript, "Object Inspector", Debugger e "System Browser", foram mantidos |
| 24 | %================================================================= |
| 5 | 25 | \ifx\wholebook\relax\else |
| 6 | 26 | % -------------------------------------------- |
| 7 | 27 | % Lulu: |
| … | … | |
| 78 | 78 | Tudo acontece por meio de envio de mensagens. |
| 79 | 79 | |
| 80 | 80 | \item{} \label{rule:lookup} |
| 81 | | %NOTE: en_US("method lookup") = pt_BR(??) |
| 82 | | A escolha de métodos segue a cadeia de herança. |
| 81 | A busca de métodos segue a cadeia de herança. |
| 83 | 82 | |
| 84 | 83 | \end{enumerate} |
| 85 | 84 | |
| … | … | |
| 101 | 101 | 3 + 4 --> 7 "envia '+ 4' para 3, resultando em 7" |
| 102 | 102 | 20 factorial --> 2432902008176640000 !\textit{"envia factorial, resultando em um número grande"}! |
| 103 | 103 | \end{code} |
| 104 | | %FIXME: word wrapping da última frase está ruim |
| 104 | %FIXME: visual: word wrapping da última frase está feio |
| 105 | 105 | |
| 106 | 106 | A representação de \ct{20 factorial} certamente é diferente da representação de \ct{7}, mas porque ambos |
| 107 | 107 | são objetos, nenhum código\,---\, nem mesmo a implementação de \ct{factorial}\,---\,precisa saber disso. |
| … | … | |
| 110 | 110 | Talvez, a consequência mais fundamental desta regra seja o seguinte: |
| 111 | 111 | \important{Classes também são objetos.} |
| 112 | 112 | Além do mais, classes não são objetos de segunda ordem: elas, de fato, são objetos de primeira ordem |
| 113 | | %NOTE: first-class -> primeira ordem. Fonte: wikipedia/Smalltalk |
| 114 | 113 | para quem você pode enviar mensagens, inspecionar, e assim por diante. |
| 115 | 114 | Isso significa que o \squeak é um verdadeiro sistema reflexivo, que oferece um grande poder expressivo |
| 116 | 115 | aos seus desenvolvedores. |
| … | … | |
| 153 | 153 | \subsection{Variáveis de instância} |
| 154 | 154 | |
| 155 | 155 | Variáveis de instância no \st são privadas |
| 156 | | %en_US(private) == pt_BR(privada)? |
| 157 | 156 | para a própria \emph{instância}. Isso está em contraste com \ind{Java} e \ind{C++}, que permitem |
| 158 | 157 | que as variáveis de instância (também conhecidas como ``campos'' ou ``variáveis membro'') sejam |
| 159 | 158 | acessadas por outras instâncias que são da mesma classe. |
| … | … | |
| 162 | 162 | \seeindex{variável!instância}{variável de instância} |
| 163 | 163 | \seeindex{campo}{variável de instância} |
| 164 | 164 | \seeindex{attributo}{variável de instância} |
| 165 | | \seeindex{slot}{variável de instância} %FIXME: en_US(slot) == pt_BR(?) |
| 165 | \seeindex{slot}{variável de instância} |
| 166 | 166 | \index{variável de instância} |
| 167 | 167 | |
| 168 | 168 | Em \st, uma instância de uma classe não pode acessar as variáveis de instância de outra instância da mesma classe a não ser que a classe defina ``métodos de acesso'' \footnote{\emph{accessor methods}}. |
| … | … | |
| 171 | 171 | %, discussed in \charef{metaprog}, |
| 172 | 172 | oferece, de fato, uma forma de se obter os valores |
| 173 | 173 | das variáveis de instância de um objeto; a intenção da meta-programação é escrever ferramentas como |
| 174 | | o \ind{inspetor} de objetos \footnote{\emph{object inspector}}, cujo único propósito é observar dentro de outros objetos.) |
| 174 | o \emph{object inspector}, cujo único propósito é observar dentro de outros objetos.) |
| 175 | 175 | |
| 176 | 176 | Variáveis de instância podem ser acessadas por nome em quaisquer métodos de instância da classe que |
| 177 | 177 | os define e, também, nos métodos definidos nas subclasses. Isso significa que as variáveis |
| 178 | | de instância do \st são similares as variáveis \emph{protegidas} \footnote{\emph{protected}} do C++ e Java. |
| 178 | de instância do \st são similares as variáveis \emph{protegidas} do C++ e Java. |
| 179 | 179 | Por outro lado, nós preferimos dizer que elas são privadas porque, em \st, acessar uma variável |
| 180 | 180 | de instância diretamente de uma subclasse é considerado mau estilo. |
| 181 | 181 | |
| … | … | |
| 224 | 224 | Métodos podem acessar todas as variáveis de instância do objeto. |
| 225 | 225 | Alguns desenvolvedores \st preferem acessar variáveis de instância somente por métodos de acesso. |
| 226 | 226 | Esta prática tem algum valor, mas também polui a interface de suas classes, |
| 227 | | % en_US(clutter) == pt_BR(?) |
| 228 | 227 | e pior, expõe estados privados para o mundo. |
| 229 | 228 | |
| 230 | 229 | %--------------------------------------------------------- |
| … | … | |
| 252 | 252 | \end{center} |
| 253 | 253 | \end{figure} |
| 254 | 254 | |
| 255 | | Por esta razão, o navegador \index{system browser} te ajuda a navegar tanto pela classe quanto pela metaclasse |
| 255 | Por esta razão, o \emph{system browser} \index{system browser} te ajuda a navegar tanto pela classe quanto pela metaclasse |
| 256 | 256 | como se elas fossem uma única coisa com dois ``lados'': o ``\subind{system browser}{lado da instância}'' e |
| 257 | 257 | o ``\subind{system browser}{lado da classe}'', como mostrado na \figref{Buttons}. Clicando |
| 258 | 258 | no botão \button{instance}, navega-se na classe \ct{Color}, isso é, você navega nos métodos que |
| … | … | |
| 307 | 307 | Para aqueles que conhecem \ind{Java} e \ind{C++}, métodos de classe podem parecer similares aos métodos estáticos. Entretanto, a uniformidade do \st mostra que são coisas diferentes: os métodos estáticos |
| 308 | 308 | são apenas procedimentos resolvidos estaticamente em Java e, em \st, métodos de classe são métodos despachados |
| 309 | 309 | dinamicamente. Isso significa que herança, sobreposição e \emph{super-sends} |
| 310 | | %FIXME: en_US(super-sends) == pt_BR(?) |
| 311 | 310 | funcionam para métodos de classe |
| 312 | 311 | em \st, mas não funcionam para métodos estáticos em Java. |
| 313 | 312 | |
| … | … | |
| 693 | 693 | |
| 694 | 694 | %========================================================= |
| 695 | 695 | \section{A busca de método segue a cadeia de herança} |
| 696 | | %FIXME: en_US(lookup) == pt_BR(?) |
| 697 | | |
| 698 | 696 | %\ruleref{lookup} |
| 699 | 697 | |
| 700 | 698 | O que exatamente acontece quando um objeto recebe uma mensagem? |
| … | … | |
| 929 | 929 | \subsection{Mensagem não entendida} |
| 930 | 930 | |
| 931 | 931 | O que acontece se um método que nós buscamos não for encontrado? |
| 932 | | \index{mensagem!not understood} %FIXME: deixa "not understood" mesmo? |
| 932 | \index{mensagem!not understood} |
| 933 | 933 | |
| 934 | 934 | Suponha que nós enviemos a mensagem \ct{foo} para nossa elipse. |
| 935 | 935 | Primeiro, a busca de método iria percorrer normalmente a cadeia de herança completamente até a classe |
| … | … | |
| 951 | 951 | método \ct{doesNotUnderstand:}. |
| 952 | 952 | Acontece que \ct{Object} implementa \ct{doesNotUnderstand:}. |
| 953 | 953 | Este método irá criar um novo objeto \ct{MessageNotUnderstood} que é capaz de iniciar um \emph{Debugger} |
| 954 | | %FIXME: depurador?? |
| 955 | 954 | no contexto de execução atual. |
| 956 | 955 | |
| 957 | 956 | Por que nós tomamos este caminho tortuoso para lidar com um erro tão óbvio? |
| … | … | |
| 971 | 971 | \st oferece três tipos de variáveis compartilhadas: (1) variáveis compartilhadas \emph{globais}; |
| 972 | 972 | (2) variáveis compartilhadas entre instâncias e classes (\emph{variáveis de classe}), |
| 973 | 973 | e (3) variáveis compartilhadas entre um grupo de classes (variáveis de \emph{pool}). |
| 974 | | %FIXME pool variables == pt_BR(?) |
| 974 | |
| 975 | 975 | Os nomes de todas estas variáveis iniciam com uma letra maiúscula, para nos avisar de que |
| 976 | 976 | são, de fato, compartilhadas entre vários objetos. |
| 977 | 977 | |
| 978 | | Now we will look at an aspect of \st that is not so easily covered by our five rules: \subind{variable}{shared} variables. |
| 978 | Agora nós veremos um aspecto do \st que não é facilmente tratado pelas nossas cinco regras: variáveis \subind{variável}{compartilhada}s. |
| 979 | 979 | \index{variável!global} |
| 980 | | \index{classe!variáveç} |
| 980 | \index{classe!variável} |
| 981 | 981 | \index{variável!pool} |
| 982 | 982 | |
| 983 | 983 | %--------------------------------------------------------- |
| … | … | |
| 989 | 989 | Todas as classes são nomeadas por uma variável global; em adição, algumas poucas variáveis globais |
| 990 | 990 | são utilizadas para nomear objetos especiais ou comumente usados. |
| 991 | 991 | |
| 992 | | A variável \glbind{Transcript} nomea uma instância de \clsind{TranscriptStream}, um \emph{stream} |
| 993 | | %FIXME stream: deixar em inglês mesmo? |
| 994 | | que escreve em uma janela deslizante. %FIXME scrolling = pt_BR? |
| 992 | A variável \glbind{Transcript} nomeia uma instância de \clsind{TranscriptStream}, um \emph{stream} |
| 993 | que escreve em uma janela deslizante. |
| 995 | 994 | O código a seguir mostra alguma informação e, em seguida, vai para a próxima linha no \ct{Transcript}. |
| 996 | 995 | |
| 997 | 996 | \begin{code}{} |
| … | … | |
| 999 | 999 | |
| 1000 | 1000 | \noindent |
| 1001 | 1001 | Antes que você execute o \menu{do it}, abra um \emph{transcript} arrastando um a partir da aba \emph{Tools}. |
| 1002 | | %FIXME: flap == aba?? |
| 1003 | 1002 | |
| 1004 | 1003 | \hint{Escrever para o Transcript é lento, especialmente quando a janela do transcript está aberta. |
| 1005 | 1004 | Portanto, se você notar uma lentidão enquanto escreve para o Transcript, considere fechá-lo.} |
| 1006 | | %FIXME: collapse == pt_BR(??) |
| 1007 | 1005 | |
| 1008 | 1006 | \subsubsection{Outras variáveis globais úteis} |
| 1009 | 1007 | |
| … | … | |
| 1153 | 1153 | browser e compilados, ou quando eles são editados e re-compilados. |
| 1154 | 1154 | |
| 1155 | 1155 | %--------------------------------------------------------- |
| 1156 | | \subsection{Variáveis \meph{pool}} %FIXME: mantendo "pool" em ingles |
| 1156 | \subsection{Variáveis \meph{pool}} |
| 1157 | 1157 | |
| 1158 | 1158 | Variáveis \emph{pool} são variáveis compartilhadas entre várias classes que podem não estar relacionadas por herança. |
| 1159 | 1159 | Variáveis pool eram originalmente armazenadas em dicionários pool; agora, elas são definidas como variáveis de classe |
| … | … | |
| 1191 | 1191 | \section{Resumo do capítulo} |
| 1192 | 1192 | |
| 1193 | 1193 | O modelos de objetos do \squeak é ao mesmo tempo simples e uniforme. |
| 1194 | | Tudo é um objeto, e praticamente tudo acontece por envio de mensagens. |
| 1194 | Tudo é objeto, e praticamente tudo acontece por envio de mensagens. |
| 1195 | 1195 | |
| 1196 | 1196 | \begin{itemize} |
| 1197 | | \item Tudo é um objeto. |
| 1198 | | Primitivas como inteiros são objetos, mas classes também são objetos de primeira classe. |
| 1197 | \item Tudo é objeto. |
| 1198 | Entidades primitivas como inteiros são objetos, mas classes também são objetos de primeira ordem. |
| 1199 | 1199 | |
| 1200 | 1200 | \item Todo objeto é instância de uma classe. |
| 1201 | 1201 | Classes definem a estrutura de suas instâncias através de variáveis de instância \emph{privativas} e o comportamente de suas instâncias através de métodos \emph{públicos}. Cada classe é a instância única de sua meta-classe. Variáveis de classe são variáveis privativas compartilhadas pela classe e por todas as instâncias da classe. |
| toggle raw diff |
--- a/PortugueseBook/Model/Model.tex
+++ b/PortugueseBook/Model/Model.tex
@@ -2,6 +2,26 @@
% $Date$
% $Revision$
%=================================================================
+% translated by tsilva@sourcecraft.info start: (Fri, 25 Apr 2008)
+% merged with thiagoarraiss's conclusion section (unrevised)
+%% Notas:
+%% "method lookup" => busca de métodos
+%% "metaclass" => metaclasse
+%% "first-class" => primeira ordem (Fonte: wikipedia/Smalltalk)
+%% "private" => privada
+%% "slot" => slot
+%% "selector " => seletor
+%% "super-sends" => mantive como "super-sends"
+%% "self-sends" => mantive como "self-sends"
+%% "single inheritance" => herança singular
+%% "trait" => mantive como "trait"
+%% "pool variables" => variáveis de pool
+%% "stream" => mantive como "stream"
+%% "scrolling window" => "janela deslizante"
+%% "flap" => aba
+%% "to collapse" => virou "fechar"
+%% Nomes de ferramentas como Transcript, "Object Inspector", Debugger e "System Browser", foram mantidos
+%=================================================================
\ifx\wholebook\relax\else
% --------------------------------------------
% Lulu:
@@ -58,8 +78,7 @@ As regras são as seguintes:
Tudo acontece por meio de envio de mensagens.
\item{} \label{rule:lookup}
- %NOTE: en_US("method lookup") = pt_BR(??)
- A escolha de métodos segue a cadeia de herança.
+ A busca de métodos segue a cadeia de herança.
\end{enumerate}
@@ -82,7 +101,7 @@ como você faz para qualquer outro objeto.
3 + 4 --> 7 "envia '+ 4' para 3, resultando em 7"
20 factorial --> 2432902008176640000 !\textit{"envia factorial, resultando em um número grande"}!
\end{code}
-%FIXME: word wrapping da última frase está ruim
+%FIXME: visual: word wrapping da última frase está feio
A representação de \ct{20 factorial} certamente é diferente da representação de \ct{7}, mas porque ambos
são objetos, nenhum código\,---\, nem mesmo a implementação de \ct{factorial}\,---\,precisa saber disso.
@@ -91,7 +110,6 @@ são objetos, nenhum código\,---\, nem mesmo a implementação de \ct{factorial
Talvez, a consequência mais fundamental desta regra seja o seguinte:
\important{Classes também são objetos.}
Além do mais, classes não são objetos de segunda ordem: elas, de fato, são objetos de primeira ordem
-%NOTE: first-class -> primeira ordem. Fonte: wikipedia/Smalltalk
para quem você pode enviar mensagens, inspecionar, e assim por diante.
Isso significa que o \squeak é um verdadeiro sistema reflexivo, que oferece um grande poder expressivo
aos seus desenvolvedores.
@@ -135,7 +153,6 @@ A metaclasse define a estrutura e comportamento da classe que é sua instância.
\subsection{Variáveis de instância}
Variáveis de instância no \st são privadas
-%en_US(private) == pt_BR(privada)?
para a própria \emph{instância}. Isso está em contraste com \ind{Java} e \ind{C++}, que permitem
que as variáveis de instância (também conhecidas como ``campos'' ou ``variáveis membro'') sejam
acessadas por outras instâncias que são da mesma classe.
@@ -145,7 +162,7 @@ em \st é a instância.
\seeindex{variável!instância}{variável de instância}
\seeindex{campo}{variável de instância}
\seeindex{attributo}{variável de instância}
-\seeindex{slot}{variável de instância} %FIXME: en_US(slot) == pt_BR(?)
+\seeindex{slot}{variável de instância}
\index{variável de instância}
Em \st, uma instância de uma classe não pode acessar as variáveis de instância de outra instância da mesma classe a não ser que a classe defina ``métodos de acesso'' \footnote{\emph{accessor methods}}.
@@ -154,11 +171,11 @@ Não há sintaxe na linguagem que ofereça acesso direto às variáveis de inst
%, discussed in \charef{metaprog},
oferece, de fato, uma forma de se obter os valores
das variáveis de instância de um objeto; a intenção da meta-programação é escrever ferramentas como
-o \ind{inspetor} de objetos \footnote{\emph{object inspector}}, cujo único propósito é observar dentro de outros objetos.)
+o \emph{object inspector}, cujo único propósito é observar dentro de outros objetos.)
Variáveis de instância podem ser acessadas por nome em quaisquer métodos de instância da classe que
os define e, também, nos métodos definidos nas subclasses. Isso significa que as variáveis
-de instância do \st são similares as variáveis \emph{protegidas} \footnote{\emph{protected}} do C++ e Java.
+de instância do \st são similares as variáveis \emph{protegidas} do C++ e Java.
Por outro lado, nós preferimos dizer que elas são privadas porque, em \st, acessar uma variável
de instância diretamente de uma subclasse é considerado mau estilo.
@@ -207,7 +224,6 @@ tal método ``privado''.
Métodos podem acessar todas as variáveis de instância do objeto.
Alguns desenvolvedores \st preferem acessar variáveis de instância somente por métodos de acesso.
Esta prática tem algum valor, mas também polui a interface de suas classes,
-% en_US(clutter) == pt_BR(?)
e pior, expõe estados privados para o mundo.
%---------------------------------------------------------
@@ -236,7 +252,7 @@ interessado em definir o comportamento de seus objetos e as classes que os criam
\end{center}
\end{figure}
-Por esta razão, o navegador \index{system browser} te ajuda a navegar tanto pela classe quanto pela metaclasse
+Por esta razão, o \emph{system browser} \index{system browser} te ajuda a navegar tanto pela classe quanto pela metaclasse
como se elas fossem uma única coisa com dois ``lados'': o ``\subind{system browser}{lado da instância}'' e
o ``\subind{system browser}{lado da classe}'', como mostrado na \figref{Buttons}. Clicando
no botão \button{instance}, navega-se na classe \ct{Color}, isso é, você navega nos métodos que
@@ -291,7 +307,6 @@ desfazer o efeito.)
Para aqueles que conhecem \ind{Java} e \ind{C++}, métodos de classe podem parecer similares aos métodos estáticos. Entretanto, a uniformidade do \st mostra que são coisas diferentes: os métodos estáticos
são apenas procedimentos resolvidos estaticamente em Java e, em \st, métodos de classe são métodos despachados
dinamicamente. Isso significa que herança, sobreposição e \emph{super-sends}
-%FIXME: en_US(super-sends) == pt_BR(?)
funcionam para métodos de classe
em \st, mas não funcionam para métodos estáticos em Java.
@@ -678,8 +693,6 @@ Joseph Pelrine também coloca isso muito bem:
%=========================================================
\section{A busca de método segue a cadeia de herança}
-%FIXME: en_US(lookup) == pt_BR(?)
-
%\ruleref{lookup}
O que exatamente acontece quando um objeto recebe uma mensagem?
@@ -916,7 +929,7 @@ Isso significa que \emph{todas} as mensagens enviadas a \self são buscadas inic
\subsection{Mensagem não entendida}
O que acontece se um método que nós buscamos não for encontrado?
-\index{mensagem!not understood} %FIXME: deixa "not understood" mesmo?
+\index{mensagem!not understood}
Suponha que nós enviemos a mensagem \ct{foo} para nossa elipse.
Primeiro, a busca de método iria percorrer normalmente a cadeia de herança completamente até a classe
@@ -938,7 +951,6 @@ de método inicia novamente a partir da classe \ct{EllipseMorph}, mas desta vez,
método \ct{doesNotUnderstand:}.
Acontece que \ct{Object} implementa \ct{doesNotUnderstand:}.
Este método irá criar um novo objeto \ct{MessageNotUnderstood} que é capaz de iniciar um \emph{Debugger}
-%FIXME: depurador??
no contexto de execução atual.
Por que nós tomamos este caminho tortuoso para lidar com um erro tão óbvio?
@@ -959,13 +971,13 @@ variáveis \subind{variável}{compartilhada}s.
\st oferece três tipos de variáveis compartilhadas: (1) variáveis compartilhadas \emph{globais};
(2) variáveis compartilhadas entre instâncias e classes (\emph{variáveis de classe}),
e (3) variáveis compartilhadas entre um grupo de classes (variáveis de \emph{pool}).
-%FIXME pool variables == pt_BR(?)
+
Os nomes de todas estas variáveis iniciam com uma letra maiúscula, para nos avisar de que
são, de fato, compartilhadas entre vários objetos.
-Now we will look at an aspect of \st that is not so easily covered by our five rules: \subind{variable}{shared} variables.
+Agora nós veremos um aspecto do \st que não é facilmente tratado pelas nossas cinco regras: variáveis \subind{variável}{compartilhada}s.
\index{variável!global}
-\index{classe!variáveç}
+\index{classe!variável}
\index{variável!pool}
%---------------------------------------------------------
@@ -977,9 +989,8 @@ Variáveis globais são acessíveis em qualquer local.
Todas as classes são nomeadas por uma variável global; em adição, algumas poucas variáveis globais
são utilizadas para nomear objetos especiais ou comumente usados.
-A variável \glbind{Transcript} nomea uma instância de \clsind{TranscriptStream}, um \emph{stream}
-%FIXME stream: deixar em inglês mesmo?
-que escreve em uma janela deslizante. %FIXME scrolling = pt_BR?
+A variável \glbind{Transcript} nomeia uma instância de \clsind{TranscriptStream}, um \emph{stream}
+que escreve em uma janela deslizante.
O código a seguir mostra alguma informação e, em seguida, vai para a próxima linha no \ct{Transcript}.
\begin{code}{}
@@ -988,11 +999,9 @@ Transcript show: 'Squeak is fun and powerful' ; cr
\noindent
Antes que você execute o \menu{do it}, abra um \emph{transcript} arrastando um a partir da aba \emph{Tools}.
-%FIXME: flap == aba??
\hint{Escrever para o Transcript é lento, especialmente quando a janela do transcript está aberta.
Portanto, se você notar uma lentidão enquanto escreve para o Transcript, considere fechá-lo.}
-%FIXME: collapse == pt_BR(??)
\subsubsection{Outras variáveis globais úteis}
@@ -1144,7 +1153,7 @@ o código é carregado na memória, eles \emph{não} são executados automaticam
browser e compilados, ou quando eles são editados e re-compilados.
%---------------------------------------------------------
-\subsection{Variáveis \meph{pool}} %FIXME: mantendo "pool" em ingles
+\subsection{Variáveis \meph{pool}}
Variáveis \emph{pool} são variáveis compartilhadas entre várias classes que podem não estar relacionadas por herança.
Variáveis pool eram originalmente armazenadas em dicionários pool; agora, elas são definidas como variáveis de classe
@@ -1182,11 +1191,11 @@ Novamente, nós recomendamos que você evite o uso de variáveis pool e dicioná
\section{Resumo do capítulo}
O modelos de objetos do \squeak é ao mesmo tempo simples e uniforme.
-Tudo é um objeto, e praticamente tudo acontece por envio de mensagens.
+Tudo é objeto, e praticamente tudo acontece por envio de mensagens.
\begin{itemize}
- \item Tudo é um objeto.
- Primitivas como inteiros são objetos, mas classes também são objetos de primeira classe.
+ \item Tudo é objeto.
+ Entidades primitivas como inteiros são objetos, mas classes também são objetos de primeira ordem.
\item Todo objeto é instância de uma classe.
Classes definem a estrutura de suas instâncias através de variáveis de instância \emph{privativas} e o comportamente de suas instâncias através de métodos \emph{públicos}. Cada classe é a instância única de sua meta-classe. Variáveis de classe são variáveis privativas compartilhadas pela classe e por todas as instâncias da classe. |