Subido por Leonardo Javier Malave Quijada

Clase Teorica Nº 2 Programacion Orientada a Objetos

Anuncio
República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Instituto Universitario de Tecnología de Cumaná
Departamento de Informática
Cumaná – Estado Sucre
Objetivo 2.- Desarrollo de Programas usando la estructura
general de un lenguaje de Programación Orientado a Objetos
Recopilado por:
Ing. Leonardo Malavé MSc
Unidad Curricular:
Programación Orientada
Objetos
Semestre: IV
Sección: Única
Cumaná, Agosto 2010
a
El desarrollo de programas usando cualquier lenguaje de programación
necesita de parámetros o lineamientos bien definidos que van desde la forma
principal de un programa hasta como manejar arreglos unidimensionales y de
diferentes dimensiones.
Aquí desarrollaremos los siguientes ítems:
•
Estructura General de un programa realizado en JAVA
•
Tipos de datos manejados por JAVA
•
Sentencias de Lectura y Escritura
•
Sentencias de Control I (Estructuras de Decisión)
•
Sentencias de Control II (Estructuras de Repetición)
•
Métodos I (Generalidades)
•
Métodos II (Uso de ellos)
•
Arreglos I (Generalidades)
•
Arreglos II (Unidimensionales)
•
Arreglos III (Bidimensionales)
Estructura General de un Programa desarrollados en JAVA
Cuando se habla de las generalidades se entiende por los elementos
esenciales y que contiene un programa desarrollado en JAVA, para
mostrarlos, definirlos y ejemplificarlos tomaré el siguiente ejemplo:
import java.io.*; (a)
import java.lang.*; (b)
class Ambito (1)
{
public static void main (String args[]) (2)
{
int x; (3)
x = 10; (4)
if(x==10) (5)
{
int y=20; (3)
System.out.println(“x e y:”+ x + “ “ + y); (6)
x = y * 2; (7)
}
System.out.println(“ x es:” + x);
}
}
(a) (b) Todo programa de Java debería de tener las importaciones de los
paquetes necesarios para su normal desarrollo, en este ejemplo se importan
los paquetes java.io y sus subsecuentes paquetes al igual que java.lang y sus
subsecuentes paquetes, a veces se pueden obviar cuando estos paquetes
forman parte esencial y elemental del programa.
(1) Todo programa de Java debe contener la clase principal para poder
trabajar dicho programa. En el caso del programa principal el nombre de la
clase y el archivo de extensión java deben de poseer el mismo nombre. En
nuestro ejemplo la clase principal se denomina Ambito, por lo tanto deberá
existir un programa físico denominado Ambito.java.
(2) Debe seguirse con el método main que indica que es el programa
principal. En este caso se debe considerar que: public static void main (String
args[]) , en donde public indica el ámbito del método static indica si el
método puede invocarse sin instanciarse previamente void indica que no
devolverá ningún valor. Los argumentos en este caso son de tipo String.
(3) Todo programa de Java debería contener declaraciones de tipos datos
que van usarse en un determinado programa, esa declaración comienza con
el tipo de dato y luego el identificador que representa el nombre de la
variable o constante definida previamente. En nuestro ejemplo se definió una
variable denominada x de tipo int y también una variable y de tipo entero y
se le asignó el valor 20.
(4) Como se indicó previamente luego de una declaración de una variable o
constante se debería inicializarse dicha variable o asignársele un valor de
acuerdo a su tipo de dato definido previamente. En nuestro caso x se le
asigna un valor de 10.
(5) Como se indicó previamente luego de una declaración de una variable o
constante se debería inicializarse o asignársele un valor de acuerdo a su tipo
de dato definido previamente. En nuestro caso x se le asigna un valor de 10.
(6) Para desplegar ya sea mensajes de texto encerrado entre comillas doble
o mostrar el valor de una determinada variable o constante, se utiliza esta
sentencia ya sea en esta versión que luego de mostrar dicho valor
inmediatamente
se
System.out.print
desplaza
que
solo
a
la
imprime
línea
el
siguiente
valor
sin
o
la
versión
inmediatamente
posicionarse en la línea siguiente.
(7) Aquí se presenta la asignación de un valor de la variable x derivado de
una operación aritmética previa.
Algo que debe tomarse muy en consideración es el hecho de debe
existir una identación acorde como también percatarse del abrir y cerrar
llaves que indica el comienzo y final de un bloque del programa.
Veamos otros elementos que se consideran esenciales:
•
Operadores Aritméticos:
Operador
Resultado
+
Suma
-
Resta
*
Multiplicación
/
División
•
•
%
Módulo
++
Incremento
+=
Suma y asignación
-=
Resta y asignación
*=
Multiplicación y asignación
/=
División y asignación
%=
Módulo y asignación
--
Decremento
Operadores Relacionales:
Operador
Resultado
==
Igual a
!=
Distinto de
>
Mayor que
<
Menor que
>=
Mayor o igual a
<=
Menor o igual a
Operadores Lógicos Booleanos
Operador
Resultado
&
AND lógico
|
OR lógico
^
XOR lógico (OR exclusivo)
||
OR en cortocircuito
&&
AND en cortocircuito
!
NOT lógico unario
&=
Asignación AND
|=
Asignación OR
^=
Asignación XOR
==
Igual a
!=
Distinto de
?:
If-then-else ternario
Tipos de Datos en JAVA
Java define ocho (8) tipos simples o elementales de datos: byte,
short, int, long, char, float, double y bolean, que se pueden agrupar en
cuatro grupos:
•
Enteros: En este grupo se incluye byte, short, int y long,
para números con signos.
•
Números en coma flotante: Este grupo incluye float y
double, que representan números con precisión decimal.
•
Caracteres: Este grupo incluye el tipo char, que representa
símbolos en un conjunto de caracteres, como letras y números.
•
Booleano: Este grupo incluye bolean, que es un tipo especial
para representar los valores verdadero/falso.
•
Nombre
Enteros
Anchura
Rango
Descripción
-9.223.372.036.854.775.808 a 9.223.372.036.854.775.807
Adecuado para cuando el
en bits
long
64
tipo int no es suficiente
largo para almacenar un
determinado
muy
valor.
amplio,
números
útil
muy
Es
para
grandes.
Posee signo
int
32
-2.147.483.648 a 2.147.483.647
Es el tipo más usado.
Empleado para cálculos,
control de ciclos e índices
de arreglos. Posee signo
short
16
-32.768 a 32.767
Es el menos usado en
Java. Posee signo
byte
8
-128 a 127
Útil para manejo de flujos
provenientes de archivos
o de la red. Útil para
trabajar
con
datos
binarios
•
Nombre
Números con coma flotante
Anchura
Rango
Descripción
1.7e-308 a 1.7e+308
Adecuado para cuando se necesita almacenar y
en bits
double
> 64
a su vez mantener la exactitud en cálculos
iterativos o cuando se trabajan con números
demasiados grandes.
float
> 32
-3.4e-038 a 3.4e+038
Es el tipo más usado. Empleado para cálculos,
control de ciclos e índices de arreglos. Posee
signo
•
Nombre
Caracteres
Anchura
Rango
Descripción
0 a 127 / 0 a 255
Almacenamiento de caracteres usando UNICODE
en bits
char
16
para su representación.
•
Nombre
Booleano
Anchura
Rango
Descripción
S/D
Almacenamiento de valores trae o false, se usa
en bits
char
S/D
para trabajar o evaluar expresiones de este tipo.
Promoción de Tipos de Datos: Existen dos tipos la automática y la
forzada o cast. La primera se da cuando el molde de dato a recibir es más
grande que los datos orígenes. En el segundo caso se da cuando el molde
dato a recibir es más pequeño que los datos orígenes, por tanto se antepone
a los datos orígenes entre paréntesis el tipo de dato que se piensa convertir y
se hace la conversión.
Sentencias de Entrada y Salida
Estas sentencias son las que permiten entrada de datos y su respectiva
visualización por pantalla.
En este objetivo manejaremos el System.in.read() considerando
entrada de un carácter por vez, lo cual se asocia una variable a este método.
En cuanto a las sentencias para visualizar por pantalla se tiene el
System.out.print y System.out.println. Ambas imprimen valores de las
variables pero también si algo esta encerrado en comillas dobles se mostrará
por pantalla. La diferencia entre el primero y el segundo es simplemente que
el segundo después de imprimir o visualizar el contenido de una variable se
posiciona luego en la siguiente línea, cosa totalmente opuesta que hace la
primera opción.
Sentencias de Control I (Estructuras de Decisión)
•
If
•
If..Else
•
Switch
El if permite la bifurcación del código derivado de la evaluación de una
expresión condicional, cuando es simple si la expresión evaluada es
verdadera se realiza la acción o las acciones correspondientes, en su versión
if..else permite que si la evaluación de la expresión es verdadera se realiza
las acciones correspondientes de lo contrario se ejecutarán otras acciones
que debería ser totalmente diferentes a las cuando la expresión es verdadera.
En el caso del Switch, se utiliza con la idea de cuanto la variable
evaluada arrojará múltiples valores y todos ellos conllevan a acciones
diferentes, tomando también en consideración que puede haber una opción
por defecto cuando es la última opción que no amerita ser evaluada.
Sentencias de Control II (Estructuras de Repetición)
•
While
•
Do..While
•
For
Como sabemos las estructuras de repetición permiten por un lapso
definido o no la ejecución de sentencias o acciones que estén englobadas o
encerradas entre ellas. A la final la decisión de usar una sentencia o
estructura de control repetitivo quedará a criterio del programador, el cual
basado en el análisis del problema a desarrollar se inclinará por una
estructura en particular.
Comentemos en forma breve cada una de ellas:
•
While: Es una estructura cerrada que permite la repetición
definida o no de antemano la ejecución de una o varias
acciones que ella englobe. Su funcionamiento radica en la
evaluación en primer lugar de la condición de control del ciclo,
si el resultado de dicha evaluación es verdadera se procederá a
ejecutar las acciones que ella encierra, en caso contrario se sale
del ciclo o no lo ejecuta dependiendo cual sea el caso.
•
Do..While: Es una estructura abierta, cerrada que permite
aunque sea una vez la ejecución de las acciones que encierra y
luego permite la validación que deberá ser verdadera para
seguir funcionando. Esta estructura en comparación con la
anterior es más débil en el sentido de que
•
For: Es una estructura cerrada, pero muy sólida en el sentido
de que posee tres momentos a saber: (a) La inicialización y/o
comienzo del ciclo que marca el inicio del mismo (b) La
condición que rige el ciclo y que permitirá en algún momento su
parada (c) Aumento o decremento de la variable que se
inicializó en el primer momento y que es controlada en el
segundo momento. Esta estructura es la más popular por ser
sencilla de implementar y a su vez por tener esos momentos
descritos que han constituido su solidez y robustez a la hora de
programar.
Métodos (I)
Una definición acorde a métodos serían que son un cuerpo de
programa independiente el cual tiene un tipo de dato asociado, un
identificador, una serie de parámetros (si es el caso) y que podrían
retornar un valor o no después de haberse ejecutado. El detalle del
asunto radica que su uso facilita de muchas maneras la ejecución de nuestro
programa como también su mantenimiento debido a que como es un cuerpo
independiente del programa principal su mantenimiento es más sencillo y por
lo tanto más hace que la eficacia de nuestro programa sea aún mayor.
Una sintaxis adecuada sería la siguiente:
Tipo de dato identificador (lista de parámetros)
{
Acciones;
return valor o variable;
}
Ejemplo:
double promedio (int a, int b)
{
float prom=0.00;
prom = (a+b) / 2;
return prom;
}
Métodos (II)
Como lo mencioné anteriormente, los métodos de acuerdo a su
comportamiento o acción pueden o no aceptar parámetros como también
pueden o no devolver valores, por lo tanto eso da pié a la siguiente
clasificación:
a) Teniendo parámetros y no devuelven valor
b) Teniendo parámetros y devuelven valor
c) Sin tener parámetros y devuelven valor
d) Sin tener parámetros y no devuelven valor
En el caso a) el método tiene una lista de parámetros realiza sus
acciones correspondientes y no devuelve valor alguno, por tanto este método
dentro de sus acciones tendrá contemplado una línea que permitirá visualizar
el resultado o los resultados de las acciones emprendidas por el método. Un
ejemplo sería el siguiente:
void promedio (int valora, int valor b)
{
float prom=0.00;
prom = (a+b) / 2;
System.out.println(“El valor promedio es:”+prom);
}
En el caso b) el método tiene una lista de parámetros realiza sus
acciones correspondientes y devuelve un valor, por tanto en el programa
principal deberá haber una línea en donde se invoque el método y que
contenga una variable que sirva de recipiente para el valor que devolverá el
método.
Un ejemplo sería el siguiente:
float promedio (int valora, int valor b)
{
float prom=0.00;
prom = (a+b) / 2;
return prom;
}
En el caso c) el método no tiene parámetros pero realiza sus acciones
correspondientes y devuelve un valor, por tanto en el programa principal
deberá haber una línea en donde se invoque el método y que contenga una
variable que sirva de recipiente para el valor que devolverá el método.
Un ejemplo sería el siguiente:
float promedio ( )
{
float prom=0.00;
int a= 10, b=5;
prom = (a+b) / 2;
return prom;
}
En el caso d) el método no tiene parámetros pero realiza sus acciones
correspondientes y no devuelve un valor, por tanto en el programa principal
deberá haber una línea en donde se invoque el método.
Un ejemplo sería el siguiente:
float promedio ( )
{
float prom=0.00;
int a= 10, b=5;
prom = (a+b) / 2;
System.out.println(“El valor promedio es:”+prom);
}
Arreglos (I)
Es una colección finita de datos del mismo tipo y que permite
almacenar en forma lineal dichos datos. En todos o en la mayoría de los
lenguajes de programación existen arreglos, lo cual han facilitado el trabajo
del programador en muchos sentidos, porque disminuyen el uso de muchas
variables debido a que una sola se resume la declaración de varias.
Arreglos (II)
Hay arreglos denominados unidimensionales que como se definen
poseen una sola dimensión, conocidos también como vectores los cuales
permiten almacenar en forma lineal o gradual varios tipos de valores del
mismo tipo. Podemos tomar en consideración los siguientes elementos
esenciales:
•
Declaración:
int vector [ ] = new int [100];
•
Lectura:
for(i=0; i<=99; i++)
{
vector[i] = System.in.read();
}
•
Escritura:
for(i=0; i<=99; i++)
{
System.out.println(vector[i]);
}
Arreglos (III)
Hay otros tipos de arreglos denominados bidimensionales que como se
definen poseen dos dimensiones, conocidos también como matrices o tablas
al igual que los vectores, permiten almacenar en forma lineal o gradual varios
tipos de valores del mismo tipo pero trabajando con una ubicación
determinada por la intersección entre una fila y una columna. Podemos tomar
en consideración los siguientes elementos esenciales:
•
Declaración:
int matriz [ ] [ ] = new int [100] [100];
•
Lectura:
for(i=0; i<=99; i++)
{
for(j=0; j<=99; j++)
{
matriz[i][j] = System.in.read();
}
}
•
Escritura:
for(i=0; i<=99; i++)
{
for(j=0; j<=99; j++)
{
System.out.println(matriz[i][j]);
}
}
Descargar