Logo Studenta

Los principales constructores para el cálculo de objetos son los mismos objetos. Un objeto es una lista de nombre de métodos y de resultados de los...

Los principales constructores para el cálculo de objetos son los mismos objetos. Un objeto es una lista de nombre de métodos y de resultados de los métodos. La relación de subtipos entre objetos es soportada por la subsuposición, la cual permite que un objeto sea usado donde se espera un objeto con menos métodos. Las anotaciones permiten los subtipos flexibles y la protección de efectos laterales. A continuación se hará una descripción de los términos mostrados en la sintaxis de la Tabla 3.6. Un objeto es una colección de componentes li = ς(xi)bi, con distintas etiquetas li asociadas a métodos de la forma ς(xi)bi; el orden de estos componentes no es de importancia para el tema de estudio. Cada ligadura ς encapsula el parámetro Self de un método, por lo que ς(x)b es un método con una variable x y un cuerpo b. La invocación de un método se realiza mediante el llamado a a.l lo que provoca la evaluación de a seguido por la evaluación del cuerpo del método llamado l, con el valor de a enlazado o ligado con Self como variable de un método. La actualización de un método se construye mediante o.l ⇐ ς(x)b. Este simple método actualiza al término a, lo que remplaza el método llamado l con un nuevo método ς(x)b y regresa el objeto modificado. La forma general de actualizar un método es permitir agregar la habilidad de evaluar un término en un momento de la actualización y usar el resultado para una evaluación posterior. Una operación de clonación llamada clone(a) que produce un nuevo objeto con las mismas etiquetas de a. A esta operación se le conoce como clonación superficial. El cálculo sin tipos a.l ⇐ (y, z = c)ς(x)b puede ser expresado en función de let y de un simple método de actualización, como: let y = a in let z = c in y.l ⇐ ς(x)b. La actualización de un método por medio de let es realizada de la forma siguiente: a.l ⇐ ς(x)b ≡ a.l(y, z = y)ς(x)b donde y, z /∈ FV (b) let x = a in b ≡ (val = ς(y)y.val].val ⇐ (z, x = a)ς(w)b).val donde y, z, w /∈ FV (b) ∧ FV (a) a; b ≡ let x = a in b donde x /∈ FV (b) Un aspecto importante al comparar los lenguajes imperativos con los funcionales radica en los atributos que un objeto puede tener, ya que el funcionamiento depende básicamente de asignaciones; mientras que el segundo carece de éstas respectivamente. En el cálculo todos los componentes de un objeto contienen métodos, sin embargo, se puede codificar los atributos por lo que se hace uso del siguiente análisis: se escribe [lj = ς(x)b, li = ς(xi)bi i∈{1...n}−{j}] para un objeto donde li = bi son atributos y lj = ς(xj)bj son métodos. También se puede escribir a.l := b para realizar una actualización, y a.l como se mencionó en la sección anterior para seleccionar atributos.

Esta pregunta también está en el material:

Tesis 11997
153 pag.

Análise Orientada A Objetos Universidad Nacional De ColombiaUniversidad Nacional De Colombia

Todavía no tenemos respuestas

¿Sabes cómo responder a esa pregunta?

¡Crea una cuenta y ayuda a otros compartiendo tus conocimientos!


✏️ Responder

FlechasNegritoItálicoSubrayadaTachadoCitaCódigoLista numeradaLista con viñetasSuscritoSobreDisminuir la sangríaAumentar la sangríaColor de fuenteColor de fondoAlineaciónLimpiarInsertar el linkImagenFórmula

Para escribir su respuesta aquí, Ingresar o Crear una cuenta

User badge image

Otros materiales

Otros materiales