introducción a la programación orientada a objetos abstracciones y modelos el concepto de...

25
Introducción a la Programación Orientada a Objetos Abstracciones y Modelos El concepto de abstracción es esencial en ciencias de la computación. Un programa o un subprograma es en sí mismo una abstracción, un modelo de la resolución de un problema o de un subproblema. La programación puede pensarse como un proceso de abstracción basado en reconocer los aspectos relevantes de un problema y descartar aquellos que no lo son.

Upload: prudencio-para

Post on 22-Jan-2015

17 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Introducción a la Programación Orientada a Objetos Abstracciones y Modelos El concepto de abstracción es esencial en ciencias de la computación. Un programa

Introducción a la Programación Orientada a Objetos

Abstracciones y Modelos

El concepto de abstracción es esencial en ciencias de la computación.

Un programa o un subprograma es en sí mismo una abstracción, un modelo de la resolución de un problema o de un subproblema.

La programación puede pensarse como un proceso de abstracción basado en reconocer los aspectos relevantes de un problema y descartar aquellos que no lo son.

Page 2: Introducción a la Programación Orientada a Objetos Abstracciones y Modelos El concepto de abstracción es esencial en ciencias de la computación. Un programa

Introducción a la Programación Orientada a Objetos

Abstracciones y Modelos

Un programa es una abstracción en dos niveles.

Si consideramos una computadora como un dispositivo concreto, el programa es una abstracción porque se aleja de las instrucciones que brinda la máquina y se acerca al problema.

Si consideramos la resolución de un problema, el programa es una abstracción porque sólo modela sus aspectos relevantes.

Page 3: Introducción a la Programación Orientada a Objetos Abstracciones y Modelos El concepto de abstracción es esencial en ciencias de la computación. Un programa

Introducción a la Programación Orientada a Objetos

Abstracciones y Modelos

Un programa escrito en un lenguaje de programación de alto nivel va a tener que ser traducido, en una o varias etapas, en una secuencia de instrucciones que la computadora pueda interpretar y ejecutar.

La computadora solo interpreta y ejecuta instrucciones en lenguaje máquina.

El compilador es el encargado de detectar errores sintáctico y si no existen generar una primera traducción.

Page 4: Introducción a la Programación Orientada a Objetos Abstracciones y Modelos El concepto de abstracción es esencial en ciencias de la computación. Un programa

Introducción a la Programación Orientada a Objetos

Abstracciones y Modelos

En lenguaje máquina las instrucciones y los datos se representan como secuencias de 0 y 1.

00001101 00011101 00011000 0000001000001100 00011101 00011101 0001001000001000 00010010 00011101 00000000

Page 5: Introducción a la Programación Orientada a Objetos Abstracciones y Modelos El concepto de abstracción es esencial en ciencias de la computación. Un programa

Introducción a la Programación Orientada a Objetos

Abstracciones y Modelos

Los lenguajes de programación evolucionaron durante las últimas décadas para brindar mayores niveles de abstracción.

La abstracción permite que el programador se concentre más en el problema y en su resolución, que en la computadora que va a ejecutar el programa.

Una de las características de los lenguajes de programación de alto nivel es que se responsabilizan de la administración de la memoria.

 

Page 6: Introducción a la Programación Orientada a Objetos Abstracciones y Modelos El concepto de abstracción es esencial en ciencias de la computación. Un programa

Introducción a la Programación Orientada a Objetos

Abstracciones y Modelos

El programador accede a la memoria a través de variables.

Uno de los primeros mecanismos de abstracción fueron entonces los nombres simbólicos que permitieron nombrar a las operaciones y a las locaciones de memoria.

MULT Z,Y,2SUM Z,Z,XASIG X,Z

X, Y y Z son variables.

Page 7: Introducción a la Programación Orientada a Objetos Abstracciones y Modelos El concepto de abstracción es esencial en ciencias de la computación. Un programa

Introducción a la Programación Orientada a Objetos

Variables

Una variable es una abstracción de una celda de memoria y tiene tres atributos:

•Nombre

•Alcance

•Tipo

Page 8: Introducción a la Programación Orientada a Objetos Abstracciones y Modelos El concepto de abstracción es esencial en ciencias de la computación. Un programa

Introducción a la Programación Orientada a Objetos

El tipo de una variable

El tipo de dato es un conjunto de valores y un conjunto de operaciones que pueden aplicarse sobre el conjunto de valores.

El concepto de tipo permite factorizar propiedades y establecer chequeos para prevenir errores.

En Java una variable puede ser de tipo elemental o de tipo clase.

En ambos casos, en ejecución una variable queda ligada a una locación de memoria.

Page 9: Introducción a la Programación Orientada a Objetos Abstracciones y Modelos El concepto de abstracción es esencial en ciencias de la computación. Un programa

Introducción a la Programación Orientada a Objetos

La locación de memoria asociada a una variable, mantiene en ejecución el valor de la variable.

En valor de una variable depende de su tipo:

•Las variables de tipo elemental mantienen un valor atómico •Las variables de tipo clase mantienen una referencia.

 

El valor de una variable

Page 10: Introducción a la Programación Orientada a Objetos Abstracciones y Modelos El concepto de abstracción es esencial en ciencias de la computación. Un programa

Introducción a la Programación Orientada a Objetos

A partir de la distinción entre tipos elementales y tipo clase podemos identificar tres diferencias:• la declaración• la asignación• la comparación

de variables

Declaración, modificación y comparación

Page 11: Introducción a la Programación Orientada a Objetos Abstracciones y Modelos El concepto de abstracción es esencial en ciencias de la computación. Un programa

Introducción a la Programación Orientada a Objetos

Variables de Tipo Elemental

int i,j,k; i

j

i = 1;j = -1;

1

-1

k = j * -1;

k

1

iguales = i == k;

iguales t

boolean iguales;

Page 12: Introducción a la Programación Orientada a Objetos Abstracciones y Modelos El concepto de abstracción es esencial en ciencias de la computación. Un programa

Introducción a la Programación Orientada a Objetos

Variables de Tipo Clase

Una variable de un tipo clase no contiene directamente al objeto propiamente dicho, sino una referencia al objeto.

El valor de una variable de tipo clase es entonces una referencia.

Una referencia puede ser nula o estar asociada a un objeto.

Cuando una referencia está asociada o ligada, el valor es la dirección del bloque de memoria en el que se mantiene el estado interno del objeto.

El estado interno de un objeto está constituido por el estado interno de los atributos de instancias.

Page 13: Introducción a la Programación Orientada a Objetos Abstracciones y Modelos El concepto de abstracción es esencial en ciencias de la computación. Un programa

Introducción a la Programación Orientada a Objetos

En una estación meteorológica se mantienen almacenadas las temperaturas mínimas y máximas registradas en un día de un período.

Caso de estudio: Estación Meteorológica

TempMinMaxmin,max : real<<Constructor>> TempMinMax(min,max:real)<<Consultas>>obtenerMin():realobtenerMax():realpromedio():realamplitud():realequals(t: TempMinMax):booleantoString():StringmayorMax(t:TempMinMax):realmayorAmplitud(t:TempMinMax):TempMinMax 

Asume que se controló min<=max

Page 14: Introducción a la Programación Orientada a Objetos Abstracciones y Modelos El concepto de abstracción es esencial en ciencias de la computación. Un programa

Introducción a la Programación Orientada a Objetos

Caso de estudio:Estación Meteorológica

class TempMinMax{//atributos de instanciaprivate float min;private float max;//Constructorespublic TempMinMax(float min,float max){//Se asume controlado min <= max this.min = min; this.max = max;}…}

Page 15: Introducción a la Programación Orientada a Objetos Abstracciones y Modelos El concepto de abstracción es esencial en ciencias de la computación. Un programa

Introducción a la Programación Orientada a Objetos

Caso de estudio:Estación Meteorológica

//Consultaspublic float obtenerMin(){ return min;}public float obtenerMax(){ return max;}

Page 16: Introducción a la Programación Orientada a Objetos Abstracciones y Modelos El concepto de abstracción es esencial en ciencias de la computación. Un programa

Introducción a la Programación Orientada a Objetos

Caso de estudio:Estación Meteorológica

public float promedio(){ return (min+max)/2;}public float amplitud(){ return max-min;}public boolean equals(TempMinMax t){ return max == t.obtenerMax() && min == t.obtenerMin();}public String toString(){ return "min "+min+ " max "+max;}

Page 17: Introducción a la Programación Orientada a Objetos Abstracciones y Modelos El concepto de abstracción es esencial en ciencias de la computación. Un programa

Introducción a la Programación Orientada a Objetos

Caso de estudio:Estación Meteorológica

public float mayorMax(TempMinMax t){ if (max >= t.obtenerMax()) return max; else return t.obtenerMax();}public TempMinMax mayorAmplitud(TempMinMax t){ if (amplitud() >= t.amplitud()) return this; else return t;}

Page 18: Introducción a la Programación Orientada a Objetos Abstracciones y Modelos El concepto de abstracción es esencial en ciencias de la computación. Un programa

Introducción a la Programación Orientada a Objetos

class EstacionMeteorologica{ public static void main (String a[]){

TempMinMax lunes, martes, miercoles; …}}

Declaración

Page 19: Introducción a la Programación Orientada a Objetos Abstracciones y Modelos El concepto de abstracción es esencial en ciencias de la computación. Un programa

Introducción a la Programación Orientada a Objetos

class EstacionMeteorologica{ public static void main (String a[]){

TempMinMax lunes, martes, miercoles; lunes = new TempMinMax(10,17); martes = new TempMinMax(-3,15); miercoles = new TempMinMax(10,17); …}}

Asignación

Page 20: Introducción a la Programación Orientada a Objetos Abstracciones y Modelos El concepto de abstracción es esencial en ciencias de la computación. Un programa

Introducción a la Programación Orientada a Objetos

class EstacionMeteorologica{ public static void main (String a[]){

TempMinMax lunes, martes, miercoles; lunes = new TempMinMax(10,17); martes = new TempMinMax(-3,15); miercoles = new TempMinMax(10,17); float mm = lunes.mayorMax(martes); System.out.println ("Mayor maxima "+mm));…}}

Declaración y Asignación

Page 21: Introducción a la Programación Orientada a Objetos Abstracciones y Modelos El concepto de abstracción es esencial en ciencias de la computación. Un programa

Introducción a la Programación Orientada a Objetos

class EstacionMeteorologica{ public static void main (String a[]){

TempMinMax lunes, martes, miercoles; lunes = new TempMinMax(10,17); martes = new TempMinMax(-3,15); miercoles = new TempMinMax(10,17); float mm = lunes.mayorMax(martes); System.out.println ("Mayor maxima "+mm);

String s = lunes.mayorAmplitud(martes).toString(); System.out.println ("Mayor amplitud "+s);

… }}

Objetos anónimos

Page 22: Introducción a la Programación Orientada a Objetos Abstracciones y Modelos El concepto de abstracción es esencial en ciencias de la computación. Un programa

Introducción a la Programación Orientada a Objetos

class EstacionMeteorologica{ public static void main (String a[]){

TempMinMax lunes, martes, miercoles; lunes = new TempMinMax(10,17); martes = new TempMinMax(-3,15); miercoles = new TempMinMax(10,17); float mm = lunes.mayorMax(martes); System.out.println ("Mayor maxima "+mm);

TempMinMax ma = lunes.mayorAmplitud(martes);

}}

Identidad, Igualdad y Equivalencia

Page 23: Introducción a la Programación Orientada a Objetos Abstracciones y Modelos El concepto de abstracción es esencial en ciencias de la computación. Un programa

Introducción a la Programación Orientada a Objetos

class EstacionMeteorologica{ public static void main (String a[]){

TempMinMax lunes, martes, miercoles; lunes = new TempMinMax(10,17); martes = new TempMinMax(-3,15); miercoles = new TempMinMax(10,17); float mm = lunes.mayorMax(martes); System.out.println ("Mayor maxima "+mm);

TempMinMax mamp = lunes.mayorAmplitud(martes);

System.out.println (lunes == miercoles); System.out.println (martes == mamp); System.out.println (lunes.equals(miercoles)); }}

Identidad, Igualdad y Equivalencia

Page 24: Introducción a la Programación Orientada a Objetos Abstracciones y Modelos El concepto de abstracción es esencial en ciencias de la computación. Un programa

Introducción a la Programación Orientada a Objetos

Identidad, Igualdad y Equivalencia

Es importante distinguir entre el nombre de un objeto, el objeto mismo y el objeto del problema que representa.

Un mismo objeto puede tener dos nombres diferentes y también es posible que dos objetos diferentes, con diferentes nombres, representen a un mismo objeto del problema.

Bajo estas circunstancias, cómo decidimos si dos objetos son iguales?

Page 25: Introducción a la Programación Orientada a Objetos Abstracciones y Modelos El concepto de abstracción es esencial en ciencias de la computación. Un programa

10lunes miercoles

Introducción a la Programación Orientada a Objetos

Identidad, Igualdad y Equivalencia

Dos objetos con el mismo estado interno

Un mismo objeto referenciado por dos variables

martes

mamp

min

17max

10min

17max

-3min

15max