Introducción a la Programación Orientada a Objetos Una clase que modela los atributos y el comportamiento de una colección de objetos, define un tipo de.

Slides:



Advertisements
Presentaciones similares
Complejidad Computacional
Advertisements

Complejidad Computacional
Tablas. Descripción general Introducción a las tablas Creación de tablas Uso de tablas.
Lenguaje de programación Java
Clases Extendidas La clase extendida hereda los campos y métodos de la clase de la cual extiende. La clase original se conoce como superclase y la clase.
Orientación a Objetos con Java SE
Defina una clase TempMinEstacion que encapsule la representación de las temperaturas mínimas registradas en una estación meteorológica en un período y.
Introducción a la Programación Orientada a Objetos Una Universidad administra varias residencias para estudiantes extranjeros. Cada residencia ocupa un.
Tipos de Datos Abstractos Vector de Racionales
TDA Matriz Racionales Implementar un TDA MatrizRac que brinde operaciones para calcular el producto de un escalar por una matriz, la suma de dos matrices,
Programación Orientada a Objetos
El proceso de desarrollo de software
El Proceso de desarrollo de software
El proceso de desarrollo de software
Abstracciones y Modelos
Reusabilidad La productividad está basada en reusabilidad y extensibilidad El reusabilidad permite desarrollar nuevas aplicaciones a partir de componentes.
El proceso de desarrollo de software
1.2 Sintaxis del lenguaje Java.
Aplicación del paradigma orientado a objetos
Encapsulamiento y Abstracción
Abstracción de Datos La abstracción es un recurso fundamental en la programación orientada a objetos y está además fuertemente ligado a reusabilidad.
El concepto de clase Con frecuencia un término puede definirse de diferentes maneras según el enfoque. Desde el punto de vista del análisis y el diseño.
Genericidad Una clase genérica encapsula una estructura y brinda un conjunto de servicios cuya implementación no depende del tipo de las componentes.
Genericidad Los datos de aplicaciones muy diferentes puede modelarse con frecuencia a partir de tipos de datos cuyas operaciones no dependen del tipo de.
Vectores en java.
PROGRAMACIÓN EN JAVA Curso-taller inicial de programación en JAVA Facultad de Estadística e Informática TEMA II.
Arreglos: Vectores en JAVA
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
POO Java Módulo 3 Elementos de programas Identificadores
Java Orientado a Objetos CLASES,OBJETOS Y MÉTODOS
Tema 6: Clases Antonio J. Sierra.
Técnicas avanzadas de programación Interfaces
SCJP Sun Certified Programmer for Java 6
JAVA J.A.C..
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Objetos.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
Programación Orientada a Objetos usando CONSTRUCTORES DESTRUCTORES.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Clases.
Ivette C. Martínez - Héctor Palacios Java – Modulo 1 Introducción y Fundamentos del lenguaje de programación Java.
Herencia. Introducción La idea básica es poder crear clases basadas en clases ya existentes. Cuando heredamos de una clase existente, estamos re-usando.
Introducción a la Programación Orientada a Objetos VRacional Racional [] arreglo > VRacional (max : entero) > establecerElem (pos : entero, elem : Racional)
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Genericidad.
Aun en problemas muy simples surge la necesidad de agrupar valores elementales de alguna manera. Cuando representamos una caja de ahorro bancaria definimos.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Colección.
Capítulo 2 “Subprogramas/Funciones - Arreglos”
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Caso.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Caso.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Polimorfismo.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Abstracción.
Introducción a la Programación Orientada a Objetos Arreglos de 2 dimensiones TDA Matriz Implementar un TDA Matriz que brinde operaciones para calcular.
Abstracción El concepto de abstracción es esencial en ciencias de la computación. Un programa es en sí mismo una abstracción, un modelo de la resolución.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Caso.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Tipo.
Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Arreglo.
Herencias Conceptos básicos i
Diferencia entre implementar en RPA e IPOO - Diseño En.
Estructuras de control selectivas Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión Práctica 3.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Objetos.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
UNIVERSIDAD TECNOLÓGICA DE PANAMÁ Facultad de Ingeniería de Sistemas Computacionales Programa de Lic. en Informática Educativa Computación.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Objetos.
Concepto de Tipo y Subtipo Diseño e Implementación Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 10 Versión.
Programación I Clases. Paradigma POO La programación Orientada a objetos (POO) es una forma programar, más cercana a como expresaríamos las cosas en la.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Herencia.
Arrays, Cadenas y Vectores Tipos Genéricos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 5 Versión
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
Paso de parámetros Diseño de programas iterativos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 7 Versión.
Transcripción de la presentación:

Introducción a la Programación Orientada a Objetos Una clase que modela los atributos y el comportamiento de una colección de objetos, define un tipo de dato. Si en el modelo se encapsula la representación de los atributos y la implementación de las operaciones, el tipo de dato es abstracto. La interface describe qué pueden hacer los objetos de una clase, la implementación establece cómo lo hacen. Tipos de Datos Abstractos

Introducción a la Programación Orientada a Objetos Cuando un programador define un tipo de dato abstracto, extiende las facilidades provistas por el lenguaje con una nueva abstracción. Algunos tipos son generales y más fáciles de reusar. Otros son más específicos de una aplicación en particular. El TDA String provisto por Java es muy general y seguramente podrá usarse en aplicaciones muy diversas, nuestro TDA Racional es más específico y el TDA Ciudad todavía más. Tipos de Datos Abstractos

Introducción a la Programación Orientada a Objetos Tipos de Datos Abstractos Vector Implementar un TDA Vector que brinde operaciones para calcular el producto escalar de un vector, el producto vectorial entre dos vectores, la suma de dos vectores, etc. El vector se representa mediante un arreglo de números reales. La clase que encapsula al arreglo brinda operaciones para establecer y obtener un elemento y para comparar, copiar y clonar vectores.

Introducción a la Programación Orientada a Objetos Vector real [] vec > Vector (max : entero) > establecerElem (pos : entero, elem : real) copy (v: Vector) Tipos de Datos Abstractos Vector Asume que la posición es válida El comentario asociado al método establecerElem no describe su significado sino que establece una precondición, un compromiso para la clase cliente.

Introducción a la Programación Orientada a Objetos Vector real [] vec > existePos (p : entero): boolean existeElem (r : real) : boolean obtenerElem (p : entero) : real cantElems () : entero prodEscalar(v : Vector) : real suma (v : Vector ) : Vector escalarXVector(e : real) : Vector equals (v : Vector) : boolean clone () : Vector Tipos de Datos Abstractos Vector Asume que las longitudes son consistentes Asume que la posición es válida

Introducción a la Programación Orientada a Objetos Tipos de Datos Abstractos Vector public class Vector { private float[] vec; \\ Constructor public Vector(int m){ vec=new float[m]; } \\ Comandos public void establecerElem(int p,float val) { \\Asume que la posición es válida vec[p] = val; } vec es una variable que referencia a un objeto, Vector es una clase a partir de la cual se crearán objetos

Introducción a la Programación Orientada a Objetos Tipos de Datos Abstractos Vector \\ Consultas public boolean existePos (int p) { return (p >= 0 && p < vec.length); } public float obtenerElem (int p){ \\Asume que la posición es válida return vec[p]; } public int cantElems () { return vec.length; }

Introducción a la Programación Orientada a Objetos Tipos de Datos Abstractos Vector \\ Consultas public float prodEscalar(Vector v) { \\Asume que las longitudes son consistentes float pe=0; for (int i=0;i<vec.length;i++) pe= pe+v.obtenerElem(i)*vec[i]; return pe; }

Introducción a la Programación Orientada a Objetos Tipos de Datos Abstractos Vector \\ Consultas public Vector suma (Vector v){ \\Asume que las longitudes son consistentes Vector aux=new Vector(vec.length); float r ; for (int i=0;i<vec.length;i++) { r=vec[i]+v.obtenerElem(i)) ; aux.establecerElem(i,r); } return aux; }

Introducción a la Programación Orientada a Objetos Tipos de Datos Abstractos Vector \\ Consultas public Vector escalarXVector(float esc) { Vector aux = new Vector(vec.length); for (int i=0;i<vec.length;i++) aux.establecerElem(i,vec[i]*esc); return aux; }

Introducción a la Programación Orientada a Objetos Tipos de Datos Abstractos Vector \\ Consultas public boolean equals(Vector v) { int i=0; boolean iguales=cantElems()==v.cantElems(); while (i<vec.length)&&(iguales)) { iguales= (vec[i]==v.obtenerElemento(i)); i++;} return iguales; } MUY IMPORTANTE Observe que vec es un arreglo y v es un objeto de clase Vector. La subindicación es una operación válida para vec pero no para v. Los servicios cantElems() y obtenerElemento(j) son válidos para v pero no para vec.

Introducción a la Programación Orientada a Objetos Tipos de Datos Abstractos Vector \\ Consultas public Vector clone() { Vector v= new Vector(vec.length); for (int i=0; i<vec.length;i++) v.establecerElemento(i, vec[i]); return v; }

Introducción a la Programación Orientada a Objetos La entrada y salida se realiza desde la clase cliente. La estructura está completa y la cantidad de elementos se define en el momento de la creación Todos los elementos ya están ingresados cuando empieza el procesamiento Tipos de Datos Abstractos Vector

Introducción a la Programación Orientada a Objetos Vector real [] vec > Vector (max : entero) > establecerElem (pos : entero, elem : real) copy (v: Vector) Tipos de Datos Abstractos Vector Asume que la posición es válida Los elementos del cada vector se referencian desde los clientes con posiciones 1 a la cantidad de elementos El comentario asociado al método establecerElem no describe su significado sino que establece una precondición, un compromiso para la clase cliente.

Introducción a la Programación Orientada a Objetos Tipos de Datos Abstractos Vector Vector v1; v1.obtenerElem (3); subíndice posición

Introducción a la Programación Orientada a Objetos Vector real [] vec > existePos (p : entero): boolean existeElem (r : real) : boolean obtenerElem (p : entero) : real cantElems () : entero prodEscalar(v : Vector) : real suma (v : Vector ) : Vector escalarXVector(e : real) : Vector equals (v : Vector) : boolean clone () : Vector Tipos de Datos Abstractos Vector Asume que las longitudes son consistentes Asume que la posición es válida

Introducción a la Programación Orientada a Objetos Tipos de Datos Abstractos Vector public class Vector { private float[] vec; \\ Constructor public Vector(int m){ vec=new float[m]; } \\ Comandos public void establecerElem(int p,float val) { \\Asume que la posición es válida vec[p-1] = val; } vec es una variable que referencia a un objeto, Vector es una clase a partir de la cual se crearán objetos

Introducción a la Programación Orientada a Objetos Tipos de Datos Abstractos Vector \\ Consultas public boolean existePos (int p) { return (p > 0 && p <= vec.length); } public float obtenerElem (int p){ \\Asume que la posición es válida return vec[p-1]; } public int cantElems () { return vec.length; }

Introducción a la Programación Orientada a Objetos Tipos de Datos Abstractos Vector \\ Consultas public float prodEscalar(Vector v) { \\Asume que las longitudes son consistentes float pe=0; for (int i=0;i<vec.length;i++) pe= pe+v.obtenerElem(i+1)*vec[i]; return pe; }

Introducción a la Programación Orientada a Objetos Tipos de Datos Abstractos Vector \\ Consultas public Vector escalarXVector(float esc) { Vector aux = new Vector(vec.length); for (int i=0;i<vec.length;i++) aux.establecerElem(i+1,vec[i]*esc); return aux; }

Introducción a la Programación Orientada a Objetos Tipos de Datos Abstractos Vector \\ Consultas public boolean equals(Vector v) { int i=0; boolean iguales=cantElems()==v.cantElems(); while (i<vec.length)&&(iguales)) { iguales= (vec[i]==v.obtenerElemento(i+1)); i++;} return iguales; } public Vector clone() { Vector v= new Vector(vec.length); for (int i=0; i<vec.length;i++) v.establecerElemento(i+1, vec[i]); return v; }

Introducción a la Programación Orientada a Objetos La entrada y salida se realiza desde la clase cliente. La estructura está completa y la cantidad de elementos se define en el momento de la creación Todos los elementos ya están ingresados cuando empieza el procesamiento Las posiciones para las clases cliente comienzan en 1 Tipos de Datos Abstractos Vector

Introducción a la Programación Orientada a Objetos Una clase que incluye un conjunto de métodos pero no tiene atributos de instancia no define un tipo de dato. Brinda servicios pero no van a crearse instancias de la clase. Una clase que define atributos de instancia va a ser usada para crear objetos en ejecución. Si los atributos están encapsulados la clase define un TDA. Un tipo de dato abstracto es una unidad de código que si está bien diseñada y testeada puede ser reusada en diferentes sistemas. Tipos de Datos Abstractos Vector

Introducción a la Programación Orientada a Objetos La clase TestVectores definida a continuación no define un tipo de dato. Su función es verificar los servicios provistos por Vector. De acuerdo a lo establecido en el diagrama, es responsabilidad del cliente de la clase Vector establecer los chequeos sobre las posiciones y sobre las longitudes. No podemos garantizar que la clase Vector es correcta, pero sí que los servicios verifican la especificación para los casos de prueba elegidos. Tipos de Datos Abstractos Vector

Introducción a la Programación Orientada a Objetos public class TestVector { public static void main (String arg[]) { Vector v1,v2,v3; v1 = generaVector(m); mostrarVector(v1); v2 = generaVector(m); mostrarVector(v2); if (v1.cantElems() == v2.cantElems()) { System.out.println("Producto escalar "+ v1.prodEscalar(v2)); } else...; Tipos de Datos Abstractos Vector

Introducción a la Programación Orientada a Objetos … if (v1.cantElems() == v2.cantElems()) { System.out.println("Vector suma "); v3 = v1.suma(v2); mostrarVector(v3);} else... v2 = v2.escalarXVector (5); System.out.println("Vector v2 X escalar "); mostrarVector(v2); Tipos de Datos Abstractos Vector

Introducción a la Programación Orientada a Objetos public class Vector { private float[] vec; \\ Constructor public Vector(int m){ vec=new float[m]; } vec Vector v1; v1=new Vector(5); v1 Administración de Memoria Se declara una variable v1 y se crea un objeto de la clase Vector cuya referencia se almacena en v1. 5 length

Introducción a la Programación Orientada a Objetos Java brinda en el paquete java.util una clase llamada Vector con características muy diferentes a la que hemos definido. Si quisiéramos implementar la clase especificada por el diagrama y también usar la clase Vector provista por el paquete java.util, deberíamos utilizar un nombre diferente. Aclaración