0% encontró este documento útil (0 votos)
36 vistas101 páginas

POO Introduccion A Java

Este documento introduce el lenguaje de programación Java, incluyendo sus características principales como ser orientado a objetos, independiente de plataforma, compilado e interpretado, y con recolector de basura automático.

Cargado por

Santi Romaya
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
36 vistas101 páginas

POO Introduccion A Java

Este documento introduce el lenguaje de programación Java, incluyendo sus características principales como ser orientado a objetos, independiente de plataforma, compilado e interpretado, y con recolector de basura automático.

Cargado por

Santi Romaya
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 101

Introducción al lenguaje Java

MÓDULO DE PROGRAMACIÓN ORIENTADA A


OBJETOS
Introducción al lenguaje de programación Java
Los lenguajes de programación son todos los símbolos, caracteres y reglas
de uso que permiten a las personas "comunicarse" con las computadoras
Y hay muchos…
CLASIFICACIÓN

• Según el Nivel de Abstracción del Procesador

• Según el Paradigma de Programación

• Según la Forma de Ejecución


SEGÚN EL NIVEL DE ABSTRACCIÓN

• Alto Nivel

• Medio Nivel

• Bajo Nivel
PARADIGMAS DE PROGRAMACIÓN
• Imperativo

• Declarativo

• Estructurado

• Orientado a Objetos

• Funcional

• Lógico
PARADIGMA IMPERATIVO

Describe la programación como una


secuencia de instrucciones o
comandos que cambian el estado de
un programa. El código máquina en
general está basado en el paradigma
imperativo.
PARADIGMA DECLARATIVO

Se enfoca en describir las


propiedades de la solución
buscada, dejando
indeterminado el algoritmo
(conjunto de instrucciones)
usado para encontrar esa
solución.
PARADIGMA
ESTRUCTURADO
La programación se divide en
bloques de procedimientos y
funciones que pueden o no
comunicarse entre sí.

Además, la programación se
controla con secuencia, selección e
iteración.
PARADIGMA
FUNCIONAL
Hace hincapié en la aplicación
de las funciones y
composición entre ellas, más
que en los cambios de estados
y la ejecución secuencial de
comandos.
PARADIGMA LÓGICO

Gira en torno al concepto de


predicado o relación entre
elementos. Define reglas
lógicas para luego, a través de
un motor de inferencias
lógicas, responder preguntas
planteadas al sistema y así
resolver los problemas.
PARADIGMA ORIENTADO A OBJETOS

Está basado en la idea de


encapsular estado y
operaciones en objetos. La
programación se resuelve
comunicando dichos objetos a
través de mensajes.
FORMAS DE EJECUCIÓN

• Compilados

• Interpretados
JAVA VIRTUAL MACHINE

Se trata de una plataforma dependiente del sistema operativo y el


hardware que interpreta y ejecuta el código del usuario
JDK Y JRE
CARACTERÍSTICAS
• Orientado a objetos
Es un lenguaje creado originalmente para trabajar con objetos. De hecho, todo lo que
hay en Java son objetos.

• Independiente de la plataforma
Existen máquinas virtuales para diversas plataformas de hardware.

• Compilado e Interpretado
Todo programa ha de compilarse y el código que se genera bytecode es interpretado
por una máquina virtual.

• Robusto
Su diseño contempla el manejo de errores a través del mecanismo de Excepciones.

• Gestiona la memoria automáticamente


La JVM gestiona la memoria dinámicamente y existe un recolector de basura.
CARACTERÍSTICAS
• No permite el uso de técnicas de programación inadecuadas
Para crear un programa es necesario aplicar correctamente el paradigma de objetos.
• Multihilos
Soporta la creación de partes de código que podrán ser ejecutadas de forma paralela y
comunicarse entre sí.
• Cliente-servidor
Java permite la creación de aplicaciones que pueden funcionar tanto como clientes como
servidores.
• Mecanismos de seguridad
Posee un gestor de seguridad con el que puede restringir el acceso a los recursos del sistema y
la JVM funciona como un sandbox.
• Herramientas de documentación
Creación automática de documentación asociada al código mediante la herramienta Javadoc.
SINTAXIS

{ }
• La extensión de los archivos fuente es .java codificados en
Unicode para soporte a múltiples idiomas

• Hay diferencia entre MAYÚSCULAS y minúsculas

• Cada instrucción debe terminar con un; (punto y coma)

• Una instrucción puede abarcar


más de una línea

• Cada bloque de código comienza con llave que abre y


termina con llave que cierra
EL MÉTODO “MAIN”
• Es un método especial que la JVM reconoce como punto de inicio de cada
programa de tecnología Java.
• Sintaxis:
RECOLECTOR DE BASURA

El "garbage collector" o recolector de basura es una


aplicación que hace parte de la maquina virtual de Java
y se encarga de identificar los objetos que han perdido
su referencia en tiempo de ejecución, es decir, recoge
los objetos que no están siendo utilizados y los destruye
de forma automática con el fin de liberar memoria
dinámica.
VARIABLES PATH Y CLASSPATH
• El desarrollo y ejecución de aplicaciones en Java
exige que las herramientas para compilar y ejecutar se
encuentren accesibles. El computador solo es capaz
de ejecutar los programas que se encuentran en los
directorios indicados en la variable Path del mismo.
Si se desea compilar o ejecutar código en Java, el
directorio donde se encuentran estos programas
(java.exe y javac.exe) deberá encontrarse en el Path.
VARIABLES PATH Y CLASSPATH
• Java utiliza además una nueva variable de entorno denominada
Classpath, la cual determina donde buscar tanto las clases o librerías de
Java que corresponden al API de Java.

• Los comandos para configurar las vbles. Path y Classpath son:


•set JAVAPATH=C:\jdk1.6
•set PATH=.;%JAVAPATH%\bin;%PATH%
•set CLASSPATH=.\;%JAVAPATH%\lib\classes.zip;%CLASSPATH%
OPERADORES

• En los lenguajes de programación existen


diferentes tipos de operadores que permiten
realizar diferentes procesos. Estos operadores se
clasifican en aritméticos, de asignación, lógicos
y de comparación.
OPERADORES ARITMETICOS
• Los operadores aritméticos resuelven las operaciones básicas de suma, resta,
multiplicación, división y modulo, el cual entrega el residuo de la división.
OPERADORES DE ASIGNACIÓN

• Los operadores de asignación permiten depositar


un valor en una variable.
OPERADORES LÓGICOS
• Los operadores lógicos resuelven operaciones booleanas. El resultado de estas
operaciones será siempre verdadero “true” o falso “false”. Las operaciones booleanas
básicas son AND, OR y NOT.

• La operación NOT consiste en cambiar el valor de la premisa de falso a verdadero y


viceversa.
OPERADORES LÓGICOS

• La operación lógica AND, indica que la salida será


verdadera si y solo si, todas sus entradas son
verdaderas.
OPERADORES LÓGICOS

• La operación OR, indica que la salida será falsa si y


solo si, todas sus entradas son falsas.
OPERADORES LÓGICOS
OPERADORES DE COMPARACIÓN

Permiten la verificación de dos variables,


determinando si una de ellas es mayor, igual, menor
o diferente de la otra. El resultado de estas
operaciones será siempre verdadero "true" o falso
"false".
OPERADORES DE COMPARACIÓN
TIPOS DE DATOS
• Tipos Primitivos
• Son simples valores, no objetos.
• Tipos de Referencia
• Hacen referencia a objetos. Se utilizan para tipos
mas complejos, incluidos todos los que declara el
propio programador.
TIPOS PRIMITIVOS
Nombre Declaración Rango Descripción
Booleano boolean true - false Define una bandera que puede tomar dos posibles
valores: true o false.
Byte byte [-128 .. 127] Representación del número de menor rango con signo.

Entero pequeño short [-32,768 .. 32,767] Representación de un entero cuyo rango es pequeño.

Entero int [-231 .. 231-1] Representación de un entero estándar.


Entero largo long [-263 .. 263-1] Representación de un entero de rango ampliado.
Real float [±3,4·10-38 .. ±3,4·1038] Representación de un real estándar. La precisión se
amplía con números más próximos a 0 y disminuye
cuanto más se aleja del mismo.

Real largo double [±1,7·10-308 .. Representación de un real de mayor precisión. Double


±1,7·10308] tiene el mismo efecto con la precisión que float.
Carácter char ['\u0000' .. '\uffff'] o Carácter o símbolo. Para componer una cadena es
[0 .. 65.535] preciso usar la clase String.
Beneficios del uso de lenguajes de tipos estrictos:
• Sin la comprobación de tipos un lenguaje puede “estallar” de forma misteriosa en ejecución
en la mayoría de los lenguajes.
• En la mayoría de los sistemas, el ciclo editar-compilar-depurar es tan tedioso que la detección
temprana de errores es indispensable.
• La declaración de tipos ayuda a documentar programas.
• La mayoría de los compiladores pueden generar código más eficiente si se han declarado los
tipos.
• Los lenguajes sin tipos ofrecen mayor flexibilidad, pero la seguridad que ofrecen los lenguajes
con tipos estrictos suele compensar la flexibilidad que se pierde.
CASTING
• En muchas ocasiones hay que transformar una
variable de un tipo a otro, por ejemplo, de int a
double, o de float a long.

• En Java, se realizan de modo automático


conversiones implícitas de un tipo a otro de más
precisión, por ejemplo, de int a long.
CASTING
• Las conversiones de un tipo de mayor a otro de
menor precisión requieren una orden explícita del
programador, pues son conversiones inseguras que
pueden dar lugar a errores

• A estas conversiones explícitas de tipo se les llama


cast. Veamos el siguiente ejemplo:
COMENTARIOS
• Los comentarios son útiles para documentar el código
implementado.

• Los comentarios se realizan de dos formas. La primera


consiste en colocar el símbolo “//” en una línea de código
y en seguida el texto del comentario. La segunda consiste
en incluir el símbolo “/*” al inicio del comentario y el
símbolo “*/” al final del comentario. Esta segunda forma
permite hacer comentarios en varias líneas de código.
ESTRUCTURAS DE
CONTROL
IF
• La estructura de control “if” se
compone de una condición la cual
siempre debe arrojar un valor
booleano, es decir, verdadero o falso.

• Esta estructura permite ejecutar un


conjunto de instrucciones si se
cumple la condición establecida.
IF ELSE
• La estructura de control “if” “else” se
compone de una condición, la cual siempre
debe arrojar un valor booleano, es decir,
verdadero o falso.

• Esta estructura permite ejecutar un conjunto


de instrucciones si se cumple la condición
establecida y permite ejecutar otro conjunto
de instrucciones diferentes si no se cumple la
condición establecida.
SWITCH CASE
int numeroMes;
• String mes;
La estructura de control “switch” “case”
switch(numeroMes):
se compone de múltiples condiciones {
case 1:
sobre una misma variable, las cuales mes=“Enero”;
siempre deben arrojar un valor booleano, break;
case 2:
es decir, verdadero o falso. mes=“Febrero”;
break;
• La variable de la sentencia “switch” debe default:
mes=“Error”;
ser byte, char, int, short o String. break;
}
WHILE
• La estructura de repetición “while”
define un proceso iterativo, es decir,
un proceso que se repetirá mientras
que una condición tenga el valor
verdadero.

• La sintaxis de esta sentencia es:


FOR
• La estructura de repetición “for” define un proceso
iterativo.

• La estructura “for” se compone de inicialización,


condición e incremento. La inicialización debe incluir al
menos una variable y un valor, la condición debe
involucrar la variable de la inicialización con el fin de
tener un mecanismo de terminar el proceso iterativo y el
incremento debe también, involucrar la variable de la
inicialización.

• En la inicialización es posible declarar la variable


DO WHILE
• La estructura de repetición “do” “while”
define un proceso iterativo.

• Contiene una diferencia con respecto a la


estructura “while” que consiste en que el
“do” “while” primero ejecuta y luego
consulta, mientras que el “while” primero
consulta y luego ejecuta.


MANOS A LA OBRA

;
• Un número par es aquel que es
divisible en 2 y un número impar es
aquel que no es divisible en 2. Con
base en la afirmación anterior,
implemente un algoritmo que permita
verificar si un número es par o impar.
• En matemática, la sucesión de Fibonacci es la
siguiente sucesión infinita de números
naturales: 0 , 1 , 1 , 2 , 3 , 5 , 8 , 13 , 21 , 34 ,
55 , 89 , 144 , 233 , 377 , …

• La sucesión comienza con los números 0 y 1 y


a partir de estos, «cada término es la suma de
los dos anteriores».

• Implementar un algoritmo para calcular el N-


ésimo término de la sucesión.
• Implementar un algoritmo para
calcular la potencia de un numero ().
El algoritmo no debe calcular la
operación si el exponente es negativo.
• Implementar un algoritmo para saber si un
numero es primo o no.

• Un número es primo si sólo puede dividirse


por sí mismo y por la unidad (es decir, no
tiene más divisores que él mismo y la unidad).
Por ejemplo, 9, 8, 6, 4, 12, 16, 20, etc., no son
primos, ya que son divisibles por números
distintos a ellos mismos y a la unidad. Así, 9
es divisible por 3, 8 lo es por 2, etc.
• Implementar un algoritmo que lea 3
números y descubra si uno de ellos es
igual a la suma de los otros dos, en ese
caso mostrar el mensaje
correspondiente.
• Implementar un algoritmo para calcular
la velocidad (en m/s) de los corredores
de la carrera de 1.500 metros.

• La entrada consistirá en parejas de


números (minutos, segundos) que dan
el tiempo del corredor; por cada
corredor, el algoritmo debe visualizar la
velocidad de cada corredor.
• Pasar a la otra presentacion
PROGRAMACIÓN OO EN
JAVA
PAQUETE
• Un paquete es un contenedor de clases. Se utiliza para ordenar el
código de forma consistente de acuerdo a los servicios
implementados. Para que un código se encuentre contenido en un
paquete es necesario agregar la siguiente sentencia.

package MiPaquete;

• Por otro lado, si se desea hacer uso de servicios implementados


en otros paquetes se debe agregar el siguiente código.

import OtroPaquete;
LA API DE JAVA
VISIBILIDAD
• La visibilidad se refiere al nivel de accesibilidad de los atributos y métodos.
Los niveles de accesibilidad se dan por los siguientes términos:

1. private. Se puede acceder desde un método implementado desde la misma


clase.

2. public. Se puede acceder desde un método implementado en cualquier


clase.

3. protected. Se puede acceder desde un método implementado en una clase


que herede la clase que contiene esta visibilidad y desde clases
implementadas en el mismo paquete.
DECLARACION DE CLASES
DECLARACION DE ATRIBUTOS
DECLARACION DE METODOS
EL MÉTODO “MAIN”
• Es un método especial que la JVM reconoce como punto de inicio de cada
programa de tecnología Java.
• Sintaxis:
DECLARACION DE CONSTRUCTORES
EL APUNTADOR THIS
• El apuntador "this" permite acceder a los atributos y
métodos de la clase. El uso del apuntador no es obligatorio,
pero se recomienda usarlo como buena práctica.

• Es posible que el parámetro de un método tenga el mismo


nombre que un atributo, en este caso el uso del apuntador
this es obligatorio para que el compilador identifique si está
haciendo referencia al atributo o al parámetro del método.
ORGANIZACIÓN DE LOS ARCHIVOS FUENTE

• El orden de los elementos es importante


• El nombre del archivo fuente debe ser el mismo que el de la
declaración de clase pública de ese archivo.
• Un archivo fuente puede incluir varias declaraciones de clases,
pero sólo una puede declararse como pública.
• Se recomienda tener un archivo fuente por cada declaración de
clase.
• La sentencia import se utiliza para poner las clases de otros
paquetes a disposición de la clase actual.
IDENTIFICADORES VÁLIDOS
• Un identificador es un nombre asignado a una
variable, una clase o un método.
• Los identificadores empiezan por una letra, guion • Color
bajo(_) o el símbolo peso ($). Los caracteres • nombre
• _apellidoDeSoltero2
posteriores pueden ser dígitos. • 5comentarios
• No tienen longitud máxima y existe diferencia entre • $persona
mayúsculas y minúsculas.
TIPOS DE DATOS
• Tipos Primitivos
• Son simples valores, no objetos.
• Tipos de Referencia
• Hacen referencia a objetos. Se utilizan para tipos
mas complejos, incluidos todos los que declara el
propio programador.
TIPOS PRIMITIVOS
Nombre Declaración Rango Descripción
Booleano boolean true - false Define una bandera que puede tomar dos posibles
valores: true o false.
Byte byte [-128 .. 127] Representación del número de menor rango con signo.

Entero pequeño short [-32,768 .. 32,767] Representación de un entero cuyo rango es pequeño.

Entero int [-231 .. 231-1] Representación de un entero estándar.


Entero largo long [-263 .. 263-1] Representación de un entero de rango ampliado.
Real float [±3,4·10-38 .. ±3,4·1038] Representación de un real estándar. La precisión se
amplía con números más próximos a 0 y disminuye
cuanto más se aleja del mismo.

Real largo double [±1,7·10-308 .. Representación de un real de mayor precisión. Double


±1,7·10308] tiene el mismo efecto con la precisión que float.
Carácter char ['\u0000' .. '\uffff'] o Carácter o símbolo. Para componer una cadena es
[0 .. 65.535] preciso usar la clase String.
¿COMO CREO UNA
VARIABLE DE TIPO
PRIMITIVO?
TIPOS DE REFERENCIA
ASIGNACIÓN DE
REFERENCIAS
¿CÓMO CREO UNA
VARIABLE DE TIPO
REFERENCIA?
¿CÓMO CREO UN OBJETO?
LA SENTENCIA STATIC
• La sentencia “static” define atributos y métodos de tal forma
que puedan ser accedidos sin requerir una instancia de la
clase.

• Por otro lado, un atributo “static” toma el mismo valor para


todos los objetos que sean instancia de la clase que lo
contiene.

• Por ejemplo, la clase Math contiene el método “sin” el cual


calcula el seno de un parámetro dado.
LA SENTENCIA FINAL
• Una clase puede tener atributos finales, es decir,
constantes que no pueden cambiar su valor en
tiempo de ejecución de la aplicación.

• La sintaxis es la siguiente:
CLASIFICACIÓN DE
MÉTODOS
• Constructores

• Consultores

• Modificadores

• Analizadores
CLASIFICACIÓN DE
MÉTODOS
• Constructores: Un constructor es el primer
método que se ejecuta al realizar la instancia de
un objeto. Uno de los usos principales de un
constructor es la inicialización de los atributos de
la clase. El método constructor lleva el mismo
nombre de la clase y no posee retorno.
CLASIFICACIÓN DE
MÉTODOS

• Consultores: Un consultor es el método que


permite retornar el valor de un atributo con
visibilidad private al aplicar el concepto de
encapsulamiento.
CLASIFICACIÓN DE
MÉTODOS

• Modificadores: un modificador es el método que


permite asignar valor a un atributo con visibilidad
private al aplicar el concepto de encapsulamiento.
CLASIFICACIÓN DE
MÉTODOS

• Analizadores: Un analizador es el método que


permite implementar la lógica del servicio del
mismo, es decir, allí se implementan los
algoritmos requeridos.
BAJO ACOPLAMIENTO
• Es la característica en el paradigma de orientación
a objetos que indica que los diferentes
subsistemas deben estar unidos de forma mínima.

• Esto indica, que las clases que se construyen


deben ser lo más reducidas, sin involucrar
elementos que impliquen conceptos diferentes a
los tratados en la clase.
ALTA COHESIÓN

• Es la característica en el paradigma de orientación


a objetos que indica que, las propiedades y
servicios de una clase deben ser consistentes con
el concepto que abstrae dicha clase.
MANOS A LA OBRA

;
• Implemente una clase denominada
Cuadrado que contenga un atributo
privado, dos métodos constructores
sobrecargados con y sin parámetros,
métodos consultores, métodos
modificadores y métodos analizadores
que calculen el área y perímetro del
cuadrado.
• Implemente una clase denominada
Triángulo que contenga un atributo
privado, dos métodos constructores
sobrecargados con y sin parámetros,
métodos consultores, métodos
modificadores y métodos analizadores
que calculen el área y perímetro del
triángulo.
• Implemente una clase denominada
Rectángulo que contenga un atributo
privado, dos métodos constructores
sobrecargados con y sin parámetros,
métodos consultores, métodos
modificadores y métodos analizadores
que calculen el área y perímetro del
rectangulo.
• Implemente una clase denominada
Operaciones, que contenga métodos
estáticos que calculen la potencia de
un numero y que verifique si un
numero es primo o no.
ARREGLOS, MATRICES Y
COLECCIONES
ARRAYS
• Los arrays se usan normalmente para agrupar
objetos del mismo tipo. Permiten hacer referencia al
grupo de objetos a través de un nombre común.

• Los arreglos en Java son objetos

• Es posible declarar arrays de cualquier tipo, ya sea


de tipos primitivos o de clase.
ARREGLOS -
CARACTERÍSTICAS

• Tipo de dato: Un arreglo es una estructura que


posee un conjunto de datos del mismo tipo.

• int[] miArreglo;
ARREGLOS -
CARACTERÍSTICAS
• Nombre: el nombre identifica al arreglo y a
través de este, se accede al arreglo para su lectura
y escritura de información.

• int[] miArreglo;
ARREGLOS -
CARACTERÍSTICAS
• Instancia: La creación del array se hace, como
con cualquier otro objeto, mediante el uso del
operador new(). La instancia con el operador
“new” permite la asignación del tamaño del
arreglo.

• miArreglo = new int[20];


ARREGLOS -
CARACTERÍSTICAS
• Índice: Se accede a los elementos del arreglo a
través de corchetes “[]” indicando la posición del
elemento al cual se desea acceder. La posición del
elemento es denominada índice. El índice inicial
es 0 y el final n-1 donde n es la cantidad de
elementos del arreglo.

• miArreglo[0] = 10;
ARREGLOS -
CARACTERÍSTICAS
• Los arreglos se pueden inicializar con valores
entre llaves “{}” separados por comas.

• String días[] = {“lunes”, “martes”,


“miércoles”, “jueves”, “viernes”,
“sábado”, “domingo”};
ARRAYS DE TIPOS PRIMITIVOS
char[] s;
s = new char[26];
ARRAYS DE TIPOS DE REFERENCIA

Point[] p;
p = new Point[10];
for(int i=0; i<10; i++){
p[i]= new Point(i, i+1);
}
EJEMPLO DE CREACIÓN DE
ARRAYS
MANOS A LA OBRA

;
• Implemente una aplicación que reciba
por línea de comando 20 números
correspondientes a 2 arrays.

• La aplicación también deberá mostrar


el resultado de la multiplicación de
cada elemento de los 2 arrays.

• Luego implementar la aplicación


utilizando listas dinámicas
• Implemente una aplicación que reciba
por línea de comando 20 números
correspondientes a 2 arrays.

• La aplicación también deberá mostrar


el resultado de la multiplicación de los
elementos cuyo índice sea ingresado
por el usuario.

• Luego implementar la aplicación


utilizando listas dinámicas

También podría gustarte