Diseño y Programación Orientada a Objetos

Slides:



Advertisements
Presentaciones similares
FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE
Advertisements

Curso de java básico (scjp)
Curso de java básico (scjp)
Sintaxis básica del lenguaje
Tema 1. Introducción a la programación (Lenguaje java).
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.
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
SCJP Sun Certified Programmer for Java 6
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SEMANA TRES ASIGNACION.
El lenguaje de programación Java
JAVA J.A.C..
Programación III Clase 08 Arreglos.
Sintaxis de C# (Declaraciones y Tipos)
Prof. Mayra M. Méndez Anota.  Herramientas  Características  Convenciones  Estructura de una clase  Sintaxis de: métodos, atributos, constructores.
Programación Orientada a Objetos usando CONSTRUCTORES DESTRUCTORES.
Lenguaje de programación Java UNIVERSIDAD REGIONAL DEL SURESTE.
1 Asignación Dinámica de Memoria Agustín J. González Versión original de Kip Irvine ELO 329.
Computación I Primer Semestre 2006 Capítulo IV Ciclos y Colecciones (con un sabor a algoritmos)
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.
1 Asignación Dinámica de Memoria Agustín J. González ELO 329.
Ing. Esp. Ricardo Cujar.  Lenguaje de programación orientado a objetos.  Desarrollado por Sun MicroSystems.  Independiente del Sistema Operativo gracias.
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.
ARREGLOS. La sintaxis para declarar e inicializar un array será: Tipo_de_variable[ ] Nombre_del_array = new Tipo_de_variable[dimensión]; También podemos.
Arrays, Cadenas y Vectores Tipos Genéricos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 5 Versión
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Objetos.
El lenguaje de Programación C Fernando J. Pereda.
PROGRAMACIÓN ORIENTADA A OBJETOS SEGUNDA UNIDAD: “CLASES, OBJETOS Y MÉTODOS” IRVING YAIR SALAS CHÁVEZ ING. EN SISTEMAS COMPUTACIONALES - ITSLP.
Control, adquisición y monitoreo con Arduino y Visual Basic .net
Clases y Objetos en Java
Taller de Java Universidad de los Andes
Diseño y Programación Orientada a Objetos
Diseño y Programación Orientada a Objetos
Diseño y Programación Orientada a Objetos
IntroducciÓn a los Arreglos (“arrays”) en C++
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
BREVE INTRODUCCION A LA PROGRAMACION
Arreglos (Arrays) Programación 1.
EL MUNDO DE LOS OBJETOS PROGRAMANDO EN JAVA.
Ingeniero en Computación José Alfredo Cobián Campos
Diseño y Programación Orientada a Objetos
Colecciones Carlos Fontela, 2008.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
Métodos en Java.
Diseño y Programación Orientada a Objetos
Clases y Objetos en Java
Definición y Conversión de datos
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
Diseño y Programación Orientada a Objetos
Diseño y Programación Orientada a Objetos
LISTAS..
Funciones y Clases Amigas (Friend)‏ Miembros Estáticos (Static)
IPOO 2 cuatrimestre 2017 Departamento de Ciencias e Ingeniería
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
Diseño y Programación Orientada a Objetos
Sonia Rueda Herencia y Polimorfismo
Clases y Objetos en Java
Herencia en C#.
Algunas Características de C++ no presentes en C
Manejo de Punteros y objetos en memoria dinámica en C++
Arreglos en Java.
Algunas Características de C++ no presentes en C
Programación Orientada a Objetos
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
Algunas Características de C++ no presentes en C
Clases abstractas e interfaces
Clases y Objetos en Java
Transcripción de la presentación:

Diseño y Programación Orientada a Objetos Conferencia # 3: TDA Colección Lineal de Enteros Facultad Ing. Informática ISPJAE

Contenido Arreglos en Java Arreglos como objetos Modificador de durabilidad final Tipo de dato abstracto: Colección Lineal de Enteros Clase IntArray como instancia miembro

Bibliografía Bruce Eckel Thinking in Java. Tercera Edición. 2002. Zukowski John. “Programación Java 2. J2SE 1.4”. Volumen 1. Cap. 6. Pág.145..153. H.M.Dietel:”Como programar en C/C++”. Capítulo 17, epígrafe 17.8 Bjarne Stroustrup “The C++ Programming Language”. Ayuda en línea del Eclipse 3.2

Arreglos Concepto C++: int a[10]; a 0 1 2 3 … 9 tamaño físico 4 4byte (int) Concepto C++: int a[10]; a 0 1 2 3 … 9 tamaño físico 1 5 8 2 … 4 tamaño lógico

Arreglos Declaración en Java Sintaxis Ejemplos: <tipo>[] <identificador>; int[] x; <tipo> []<identificador>; int []x; <tipo> <identificador>[]; int x[]; int[] x, y[]; int []x, y[]; ¿y?

Arreglos Distribución en memoria en C++ int x[10]; x stack int* x= new int[10]; stack x stack heap x

Arreglos Distribución de memoria en Java int[] x; stack heap x= new int[10]; stack heap x stack heap x 0 0 0 0 0 0 0 0 0 0

Arreglos Ejemplos: C++: Rectangle arr[10]; Java: Rectangle[] arr; Arreglos de objetos C++: <tipo> <ident>[constante]; Java: <tipo>[] <identificador>; Ejemplos: C++: Rectangle arr[10]; Java: Rectangle[] arr; Clase

Arreglos de objetos: C++ Rectangle x[10]; Rectangle* x= new Rectangle[10]; Rectangle** x= new Rectangle*[10]; stack x 0 1 2 … stack x heap x[0]= new Rectangle(); stack x heap

Arreglos de objetos: Java Rectangle[] x; stack x heap x= new Rectangle[5]; stack x null null null null null heap x[0]= new Rectangle(); stack x null null null null heap x.length  5

Inicialización en Java x.length  5 int[] x = {0, 1, 2, 3, 4}; int[] x = new int[] {0, 1, 2, 3, 4}; Rectangle[] x = {new Rectangle(), new Rectangle(), new Rectangle()}; x.length  3

Arreglos como parámetros en Java Se transfiere la referencia Por valor, solo parámetros de algún tipo primitivo (int, float, boolean, char) Arreglos anónimos obj.metodo(new int[]{9,5,8}); Se implementa chequeo de rango para los índices. ArrayIndexOutOfBoundsException

Comprobación Describa el estado de la memoria después de cada una de las sentencias siguientes : int[] x, y; x= new int[] {0, 1, 2, 3, 4}; y= x;

Modificador de durabilidad final Se utiliza para declarar variables, y parámetros constantes. También se pueden declarar métodos final. Se estudiará más adelante.

Uso de final. Ejemplos //declara e inicializa private final int MAX = 100; //declara private final int MAX; …if (a > b) MAX = 100; //inicializa con 100 else MAX = 200; //inicializa con 200

Uso de final. Ejemplos public class Circle { private final Point point; //refer. const. … public void setX(int x) { point.setX(x); //objeto no es const. } …}

Arreglos como objetos x.length x.clone() System.arraycopy(x,0,y,0,x.length); int[] y= Arrays.copyOf(x,x.length); Arrays.fill(x,1); Arrays.sort(x); int pos= Arrays.binarySearch(new int[]{1,4,6,8}, 6); //pos= 2

TDA: Colección lineal de enteros

public class IntArray { public static final int DEFAULT_CAPACITY = 5; private int count; private int[] data; public IntArray() { this(DEFAULT_CAPACITY); }

public IntArray(int capacity) { if (capacity <= 0) data= new int[DEFAULT_CAPACITY]; else data= new int[capacity]; } public IntArray(int[] source, int sourceCount) {…} public IntArray(int[] source) {…} public IntArray(IntArray source) {…}

public void add(int item) { if (count == data.length) ensureCapacity(count + 1); data[count++]= item; } public int find(int item) { int i= 0; while (i<count && item!=data[i]) i++; return i < count ? i : -1;

public void add(int index, int item) { if (count == data.length) ensureCapacity(DEFAULT_CAPACITY); System.arraycopy(data,index,data, index+1,count-index); data[index]= item; count++; }

public void addAll(int[] source, int countSource) { for (int i= 0; i < countSource; i++) add(source[i]); } public void addAll(int[] source) { addAll(source, source.length);

public void addAll(IntArray source) { for(int i= 0; i<source.getCount(); i++) add(source.get(i)); } public void clear() { if (count > 0){ Arrays.fill(data, 0, count, 0); count = 0;

public float average() { return (float)sum()/count; } public boolean exists(int item) { return find(item) != -1; public boolean isEmpty() { return count == 0;

public int get(int index) { return data[index]; } public int getCount() { return count;

private void ensureCapacity(int minCapacity) { int[] newData= new int[data.length + minCapacity)]; System.arraycopy(data, 0,newData, 0, count); data = newData; }

public int findLast(int item) { int i = count - 1; while (i >= 0 && item != data[i]) i--; return i >= 0 ? i : -1; } public int set(int index, int item) { int result = data[index]; data[index] = item; return result;

public int remove(int index) { int result = data[index]; if (index != --count - 1) System.arraycopy(data,index+1, data,index,count-index); data[count] = 0; return result; }

public int countEqualNumber(int number) { …} public int countBiggerThan(int number) { …} public int countSmallerThan(int number) {…} public int indexBiggerValue() {…} public int indexLowerValue() {…} public int sum() {…}

¿Qué hacer si la colección no es de enteros? float ¿Soluciones?

Soluciones private float[] data; public boolean exists(float item) 1) public class FloatArray { private float[] data; public boolean exists(float item) { return find(item) != -1; } … } 2) Utilizar tipos genéricos o plantillas

IntArray como instancia miembro Procesar los resultados de Cuba en Atenas. 12 equipos. Cada equipo: nombre, colectivo o individual, cantidad de hombres y de mujeres, medallas de oro, plata y bronce. Se conoce el total de medallas alcanzadas por el país en las últimas 5 olimpiadas precedentes en las que ha participado.

Ejemplo Sidney … Cuba 10 12 8 20 50 no 8 6 2 3 5 7 1 si 27 … Equipo Colec Hom Muj Oro Plat Bron Judo no 8 6 2 3 Atlet 5 7 1 BaseB si 27 … Sidney … Cuba 10 12 8 20 50

Se desea obtener Total de deportistas que participaron. Total de medallas de un equipo. Total de medallas obtenidas. Equipo colectivo con más medallas de oro. Promedio de medallas de un equipo Si las medallas obtenidas en Atenas superan el promedio de medallas obtenidas en las 5 olimpiadas precedentes.

Con arreglos paralelos public class Olympic { private String[] arrTeam; private boolean[] arrIndividual; private int[] arrGold; private int[] arrSilver; private int[] arrBronze; private int[] arrFemale; private int[] arrMale; private int[] arrHistorical; …

Con instancias colecciones public class Olympic { private StringArray team; private BooleanArray individual; private IntArray gold; private IntArray silver; private IntArray bronze; private IntArray female; private IntArray male; private IntArray historical; …

Modelando todos los objetos Team int bronze int female int gold boolean indiv String name int male int silver … Olympic int count Team[] team IntArray historical … 1 *

Conclusiones Importancia de implementar TDA