<commit_before>Un objeto es un ente computacional que exhibe comportamiento (podemos comunicarnos con él mediante mensajes) y puede (o no) tener un estado interno (referencias a otros objetos).

Un programa basado en este paradigma es un conjunto de objetos que interactúan entre sí en un ambiente mandándose mensajes para lograr un objetivo determinado.

Intuición
---------

Intuitivamente, nuestra realidad parece estar conformada por muchos objetos: automóviles, mesas, frascos de mermelada, papeles, computadoras, cables. Esos objetos están allí, se pueden diferenciar entre ellos: una mesa y una silla son diferentes. Más importante aún, si tengo dos sillas, aunque hayan sido fabricadas en el mismo lugar, tengan la misma cantidad de patas y mismo tapizado, las puedo distinguir. Es decir, aunque dos objetos se vean muy parecidos, siguen siendo... ¡dos objetos diferentes! Los objetos se pueden diferenciar, porque tienen identidad propia.

¿Y por qué nos interesan los objetos? Cuando programamos, queremos resolver problemas, entonces no nos van a interesar tanto los objetos por sí mismos, sino que estos pueden resolver problemas. ¿Cómo es esto de resolver problemas? Simple: las hojas de papel nos sirven para escribir en ellas, los cables para conducir energía, los automóviles, para transportarnos. Es decir, no nos va a interesar la mesa porque tenga cuatro patas y una tabla de madera, sino porque esas cuatro patas y tabla nos permitirán resolver el problema de apoyar nuestro almuerzo. De los objetos, entonces, nos va a interesar que son capaces de hacer cosas: tienen comportamiento.

Hay algo más que es interesante en los objetos: a veces estos cambian con el tiempo. Por ejemplo, las mesas se deterioran después de servir de sostén por mucho tiempo, el frasco de mermelada se vacía después de sacarle mermelada varias veces, el automóvil pierde nafta cuando se mueve, y gana nafta cuando se lo recarga. Los objetos tienen un estado.

Entonces parece que la pregunta de que es un objeto se responde fácil: es una cosa, pero no cualquier cosa: tiene identidad, estado y comportamiento.

Ahora nos queda realizar un último salto: en realidad hay más cosas, más objetos en nuestro mundo, que sólo automoviles, hojas o mesas. Hay por ejemplo, países, culturas,trabajos, problemas, ideas, sentimientos. Y una idea se puede diferenciar de otra (identidad), un trabajo puede resolverlos el problema de tener dinero a fin de mes (comportamiento), y un país puede cambiar (estado). Los objetos, entonces, pueden ser también cosas que no podemos tocar: cosas intangibles.

El paradigma de objetos nos propone justamente resolver nuestros problemas usando, adivinen.....¡objetos!. Y para eso, tendremos que zambullirnos en un mundo de objetos.

Teoría
------

-   [Mensajes y métodos](mensajes-y-metodos.html)
-   Referencias: [Variables](variables.html) y [Pseudovariables](pseudovariable.html)
-   [Encapsulamiento](encapsulamiento.html)
-   [Polimorfismo](polimorfismo.html)
-   [Modelando objetos - Responsabilidades y delegación](modelando-objetos---responsabilidades-y-delegacion.html)
-   [Manejo de errores](manejo-de-errores.html)
-   [Prototipado](prototipado.html)
-   [Clases](clases.html)
-   [Prototipado vs Clases](prototipado-vs-clases.html)
-   [Herencia](herencia.html)
-   [Method lookup](method-lookup.html)
-   [Redefinición](redefinicion.html)
-   [Variables y métodos de clase](variables-y-metodos-de-clase.html)
-   [igual o idéntico - = vs ==](igual-o-identico-----vs---.html)
-   [Inmutabilidad](inmutabilidad.html)
-   [Composición (OOP)](Composición_(OOP) "wikilink")
-   [Garbage collector](garbage-collector.html)

Sintaxis
--------

-   [Variables locales en métodos](variables-locales-en-metodos.html)
-   [Precedencia de Mensajes](precedencia-de-mensajes.html)

Objetos básicos
---------------

-   [Manejo de booleanos](manejo-de-booleanos.html)
-   [min: y max:](min--y-max-.html)
-   [Bloques](bloques.html)

Colecciones
-----------

-   [Intro a colecciones](intro-a-colecciones.html)
-   [Sabores de colecciones](sabores-de-colecciones.html)
-   [Mensajes de colecciones](mensajes-de-colecciones.html)
-   [Errores comunes con select: y collect:](errores-comunes-con-select--y-collect-.html)
-   <inject:into:>
-   [Arrays literales en Smalltalk](arrays-literales-en-smalltalk.html)
-   [Diccionarios](diccionarios.html)

Cosas que pueden servir para pensar en cómo modelar un enunciado
----------------------------------------------------------------

-   [Diferencia entre objetos y procedural - con un ejercicio de la guía 1](diferencia-entre-objetos-y-procedural---con-un-ejercicio-de-la-guia-1.html)
-   [Nombres de clases](nombres-de-clases.html)
-   [Ley de demeter](ley-de-demeter.html)
-   [Cuestiones básicas para resolver el parcial de objetos](cuestiones-basicas-para-resolver-el-parcial-de-objetos.html)
-   [Puntos de entrada](puntos-de-entrada.html)

Cosas que pueden servir para el TP
----------------------------------

-   [Preguntas Frecuentes](preguntas-frecuentes.html)
-   [Métodos de clase para crear objetos inicializados](metodos-de-clase-para-crear-objetos-inicializados.html)
-   [Cómo hacer para que de un objeto muestre lo que yo quiero](como-hacer-para-que-de-un-objeto-muestre-lo-que-yo-quiero.html)
-   [Tutorial de Squeak y Pharo](tutorial-de-squeak-y-pharo.html)
-   [Cómo crear una subclase en Squeak](como-crear-una-subclase-en-squeak.html)
-   [Testing](testing.html)

Miscelánea
----------

-   [Máquina\_Virtual](maquina-virtual.html)
-   [Diagrama de clases](diagrama-de-clases.html)
-   [Lenguajes](lenguajes.html)
<commit_msg>/* Cosas que pueden servir para el TP */<commit_after>Un objeto es un ente computacional que exhibe comportamiento (podemos comunicarnos con él mediante mensajes) y puede (o no) tener un estado interno (referencias a otros objetos).

Un programa basado en este paradigma es un conjunto de objetos que interactúan entre sí en un ambiente mandándose mensajes para lograr un objetivo determinado.

Intuición
---------

Intuitivamente, nuestra realidad parece estar conformada por muchos objetos: automóviles, mesas, frascos de mermelada, papeles, computadoras, cables. Esos objetos están allí, se pueden diferenciar entre ellos: una mesa y una silla son diferentes. Más importante aún, si tengo dos sillas, aunque hayan sido fabricadas en el mismo lugar, tengan la misma cantidad de patas y mismo tapizado, las puedo distinguir. Es decir, aunque dos objetos se vean muy parecidos, siguen siendo... ¡dos objetos diferentes! Los objetos se pueden diferenciar, porque tienen identidad propia.

¿Y por qué nos interesan los objetos? Cuando programamos, queremos resolver problemas, entonces no nos van a interesar tanto los objetos por sí mismos, sino que estos pueden resolver problemas. ¿Cómo es esto de resolver problemas? Simple: las hojas de papel nos sirven para escribir en ellas, los cables para conducir energía, los automóviles, para transportarnos. Es decir, no nos va a interesar la mesa porque tenga cuatro patas y una tabla de madera, sino porque esas cuatro patas y tabla nos permitirán resolver el problema de apoyar nuestro almuerzo. De los objetos, entonces, nos va a interesar que son capaces de hacer cosas: tienen comportamiento.

Hay algo más que es interesante en los objetos: a veces estos cambian con el tiempo. Por ejemplo, las mesas se deterioran después de servir de sostén por mucho tiempo, el frasco de mermelada se vacía después de sacarle mermelada varias veces, el automóvil pierde nafta cuando se mueve, y gana nafta cuando se lo recarga. Los objetos tienen un estado.

Entonces parece que la pregunta de que es un objeto se responde fácil: es una cosa, pero no cualquier cosa: tiene identidad, estado y comportamiento.

Ahora nos queda realizar un último salto: en realidad hay más cosas, más objetos en nuestro mundo, que sólo automoviles, hojas o mesas. Hay por ejemplo, países, culturas,trabajos, problemas, ideas, sentimientos. Y una idea se puede diferenciar de otra (identidad), un trabajo puede resolverlos el problema de tener dinero a fin de mes (comportamiento), y un país puede cambiar (estado). Los objetos, entonces, pueden ser también cosas que no podemos tocar: cosas intangibles.

El paradigma de objetos nos propone justamente resolver nuestros problemas usando, adivinen.....¡objetos!. Y para eso, tendremos que zambullirnos en un mundo de objetos.

Teoría
------

-   [Mensajes y métodos](mensajes-y-metodos.html)
-   Referencias: [Variables](variables.html) y [Pseudovariables](pseudovariable.html)
-   [Encapsulamiento](encapsulamiento.html)
-   [Polimorfismo](polimorfismo.html)
-   [Modelando objetos - Responsabilidades y delegación](modelando-objetos---responsabilidades-y-delegacion.html)
-   [Manejo de errores](manejo-de-errores.html)
-   [Prototipado](prototipado.html)
-   [Clases](clases.html)
-   [Prototipado vs Clases](prototipado-vs-clases.html)
-   [Herencia](herencia.html)
-   [Method lookup](method-lookup.html)
-   [Redefinición](redefinicion.html)
-   [Variables y métodos de clase](variables-y-metodos-de-clase.html)
-   [igual o idéntico - = vs ==](igual-o-identico-----vs---.html)
-   [Inmutabilidad](inmutabilidad.html)
-   [Composición (OOP)](Composición_(OOP) "wikilink")
-   [Garbage collector](garbage-collector.html)

Sintaxis
--------

-   [Variables locales en métodos](variables-locales-en-metodos.html)
-   [Precedencia de Mensajes](precedencia-de-mensajes.html)

Objetos básicos
---------------

-   [Manejo de booleanos](manejo-de-booleanos.html)
-   [min: y max:](min--y-max-.html)
-   [Bloques](bloques.html)

Colecciones
-----------

-   [Intro a colecciones](intro-a-colecciones.html)
-   [Sabores de colecciones](sabores-de-colecciones.html)
-   [Mensajes de colecciones](mensajes-de-colecciones.html)
-   [Errores comunes con select: y collect:](errores-comunes-con-select--y-collect-.html)
-   <inject:into:>
-   [Arrays literales en Smalltalk](arrays-literales-en-smalltalk.html)
-   [Diccionarios](diccionarios.html)

Cosas que pueden servir para pensar en cómo modelar un enunciado
----------------------------------------------------------------

-   [Diferencia entre objetos y procedural - con un ejercicio de la guía 1](diferencia-entre-objetos-y-procedural---con-un-ejercicio-de-la-guia-1.html)
-   [Nombres de clases](nombres-de-clases.html)
-   [Ley de demeter](ley-de-demeter.html)
-   [Cuestiones básicas para resolver el parcial de objetos](cuestiones-basicas-para-resolver-el-parcial-de-objetos.html)
-   [Puntos de entrada](puntos-de-entrada.html)

Cosas que pueden servir para el TP
----------------------------------

-   [Preguntas Frecuentes](preguntas-frecuentes.html)
-   [Métodos de clase para crear objetos inicializados](metodos-de-clase-para-crear-objetos-inicializados.html)
-   [Cómo hacer para que de un objeto muestre lo que yo quiero](como-hacer-para-que-de-un-objeto-muestre-lo-que-yo-quiero.html)
-   [Tutorial de Squeak y Pharo](tutorial-de-squeak-y-pharo.html)
-   [Cómo crear una subclase en Squeak](como-crear-una-subclase-en-squeak.html)
-   [Testing](testing.html)
-   [Pharo para programadores Ozonosos](pharo-para-programadores-ozonosos.html)
-   [Manual de Ozono](http://www.pdep.com.ar/Home/software/software-pharo/object-browser-ultima-version/ObjectBrowser-manual.pdf?attredirects=0)

Miscelánea
----------

-   [Máquina\_Virtual](maquina-virtual.html)
-   [Diagrama de clases](diagrama-de-clases.html)
-   [Lenguajes](lenguajes.html)

{'fraction_non_alphanumeric': 0.11673050139275766, 'fraction_numerical': 0.0004352367688022284, 'mean_word_length': 3.9393809114359417, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 1, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1351577', 'n_tokens_mistral': 3982, 'n_tokens_neox': 3981, 'n_words': 1199}