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.
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.
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.
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
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.
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.
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
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.
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
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
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;
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.
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
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;}…}
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;}
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;}
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;}
Introducción a la Programación Orientada a Objetos
class EstacionMeteorologica{ public static void main (String a[]){
TempMinMax lunes, martes, miercoles; …}}
Declaración
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
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
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
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
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
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?
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
Top Related