Arrays o Arreglos - Introducción a la POO (java)

82
Lenguaje de Lenguaje de Programación I Programación I Ing. Gerald Basurco Zapata Ing. Gerald Basurco Zapata

Transcript of Arrays o Arreglos - Introducción a la POO (java)

Page 1: Arrays o Arreglos - Introducción a la POO (java)

Lenguaje de Lenguaje de Programación IProgramación I

Ing. Gerald Basurco ZapataIng. Gerald Basurco Zapata

Page 2: Arrays o Arreglos - Introducción a la POO (java)

Tema 3Tema 3

• Arrays o Arreglos

• Introducción a la POO

• Clases y Objetos en JAVA

• Ejemplos básicos - POO

Page 3: Arrays o Arreglos - Introducción a la POO (java)

Arrays o ArreglosArrays o Arreglos

Page 4: Arrays o Arreglos - Introducción a la POO (java)

DefiniciónDefinición

Un array es una estructura de datos que contiene una colección de datos del mismo tipo

Page 5: Arrays o Arreglos - Introducción a la POO (java)

Propiedades de los arraysPropiedades de los arrays

Los arrays se utilizan como contenedores para almacenar datos relacionados (en vez de declarar variables por separado para cada uno de los elementos del array).

Todos los datos incluidos en el array son del mismo tipo. Se pueden crear arrays de enteros de tipo int o de reales de tipo float, pero en un mismo array no se pueden mezclar datos de tipo int y datos de tipo float.

El tamaño del array se establece cuando se crea el array (con el operador new, igual que cualquier otro objeto).

A los elementos del array se accederá a través de la posición que ocupan dentro del conjunto de elementos del array.

Page 6: Arrays o Arreglos - Introducción a la POO (java)

TerminologíaTerminología

Los arrays unidimensionales se conocen con el nombre de vectores.

Los arrays bidimensionales se conocen con el nombre de matrices.

Page 7: Arrays o Arreglos - Introducción a la POO (java)

Arrays Unidimensionales Arrays Unidimensionales VECTORES VECTORES

Es un arreglo de “N” elementos organizados en una dimensión donde “N” recibe el nombre de longitud o tamaño del vector. Para hacer referencia a un elemento del vector se usa el nombre del mismo, seguido del índice (entre corchetes o parentesis), el cual indica una posición en particular del vector.

Vec[x]Donde:Vec………… Nombre del arreglox…………… Numero de datos que constituyen el arreglo

Representación gráfica de un vector

Vec[1]Vec[2]Vec[3]Vec[4]

7

8

9

10

Page 8: Arrays o Arreglos - Introducción a la POO (java)

Arrays Bidimensionales Arrays Bidimensionales MATRICESMATRICES

Es un arreglo de M * N elementos organizados en dos dimensiones donde “M” es el numero de filas o reglones y “N” el numero de columnas.Para representar una matriz se necesita un nombre de matriz se necesita un nombre de matriz acompañado de dos índices. Mat [R,C]Donde R indica el renglón y C indica la columna, donde se encuentra almacenado el dato.

Representación gráfica de una matriz 1,1 1,2 1,3 1,4

2,1 2,2 2,3 2,4

3,1 3,2 3,3 3,4

4,1 4,2 4,3 4,4Fila o Reglón

[R]

Columna

[C]Mat [R,C]

Page 9: Arrays o Arreglos - Introducción a la POO (java)

OperacionesOperaciones

Operaciones de Acceso◦ Recorrido: Procesamiento de todos y cada uno de los elementos de

la lista, también llamado acceso secuencial.◦ Búsqueda: Búsqueda de la posición ocupada por un elemento con

un determinado valor o del elemento con un determinado valor de índice.

Operaciones de Actualización◦ Inserción: Adición de un elemento al array, La inserción al final del

array es sencilla si el espacio de memoria reservado para el ARRAY es mayor que el utilizado. Pero si es en una posición N – X donde X ≠ 0 y 1, entonces desde N–X se deberá desplazarse hacia abajo todos los elementos para poder colocar el nuevo elemento y que los demás conserven el orden relativo entre ellos.

◦ Borrado: Eliminar un elemento del array.Otras

◦ Ordenación: Distribución de los elementos del array de acuerdo con algún criterio de orden. Ej.: de mayor a menor, en orden alfabético, etc.

◦ Mezcla: Combinar dos listas en una sola.

Page 10: Arrays o Arreglos - Introducción a la POO (java)

DeclaraciónDeclaración

Para declarar un array, se utilizan corchetes para indicar que se trata de un array y no de una simple variable del tipo especificado.

Vector (array unidimensional):

tipo identificador[]; tipo[] identificador; // Preferible

Donde:tipo es el tipo de dato de los elementos del vector identificador es el identificador de la variable.

Page 11: Arrays o Arreglos - Introducción a la POO (java)

DeclaraciónDeclaración

Matriz (array bidimensional):

tipo identificador[][];tipo[][] identificador;

NOTA: No es una buena idea que el identificador del arraytermine en un dígito, p.ej. vector3

Page 12: Arrays o Arreglos - Introducción a la POO (java)

DeclaraciónDeclaración

Para declarar un arreglo, y asignarle de inmediato un número determinado de elementos se debe usar, la estructura anterior, seguida del operador asignación, operador new, el tipo de dato y el tamaño especificado entre los operadores [ ].

Ejemplo

int datos[ ] = new int[10]; double arr[ ] = new double[50]; boolean [ ]x = new boolean[100];int[ ][ ] temperaturas = new int[12][31];

Page 13: Arrays o Arreglos - Introducción a la POO (java)

DeclaraciónDeclaración

Ahora bien, si el algoritmo requiere asignar un tamaño en tiempo de ejecución, o sea asignado por el usuario del programa, se debe seguir el siguiente esquema:

int arr[ ]; System.out.print(" Ingrese el numero de datos : "); int tam = Integer.parseInt(in.readLine( )); arr = new int[tam];

Page 14: Arrays o Arreglos - Introducción a la POO (java)

UsoUso

Para acceder a los elementos de un array, utilizamos índices (para indicar la posición del elemento dentro del array)

Vector (array unidimensional): -> vector[índice]◦ En Java, el índice de la primera componente de un

vector es siempre 0.◦ El tamaño del array puede obtenerse utilizando la

propiedad vector.length◦ Por tanto, el índice de la última componente es

vector.length-1Ejemplo

float[] notas = new float[3];

Page 15: Arrays o Arreglos - Introducción a la POO (java)

UsoUso

Matriz (array bidimensional): -> matriz[índice1][índice2]

Una matriz, en realidad, es un vector de vectores:◦ En Java, el índice de la primera componente de un

vector es siempre 0, por lo que matriz[0][0] será el primer elemento de la matriz.

◦ El tamaño del array puede obtenerse utilizando la propiedad array.length:matriz.length nos da el número de filasmatriz[0].length nos da el número de columnas

Por tanto, el último elemento de la matriz es matriz[matriz.length-1][matriz[0].length-1]

Page 16: Arrays o Arreglos - Introducción a la POO (java)

Inicialización en la Inicialización en la declaracióndeclaración

Podemos asignarle un valor inicial a los elementos de un array en la propia declaración

int vector[] = {1, 2, 3, 5, 7};int matriz[][] = { {1,2,3}, {4,5,6} };

El compilador deduce automáticamentelas dimensiones del array.

Page 17: Arrays o Arreglos - Introducción a la POO (java)

Paso de un arreglo como Paso de un arreglo como parámetro a un método parámetro a un método

Un arreglo se pasa por referencia, o sea cumple con la propiedad que los valores pueden ser modificados dentro del método.

Page 18: Arrays o Arreglos - Introducción a la POO (java)

Ejemplo: Lectura por TecladoEjemplo: Lectura por Teclado

Page 19: Arrays o Arreglos - Introducción a la POO (java)

Ejemplo: Lectura por TecladoEjemplo: Lectura por Teclado

Page 20: Arrays o Arreglos - Introducción a la POO (java)

Ejercicios ResueltosEjercicios Resueltos

Realizar un programa que busque el menor elemento de un arreglo ingresado por teclado.

Page 21: Arrays o Arreglos - Introducción a la POO (java)

Ejercicios ResueltosEjercicios Resueltos

Realizar un programa que ordene y muestre un arreglo.

Page 22: Arrays o Arreglos - Introducción a la POO (java)

Introducción a la Introducción a la POOPOO

Page 23: Arrays o Arreglos - Introducción a la POO (java)

IntroducciónIntroducción

La programación Orientada a objetos (POO) es una forma especial de programar, más cercana a como expresaríamos las cosas en la vida real que otros tipos de programación.

Con la POO tenemos que aprender a pensar las cosas de una manera distinta, para escribir nuestros programas en términos de objetos, propiedades, métodos y otras cosas que veremos rápidamente para aclarar conceptos y dar una pequeña base que permita soltarnos un poco con este tipo de programación.

Page 24: Arrays o Arreglos - Introducción a la POO (java)

Evolución de la ProgramaciónEvolución de la Programación

Tradicionalmente, la programación fue hecha en una manera secuencial o lineal, es decir una serie de pasos consecutivos con estructuras consecutivas y bifurcaciones.

Los lenguajes basados en esta forma de programación ofrecían ventajas al principio, pero el problema ocurre cuando los sistemas se vuelven complejos. Estos programas escritos al estilo “espaguetti” no ofrecen flexibilidad y el mantener una gran cantidad de líneas de código en sólo bloque se vuelve una tarea complicada.

Page 25: Arrays o Arreglos - Introducción a la POO (java)

Evolución de la ProgramaciónEvolución de la Programación

Frente a esta dificultad aparecieron los lenguajes basados en la programación estructurada. La idea principal de esta forma de programación es separar las partes complejas del programa en módulos o segmentos que sean ejecutados conforme se requieran. De esta manera tenemos un diseño modular, compuesto por módulos independientes que puedan comunicarse entre sí. Poco a poco este estilo de programación fue reemplazando al estilo “espaguetti” impuesto por la programación lineal.

Entonces, vemos que la evolución que se fue dando en la programación se orientaba siempre a ir descomponiendo más el programa. Este tipo de descomposición conduce directamente a la programación orientada a objetos.

Page 26: Arrays o Arreglos - Introducción a la POO (java)

Evolución de la ProgramaciónEvolución de la Programación

Programación Estructurada

◦ Redundancia de código◦ Problemas en la mantención de

sistemas de gran envergadura.◦ El código del programa frecuentemente

no resulta lo modular que se espera.◦ El nivel de reutilización de código es

menor al esperado.◦ Cambios durante la etapa de desarrollo

son difíciles de incorporar.

Page 27: Arrays o Arreglos - Introducción a la POO (java)

Evolución de la ProgramaciónEvolución de la Programación

Programa

Programa Principal

datos

Begin call procedimiento 1 call procedimiento 2

End

Procedimiento 1

Procedimiento 2

Procedimiento 3

Page 28: Arrays o Arreglos - Introducción a la POO (java)

Evolución de la ProgramaciónEvolución de la Programación

Page 29: Arrays o Arreglos - Introducción a la POO (java)

¿Porque POO?¿Porque POO?

Pues la creciente tendencia de crear programas cada vez más grandes y complejos llevó a los desarrolladores a crear una nueva forma de programar que les permita crear sistemas de niveles empresariales y con reglas de negocios muy complejas. Para estas necesidades ya no bastaba la programación estructurada ni mucho menos la programación lineal. Es así como aparece la programación orientada a objetos (POO).

La POO viene de la evolución de la programación estructurada; básicamente la POO simplifica la programación con la nueva filosofía y nuevos conceptos que tiene. La POO se basa en la dividir el programa en pequeñas unidades lógicas de código. A estas pequeñas unidades lógicas de código se les llama objetos.

Page 30: Arrays o Arreglos - Introducción a la POO (java)

Definición de la POODefinición de la POO

La Programación Orientada a Objetos, es una metodología de diseño de software y un paradigma de programación, que define los programas en términos de "clases de objetos", objetos que son entidades que combinan estado (es decir, datos) y comportamiento (esto es, procedimientos o métodos). La programación orientada a objetos expresa un programa como un conjunto de estos objetos, que se comunican entre ellos para realizar tareas.

Page 31: Arrays o Arreglos - Introducción a la POO (java)

Programación Orientada a Programación Orientada a ObjetosObjetos

A diferencia del módulo en la programación estructurada.

Fomenta la reutilización y extensión del código.Permite crear sistemas más complejos.Relacionar el sistema al mundo real.Facilita la creación de programas visuales.Construcción de prototiposAgiliza el desarrollo de softwareFacilita el trabajo en equipoFacilita el mantenimiento del software

Lo interesante de la POO es que proporciona conceptos y herramientas con las cuales se modela y representa el mundo real tan fielmente como sea posible

Page 32: Arrays o Arreglos - Introducción a la POO (java)
Page 33: Arrays o Arreglos - Introducción a la POO (java)

Programación Orientada a Programación Orientada a ObjetosObjetos

Objeto1Datos

Objeto1Datos

Objeto1Datos

Objeto1Datos

Programa

Page 34: Arrays o Arreglos - Introducción a la POO (java)

Modelo Orientado a Modelo Orientado a ObjetosObjetos

Para entender este modelo vamos a revisar algunos conceptos básicos:

○Objetos○Clases ○Características Asociadas a la POO

Page 35: Arrays o Arreglos - Introducción a la POO (java)

Que es un OBJETOQue es un OBJETO

Entender que es un objeto es la clave para entender la programación orientada a objetos.

Primero empecemos entendiendo que es un objeto del mundo real. Un objeto del mundo real es cualquier cosa que vemos a nuestro alrededor. Digamos que para leer este párrafo lo hacemos a través del monitor y una computadora, ambos son objetos, al igual que nuestro teléfono celular, un árbol o un automóvil.

Page 36: Arrays o Arreglos - Introducción a la POO (java)

Que es un OBJETOQue es un OBJETO

CO

MPO

NEN

T

ES

No interesa

Como interactúan

sus componente

s

Page 37: Arrays o Arreglos - Introducción a la POO (java)

Que es un OBJETOQue es un OBJETO

¿Que tiene que ver esto con la programación? La programación orientada a objetos trabaja de esta manera. Todo el programa está construido en base a diferentes componentes (Objetos), cada uno tiene un rol específico en el programa y todos los componentes pueden comunicarse entre ellos de formas predefinidas.

Todo objeto del mundo real tiene 2 componentes: características y comportamiento.

Por ejemplo, los automóviles tienen características (marca, modelo, color, velocidad máxima, etc.) y comportamiento (frenar, acelerar, retroceder, llenar combustible, cambiar llantas, etc.).

Page 38: Arrays o Arreglos - Introducción a la POO (java)

Que es un OBJETOQue es un OBJETO

Los Objetos de Software, al igual que los objetos del mundo real, también tienen características y comportamientos. Un objeto de software mantiene sus características en una o más "variables", e implementa su comportamiento con "métodos". Un método es una función o subrutina asociada a un objeto.

Page 39: Arrays o Arreglos - Introducción a la POO (java)

Que es un OBJETOQue es un OBJETO

Imaginemos que tenemos estacionado en nuestra cochera un Toyota Corolla color azul que corre hasta 260 km/h. Si pasamos ese objeto del mundo real al mundo del software, tendremos un objeto Automóvil con sus características predeterminadas:

Marca = Toyota, Modelo = Corolla, Color = Azul, Velocidad Máxima = 260 km/h

Page 40: Arrays o Arreglos - Introducción a la POO (java)

Que es un OBJETOQue es un OBJETO

Cuando a las características del objeto le ponemos

valores decimos que el objeto tiene estados. Las variables almacenan los estados de un objeto en un determinado momento.

Definición teórica Un objeto es una unidad de

código compuesto de variables y métodos relacionados.

Page 41: Arrays o Arreglos - Introducción a la POO (java)

Estructura de un OBJETOEstructura de un OBJETO

Las relaciones permiten que el objeto se inserte en la organización y están formadas esencialmente por punteros a otros objetos.

Las propiedades distinguen un objeto determinado de los restantes que forman parte de la misma organización y tiene valores que dependen de la propiedad de que se trate. Las propiedades de un objeto pueden ser heredadas a sus descendientes en la organización.

Los métodos son las operaciones que pueden realizarse sobre el objeto, que normalmente estarán incorporados en forma de programas (código) que el objeto es capaz de ejecutar y que también pone a disposición de sus descendientes a través de la herencia.

Page 42: Arrays o Arreglos - Introducción a la POO (java)

Estructura de un OBJETOEstructura de un OBJETO

OBJETO

RELACIONES

PROPIEDADES

METODOS

Page 43: Arrays o Arreglos - Introducción a la POO (java)

Que son las CLASESQue son las CLASES

Características: (marca, modelo, sistema operativo, pantalla, teclado, etc.)

Comportamientos: (hacer y recibir llamadas, enviar mensajes multimedia, transmisión de datos, etc.).

En el mundo real, normalmente tenemos muchos objetos del mismo tipo. Por ejemplo, nuestro teléfono celular es sólo uno de los miles que hay en el mundo. Si hablamos en términos de la POO, podemos decir que nuestro objeto celular es una instancia de una clase conocida como "celular".

INSTANCIA=OBJETO

CLASE CELULAR

Page 44: Arrays o Arreglos - Introducción a la POO (java)

Que son las CLASESQue son las CLASES

CLASE

Una clase es una plantilla genérica para un conjunto de objetos de similares características.

CLASE (CELULAR)

OBJETO A OBJETO B

Page 45: Arrays o Arreglos - Introducción a la POO (java)

Caja negra que oculta en su implementación:• Atributos: variables que

codifican el estado de una instancia de la clase (objeto)

• Métodos: subprogramas que describen el comportamiento de un objeto de la clase

Una clase es semejante a un tipo:• Atributos: estructura de

datos• Métodos: operaciones

sobre el tipo

Instancia de una clase:• Cada objeto de una

clase tiene su propia copia de los atributos (estado propio)

• Todos los objetos de una clase comparten los mismos métodos (comportamiento común)

CLASE OBJETO

Page 46: Arrays o Arreglos - Introducción a la POO (java)

Clases y Objetos Clases y Objetos en Javaen Java

Page 47: Arrays o Arreglos - Introducción a la POO (java)

Objetos – Clases – POOObjetos – Clases – POO

Los lenguajes de programación utilizan tipos de datos simples:

EnterosRealesBooleanosCaracteresetc

Page 48: Arrays o Arreglos - Introducción a la POO (java)

Objetos – Clases – POOObjetos – Clases – POO

Pero, para representar “entidades u objetos” del mundo real hay que utilizar tipos más elaborados.Ejemplos de entidades del mundo real son:

Page 49: Arrays o Arreglos - Introducción a la POO (java)

Objetos – Clases – POOObjetos – Clases – POO

Ya no nos alcanza con un tipo de datos “simple”

Ahora necesitamos un tipo de datos “abstracto”

Page 50: Arrays o Arreglos - Introducción a la POO (java)

Objetos – Clases – POOObjetos – Clases – POO

+Aterrizar()+Despegar()+Navegar()

-Matricula : string-NombreDelAvion : string-LicenciaDelPiloto : string-CapacidadCarga : decimal-NumeroPasajeros : int

Avion

Atributos

Comportamiento

Nombre

Clase = abstracción

Es la descripción de un conjunto de objetos

Es como una “plantilla”

Una clase posee: Nombre atributos comportamiento

Page 51: Arrays o Arreglos - Introducción a la POO (java)

Objetos – Clases – POOObjetos – Clases – POO

Un objeto es una instancia de una clase

Page 52: Arrays o Arreglos - Introducción a la POO (java)

Objetos – Clases – POOObjetos – Clases – POO

Clase ≈ tipo Objeto ≈ variable

Page 53: Arrays o Arreglos - Introducción a la POO (java)

Objetos – Clases – POOObjetos – Clases – POO

Como se crea o instancia un objeto

Page 54: Arrays o Arreglos - Introducción a la POO (java)

POO – Atributos/Variables POO – Atributos/Variables MiembroMiembro

A diferencia de la programación algorítmica clásica, que estaba centrada en las funciones, la programación orientada a objetos está centrada en los datos. Una clase son unos datos y unos métodos que operan sobre esos datos.

Variables miembro de Objetos

Cada objeto, es decir cada ejemplar concreto de la clase, tiene su propia copia de las variables miembro. Las variables miembro de una clase (también llamadas campos o atributos) pueden ser de tipos primitivos (boolean, int, long, double, …) u referencias a objetos de otra clase (composición).

Page 55: Arrays o Arreglos - Introducción a la POO (java)

POO – Atributos/Variables POO – Atributos/Variables MiembroMiembro

Las variables miembro pueden ir precedidas en su declaración por uno de los modificadores de acceso: public, private, etc. Junto con los modificadores de acceso de la clase, determinan qué clases y métodos van a tener permiso para utilizar la clase y sus métodos y variables miembro.

Page 56: Arrays o Arreglos - Introducción a la POO (java)

POO – Atributos/Variables POO – Atributos/Variables MiembroMiembro

Variables miembro de clase (static)

Una clase puede tener variables propias de la clase y no de cada objeto. A estas variables se les llama variables de clase o variables static. Las variables static se suelen utilizar para definir constantes comunes para todos los objetos de la clase (por ejemplo PI) o variables que sólo tienen sentido para toda la clase.

Page 57: Arrays o Arreglos - Introducción a la POO (java)

POO - MétodosPOO - Métodos

El concepto de método consiste en una forma de encapsular un conjunto de instrucciones dentro de una declaración específica (llamada generalmente SUBPROGRAMA), permitiendo la descomposición funcional y la diferenciación de tareas.

Page 58: Arrays o Arreglos - Introducción a la POO (java)

POO - MétodosPOO - Métodos

Llamada a un método

Los métodos pueden ser invocados o llamados de cualquier método de la clase, incluido él mismo.

Además, cuando se invoca, hay que pasar un valor a cada parámetro, a través de una variable o un valor constante. La acción de pasar valores a parámetros de tipo primitivo (int, double, boolean, char..) se denomina paso de parámetros por valor. En éste caso, los argumentos que se pasan, no pueden ser modificados por la función. Tambien existe el paso por referencia donde los argumentos que se pasan si pueden ser modificados.

En caso que el parámetro sea de tipo Clase o arreglo, lo que se está haciendo es un paso de parámetros por referencia, y en este caso, los parámetros si pueden ser modificados por el método.

Page 59: Arrays o Arreglos - Introducción a la POO (java)

POO - MétodosPOO - Métodos

Análogamente, puede también haber métodos que no actúen sobre objetos concretos a través del operador punto. A estos métodos se les llama métodos de clase o static. Los métodos de clase pueden recibir objetos de su clase como argumentos explícitos, pero no tienen argumento implícito ni pueden utilizar la referencia this.

Los métodos y variables de clase se crean anteponiendo la palabra static.

Page 60: Arrays o Arreglos - Introducción a la POO (java)

POO – Métodos (Sobrecarga – POO – Métodos (Sobrecarga – overloaded)overloaded)

Puede haber varios métodos con el mismo nombre pero a los cuales se les pasan distintos parámetros. Según los parámetros que se le pasen se invocará a uno u otro método.

◦ Si existe el método cuyos argumentos se ajustan exactamente al tipo de los argumentos de la llamada (argumentos actuales), se llama ese método.

◦ Si no existe un método que se ajuste exactamente, se intenta promover los argumentos actuales al tipo inmediatamente superior (por ejemplo char a int, int a long, float a double, etc.) y se llama el método correspondiente.

◦ Si sólo existen métodos con argumentos de un tipo más amplio (por ejemplo, long en vez de int), el programador debe hacer un cast explícito en la llamada, responsabilizándose de esta manera de lo que pueda ocurrir.

◦ El valor de retorno no influye en la elección del método sobrecargado. En realidad es imposible saber desde el propio método lo que se va a hacer con él. No es posible crear dos métodos sobrecargados, es decir con el mismo nombre, que sólo difieran en el valor de retorno.

Page 61: Arrays o Arreglos - Introducción a la POO (java)

Creación y referencia a Creación y referencia a ObjetosObjetos

Para crear un objeto de una clase se utiliza el operador new.

Veamos un ejemplo para poder entender:

◦ Presentar una tabla de equivalencia entre grados Centígrados y grados Fahrenheit.

◦ La relación entre los grados centígrados y los grados Fahrenheit viene dada por la expresión: grados Fahrenheit=9/5 x grados centígrados + 32. Los cálculos los vamos a realizar para un intervalo de -30 y 100

◦ El programa trata de grados, entonces podemos pensar en objetos “grados” que encapsulen un valor en grados centígrados y los métodos necesarios para asignar al objeto un valor en grados centígrados, así como para obtener tanto el dato grados centígrados como su equivalencia en grados Fahrenheit.

Page 62: Arrays o Arreglos - Introducción a la POO (java)

Entonces, que tiene que hacer el objeto aplicación. Visualizar cuantos grados centígrados dan Fahrenheit Esto se consigue enviando al objeto grados los mensajes CentigradosAsignar y FahrenheitObtener una vez para cada valor (-30, 100) grados centígrados con incrementos de 6. El objeto grados responderá ejecutando los métodos vinculados con los mensajes que recibe.

Page 63: Arrays o Arreglos - Introducción a la POO (java)

Creación y referencia a Creación y referencia a ObjetosObjetos

CGrados grados=new Cgrados()

En este ejemplo se observa que para crear un objeto de la clase CGrados hay que especificar a continuación del operador new el nombre de la clase del objeto seguido de paréntesis. Ahora bien, porque se coloca paréntesis, ¿acaso es un método?, la respuesta seria si. Ya que toda clase tiene al menos un método predeterminado especial denominado igual que ella, que es necesario invocar para crear un objeto; ese método se denomina constructor de la clase. Sobre constructores hablaremos un poco mas adelante.

Después de haber revisado el ejemplo anterior, pensara que todo se ha podido realizar en el método main, lo cual es cierto. Pero lo que se pretende es que puede ver de una forma clara que un programa Java es un conjunto de objetos que se comunican entre si mediante mensajes con el fin de obtener el resultado perseguido, y que la solución del problema sea mas sencilla

Page 64: Arrays o Arreglos - Introducción a la POO (java)

Creación y referencia a Creación y referencia a ObjetosObjetos

Referencia a Objetos

El operador new devuelve una referencia al nuevo objeto, que se almacena en una variable de tipo objeto.

CGrados grados=new Cgrados()

En el ejemplo anterior, la referencia devuelta por el operador new es almacenada en la variable grados del tipo CGrados. En realidad una referencia es la posición de memoria donde se localiza un objeto.

Page 65: Arrays o Arreglos - Introducción a la POO (java)

Creación y referencia a Creación y referencia a ObjetosObjetos

Como acceder a los miembros de un Objeto

Para acceder desde un método de la clase aplicación o de cualquier otra clase a un miembro (atributo, método) de un objeto de otra

clase diferente se utiliza la sintaxis: objeto.miembro

Cuando el miembro accedido es un método, la interpretación que se hace en programación orientada a objetos es que el objeto ha recibido un mensaje, el especificado por el nombre del método, y responde ejecutando ese método. Los mensajes que puede recibir un objeto se corresponde con los nombres de los métodos de su clase.

Page 66: Arrays o Arreglos - Introducción a la POO (java)

Creación y referencia a Creación y referencia a ObjetosObjetos

Así como en el ejemplo de los grados:

grados.CentigradosAsignar(gradosCent)

Se interpreta como que el objeto grados recibe el

mensaje CentigradosAsignar. Entonces el objeto responde a ese mensaje ejecutando el método de su

clase que tengo el mismo nombre.

No tiene sentido pensar que un método se puede invocar aisladamente, esto es, sin que exista un objeto para el que es invocado.

CentigradosAsignar(gradosCent) ->¿a quien se asigna el valor gradosCent?

Page 67: Arrays o Arreglos - Introducción a la POO (java)

Creación y referencia a Creación y referencia a ObjetosObjetos

Page 68: Arrays o Arreglos - Introducción a la POO (java)

ConstructorConstructor

Constructores son métodos cuyo nombre coincide con el nombre de la clase y que nunca devuelven ningún tipo de dato, no siendo necesario indicar que el tipo de dato devuelto es void. Los constructores se emplean para inicializar los valores de los objetos y realizar las operaciones que sean necesarias para la generación de este objeto (crear otros objetos que puedan estar contenidos dentro de este objeto, abrir un archivo o una conexión de Internet, etc.). Como cualquier método, un constructor admite sobrecarga. Cuando creamos un objeto podemos invocar al constructor que más nos convenga.

Page 69: Arrays o Arreglos - Introducción a la POO (java)

Referencia thisReferencia this

Cada objeto mantiene su propia copia de los atributos pero no de los métodos de su clase, de los cuales solo existe una copia para todos los objetos de esa clase. Esto es, cada objeto almacena sus propios datos, pero para acceder y operar con ellos, todos comparten los mismos métodos definidos en su clase. Por tanto, para que un método conozca la identidad del objeto particular para el que ha sido invocado, algunos Lenguajes de Programación proporcionan una referencia al objeto denominada this.

Page 70: Arrays o Arreglos - Introducción a la POO (java)

EjemplosEjemplos

Page 71: Arrays o Arreglos - Introducción a la POO (java)

Ejemplo 1Ejemplo 1

Consideremos una entidad bancaria; en ella identificamos entidades que son las cuentas. Una cuenta puede verse como un objeto, que tiene atributos (nombre, numero de cuenta, etc.) y un conjunto de métodos (transferencia, ingresar dinero, etc.)

Empecemos creando una clase de objetos CCuenta, que representa una cuenta bancaria. Además, definimos los atributos de interés que van a definir esta clase de objetos:

◦ nombre: nombre del cliente.◦ cuenta: número de cuenta◦ saldo: saldo actual de la cuenta◦ tipoDeInteres: tipo de interés en tanto por ciento

Page 72: Arrays o Arreglos - Introducción a la POO (java)

Ejemplo 1Ejemplo 1

Un atributo declarado privado (private) es accesible solamente por los métodos de su propia clase.

No se puede acceder a los atributos por los métodos de cualquier clase, incluidas las subclases

Page 73: Arrays o Arreglos - Introducción a la POO (java)

Ejemplo 1Ejemplo 1

Pensado acerca de un objeto de la clase CCuenta, esto es, de una cuenta de un cliente de un determinado banco, algunas acciones que pueden hacerse son:

◦ Asignar el nombre de un cliente del banco a una cuenta.◦ Obtener el nombre del cliente de una cuenta◦ Asignar el numero de la cuenta◦ Obtener el numero de la cuenta◦ Realizar un ingreso◦ Asignar el tipo de interés◦ Obtener el tipo de interés◦ Obtener el saldo, esto es, estado de la cuenta.

Page 74: Arrays o Arreglos - Introducción a la POO (java)

Ejemplo 1Ejemplo 1

Cabe aclarar que los métodos que se muestran en la figura solo están declarados. Para ver su contenido revise el código entregado. Así mismo se puede apreciar que esta clase carece de constructores.

Page 75: Arrays o Arreglos - Introducción a la POO (java)

Ejemplo 1Ejemplo 1

Diagrama de la clase Ccuenta

Notación UML

Page 76: Arrays o Arreglos - Introducción a la POO (java)

Ejemplo 1Ejemplo 1

Una vez terminado de escribir todos los métodos previstos, necesitamos crear objetos. Para ello tendremos que escribir un programa, en el cual, tiene que haber una clase con un método main, pues este es el punto de entrada y salida del programa. Este requerimiento se puede satisfacer de tres maneras:

◦ Añadir a la clase CCuenta un método main que incluya el código del programa (crear objetos CCuenta y realizar operaciones con ellos)

◦ Añadir en el mismo fichero fuente en el que esta almacenada la clase Ccuenta, que incluya el método main.

◦ Tenemos un fichero fuente, con la clase CCuenta. Añadir en la misma carpeta (directorio) otro fichero fuente, con la clase principal (la cual contiene el método main)

Page 77: Arrays o Arreglos - Introducción a la POO (java)

Ejemplo 1Ejemplo 1

Se crea un objeto de la clase CCuenta y almacena una referencia al mismo en la variable cuenta01.Se establecen un

determinado estado para el objeto referenciado por cuenta01, enviandole los mensajes: asignarNombre, asignarCuenta, etc. Se puede observar que para acceder a un miembro del objeto se utiliza (.)El objeto recibe los mensajes: obtenerNombre, obtenerCuenta, etc. La respuesta a estos mensajes es la ejecución de los métodos respectivos.

Page 78: Arrays o Arreglos - Introducción a la POO (java)

Ejemplo 1Ejemplo 1

Notación UML del objeto cuenta01

Page 79: Arrays o Arreglos - Introducción a la POO (java)

Ejemplo 2Ejemplo 2

El siguiente ejemplo se crea una clase Libro con los siguientes atributos: titulo, autor, paginas, precio. Y con un solo método: impDatos.

En este ejemplo se crea 3 objetos de tipo Libro, los cuales son inicializados por los constructores correspondientes.

Page 80: Arrays o Arreglos - Introducción a la POO (java)

constructores

referencia this

Page 81: Arrays o Arreglos - Introducción a la POO (java)

objetos

acceder a miembros del objeto

Page 82: Arrays o Arreglos - Introducción a la POO (java)

Notación UML de los objeto a, b, c.

Diagrama de la clase Libro

Notación UML