Mdulo 1 - PowerPoint PPT Presentation

1 / 68
About This Presentation
Title:

Mdulo 1

Description:

Una clase describe objetos que van a tener la misma estructura y el ... package estructurasDatos ; class Nodo {...} Administraci n de Sistemas Inform ticos ... – PowerPoint PPT presentation

Number of Views:51
Avg rating:3.0/5.0
Slides: 69
Provided by: Dar4181
Category:
Tags: mdulo | pkg

less

Transcript and Presenter's Notes

Title: Mdulo 1


1
Administración de Sistemas Informáticos. Unidad
1.-
Unidad 1.2.- Clases y Objetos.
2
Conceptos
  • Clase
  • Ocultación de la información
  • Objeto
  • Mensaje
  • Creación de objetos
  • Semántica referencia
  • Genericidad
  • Modelo de Ejecución

3
Clases y Objetos
Programa OO
Colección estructurada de clases
Clase
Implementación de un TAD
Objeto
Una instancia de una clase
Los objetos se comunican mediante mensajes
4
TAD y Clase
Teoría TAD Operaciones Sintaxis y
Semántica
Software Clase Elegir representación e
implementar operaciones
5
TAD y Clase
Teoría TAD Funciones Axiomas Precondi
ciones
Software Clase Atributos y Métodos
Asertos
6
Definición de Clase
  • Implementación total o parcial de un tipo
    abstracto de dato (TAD).
  • Las clases son entidades sintácticas.
  • Una clase describe objetos que van a tener la
    misma estructura y el mismo comportamiento.
  • Un programa OO es una colección estructurada de
    clases.

7
Clases Doble naturaleza
  • Una clase es un módulo y un tipo de dato
  • Módulo (concepto sintáctico)
  • Mecanismo para organizar el software
  • Encapsula componentes software
  • Tipo (concepto semántico)
  • Mecanismo de definición de nuevos tipos de datos
    describe una estructura de datos (objetos) para
    representar valores de un dominio y las
    operaciones aplicables.

8
Clases Ejemplo
  • Al modelar un banco, encontramos objetos
    cuenta.
  • Todos los objetos cuenta tienen unas
    propiedades comunes
  • saldo, titular, código, reintegro, ingreso,
  • Definimos una clase Cuenta.
  • Clases del dominio y clases de diseño/implementaci
    ón
  • Principio de Correspondencia Directa

9
Componentes de una clase
  • Las propiedades del objeto se pueden representar
    mediante
  • espacio ATRIBUTOS
  • cálculo RUTINAS (MÉTODOS)
  • cómo representamos el saldo de una cuenta?

10
Componentes de una clase
  • Atributos
  • Determinan una estructura de almacenamiento para
    cada objeto de la clase
  • Ejemplo saldo, titular, código..
  • Métodos
  • Operaciones aplicables a los objetos
  • Único modo de acceder a los atributos A veces
    no!
  • Ejemplo reintegro, ingreso, saldo,..

Propiedades Estructurales vs. Propiedades de
Comportamiento
11
Tipo Modulo
oc Cuenta
Atributos
Ejemplo Clase Eiffel
Operaciones
12
Definición de Objeto
  • Es una instancia de una clase, creada en tiempo
    de ejecución
  • Es una estructura de datos formada por tantos
    campos como atributos tiene la clase.
  • Es una entidad de tiempo de ejecución.
  • Cada objeto es instancia de una clase (incluso
    los objetos básicos enteros, booleanos,caracteres
    ,?).
  • Durante la ejecución de un programa OO se creará
    un conjunto de objetos.

13
Cada objeto es instancia de una clase
Estructura de datos
Código
Cuenta oc oc new Cuenta()
  • Cada objeto es instancia directa de una clase.
  • Una clase es una factoría de objetos

14
Objeto Cuenta
J. Gomez
titular
nombre
123456
87654321
codigo
dni
100000
saldo
Objeto Persona
ultOper
-5000
10000
50000
Objeto Array
15
Tipos de campos
  • Simples
  • Corresponden a atributos de tipos (clases)
    básicos
  • En Eiffel
  • INTEGER, REAL, DOUBLE, BOOLEAN,
  • CHARACTER, STRING
  • Compuestos
  • Sus valores son objetos de tipos no básicos.
  • Subobjetos o Referencias.

16
Referencias e Identidad de Objetos
  • Una referencia es una forma de identificar a un
    objeto, un nombre abstracto para el objeto.
  • Puede implementarse de distintas formas.
  • Mientras exista, cada objeto posee una identidad
    única, independiente de sus valores
    (identificador de objeto, oid)
  • Dos objetos con diferentes oids pueden tener los
    mismos valores
  • Los valores de los campos de un objeto pueden
    cambiar, pero su oid es inmutable.

17
Identificador de objeto, oid
oid
Existe una tabla que relaciona oid y posición de
memoria
18
Objeto Correspondencia directa
  • Objetos externos vs. objetos en el software

Cuenta titular, saldo, código, lista
últimas operaciones
19
Objetos dominio vs. Objetos software
  • 1. Objetos externos Modelado del Dominio
  • Existentes en el dominio de la aplicación
  • cuenta, cliente, cajero,
    préstamo,...
  • 2. Objetos software
  • Procedentes del ANALISIS objetos del dominio
  • Procedentes del DISEÑO/IMPLEMENTACION
  • estructuras de datos, patrones de diseño y GUI

20
Estado de un Objeto
  • Dos significados relacionados
  • 1) El estado de un objeto viene dado por la
    lista de pares atributo/valor del campo.
  • 2) Un estado es una situación en la vida de un
    objeto en la que satisface una determinada
    condición, realiza alguna actividad o espera
    algún evento
  • Estados Cajero Automático Conectado,
    Desconectado, Sin dinero, Sin
    papel,...
  • Las rutinas permiten consultar y modificar el
    estado del objeto.

21
Algunas cuestiones
  • No confundir los conceptos de clase y objeto
  • Sistema de tipos uniforme cada objeto es
    instancia de una clase
  • Importante la manipulación de objetos sin conocer
    su representación
  • Es apropiado distinguir entre atributos y
    métodos cuando se accede a ellos?

22
Variables de Clase
  • Compartida por todas las instancias de una clase.
  • Registrar valor común a todas las instancias
  • Ejemplos para una clase Cuenta
  • Interés, Coste tarjeta, Último código asignado
  • Cuándo se inicializa?
  • Puede ser accedida por métodos de instancia y de
    clase

23
Variables de clase
UltimoCodigo
11122
24
Ejemplo C
25
Clases en Java
  • Lenguaje tipado estáticamente
  • Legible
  • No separación en fichero interfaz e
    implementación.
  • Lenguaje interpretado Máquina Virtual Java
  • Atributos y variables de clase
  • Métodos de instancia y de clase

26
Paquetes Java
  • Clases relacionadas pueden agruparse en paquetes
  • package estructurasDatos
  • public class Lista ...
  • package estructurasDatos
  • class Nodo ...
  • ...

27
Paquetes Java
  • Espacio de nombres evita conflictos de nombres
  • Define un ámbito propiedades ocultas al exterior
    pero accesibles a las clases del paquete.
  • Jerarquías de paquetes p1.p2.p3pn
  • Calificación de nombres java.util.Date
  • Importación de paquetes import java.util.Date
  • Un fichero (unidad de compilación) no puede
    incluir más de una clase pública.

28
Ejemplo Java
29
Relaciones entre clases
  • Cliente
  • Una clase A es cliente de una clase B, si A
    contiene una declaración en la que se establezca
    que cierta entidad (atributo, parámetro, variable
    local) e es de tipo B

Ejemplo
titular
CUENTA
PERSONA
Cuenta es cliente de Persona
30
Relaciones entre clases
  • Herencia
  • Una clase es una versión especializada de otra
    existente

Ejemplo
31
Método
  • Está compuesto por
  • CABECERA Identificador y Parámetros
  • CUERPO Secuencia de instrucciones
  • Ejemplo en Eiffel

reintegro (cantidad INTEGER) is do if
puedoSacar(cantidad) then saldo saldo -
suma end
32
Métodos
  • Qué instrucciones podemos incluir en el cuerpo
    de un método?
  • Asignación
  • Creación de objetos
  • Condicional
  • Iteración
  • Mensajes (invocación a otro método)

33
Mensaje
  • Invocación de la aplicación de un método sobre un
    objeto.
  • Mecanismo básico de la computación OO.
  • La modificación o consulta del estado de un
    objeto se realiza mediante mensajes.
  • Formado por tres partes
  • Objeto receptor
  • Selector o identificador del método a aplicar
  • Argumentos

34
Sintaxis mensajes
  • Notación Punto Eiffel, Java

receptor. selector(argumentos)
Si c es de tipo Cuenta c Cuenta c.
reintegro (1000)
35
Sintaxis mensajes
  • Notación Punto C

receptor -gt selector(argumentos)
  • Si c referencia a un objeto Cuenta
  • Cuenta c
  • c -gt reintegro (1000)
  • (c). reintegro (1000)

36
Semántica mensajes
  • Sea el mensaje x.f, su significado es
  • Aplicar el método f sobre el receptor x,
    efectuando el paso de parámetros
  • NO CONFUNDIR CON LA INVOCACIÓN DE UN
    PROCEDIMIENTO!

37
Regla de validez de un mensaje
  • Clase B
  • oc C
  • oc. f(x)
  • // Preciso la Import de la clase C
  • Sea la declaración oc C en una clase B, el
    mensaje oc.f(x) es legal si y solo si la clase C
    incluye un método con nombre f, exportado a B, y
    el tipo del argumento es compatible con el del
    parámetro.

38
Diferencia entre mensaje e invocación a un
procedimiento
  • Un mensaje parece una llamada a procedimiento en
    la que solo cambia el formato
  • unaCuenta.reintegro (100000)
  • reintegro (unaCuenta,100000)
  • En una invocación a procedimiento todos los
    argumentos se tratan del mismo modo.
  • En un mensaje un argumento tiene una naturaleza
    especial objeto receptor

39
Semántica Almacenamiento
  • Variables en los lenguajes tradicionales

tipo
valor
Identificador
TC
TC
memoria
40
Tipo puntero
  • Variables tipo "puntero" en lenguaje tradicionales

Tipo puntero
Identificador
TE
TC
TC
Memoria (almacena referencia)
Memoria (almacena valor)
41
Semántica referencia
TE
TC
Una variable denota una referencia a un objeto
42
Semántica referencia vs. Punteros
  • En C, semántica referencia asociada al tipo
    "puntero
  • Cuenta oc
  • En Smalltalk, semántica referencia para cualquier
    entidad.
  • En Eiffel, tipos referencia y tipos expandidos
  • oc Cuenta oc expanded Cuenta
  • En Java, semántica referencia para cualquier
    entidad asociada a una clase (Existen los tipos
    primitivos)
  • Cuenta oc

43
Semántica referencia
  • Cuenta oc
  • oc new Cuenta()

objeto Cuenta
44
Estados de una referencia en Java
ob new B () ob oc (si c está conectado)
ob null ob oc (si c es null)
45
Cuidado con el Aliasing!
Asignación
oa ob
La asignación no implica copia de valores sino
de referencias
46
Referencias y Compartición
Objeto Cuenta
Objeto Cuenta
titular
titular
975310
codigo
123456
codigo
300000
100000
saldo
saldo
ultOper
ultOper
oc1
oc2
J. Gomez
nombre
25000
-5000
87654321
dni
-16000
10000
Objeto Persona
47
Autoreferencias
48
Ventajas de los tipos referencia
  • Más eficiente para manejar objetos complejos.
  • Soporte para definir estructuras de datos
    recursivas.
  • Soporte del polimorfismo.
  • Los objetos son creados cuando son necesarios.
  • Permite la compartición de un objeto (integridad
    semántica).
  • DESVENTAJA Aliasing

49
Semántica de las variables
  • Eiffel
  • c1 Cuenta
  • c2 expanded Cuenta

C Cuenta c1 Cuenta c2
Java Cuenta c1 int i
50
Modelado del dominio
  • Relaciones entre clases
  • Atributos
  • Asociaciones
  • Parte-de
  • Contiene
  • Uso
  • Los tipos expandidos modelan la relación parte-de

51
  • class Coche
  • feature
  • -- Atributos
  • color String
  • peso Real
  • potencia Real
  • matricula String
  • -- Parte-De
  • motor MotorCoche
  • chasis ChasisCoche
  • ruedaTrasera RuedaCoche
  • -- Asociaciones
  • fabricado-por FabricanteCoche
  • propietario Persona
  • end

Class EditorUML feature -- Contiene diagrama
ListGrafico -- Uso ventana Window end
52
Paso de parámetros
  • Sea la rutina
  • r (p1 T1 ,, pn Tn)
  • la invocación
  • r (a1,...,an)
  • implica un paso por valor
  • p1 a1
  • pn an

53
Paso de parámetros en Java
  • Paso por valor
  • Se pueden realizar modificaciones directas sobre
    los parámetros
  • void hacer_moroso (Cliente cli)
  • cli.tipo moroso
  • cli null
  • Se puede evitar si se declara el parámetro como
    final
  • void metodo (final Cliente cli) ..

54
Creación de Objetos
  • Mecanismo explícito de creación de objetos
  • Eiffel instrucción de creación, !!
  • C, Java instrucción de creación, new
  • Smalltalk método de clase new
  • Recuperación de memoria
  • Smalltalk, Eiffel y Java Recogida de basura
  • C Destructores

55
Inicialización de Objetos
  • Creación establece valores por defecto para los
    atributos.
  • Inicialización con valores consistentes
  • Eiffel rutinas de creación
  • C, Java constructores
  • Smalltalk métodos de clase

56
Creación en Java
  • Si una clase no proporciona constructores
  • Constructor por defecto que inicializa los campos
    con los valores por defecto, no tiene argumentos.
  • Misma accesibilidad que la clase
  • Posibilidad de invocar a otro constructor de la
    clase
  • Ejemplo (String s, int i)
  • this()
  • at1 s
  • at2 i

57
Asignación
  • Semántica de la Asignación x y
  • COMPARTICION
  • Cuando x e y tienen semántica referencia
  • COPIA
  • Cuando x e y tienen semántica almacenamiento
  • Los lenguajes OO incorporan operaciones de copia
    para las variables con semántica de referencia.

58
Copia de objetos
  • Copia superficial
  • Se copian los valores de cada campo del objeto
    origen oy en el objeto destino ox ox y oy
    comparten referencias.
  • Soportada por defecto y puede redefinirse para
    una clase concreta.
  • Copia profunda
  • Se crea un objeto con una estructura idéntica al
    objeto origen.
  • No hay compartición de referencias
  • No suele ser soportada por defecto

59
Copia de una pila de enteros
60
Copia superficial en Eiffel
  • x.copy (y)

"ABC"
ox e oy existen previamente
VOID
76
x / void e y / void
ox
61
Copia profunda en Eiffel
  • x.deep_copy(y)

ox e oy existen previamente
62
Copia profunda de una pila
3
pila2
100
300
500
3
pila1
100
300
500
63
Genericidad
  • Cómo escribir una clase que represente una
    estructura de datos y que sea posible almacenar
    objetos de cualquier tipo?
  • Pila-Enteros
  • Pila_Libros ? Pila de ?
  • Pila_Figuras
  • .
  • Necesidad de reconciliar reutilización con el uso
    de un lenguaje tipado.

64
Genericidad y Java
  • Java no posee genericidad
  • Necesidad de declaraciones de tipo Object
  • Problemas
  • Necesidad de conversiones de tipo
  • No se asegura homogeneidad
  • Incluye genericidad para arrays
  • private Cuenta cuentas new Cuenta100
  • private int valores new int 4

65
Modelo de ejecución
  • La ejecución de un programa OO consiste en
  • Creación dinámica de objetos
  • Envío de mensajes entre los objetos creados,
    siguiendo un patrón impredecible en tiempo de
    compilación
  • Ausencia de programa principal
  • Cómo empieza la ejecución de un programa OO?
  • Creación de un objeto raíz
  • Aplicar mensaje sobre objeto raíz

66
Modelo de ejecución
  • En tiempo de ejecución, el flujo de ejecución
    siempre se encuentra aplicando una operación
    sobre un objeto (instancia actual) o ejecutando
    una operación que no es un mensaje (asignación,
    creación).
  • En un instante dado bien se aplica un mensaje
    sobre la instancia actual o sobre un objeto
    accesible desde él.

67
Estructura de objetos en tiempo de ejecución
obj2
obj7
RAIZ
obj1
obj4
Current
obj5
obj9
obj3
obj8
68
Cómo llega un mensaje a ser ejecutado?
  • Dado el mensaje
  • c. reintegro (cantidad)
  • formará parte del cuerpo de una rutina r de una
    clase.
  • 1) La ejecución de todo elemento software es
    provocada por un mensaje
  • 2) Cada mensaje tiene un receptor.
Write a Comment
User Comments (0)
About PowerShow.com