JAVA Y PROGRAMACION
ORIENTADA A OBJETOS
QUE ES JAVA
Java es un lenguaje de programación y una plataforma informática que fue
comercializada por primera vez en 1995 por Sun Microsystems.
El lenguaje de programación Java fue desarrollado originalmente por James
Gosling (constituida en 1983 y posteriormente adquirida el 27 de enero de
2010 por la compañía Oracle) y publicado en 1995 como un componente
fundamental de la plataforma Java de Sun Microsystems. Su sintaxis deriva en
gran medida de C y C++, pero tiene menos utilidades de bajo nivel que
cualquiera de ellos. Las aplicaciones de Java son compiladas a
bytecode (clase Java), que puede ejecutarse en cualquier maquina virtual
Java (JVM) sin importar la arquitectura de la computadora subyacente.
SINTAXIS DE SALIDA EN JAVA
En Java hay algunos objetos que existen por defecto (en cualquier entorno de
desarrollo, llámese Eclipse, NetBeans, BlueJ, etc.). Uno de ellos es el objeto
denominado [Link]. Este objeto dispone de un método llamado println que
nos permite imprimir algo por pantalla en una ventana de consola.
La sintaxis básica es:
Ten en cuenta que la primera S de [Link] es mayúscula. Si la escribes
minúscula obtendrás un error de compilación. Tenlo presente porque cualquier
pequeño error de escritura (el simple cambio de una letra) en el nombre de un
objeto, variable, método, etc. puede dar lugar a errores. Además, en ocasiones te
señalará el lugar del error pero en otras ocasiones no lo hará con exactitud y
tendrás que buscarlo con paciencia. Ten también presente que los espacios dentro
de las comillas cuentan, es decir, el resultado de escribir (“Mensaje a mostrar”);
no es el mismo que el de escribir (" Mensaje a mostrar");.
Si
queremos incluir variables
concatenamos usando el símbolo + de
esta manera:
El
símbolo + se usa para concatenar
cadenas de texto, o variables que
representen texto.
SINTAXIS DE ENTRADA EN JAVA
En Java existen dos metodos de entrada que pueden ser mediante consola o
de modo grafico cualquier de los 2 metodos que se vaya a utilizar se tiene que
importar una clase especifica para cada uno de ellos:
Consola
Modo Grafico
SINTAXIS DE ENTRADA CON SCANNER
El uso de la clase Scanner es una de las mejores maneras de ingresar datos
por teclado en Java.
Scanner es una clase en el paquete [Link] utilizada para obtener la entrada
de los tipos primitivos como int, double etc. y también String. Es la forma
más fácil de leer datos en un programa Java, aunque no es muy eficiente si
se quiere un método de entrada para escenarios donde el tiempo es una
restricción, como en la programación competitiva.
Veamos los siguientes ejemplos de como se llegaría a utilizar el Scanner.
SINTAXIS DE ENTRADA CON JOPTIONPANE
Esta clase hace realmente fácil el mostrar ventanas standards para mostrar y
pedir información a los usuarios. Estas ventanas llamadas Dialogs, se
muestran en forma “Modal” que significa que bloquean la aplicación hasta
que son cerradas.
JOptionPane es parte de la librería Swing para el manejo de interfaces
gráficas.
Veremos los siguientes ejemplos de Como usar el JOptionPane.
Y para mostrar por un entorno grafico se usa lo siguiente:
NOTA
Las condicionales if-else,switch,los ciclos
for,while,do-while,vectores y matrices siguen
siendo como en C++ sin ningun cambio su sintaxis.
El lenguaje java es muy sensible a las mayusculas
y minisculas.
Aveces te puede salir una sugerencia del error en
la parte izquierda.
PROGRAMACION ORIENTADA A OBJETOS
La Programación Orientada a Objetos (POO, en español; OOP, según
sus siglas en ingles) es un paradigma de programacion que viene a
innovar la forma de obtener resultados. Los objetos se utilizan como
metáfora para emular las entidades reales del negocio a modelar.
Muchos de los objetos prediseñados de los lenguajes de programación
actuales permiten la agrupación en bibliotecas o librerías, sin
embargo, muchos de estos lenguajes permiten al usuario la creación
de sus propias bibliotecas.
Está basada en varias técnicas del sexenio: herencia, cohesion,
abstracción,polimorfismo, acoplamiento y encapsulamiento.
CONCEPTOS FUNDAMENTALES
La POO es una forma de programar que trata de encontrar una solución a
estos problemas. Introduce nuevos conceptos, que superan y amplían
conceptos antiguos ya conocidos. Entre ellos destacan los siguientes:
CLASE: Una clase es una especie de "plantilla" en la que se definen los atributos y
métodos predeterminados de un tipo de objeto. Esta plantilla se crea para poder
crear objetos fácilmente. Al método de crear nuevos objetos mediante la lectura y
recuperación de los atributos y métodos de una clase se le conoce como
instanciación.
HERENCIA: Es dar toda los atributos y métodos de una clase padre a sus clases hijas
OBJETO: Instancia de una clase. Entidad provista de un conjunto de propiedades o
atributos (datos) y de comportamiento o funcionalidad (métodos), los mismos que
consecuentemente reaccionan a eventos. Se corresponden con los objetos reales
del mundo que nos rodea, o con objetos internos del sistema (del programa).
METODO: Algoritmo asociado a un objeto (o a una clase de objetos), cuya
ejecución se desencadena tras la recepción de un "mensaje". Desde el
punto de vista del comportamiento, es lo que el objeto puede hacer. Un
método puede producir un cambio en las propiedades del objeto, o la
generación de un "evento" con un nuevo mensaje para otro objeto del
sistema.
EVENTO: Es un suceso en el sistema (tal como una interacción del usuario con
la máquina, o un mensaje enviado por un objeto). El sistema maneja el evento
enviando el mensaje adecuado al objeto pertinente. También se puede definir
como evento la reacción que puede desencadenar un objeto; es decir, la
acción que genera.
ATRIBUTOS: Característica que tiene la clase.
MENSAJE: Una comunicación dirigida a un objeto, que le ordena que ejecute
uno de sus métodos con ciertos parámetros asociados al evento que lo generó.
PROPIEDAD O ATRIBUTO: Contenedor de un tipo de datos asociados a un objeto
(o a una clase de objetos), que hace los datos visibles desde fuera del objeto y
esto se define como sus características predeterminadas, y cuyo valor puede
ser alterado por la ejecución de algún método.
REPRESENTACION GRAFICA DE UNA CLASE
CARACTERISTICAS DE LA PROGRAMACION
ORIENTADA A OBJETOS
Las características mas importantes de la programación
orientada a objetos es:
ABSTRACCION
ENCAPSULAMIENTO
POLIMORFISMO
HERENCIA
MODULARIDAD
PRINCIPIO DE OCULTACION
RECOLECCION DE BASURA
ABSTRACCION
Denota las características esenciales de un objeto, donde se capturan sus
comportamientos. Cada objeto en el sistema sirve como modelo de un
"agente" abstracto que puede realizar trabajo, informar y cambiar su estado,
y "comunicarse" con otros objetos en el sistema sin revelar "cómo" se
implementan estas características. Los procesos, las funciones o los métodos
pueden también ser abstraídos, y, cuando lo están, una variedad de técnicas
son requeridas para ampliar una abstracción. El proceso de abstracción
permite seleccionar las características relevantes dentro de un conjunto e
identificar comportamientos comunes para definir nuevos tipos de entidades
en el mundo real. La abstracción es clave en el proceso de análisis y diseño
orientado a objetos, ya que mediante ella podemos llegar a armar un
conjunto de clases que permitan modelar la realidad o el problema que se
quiere atacar.
ENCAPSULAMIENTO
Significa reunir todos los elementos que pueden
considerarse pertenecientes a una misma entidad,
al mismo nivel de abstracción. Esto permite
aumentar la cohesión (diseño estructurado) de los
componentes del sistema. Algunos autores
confunden este concepto con el principio de
ocultación, principalmente porque se suelen
emplear conjuntamente.
POLIMORFISMO
Comportamientos diferentes, asociados a objetos distintos, pueden
compartir el mismo nombre; al llamarlos por ese nombre se utilizará
el comportamiento correspondiente al objeto que se esté usando. O,
dicho de otro modo, las referencias y las colecciones de objetos
pueden contener objetos de diferentes tipos, y la invocación de un
comportamiento en una referencia producirá el comportamiento
correcto para el tipo real del objeto referenciado. Cuando esto ocurre
en "tiempo de ejecución", esta última característica se llama
asignación tardia o asiganacion dinámica. Algunos lenguajes
proporcionan medios más estáticos (en "tiempo de compilación") de
polimorfismo, tales como las plantillas y la sobrecarga de operadores
de C++.
HERENCIA
Las clases no se encuentran aisladas, sino que se relacionan entre sí,
formando una jerarquía de clasificación. Los objetos heredan las
propiedades y el comportamiento de todas las clases a las que
pertenecen. La herencia organiza y facilita el polimorfismo y el
encapsulamiento, permitiendo a los objetos ser definidos y creados
como tipos especializados de objetos preexistentes. Estos pueden
compartir (y extender) su comportamiento sin tener que volver a
implementarlo. Esto suele hacerse habitualmente agrupando los
objetos en clases, y estas en árboles o enrejados que reflejan un
comportamiento común. Cuando un objeto hereda de más de una
clase, se dice que hay herencia multiple; siendo de alta complejidad
técnica por lo cual suele recurrirse a la herencia virtual para evitar la
duplicación de datos.
MODULARIDAD
Se denomina "modularidad" a la propiedad que
permite subdividir una aplicación en partes más
pequeñas (llamadas módulos), cada una de las
cuales debe ser tan independiente como sea
posible de la aplicación en sí y de las restantes
partes. Estos módulos se pueden compilar por
separado, pero tienen conexiones con otros
módulos. Al igual que la encapsulación, los
lenguajes soportan la modularidad de diversas
formas.
PRINCIPIO DE OCULTACION
Cada objeto está aislado del exterior, es un módulo natural, y cada tipo de
objeto expone una "interfaz" a otros objetos que especifica cómo pueden
interactuar con los objetos de la clase. El aislamiento protege a las
propiedades de un objeto contra su modificación por quien no tenga derecho
a acceder a ellas; solamente los propios métodos internos del objeto pueden
acceder a su estado. Esto asegura que otros objetos no puedan cambiar el
estado interno de un objeto de manera inesperada, eliminando efectos
secundarios e interacciones inesperadas. Algunos lenguajes relajan esto,
permitiendo un acceso directo a los datos internos del objeto de una manera
controlada y limitando el grado de abstracción. La aplicación entera se
reduce a un agregado o rompecabezas de objetos.
RECOLECCION DE BASURA
La recolección de basura (garbage collection) es la técnica por la cual
el entorno de objetos se encarga de destruir automáticamente, y por
tanto desvincular la memoria asociada, los objetos que hayan
quedado sin ninguna referencia a ellos. Esto significa que el
programador no debe preocuparse por la asignación o liberación de
memoria, ya que el entorno la asignará al crear un nuevo objeto y la
liberará cuando nadie lo esté usando. En la mayoría de los lenguajes
híbridos que se extendieron para soportar el Paradigma de
Programación Orientada a Objetos como C++ u Object Pascal , esta
característica no existe y la memoria debe desasignarse
expresamente.
CONSTRUCTORES
Un constructor es un elemento de una clase cuyo identificador coincide con
el de la clase correspondiente y que tiene por objetivo obligar a y controlar
cómo se inicializa una instancia de una determinada clase, ya que el
lenguaje Java no permite que las variables miembro de una nueva instancia
queden sin inicializar.
Por defecto toda clase tiene un constructor sin parámetros cuyo identificador
coincide con el de la clase y que, al ejecutarse, inicializa el valor de cada
atributo de la nueva instancia
METODOS GETTER Y SETTER
Los Setters y Getters son métodos de acceso lo que indica que son siempre
declarados públicos, y nos sirven para dos cosas:
Setters: Del Inglés Set, que significa establecer, pues nos sirve para asignar un
valor inicial a un atributo, pero de forma explícita, además el Setter nunca
retorna nada (Siempre es void), y solo nos permite dar acceso público a
ciertos atributos que deseemos el usuario pueda modificar.
Getters: Del Inglés Get, que significa obtener, pues nos sirve para obtener
(recuperar o acceder) el valor ya asignado a un atributo y utilizarlo para
cierto método
EJEMPLO DE METODO GETTER Y SETTER
METODO TOSTRING ()
Todos los objetos tienen un metodo toString que se llama automaticamente
cuando el objeto se representa como un valor de texto o cuando un objeto se
referencia de tal manera pero tambien puede ser sobrecargado:
NOTA
Toda clase se tiene que crear un constructor por lo menos que tenga todos
los atributos.
La palabra reservada this. Se usa para garantizar que accedamos al campo
adecuado en lugar de al parametro del metodo
El metodo set modifica los valores.
El metodo get muestra los valores.
super se usa para acceder a todos los metodos de la clase padre las clases
hijas
Para heredar de una clase padre a una clase hija se usa la palabra reservada
extends