Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Programación I
• Introducción a la P
OO
• Clases y Objetos en
JAVA
• Ejemplos básicos -
POO
Tema 3
Arrays o Arreglos
Un array es una estructura de datos que contiene una
colección de datos del mismo tipo
Definición
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.
Los arrays
bidimensionales se
conocen con el nombre
de matrices.
Terminología
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 arreglo
x…………… Numero de datos que constituyen el
arreglo
Representación gráfica de un vector
Vec[1] 7
Vec[2]
8
Vec[3]
Vec[4] 9
10
Arrays Unidimensionales
VECTORES
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.
Arrays Bidimensionales
MATRICES
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.
Operaciones
Para declarar un array, se utilizan corchetes para indicar que se
trata de un array y no de una simple variable del tipo especificado.
tipo identificador[];
tipo[] identificador; // Preferible
Donde:
tipo es el tipo de dato de los elementos del vector identificador es
el identificador de la variable.
Declaración
Matriz (array
bidimensional):
tipo identificador[][];
tipo[][] identificador;
Declaració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
Declaració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:
Declaración
Para acceder a los elementos de un array, utilizamos índices (para
indicar la posición del elemento dentro del array)
Uso
Matriz (array bidimensional): -> matriz[índice1][índice2]
Uso
Podemos asignarle un valor inicial a los elementos de un
array en la propia declaración
Inicialización en la declaración
Un arreglo se pasa por referencia, o sea cumple con la propiedad que los valores pueden
ser modificados dentro del método.
Ejercicios Resueltos
Realizar un programa que ordene y muestre un arreglo.
Ejercicios Resueltos
Introducción a la
POO
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.
Introducció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.
Evolució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.
Evolució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.
Evolución de la Programación
Begin
call procedimiento
1
call procedimiento
2
Programa
End
Procedimiento 1
Programa
Principal
Procedimiento 2
Procedimiento 3
datos
Evolución de la Programación
Evolución de la Programación
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).
¿Porque 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.
Definición de la POO
A diferencia del módulo en la programación estructurada.
Objeto1
Objeto1 Datos
Datos
Objeto1
Datos
Objeto1
Datos
○Objetos
○Clases
○Características Asociadas a la POO
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.
Que es un OBJETO
S
TE
Como
EN
interactúan sus
ON
componentes
MP
CO
No interesa
Que 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.
Que 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.
Que 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:
Que 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.
Que es un OBJETO
Las relaciones permiten que el objeto se inserte en la organización
y están formadas esencialmente por punteros a otros objetos.
Estructura de un OBJETO
RELACIONES
PROPIEDADES
OBJETO
METODOS
Estructura de un OBJETO
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".
Comportamientos:
CLASE CELULAR
(hacer y recibir
llamadas, enviar
mensajes INSTANCIA=OBJETO
multimedia,
transmisión de
datos, etc.).
Características:
(marca, modelo,
sistema operativo,
pantalla, teclado,
etc.)
CLASE
OBJETO A OBJETO B
CLASE OBJETO
Clases y Objetos
en Java
Los lenguajes de
programación utilizan
tipos de datos simples:
Enteros
Reales
Booleanos
Caracteres
etc
Ahora necesitamos un
tipo de datos “abstracto”
POO - 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.
POO - 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.
POO - Métodos
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.
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.
grados.CentigradosAsignar(gradosCent)
Constructor
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.
Referencia this
Ejemplos
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.)
Ejemplo 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
Ejemplo 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:
Ejemplo 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.
Ejemplo 1
Diagrama de la clase
Ccuenta
Notación UML
Ejemplo 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:
Ejemplo 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 (.)
Ejemplo 1
El siguiente ejemplo se crea una clase Libro con los
siguientes atributos: titulo, autor, paginas, precio. Y
con un solo método: impDatos.
Ejemplo 2
constructores
referencia
this
acceder a miembros
objetos del objeto
Notación UML de los
objeto a, b, c.
Diagrama de la clase
Libro
Notación UML